跳至主要內容

資料集概覽

新增於: @mastra/core@1.4.0

資料集是測試案例的集合,你可以針對這些案例執行實驗,以衡量 Agent 和 Workflow 的表現。每次變更都會建立新版本,讓你能夠準確重現過往的實驗。將資料集配合評分器使用,即可追蹤提示、模型或程式碼變更所帶來的質素差異。

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

設定儲存空間
設定儲存空間 的直接連結

在 Mastra 實例中設定儲存空間。資料集需要提供 datasets domain 的儲存適配器:

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,然後設定名稱、描述及可選的 schema。確認後,你會看到資料集詳細資料頁面,當中有兩個分頁: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

定義 schema
定義 schema 的直接連結

建立資料集時傳入 Standard JSON Schema(例如 ZodValibotArkType 等),便可強制規範 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(),
}),
})

不符合 schema 的項目會在插入時被拒絕。

加入項目
加入項目 的直接連結

使用 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 參考文件