dataset.startExperiment()
新增於: @mastra/core@1.4.0
在資料集上執行實驗並等待其完成。針對目標(Agent、Workflow 或 Scorer)執行所有項目,並選擇進行評分。
使用範例「使用範例」的直接連結
import { Mastra } from '@mastra/core'
const mastra = new Mastra({/* storage config */})
const dataset = await mastra.datasets.get({ id: 'dataset-id' })
// Run against a registered agent with a flat scorer list
const summary = await dataset.startExperiment({
targetType: 'agent',
targetId: 'my-agent',
scorers: ['accuracy', 'relevancy'],
maxConcurrency: 10,
})
// Or pass the same categorised shape accepted by runEvals
const summary2 = await dataset.startExperiment({
targetType: 'agent',
targetId: 'my-agent',
scorers: {
agent: [accuracyScorer],
trajectory: [toolOrderScorer],
},
})
// For workflow targets, score individual steps with their own scorers
const summary3 = await dataset.startExperiment({
targetType: 'workflow',
targetId: 'my-workflow',
scorers: {
workflow: [overallScorer],
steps: {
'fetch-data': [fetchScorer],
transform: [transformScorer],
},
trajectory: [executionPathScorer],
},
})
console.log(`${summary.succeededCount}/${summary.totalItems} succeeded`)
console.log(`Status: ${summary.status}`)
console.log(`${summary2.succeededCount}/${summary2.totalItems} succeeded`)
console.log(`Status: ${summary2.status}`)
參數「參數」的直接連結
targetType?:
'agent' | 'workflow' | 'scorer'
要針對其執行項目的已註冊目標類型。與
targetId 一起使用。targetId?:
string
已註冊目標的 ID。與
targetType 一起使用。scorers?:
(MastraScorer | string)[] | AgentScorerConfig | WorkflowScorerConfig
用於評估每個結果的 Scorer。接受由
MastraScorer 執行個體或已註冊 Scorer ID 組成的扁平陣列,也接受與 runEvals 相同的分類設定結構(AgentScorerConfig / WorkflowScorerConfig)。無論使用哪種形式,Trajectory Scorer(type: "trajectory")都會自動接收預先提取的 Trajectory 作為輸出。對於 Workflow 目標,可透過 scorers: { steps: { stepId: [...] } } 傳入各步驟的 Scorer,並針對每個步驟的輸出執行;其結果會攜帶來源 stepId,並保持 targetScope: "span"(與 runEvals 一致)。name?:
string
實驗的顯示名稱。
description?:
string
實驗的描述。
metadata?:
Record<string, unknown>
實驗的任意中繼資料。
version?:
number
固定使用特定的資料集版本。預設為最新版本。
maxConcurrency?:
number
項目執行的最大併發數。預設為
5。signal?:
AbortSignal
用於取消實驗的 AbortSignal。
itemTimeout?:
number
每個項目的執行逾時時間,單位為毫秒。
maxRetries?:
number
每個項目失敗後的最大重試次數。預設為
0(不重試)。Abort 錯誤永遠不會重試。unmockedToolPolicy?:
'allow' | 'deny'
= 'allow'
控制未宣告的 Agent Tool 呼叫。
allow 會實際執行這些呼叫;deny 會在執行前讓項目以 TOOL_MOCK_NOT_DECLARED 失敗。項目級值會覆寫此實驗預設值。persistence?:
ExperimentPersistencePolicy
控制本次執行是否寫入實驗記錄和評分記錄。目標和 Scorer 仍會執行,結果仍可在傳回的摘要中取得。
ExperimentPersistencePolicy
experiments?:
'default' | 'none'
設為
none 可跳過實驗建立以及項目結果、進度和最終狀態的寫入。scores?:
'default' | 'none'
設為
none 可跳過分數寫入,同時仍執行 Scorer。傳回值「傳回值」的直接連結
result:
Promise<ExperimentSummary>
已完成實驗的摘要。
ExperimentSummary
experimentId:
string
實驗的唯一 ID。
status:
'pending' | 'running' | 'completed' | 'failed'
實驗的最終狀態。
totalItems:
number
資料集中的項目總數。
succeededCount:
number
成功的項目數。
failedCount:
number
失敗的項目數。
skippedCount:
number
跳過的項目數(例如因中止而跳過)。
completedWithErrors:
boolean
如果執行已完成但有部分項目失敗,則為
true。startedAt:
Date
實驗開始時間。
completedAt:
Date
實驗完成時間。
results:
ItemWithScores[]
所有項目結果及其分數。
ItemWithScores
itemId:
string
資料集項目的 ID。
itemVersion:
number
執行項目時的資料集版本。
input:
unknown
傳遞給目標的輸入資料。
output:
unknown | null
目標輸出;如果失敗則為
null。groundTruth:
unknown | null
資料集項目的預期輸出。
error:
{ message: string; stack?: string; code?: string } | null
執行失敗時的結構化錯誤。
startedAt:
Date
項目執行開始時間。
completedAt:
Date
項目執行完成時間。
retryCount:
number
重試次數。
scores:
ScorerResult[]
所有 Scorer 針對此項目的結果。
ScorerResult
scorerId:
string
Scorer 的 ID。
scorerName:
string
Scorer 的顯示名稱。
score:
number | null
計算得到的分數;如果 Scorer 失敗則為
null。reason:
string | null
分數的原因或解釋。
error:
string | null
Scorer 失敗時的錯誤訊息。