跳至主要內容

Observability API

Observability API 提供取得 Trace、監察應用程式效能、為 Trace 評分以供評估,以及記錄與 Trace 和 span 關聯的意見回饋等方法。

取得指定 Trace
取得指定 Trace 的直接連結

按 ID 取得指定 Trace,包括所有 span 及詳情:

const trace = await mastraClient.getTrace('trace-id-123')

篩選 Trace
篩選 Trace 的直接連結

取得 Trace 根 span 的分頁清單,並可選擇篩選條件:

const traces = await mastraClient.getTraces({
pagination: {
page: 1,
perPage: 20,
dateRange: {
start: new Date('2024-01-01'),
end: new Date('2024-01-31'),
},
},
filters: {
name: 'weather-agent', // Filter by trace name
spanType: 'agent', // Filter by span type
entityId: 'weather-agent-id', // Filter by entity ID
entityType: 'agent', // Filter by entity type
},
})

console.log(`Found ${traces.spans.length} root spans`)
console.log(`Total pages: ${traces.pagination.totalPages}`)

// To get the complete trace with all spans, use getTrace
const completeTrace = await mastraClient.getTrace(traces.spans[0].traceId)

列出清單檢視所需的 Trace
列出清單檢視所需的 Trace 的直接連結

listTracesLight() 傳回與 Trace 清單相同的列,但不包括 inputoutputattributes 承載資料。每列改為包含簡短的 inputPreview 字串,讓清單可顯示預覽欄而毋須傳送完整提示詞。

如需一次顯示大量 Trace,應優先使用此方法,並只在開啟個別列時才取得完整記錄:

const list = await mastraClient.listTracesLight({
pagination: { page: 0, perPage: 25 },
filters: { entityType: 'agent' },
})

for (const span of list.spans) {
console.log(span.name, span.inputPreview)
}

// Fetch the full payload only for the trace the user selects
const selected = await mastraClient.getTrace(list.spans[0].traceId)

此方法接受與 listTraces() 相同的篩選、排序及差量輪詢參數。如確實需要完整的 span 承載資料,請使用 listTraces()

為 Trace 評分
為 Trace 評分 的直接連結

使用已註冊的評分器為指定 Trace 評分,以供評估:

const result = await mastraClient.score({
scorerName: 'answer-relevancy',
targets: [
{ traceId: 'trace-1', spanId: 'span-1' }, // Score specific span
{ traceId: 'trace-2' }, // Score specific span which defaults to the parent span
],
})

按 span 取得評分
按 span 取得評分 的直接連結

取得 Trace 內指定 span 的評分:

const scores = await mastraClient.listScoresBySpan({
traceId: 'trace-123',
spanId: 'span-456',
page: 1,
perPage: 20,
})

意見回饋
意見回饋 的直接連結

意見回饋方法可建立、列出及查詢評分、讚好/不讚好、留言及修正等人工介入訊號。範例請參閱意見回饋指南,完整結構描述則請參閱意見回饋參考

建立意見回饋
建立意見回饋 的直接連結

建立與 Trace 或 span 關聯的意見回饋記錄:

const response = await mastraClient.createFeedback({
feedback: {
traceId: 'trace-123',
spanId: 'span-456',
feedbackSource: 'user',
feedbackType: 'rating',
value: 1,
comment: 'Helpful answer.',
},
})

列出意見回饋
列出意見回饋 的直接連結

取得意見回饋記錄的分頁清單,並可選擇篩選條件:

const feedback = await mastraClient.listFeedback({
filters: {
feedbackType: 'rating',
feedbackSource: 'studio',
},
pagination: { page: 0, perPage: 20 },
orderBy: { field: 'timestamp', direction: 'DESC' },
})

彙總意見回饋
彙總意見回饋 的直接連結

彙總數值意見回饋,例如評分,或以 1-1 表示的讚好/不讚好:

const averageRating = await mastraClient.getFeedbackAggregate({
feedbackType: 'rating',
aggregation: 'avg',
comparePeriod: 'previous_day',
})

分組意見回饋
分組意見回饋 的直接連結

按可觀測性維度將數值意見回饋分組:

const ratingsByAgent = await mastraClient.getFeedbackBreakdown({
feedbackType: 'rating',
groupBy: ['entityName'],
aggregation: 'avg',
})

按時間查詢意見回饋
按時間查詢意見回饋 的直接連結

按時間間隔將數值意見回饋分桶:

const ratingsOverTime = await mastraClient.getFeedbackTimeSeries({
feedbackType: 'rating',
interval: '1h',
aggregation: 'avg',
groupBy: ['feedbackSource'],
})

查詢意見回饋百分位數
查詢意見回饋百分位數 的直接連結

傳回數值意見回饋的百分位數序列:

const ratingPercentiles = await mastraClient.getFeedbackPercentiles({
feedbackType: 'rating',
percentiles: [0.5, 0.95],
interval: '1d',
})