Fluxio
← Retour au blog

Claude Sonnet 5.5 工具调用实战:逐步搭建智能体工作流

Courants de modèlesZH

§1 用 Claude Sonnet 5.5 拆解订单查询工作流

让模型回答问题,与让模型可靠地完成任务,是两种不同的工程目标。工具调用把语言推理连接到外部系统:模型提出查询请求,应用执行查询,再把结果交给模型组织回复。本文以“查询订单并解释物流状态”为例,逐步搭建一个可观察、可限制、支持流式响应的智能体工作流。

这里选择 Claude Sonnet 5.5 作为示例。开始前,请在接入平台确认模型可用性、实际模型标识,以及该路由是否支持工具调用和流式工具参数,不要直接把展示名称当作请求中的模型标识。

§2 第一步:通过 Fluxio 配置模型接入

如果希望使用统一接口接入模型,Fluxio 适合放在应用与模型之间。它采用流式优先、按令牌付费的方式,支持通过一个密钥访问多种模型,并可配合 OpenAI SDK 使用。对于需要逐字展示回复的订单助手,这能减少接入层的重复开发。

在 OpenAI 风格客户端中,将基础地址设置为 https://api.fluxioapi.com/v1,并从服务端环境变量读取密钥。密钥不得进入浏览器代码或前端日志。先发送一次最小请求,确认身份验证、模型路由与流式响应正常,再添加工具。

§3 第二步:为订单查询定义明确的工具契约

定义一个名为 query_order 的只读工具,描述为“查询当前登录用户有权访问的订单及物流状态”。参数使用 JSON Schema:对象中只包含必填字符串 order_id,并禁止额外字段。工具描述应说明何时调用、需要什么输入,以及不能执行哪些操作。

  • – 订单编号由用户提供,缺失时先询问,不允许模型猜测。
  • – 用户身份由服务端会话注入,不能接受模型传入的用户身份作为授权依据。
  • – 返回字段限制为订单状态、物流节点和更新时间,避免暴露完整地址等敏感信息。

工具契约越清晰,应用越容易验证请求。提示词可以引导行为,但不能代替服务端权限检查。

§4 第三步:发送消息并识别工具调用

首次请求携带系统规则、用户问题和工具定义,并在接口支持时将工具选择设为自动。系统规则可以要求模型优先依据查询结果回答;遇到订单不存在、权限不足或物流信息缺失时,应明确说明,而不是补写事实。

收到响应后,应用应区分普通文本与工具调用。模型只负责提出调用,真正访问订单系统的是应用代码。只有参数解析、字段校验和权限检查全部通过,才能执行 query_order。

§5 第四步:正确拼接流式工具参数

启用流式输出后,工具名称和参数可能分散在多个增量事件中。不要把每个片段当成完整请求,也不要在看到部分订单编号时立即查询。应按工具调用索引分别累计内容,并保存最终的调用标识。

等待该次响应结束并确认调用完整后,再解析参数并执行工具。如果一次响应包含多个调用,需要分别处理;互不依赖的只读查询可以并行,有依赖关系的操作则应顺序执行。前端可以显示“正在查询订单”,但不能把尚未执行的动作显示为已完成。

§6 第五步:回传工具结果并继续推理

工具执行结束后,先把包含工具调用的助手消息加入历史,再添加对应的工具结果消息。在 OpenAI 风格消息结构中,工具结果通过 tool_call_id 关联原始调用,然后将更新后的消息历史再次发送给模型。

工具结果建议包含明确的成功状态、业务数据与可处理的错误信息。模型可能直接解释物流,也可能请求另一个工具,因此应用需要循环处理,直到得到最终文本,或触发调用轮数、总耗时、费用预算等限制。

§7 第六步:用权限边界和测试保护工作流

先上线只读查询,再考虑修改地址、取消订单等写入操作。涉及写入时,应增加用户确认、幂等键和审计记录。工具返回的内容属于外部数据,即使其中出现要求泄露密钥或调用其他接口的文字,也不能当作可信指令执行。

  • – 测试参数不完整、订单无权限和工具超时,确认系统能够解释失败并停止无效重试。
  • – 模拟流式中断,确保未完成的调用不会被执行或误报成功。
  • – 记录调用次数、工具耗时、首段响应时间和令牌消耗,定位延迟与成本来源。

可靠的智能体不是无限循环的聊天程序,而是有清晰工具契约、受控执行边界和完整反馈链路的应用。使用 Fluxio 接入时,也应验证所选模型路由的具体兼容行为,再将同一套工作流投入生产。

欢迎注册 Fluxio,搭建你的流式智能体。

Créer un compte Fluxio →

Plus d'articles du courant