Claude On Google Cloud
← 所有课程
课程 33Claude On Google Cloud

Multi-turn conversations with tools

摘要音频

本节课没有语音摘要。

学习笔记

🤖 学习笔记: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 张卡片
问题
点击显示 · ←/→
答案
点击翻回
导出到 Anki (.tsv) ↓
知识检测 0 题

No quiz for this lesson yet.