创建智能体
根据定义创建一个智能体。定义中的步数上限作用于每次运行或继续调用。定义字段
Rust 用方法而不是字段构建定义:先AgentDefinition::new(id, model),再调用 .instructions(text)、.tool(tool)(每个工具调用一次)、.max_steps(limit)、.model_retries(count, backoff) 和 .human_review(callback)。Java 的 AgentDefinition 是一个 record,有 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 是按位置传参的 record,顺序为 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 还增加了包含网关错误详情的 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 使用数组或 Hash。关于 cost 的注意事项,参见可观测性。
暂停与决定
字段名遵循各语言的风格:
toolCallId(TypeScript、PHP、Java)、tool_call_id(Python、Ruby、Rust)、ToolCallID(Go)和 ToolCallId(C#)。Rust 的 ToolDecision 只用于批准。参见状态与审批。
传给工具的运行时上下文
状态访问器
模型客户端
实现一个模型客户端,即可通过其他传输方式发送模型轮次,或包装网关客户端。
在 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) 用于保留长文本的开头和结尾,并附上被截掉内容的说明。参见生命周期钩子和事件与错误。