摘要音频
本节课没有语音摘要。
学习笔记
🤖 学习笔记:Claude 多工具调用流程 (Multi-Tool Calling Workflow)
💡 核心概念:多工具调用 (Multi-Tool Calling)
- 目标: 将多个不同的工具连接到 Claude,以处理复杂的用户查询。
- 核心假设: 必须假设用户提出的查询可能需要 Claude 连续使用多个工具才能完成。
- 工作流程(示例):
- 用户提问 → Claude → 请求调用工具 A (Tool Use Block)。
- 系统 → 执行工具 A → 返回结果给 Claude。
- Claude → 接收结果 → 决定需要调用工具 B。
- 系统 → 执行工具 B → 返回结果给 Claude。
- Claude → 拥有所有信息 → 生成最终答案。
⚙️ 实现策略:runConversation 函数
- 目的: 自动化处理多轮工具调用,直到 Claude 给出最终回复。
- 实现结构: 使用 while 循环来持续与 Claude 交互。
- 循环逻辑:
- 检查响应: 查看 Claude 的响应是否包含工具调用请求。
- 如果需要工具: 执行工具 → 将工具结果添加到消息历史中 → 再次调用 Claude。
- 如果不需要工具: 确定这是最终回复 → 结束循环并返回结果。
🛠️ 代码重构要点 (Refactoring Steps)
为了支持多工具调用,需要对现有代码进行以下关键修改:
- 消息添加函数 (add_user_message, add_assistant_message):
- 改进: 必须升级,使其能够处理包含多个消息块 (Message Blocks) 的响应,而不仅仅是纯文本块。
- 技术实现: 引入 anthropic. types. Message,允许输入整个消息对象或消息块列表。
- 聊天函数 (chat):
- 参数更新: 增加 tool_schemas 参数,并将其传递给 Claude 的 API 调用。
- 返回内容更新: 不再只返回文本内容,而是返回 Claude 完整的响应对象(Message),因为响应中可能包含文本块和工具调用块。
- 新辅助函数 (text_from_message):
- 功能: 专门用于解析包含多个消息块的响应,提取所有文本块中的文本内容并合并。
- 逻辑: 遍历消息内容中的所有块 → 检查块类型是否为 text → 提取并连接文本。
Takeaways
- 多工具调用旨在通过连续使用多个工具来处理复杂查询,流程是:用户提问 → 调用工具 A → 接收结果 → 决定调用工具 B → 生成最终答案。
- 实现自动化调用需使用 while 循环(如 runConversation),持续检查 Claude 的响应是否包含工具调用请求,直到获得最终回复。
- 消息添加函数必须升级,能够处理包含多个消息块(Message Blocks)的响应,而不能仅处理纯文本块。
- chat 函数需要增加 tool_schemas 参数,并且必须返回 Claude 的完整响应对象(Message),而非仅返回文本内容。
抽认卡 8 张卡片
问题
点击显示 · ←/→
答案
点击翻回
知识检测 0 题
No quiz for this lesson yet.