Agent SDK:在OpenRouter上构建多轮代理工作流
OpenRouter发布@openrouter/agent SDK,这是一个模型无关的TypeScript工具包,支持工具执行、多轮循环、停止条件、流式传输、成本跟踪和工具审批,简化了代理工作流的构建。
OpenRouter 宣布推出 @openrouter/agent SDK,这是一个模型无关的 TypeScript 工具包,旨在简化多轮代理工作流的构建。传统上,构建一个可靠的代理需要开发者处理多层次的逻辑:调用模型、解析工具请求、执行工具、将结果反馈给模型,并重复此过程直到任务完成。此外,还需要处理输入验证、流式传输、成本跟踪以及设置终止条件,以免循环无休止地运行。@openrouter/agent SDK 将这些复杂性封装为一个名为 callModel 的单一函数,开发者只需调用该函数,无需手动编写循环逻辑。
callModel 的核心功能之一是工具执行。开发者可以使用 tool() 和 Zod 模式定义工具,SDK 会在运行时自动验证模型的输入和函数的输出。如果模型提供了错误的参数,SDK 会返回清晰的错误信息,而不是让下游静默失败。工具调用与模型调用分离,保持了代码的整洁和可维护性。
多轮循环是代理工作流的关键。一个代理往往需要多步操作,例如搜索信息、阅读结果、再次搜索,然后生成摘要。callModel 在内部处理循环,开发者通过停止条件控制循环何时结束。停止条件是可组合的:可以使用 stepCountIs(10) 限制最大步骤数,maxCost(1.00) 设置成本上限,或 hasToolCall('done') 在调用特定工具时停止。这些条件可以组合使用,也可以编写自定义函数。
流式传输支持代理逐步展示进度。callModel 提供 getTextStream()、getToolCallsStream() 和 getReasoningStream() 三个流,可以并发处理同一响应,无需提前选择。每个响应还包含令牌计数和成本数据,通过 result.getResponse() 获取,便于精确跟踪每次代理运行的成本。
对于需要执行真实操作的代理,SDK 还支持工具审批功能。可以将工具标记为需要审批,当模型调用该类工具时,SDK 会暂停执行并等待开发者的决策。
由于 SDK 是模型无关的,开发者可以在 OpenRouter 上的 300 多个模型之间自由切换,而无需修改代理代码。要开始使用,只需获取 API 密钥并参考 callModel 文档,即可快速构建个人代理工具。