模型切换

会话会使用你在 model 选项中传入的模型运行。先声明一次智能体可以访问的所有模型, 然后为每个会话选择其一——用快速模型处理高频、低风险的工作,用能力更强的模型进行 评审。当你希望在不改动任何提示词的前提下,于成本与能力之间取得平衡时,可以使用这 种方式。

声明模型

模型在智能体文件中配置。每个 provider 列出它对外暴露的模型(tool_call 默认为 true, 这里写出只是为了清晰),当会话未设置 model 时则使用 default_model。

ACL
default_model = "provider/fast-model"
providers "provider" {
apiKey = env("PROVIDER_API_KEY")
baseUrl = env("PROVIDER_BASE_URL")
models "fast-model" { tool_call = true }
models "review-model" { tool_call = true }
}

按会话设置模型

model 选项在打开会话时设置。该会话运行的一切——send、run、parallel、 pipeline 以及被委派的 task 子运行——都会使用该模型。同一个智能体配置可以为不同会话驱动不同的 模型选择。

Rust
Node.js
Python
Go

按工作智能体设置模型

worker 规格可以携带自己的 model。当你用 session_for_worker(Node.js 为 sessionForWorkerAsync,Go 为 SessionForWorker)从该规格打开会话时,它才会生效: 会话选项中未设置的项,会由 worker 的模型、步数上限、提示词和权限补上。显式传入的选项 优先,因此如果希望使用 worker 的模型,就不要在这些选项里再设置 model。

被委派的 task 子运行不会切换模型。即使 worker_agents 中注册的 worker 设置了 model,子运行仍使用委派它的会话的模型。若想让探索工作跑在更廉价的模型上,可以为它 单独打开一个 worker 会话,再把结果交给使用更强模型的会话:

Rust
Node.js
Python
Go

说明:

  • model 的值是 provider/model 形式的引用,必须对应智能体文件中声明的 provider 与模型 (且配置了 API Key),否则创建会话会以 model 配置错误失败。SDK 中没有硬编码的模型名。
  • parallel 与 pipeline 的步骤规格没有 model 字段,所有步骤都使用会话的模型。
  • task 工具没有 model 字段。每个任务项只接受 agent、description、prompt、 background、max_steps 和 output_schema,其他字段都会被拒绝。

在会话上使用 model 选项的可运行示例位于 sdk/node/examples/basic/test_api_alignment.ts。