摘要音频
本节课没有语音摘要。
学习笔记
📚 学习笔记:多工具调用与对话流程构建
核心概念:多工具调用 (Multiple Tool Calling)
- 项目目标: 将多个不同的工具(Tools)连接到 Claude,以处理复杂的查询。
- 多步推理流程: 当用户提问需要多个工具时,Claude 的响应是一个迭代过程:
- 用户提问 → Claude 请求调用工具 A。
- 系统执行工具 A → 将结果返回给 Claude。
- Claude 基于工具 A 的结果,请求调用工具 B。
- 系统执行工具 B → 将结果返回给 Claude。
- Claude 拥有所有信息后,给出最终答案。
- 核心逻辑(循环机制): 必须设计一个主函数(如 runConversation)来持续检查 Claude 的响应:
- 如果 Claude 请求使用工具 → 执行工具,并将结果重新输入给 Claude,继续循环。
- 如果 Claude 没有请求工具 → 视为最终回答,结束循环并返回结果给用户。
代码重构要点 (Refactoring Steps)
为了支持多工具调用,需要对现有代码进行重构:
- 升级消息辅助函数 (addUserMessage, addAssistantMessage):
- 问题: 原函数仅假设接收和处理纯文本块 (Plain Text Block)。
- 改进: 必须允许这些函数处理包含多个消息块(Message Blocks)的完整响应,而不仅仅是文本。
- 升级聊天函数 (chat):
- 工具支持: 接收并接受一个工具模式列表 (List of Tool Schemas),并将其传递给 Claude 的 API 调用。
- 返回内容变化: 不再只返回 Claude 响应中的纯文本,而是返回整个消息对象(包含所有内容块,包括文本块和工具使用块)。
- 新增辅助函数 (textFromMessage):
- 功能: 专门用于遍历一个包含多个消息块的消息对象,提取所有类型为文本 (Text) 的块中的内容,并将它们拼接起来。
总结
- 关键挑战: 必须从“单步响应”思维转变为“多轮迭代”思维。
- 实现关键: 通过一个循环(runConversation)来管理工具调用和 Claude 的反馈,直到 Claude 给出最终的非工具请求响应为止。
Takeaways
- 核心逻辑要求从“单步响应”思维转变为“多轮迭代”思维,以处理复杂的工具调用流程。
- 必须设计主循环函数(如 runConversation),持续检查 Claude 的响应,直到其给出最终的非工具请求回答为止。
- 代码重构的关键在于升级消息辅助函数,使其能够处理包含多个消息块的完整响应,而非仅限纯文本。
- 聊天函数 (chat) 需升级以接收并传递工具模式列表 (List of Tool Schemas) 给 Claude 的 API 调用。
抽认卡 8 张卡片
问题
点击显示 · ←/→
答案
点击翻回
知识检测 0 题
No quiz for this lesson yet.