資料集概觀
新增於: @mastra/core@1.4.0
資料集是測試案例的集合,可用來執行實驗,衡量 Agent 和 Workflow 的表現。每次異動都會建立新版本,因此能精確重現過往實驗。將資料集搭配評分器,即可追蹤提示詞、模型或程式碼變更造成的品質差異。
使用方式「使用方式」的直接連結
設定儲存區「設定儲存區」的直接連結
在 Mastra 執行個體中設定儲存區。資料集需要提供 datasets 領域的儲存配接器:
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,並設定名稱、說明及選用的結構描述。確認後會顯示資料集詳細資料頁,其中包含 Items 與 Experiments 兩個分頁。
在 Items 檢視中,你可以新增、更新及刪除項目,也能查看版本歷程記錄。選取 Add Item,即可使用輸入和標準答案的 JSON 編輯器插入新項目。你也可以從此檢視批次匯入 CSV 或 JSON 檔案中的項目。匯入時,請將每個欄對應至相應的資料集欄位。
選取 Versions 可查看資料集的完整變更歷程。選取 Compare Versions 後,選擇任意兩個版本,再選取 Compare,即可並排查看兩個版本之間所有新增、變更或移除項目的差異。
建立資料集「建立資料集」的直接連結
呼叫 create(),並傳入名稱與選用說明:
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 Schema(Zod、Valibot、ArkType 等),即可強制規範 input 與 groundTruth 的結構:
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() 批次插入:
// 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 修改或移除現有項目:
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() 支援分頁與全文搜尋:
// 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() 查看分頁顯示的版本歷程:
const { versions, pagination } = await dataset.listVersions()
for (const v of versions) {
console.log(`Version ${v.version} — created ${v.createdAt}`)
}
查看項目歷程「查看項目歷程」的直接連結
呼叫 getItemHistory() 並傳入 itemId,即可查看特定項目在各版本間的變化:
const history = await dataset.getItemHistory({ itemId: 'item-abc-123' })
for (const row of history) {
console.log(`Version ${row.datasetVersion}`, row.input, row.groundTruth)
}
鎖定版本「鎖定版本」的直接連結
擷取過往版本中實際存在的項目:
const items = await dataset.listItems({ version: 2 })
你也可以將實驗鎖定至特定版本,詳情請參閱執行實驗。如需完整方法與參數清單,請參閱 Dataset 參考文件。