Agent の概要
Agent は LLM と Tool を使用して、自由度の高いタスクを解決します。目標について推論し、使用する Tool を判断します。会話の Memory を保持し、モデルが最終回答を出力するか、任意の停止条件を満たすまで処理を繰り返します。
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 は Mastra のモデルルーターを使用し、'provider/model-name' 形式で指定します。
アプリケーション全体で Agent を利用できるようにするには、通常 src/mastra/index.ts にある Mastra インスタンスへ登録します。
import { Mastra } from '@mastra/core'
import { testAgent } from './agents/test-agent'
export const mastra = new Mastra({
agents: { testAgent },
})
登録後は Workflow、Tool、他の Agent から呼び出せるようになり、Memory、ロギング、可観測性機能などの共有リソースにアクセスできます。
利用可能なプロパティと設定の詳細は、Agent リファレンスを参照してください。
Studio を使用すると、さまざまなメッセージで Agent をテストし、Tool の呼び出しとレスポンスを確認しながら、Agent の動作をデバッグできます。
Agent を使用するAgent を使用するへの直接リンク
登録後、mastra.getAgentById() で Agent を取得します。完全なレスポンスには .generate()、トークンをリアルタイムで配信するには .stream() を呼び出します。Agent は、Workflow ステップ、Tool、Mastra Client、ルートハンドラー、サーバーアダプター、コマンドラインから呼び出せます。使用するフレームワークでの Agent の使い方は、ガイドを参照してください。
Mastra インスタンスから Agent を参照するときは、インスタンスレベルのストレージ、ロギング、Agent レジストリなどの共有サービスへアクセスできるよう、mastra.getAgentById() を使用してください。直接インポートした Agent も独自のローカル設定で動作しますが、これらの共有サービスにはアクセスできません。
- .generate()
- .stream()
すべての Tool 呼び出しとステップの完了後に、完全なレスポンスを返します。結果には text、toolCalls、toolResults、steps、トークンの 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)
トークンの到着に応じて利用できるストリームを返します。結果は増分出力用の textStream と、ストリーム完了時に解決される toolCalls、toolResults、steps、トークン usage の 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 |
| 会話をまたいでコンテキストと設定を保持する | Memory |
| プレーンテキストではなく型付きオブジェクトを取得する | 構造化出力 |
| Human-in-the-loop:実行を一時停止して人間の承認を待つ | 承認 |
| マルチ Agent ネットワークを構築する | Supervisor Agent |
| サブ Agent を登録する | Tool |
| 生成の前後でメッセージを介入または変換する | Processor |
| Agent を安全に保つ | ガードレール |
| 自身の作業を修正する Agent を構築する | Rubric scorer |
| リクエストコンテキストに応じて instructions やモデルを切り替える | 動的設定 |
| 音声認識または音声合成を追加する | Voice |
| Slack、Discord、Telegram に接続する | Channel |
マルチ Agent システムマルチ Agent システムへの直接リンク
マルチ Agent システムは、1つの Agent では範囲が広すぎる、または専門性が高すぎるタスクを、複数の Agent で解決します。多数の Tool と長い指示を持つ1つの Agent を構築する代わりに、特化した Agent に役割を分け、コーディネーターが結果をまとめます。
Mastra でさまざまなパターンを適用する方法は、マルチ Agent システムの概念概要を参照してください。