Agent.generate()
.generate() メソッドは、強化された機能を使って Agent からレスポンスを非ストリーミング生成します。メッセージと任意の生成オプションを受け取ります。
使用例使用例への直接リンク
Agent をメッセージとともに呼び出し、レスポンスを生成します。
const result = await agent.generate('message for agent')
パラメータパラメータへの直接リンク
messages:
options?:
maxSteps?:
stopWhen?:
onIterationComplete?:
context.iteration:
context.maxIterations:
context.text:
context.isFinal:
context.finishReason:
context.toolCalls:
context.messages:
return.continue?:
return.feedback?:
isTaskComplete?:
scorers:
strategy?:
onComplete?:
parallel?:
timeout?:
delegation?:
onDelegationStart?:
context.requestContext の変更による Sub-agent Run のリクエストコンテキストへのエントリ追加に使います。onDelegationComplete?:
bail() メソッドが含まれ、{ feedback } を返して Supervisor の次の Action を導けます。Feedback は Assistant Message として Supervisor Memory へ保存されます。messageFilter?:
scorers?:
scorer:
sampling?:
type:
rate?:
returnScorerData?:
onChunk?:
onError?:
onAbort?:
activeTools?:
abortSignal?:
prepareStep?:
requireToolApproval?:
finishReason: 'suspended' で戻り、Tool 呼び出しの詳細(toolCallId、toolName、args)を持つ suspendPayload を含みます。続行するには approveToolCallGenerate() または declineToolCallGenerate() を使います。詳しくは Agent の承認を参照してください。autoResumeSuspendedTools?:
resumeSchema に基づき、ユーザーメッセージから resumeData を抽出します。Memory の設定が必要です。toolCallConcurrency?:
context?:
structuredOutput?:
schema:
model?:
errorStrategy?:
fallbackValue?:
instructions?:
jsonPromptInjection?:
logger?:
providerOptions?:
{ openai: { reasoningEffort: 'low' } })。outputProcessors?:
maxProcessorRetries?:
inputProcessors?:
instructions?:
system?:
output?:
memory?:
thread:
resource:
options?:
onTitleGenerated?:
generate() が戻った後に完了する場合があります。Memory オプションで generateTitle が有効で、Thread に既存の title がない場合にのみ発火します。onFinish?:
onStepFinish?:
telemetry?:
isEnabled?:
recordInputs?:
recordOutputs?:
functionId?:
modelSettings?:
temperature?:
maxOutputTokens?:
maxRetries?:
topP?:
topK?:
presencePenalty?:
frequencyPenalty?:
stopSequences?:
toolChoice?:
'auto':
'none':
'required':
{ type: 'tool'; toolName: string }:
toolsets?:
clientTools?:
hooks?:
beforeToolCall は { proceed: false, output } を返して Tool 呼び出しをスキップできます。savePerStep?:
providerOptions?:
openai?:
anthropic?:
google?:
[providerName]?:
runId?:
requestContext?:
tracingContext?:
currentSpan?:
tracingOptions?:
metadata?:
requestContextKeys?:
traceId?:
parentSpanId?:
tags?:
versions?:
agents?:
versionId?:
status?:
includeRawChunks?:
レスポンス構造レスポンス構造への直接リンク
Agent.generate() は、実行中に収集した最終データを返します。steps は Step オブジェクトの配列です。結果内の Tool 配列(トップレベルの toolCalls と toolResults、およびネストされた step.toolCalls と step.toolResults)には、Mastra の Chunk 形式が使われます。
つまり、Tool データは payload でラップされます。
const response = await agent.generate('Check the weather in Lagos')
for (const toolCall of response.toolCalls) {
console.log(toolCall.type) // 'tool-call'
console.log(toolCall.runId)
console.log(toolCall.from)
console.log(toolCall.payload.toolName)
console.log(toolCall.payload.args)
}
for (const step of response.steps) {
for (const toolResult of step.toolResults) {
console.log(toolResult.type) // 'tool-result'
console.log(toolResult.payload.toolName)
console.log(toolResult.payload.result)
}
}
同じ形状の Chunk を Stream で扱う方法は、ChunkType リファレンスを参照してください。
戻り値戻り値への直接リンク
result:
text:
object?:
toolCalls:
type:
runId:
from:
payload:
toolCallId:
toolName:
args?:
providerExecuted?:
toolResults:
type:
runId:
from:
payload:
toolCallId:
toolName:
result:
isError?:
usage:
steps:
text:
toolCalls:
toolResults:
finishReason?:
usage:
request:
response:
finishReason:
response:
id?:
timestamp?:
modelId?:
headers?:
anthropic-ratelimit-requests-remaining、x-ratelimit-remaining-tokens)や、その他の Provider 固有メタデータを含みます。messages?:
uiMessages?:
request?:
body?:
warnings?:
providerMetadata?:
reasoning?:
reasoningText?:
sources?:
files?:
suspendPayload?:
finishReason が 'suspended' の場合に存在します。保留中の Tool 呼び出しを承認または拒否するために必要な詳細を含みます。toolCallId:
toolName:
args:
runId?:
approveToolCallGenerate() または declineToolCallGenerate() を呼び出す場合に必要です。traceId?:
spanId?:
messages:
rememberedMessages:
error?:
tripwire?:
scoringData?:
returnScorerData が有効な場合の Evals 用 Scoring データ。その他の例その他の例への直接リンク
モデル設定を使うモデル設定を使うへの直接リンク
出力 Token 数を制限し、Temperature を設定する例です。
const limitedResult = await agent.generate('Write a short poem about coding', {
modelSettings: {
maxOutputTokens: 50,
temperature: 0.7,
},
})
Memory を使うMemory を使うへの直接リンク
Memory オプションを設定し、Agent が会話履歴へアクセスして会話を永続化できるようにします。これにより、Agent は過去のやり取りを記憶し、メッセージ間で Context を維持できます。
const memoryResult = await agent.generate('Remember my favorite color is blue', {
memory: {
thread: 'user-123-thread',
resource: 'user-123',
},
})
レスポンス Header へアクセスするレスポンス Header へアクセスするへの直接リンク
一部の Model Provider は、残りの Token 数や Rate Limit の状態など、有用な情報をレスポンス Header で返します。生成完了後、結果オブジェクトからこれらの Header へアクセスできます。
const result = await agent.generate('Hello!')
const remainingRequests = result.response?.headers?.['anthropic-ratelimit-requests-remaining']
const remainingTokens = result.response?.headers?.['x-ratelimit-remaining-tokens']
console.log(`Remaining requests: ${remainingRequests}, Remaining tokens: ${remainingTokens}`)
画像を解析する画像を解析するへの直接リンク
Agent は、画像の視覚情報と画像内のテキストを処理し、画像を解析して説明できます。画像解析を有効にするには、content 配列へ type: 'image' と画像 URL を持つオブジェクトを渡します。画像コンテンツとテキスト Prompt を組み合わせて、Agent の解析を導くこともできます。
const response = await agent.generate([
{
role: 'user',
content: [
{
type: 'image',
image: 'https://placebear.com/cache/395-205.jpg',
mimeType: 'image/jpeg',
},
{
type: 'text',
text: 'Describe the image in detail, and extract all the text in the image.',
},
],
},
])
console.log(response.text)
maxSteps を使うusing-maxstepsへの直接リンク
maxSteps パラメータは、Agent が連続して行える LLM 呼び出しの最大回数を制御します。各 Step ではレスポンスを生成し、Tool 呼び出しを実行してから結果を処理します。Step 数を制限すると、無限ループを防ぎ、Latency を抑えられます。また、Tool を使う Agent の Token 使用量も制御できます。デフォルトは 5 ですが、増やすこともできます。
const response = await agent.generate('Help me organize my day', {
maxSteps: 10,
})
console.log(response.text)
onStepFinish を使うusing-onstepfinishへの直接リンク
onStepFinish Callback を使うと、複数 Step 処理の進捗を監視できます。Debug や、ユーザーへの進捗通知に役立ちます。
onStepFinish は、Stream または構造化出力を使わないテキスト生成でのみ利用できます。
const response = await agent.generate('Help me organize my day', {
onStepFinish: ({ text, toolCalls, toolResults, finishReason, usage }) => {
console.log({ text, toolCalls, toolResults, finishReason, usage })
},
})
onTitleGenerated を使うusing-ontitlegeneratedへの直接リンク
Memory オプションで generateTitle を有効にすると、レスポンス完了後に Title 生成が非同期で実行されます。Title の準備ができたときに処理するには onTitleGenerated を使います。たとえば、SSE 経由でクライアントへ送信できます。
const response = await agent.generate('What is quantum computing?', {
memory: {
thread: threadId,
resource: userId,
onTitleGenerated: title => {
console.log('Thread title:', title)
},
},
})