資料集概覽
新增於: @mastra/core@1.4.0
資料集是測試案例的集合,你可以針對這些案例執行實驗,以衡量 Agent 和 Workflow 的表現。每次變更都會建立新版本,讓你能夠準確重現過往的實驗。將資料集配合評分器使用,即可追蹤提示、模型或程式碼變更所帶來的質素差異。
使用方式使用方式 的直接連結
設定儲存空間設定儲存空間 的直接連結
在 Mastra 實例中設定儲存空間。資料集需要提供 datasets domain 的儲存適配器:
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 參考文件。
StudioStudio 的直接連結
你也可以在 Studio 中管理資料集。開啟 Studio 後,從側邊欄選擇 Datasets,即可查看所有可用的資料集或建立新資料集。
如要開始使用,請選擇 Create Dataset,然後設定名稱、描述及可選的 schema。確認後,你會看到資料集詳細資料頁面,當中有兩個分頁: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
定義 schema定義 schema 的直接連結
建立資料集時傳入 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(),
}),
})
不符合 schema 的項目會在插入時被拒絕。
加入項目加入項目 的直接連結
使用 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 參考文件。