エージェントを作成する
定義からエージェントを作成します。定義のステップ上限は、各 run または continue の呼び出しに適用されます。定義のフィールド
Rust は、フィールドではなくメソッドで定義を組み立てます。AgentDefinition::new(id, model) の後に、.instructions(text)、.tool(tool)(ツールごとに1回)、.max_steps(limit)、.model_retries(count, backoff)、.human_review(callback) を続けます。Java の AgentDefinition は、10引数、13引数、19引数のコンストラクターを持つレコードです。
TypeScript では、
model、instructions、サンプリングの値を固定にも動的にもできます。
ツールを定義する
ツールのすべてのフィールドはツールにあります。
Phaseo Gateway に接続する
各言語のクライアントオプションは出力と再試行にあります。
実行をローカルに記録する
DevTools を参照してください。
停止条件
Go と Java は
StopCondition を、C# は Func<StopState, (bool Stop, string Reason)> を、PHP は callable を、Ruby は lambda を返します。Rust には停止条件がなく、ステップ上限だけがあります。停止条件を参照してください。
実行と続行
実行と続行は実行結果を返します。TypeScript では
Promise<AgentRunResult>、Go では (RunResult, error)、C# では Task<RunResult>、Rust では Result<RunResult, AgentError>、その他の言語では実行結果を直接返します。ストリームのメソッドは、すぐにストリーム結果を返します。
実行オプション
PHP と Ruby は、これらを名前付き引数またはキーワード引数として受け取ります。Java のRunOptions は位置引数のレコードで、順序は input, client, context, model, preset, maxSteps, modelRetry, toolExecution, onEvent, devtools、その後に省略可能な state が続きます。
Python の
run() は stop_when も受け付けますが無視します。停止条件は定義に設定してください。PHP の stream() と Ruby の stream が受け取るのは input、client、context、state だけです。Rust は RunOptions::new(input) でデフォルトを作成します。
続行オプション
続行オプションは、上記の実行の上書きに加えて、次のものを受け取ります。
Java の
ContinueOptions の順序は run, client, context, model, preset, maxSteps, humanInput, modelRetry, toolExecution, onEvent, devtools、次に approvals, rejections, toolOutputs、最後に runId, state です。この 16 引数の形式のほかに、最初の 11 引数だけ、または最初の 14 引数だけを受け取るコンストラクターもあり、残りは空のリストまたは null になります。Rust は ContinueOptions::new(result) でデフォルトを作成します。
ストリーム結果
コンシューマーは最初から再生するため、複数のコンシューマーが同じ実行を読み取れます。動作は言語によって異なります。
実行結果
型は、TypeScript と Python では
AgentRunResult、その他では RunResult です。TypeScript には、stepResults(正規化されたステップ結果)と items(順序付きのメッセージ、推論、ツールの動き、エラー、最終出力。アイテムを参照)も加わります。Rust では、output は serde_json::Value で、RunResult、RunRecord、RunStep、Message、ToolCall、HumanPause、PendingToolCall、ToolDecision、ToolOutput、UsageSummary は Serde でシリアライズできます。
実行レコード
Rust の
RunRecord には、実際に使われたモデルとステップ上限も保存されます。TypeScript には、Gateway のエラーの詳細を含む errorDetails が加わります。
実行のステータスは queued、running、waiting_for_tools、waiting_for_human、completed、stopped、failed です。TypeScript には cancelled も加わります。
ステップのレコード
型は、TypeScript と Python(
AgentStepRecord)を除き、すべて RunStep です。
使用量のまとめ
inputTokens、outputTokens、cachedTokens、totalTokens、cost(TypeScript、Java)、input_tokens、output_tokens、cached_tokens、total_tokens、cost(Python、PHP と Ruby のキー、Rust)、InputTokens、OutputTokens、CachedTokens、TotalTokens、Cost(Go、C#)です。型は、TypeScript と Python では AgentUsageSummary、Go、C#、Java、Rust では UsageSummary です。PHP と Ruby は配列またはハッシュを使います。cost の注意点はオブザーバビリティを参照してください。
一時停止と判断
フィールド名は各言語の命名規則に従います。
toolCallId(TypeScript、PHP、Java)、tool_call_id(Python、Ruby、Rust)、ToolCallID(Go)、ToolCallId(C#)です。Rust の ToolDecision は承認専用です。状態と承認を参照してください。
ツールに渡されるランタイムコンテキスト
状態アクセサー
モデルクライアント
モデルターンを別の通信手段で送る場合や、Gateway クライアントをラップする場合は、モデルクライアントを実装します。
Rust では、
ModelRequest はエージェント ID、実際に使われるモデル、指示、現在のメッセージ、ツールの仕様(ToolSpec:id、description、JSON Schema の parameters)、アプリケーションのコンテキストを保持します。ModelResponse は message、usage、request_id、provider、model、finish_reason を保持します。Message は role、content、tool_calls、tool_call_id、name、is_error を持ち、コンストラクター Message::user(content) と Message::assistant(content) があります。ToolCall は id、name、JSON の input を持ちます。
イベントとエラー
TypeScript は、エラーを分類する
agentErrorIsRetryable()、agentRetryAfterMs()、agentErrorIsContextOverflow()、結果のないまま残ったツール呼び出しに応答し、どの呼び出しにも対応しない結果を取り除く repairToolHistory(messages)、長いテキストの先頭と末尾を残して切り詰めた内容の通知を入れる truncateToolOutput(text, limit) もエクスポートします。ライフサイクルフックとイベントとエラーを参照してください。