跳转到内容

Agent

Agent 是一次带工具的多步执行。它和普通对话的区别在于:模型可以调用工具、拿到结果、继续下一步,直到给出最终回答。

新建时选一个 chat 模型,再勾选要开放的工具。工具目录来自 GET /api/v1/tools,内置三个:

  • 知识库检索
  • 会话检索
  • 计算器

模型必须支持 tool calls。引导页里取消勾选“支持工具调用”后,Agent 不能创建,也不能运行。

POST /api/v1/agents/{id}/runs,请求体里放 input。响应是 SSE 流,首帧永远是 run_started,data 里是 runId。

首帧在新建和幂等重放两种情况下都会发,形状相同。取消、重订阅、跳转运行详情都要用这个 id。

之后的事件包括工具调用、工具结果、token、citation、error、done。

每一步调了哪个工具、传了什么参数、拿到什么结果,都会写进 agent_run_steps。运行详情页可以逐步查看。

排查问题时,轨迹能回答模型为什么选了那个工具、工具返回了什么、下一步为什么停。

POST /api/v1/runs/{runId}/cancel。终态是 cancelled,不是 failed。

取消只让这次 run 停止继续往下走;已经执行过的工具调用会留在轨迹里,副作用不会回滚。

进程崩溃或中断后,run 会停在 interrupted。POST /api/v1/runs/{runId}/resume 从断点继续。

能不能自动重放,取决于工具声明的副作用等级:

  • 只读工具、可幂等重放的写工具:可以重放。
  • 声明了不可幂等、或者效果账本显示副作用已经发生的工具:拒绝自动恢复,提示重新发起。

被拒绝的 run 不会自己好。重新发起是唯一安全的下一步。

v5.0.2 只能手动发起 run。没有 cron、webhook 或事件触发。要定时跑,得在外面写调度,再调 API。

发起 run 接受 Idempotency-Key。同一个键重发不会触发第二次执行;服务端把那条 run 已经记录的事件按原 event_id 补发一遍。

网络超时后重试时用它,避免同一条任务跑两遍。