Agent 概觀
Agent 使用 LLM 和 Tool 解決開放式任務。它們會推理目標並決定要使用哪些 Tool,也會保留對話記憶並持續反覆執行,直到模型產生最終答案,或符合選用的停止條件為止。
Agent 會產生結構化回應,供你在 UI 中呈現或透過程式處理。你可以直接使用 Agent,也可以將它們組合成 Workflow 或多 Agent 系統。
何時使用 Agent「何時使用 Agent」的直接連結
當任務是開放式,且無法預先得知執行步驟時,請使用 Agent。Agent 會決定要呼叫哪些 Tool、要循環幾次,以及何時停止。你只需提供目標與限制條件,不必定義每個步驟。對於控制流程明確、步驟預先確定的多步驟流程,請改用 Workflow。
觀看 Mastra Agent 快速入門,快速了解如何建立及測試 Mastra Agent。
快速入門「快速入門」的直接連結
從 @mastra/core 建立 Agent 類別的執行個體,並提供必要屬性,即可建立 Agent:
import { Agent } from '@mastra/core/agent'
export const testAgent = new Agent({
id: 'test-agent',
name: 'Test Agent',
instructions: 'You are a helpful assistant.',
model: 'openai/gpt-5.6-sol',
})
instructions 定義 Agent 的行為、個性與能力。這些系統層級的提示詞會確立 Agent 的核心定位與專業領域。model 使用 'provider/model-name' 格式,並透過 Mastra 的模型路由器指定。
若要讓整個應用程式都能使用此 Agent,請將它註冊至 Mastra 執行個體(通常位於 src/mastra/index.ts):
import { Mastra } from '@mastra/core'
import { testAgent } from './agents/test-agent'
export const mastra = new Mastra({
agents: { testAgent },
})
註冊後,即可從 Workflow、Tool 或其他 Agent 呼叫它,且它能存取記憶、記錄與可觀測性功能等共用資源。
如需可用屬性與設定的詳細資訊,請參閱 Agent 參考文件。
使用 Studio 以不同訊息測試 Agent、檢查 Tool 呼叫與回應,並偵錯 Agent 行為。
使用你的 Agent「使用你的 Agent」的直接連結
註冊後,使用 mastra.getAgentById() 取得 Agent。呼叫 .generate() 可取得完整回應,呼叫 .stream() 則可即時傳送 token。你可以從 Workflow 步驟、Tool、Mastra Client、路由處理常式、伺服器介接器或命令列呼叫 Agent。請前往指南,了解如何在你選用的框架中使用 Agent。
從 Mastra 執行個體參照 Agent 時,請使用 mastra.getAgentById(),確保它能存取執行個體層級的儲存空間、記錄與 Agent 登錄檔等共用服務。直接匯入的 Agent 仍可使用自身的本機設定運作,但無法存取這些共用服務。
- .generate()
- .stream()
在所有 Tool 呼叫與步驟完成後傳回完整回應。結果包含 text、toolCalls、toolResults、steps,以及 token usage 統計資料。
如需回應結構的詳細資訊(包括 Tool 呼叫與 Tool 結果的承載資料),請參閱 Agent.generate() 參考文件。
const agent = mastra.getAgentById('test-agent')
const response = await agent.generate('Help me organize my day')
console.log(response.text)
傳回可隨 token 抵達而取用的串流。結果會公開 textStream 供漸進式輸出,並提供 toolCalls、toolResults、steps 與 token usage 的 Promise;這些 Promise 會在串流結束時完成解析。
如需串流結構的詳細資訊(包括 Tool 呼叫與 Tool 結果的承載資料),請參閱 MastraModelOutput 參考文件。
const agent = mastra.getAgentById('test-agent')
const stream = await agent.stream('Help me organize my day')
for await (const chunk of stream.textStream) {
process.stdout.write(chunk)
}
擴充你的 Agent「擴充你的 Agent」的直接連結
Agent 開始運作後,可使用下表找到接下來要執行之工作的對應頁面:
| 目標 | 從這裡開始 |
|---|---|
| 提供 Agent 可呼叫外部 API 或服務的 Tool | Tool |
| 跨對話保留情境與偏好設定 | 記憶 |
| 傳回具型別物件,而非純文字 | 結構化輸出 |
| 人機協作:暫停執行並等待人工核准 | 核准 |
| 建立多 Agent 網路 | Supervisor Agent |
| 註冊子 Agent | Tool |
| 在產生內容前後攔截或轉換訊息 | Processor |
| 確保 Agent 安全 | Guardrail |
| 建立能修正自身工作的 Agent | Rubric scorer |
| 根據請求情境切換指令或模型 | 動態設定 |
| 加入語音轉文字或文字轉語音 | 語音 |
| 連線至 Slack、Discord 或 Telegram | Channel |
多 Agent 系統「多 Agent 系統」的直接連結
多 Agent 系統會使用多個 Agent,解決對單一 Agent 而言範圍過廣或過度專業的任務。與其建立一個配備數十個 Tool 和冗長指令集的 Agent,你可以將職責拆分給各自專注的 Agent,再由協調者彙整結果。
請閱讀多 Agent 系統概念概觀,了解如何透過 Mastra 套用不同模式。