跳至主要內容

資料集概觀

新增於: @mastra/core@1.4.0

資料集是測試案例的集合,可用來執行實驗,衡量 Agent 和 Workflow 的表現。每次異動都會建立新版本,因此能精確重現過往實驗。將資料集搭配評分器,即可追蹤提示詞、模型或程式碼變更造成的品質差異。

使用方式
「使用方式」的直接連結

設定儲存區
「設定儲存區」的直接連結

在 Mastra 執行個體中設定儲存區。資料集需要提供 datasets 領域的儲存配接器:

src/mastra/index.ts
import { Mastra } from '@mastra/core'
import { LibSQLStore } from '@mastra/libsql'

export const mastra = new Mastra({
storage: new LibSQLStore({
id: 'my-store',
url: 'file:./mastra.db',
}),
})

存取資料集 API
「存取資料集 API」的直接連結

所有資料集操作都可透過 mastra.datasets 使用:

const datasets = mastra.datasets

// Create a dataset
const dataset = await datasets.create({ name: 'my-dataset' })

// Retrieve an existing dataset
const existing = await datasets.get({ id: 'dataset-id' })

// List all datasets
const { datasets: all } = await datasets.list()

如需完整方法清單,請參閱 DatasetsManager 參考文件

Studio
「Studio」的直接連結

你也可以在 Studio 中管理資料集。開啟 Studio 後,從側邊欄選取 Datasets,即可查看所有可用資料集或建立新資料集。

若要開始,請選取 Create Dataset,並設定名稱、說明及選用的結構描述。確認後會顯示資料集詳細資料頁,其中包含 ItemsExperiments 兩個分頁。

Items 檢視中,你可以新增、更新及刪除項目,也能查看版本歷程記錄。選取 Add Item,即可使用輸入和標準答案的 JSON 編輯器插入新項目。你也可以從此檢視批次匯入 CSV 或 JSON 檔案中的項目。匯入時,請將每個欄對應至相應的資料集欄位。

選取 Versions 可查看資料集的完整變更歷程。選取 Compare Versions 後,選擇任意兩個版本,再選取 Compare,即可並排查看兩個版本之間所有新增、變更或移除項目的差異。

建立資料集
「建立資料集」的直接連結

呼叫 create(),並傳入名稱與選用說明:

src/mastra/datasets/create-dataset.ts
import { mastra } from '../index'

const dataset = await mastra.datasets.create({
name: 'translation-pairs',
description: 'English to Spanish translation test cases',
})

console.log(dataset.id) // auto-generated UUID

定義結構描述
「定義結構描述」的直接連結

建立資料集時傳入 Standard JSON SchemaZodValibotArkType 等),即可強制規範 inputgroundTruth 的結構:

src/mastra/datasets/create-with-schema.ts
import { z } from 'zod'
import { mastra } from '../index'

const dataset = await mastra.datasets.create({
name: 'translation-pairs',
inputSchema: z.object({
text: z.string(),
sourceLang: z.string(),
targetLang: z.string(),
}),
groundTruthSchema: z.object({
translation: z.string(),
}),
})

不符合結構描述的項目會在插入時遭到拒絕。

新增項目
「新增項目」的直接連結

使用 addItem() 新增單一項目,或使用 addItems() 批次插入:

src/mastra/datasets/add-items.ts
// Single item
await dataset.addItem({
input: { text: 'Hello', sourceLang: 'en', targetLang: 'es' },
groundTruth: { translation: 'Hola' },
})

// Bulk insert
await dataset.addItems({
items: [
{
input: { text: 'Goodbye', sourceLang: 'en', targetLang: 'es' },
groundTruth: { translation: 'Adiós' },
},
{
input: { text: 'Thank you', sourceLang: 'en', targetLang: 'es' },
groundTruth: { translation: 'Gracias' },
},
],
})

更新與刪除項目
「更新與刪除項目」的直接連結

updateItem()deleteItem()deleteItems() 可依 itemId 修改或移除現有項目:

src/mastra/datasets/update-delete.ts
await dataset.updateItem({
itemId: 'item-abc-123',
groundTruth: { translation: '¡Hola!' },
})

await dataset.deleteItem({ itemId: 'item-abc-123' })

await dataset.deleteItems({ itemIds: ['item-1', 'item-2'] })

列出與搜尋項目
「列出與搜尋項目」的直接連結

listItems() 支援分頁與全文搜尋:

src/mastra/datasets/list-items.ts
// Paginated list
const { items, pagination } = await dataset.listItems({
page: 0,
perPage: 50,
})

// Full-text search
const { items: matches } = await dataset.listItems({
search: 'Hello',
})

// Search and pagination can be combined with a specific version
const { items: v2Matches } = await dataset.listItems({
version: 2,
search: 'Hello',
page: 0,
perPage: 50,
})

// Version-only snapshot returns a bare DatasetItem[]
const v2Items = await dataset.listItems({ version: 2 })

版本控制
「版本控制」的直接連結

每次異動資料集項目(新增、更新或刪除)都會提升資料集版本。如此即可將實驗鎖定至特定的資料快照。

列出版本
「列出版本」的直接連結

使用 listVersions() 查看分頁顯示的版本歷程:

src/mastra/datasets/list-versions.ts
const { versions, pagination } = await dataset.listVersions()

for (const v of versions) {
console.log(`Version ${v.version} — created ${v.createdAt}`)
}

查看項目歷程
「查看項目歷程」的直接連結

呼叫 getItemHistory() 並傳入 itemId,即可查看特定項目在各版本間的變化:

src/mastra/datasets/item-history.ts
const history = await dataset.getItemHistory({ itemId: 'item-abc-123' })

for (const row of history) {
console.log(`Version ${row.datasetVersion}`, row.input, row.groundTruth)
}

鎖定版本
「鎖定版本」的直接連結

擷取過往版本中實際存在的項目:

src/mastra/datasets/pin-version.ts
const items = await dataset.listItems({ version: 2 })

你也可以將實驗鎖定至特定版本,詳情請參閱執行實驗。如需完整方法與參數清單,請參閱 Dataset 參考文件