在将多个工具连接到 Claude 时，项目的主要目标是什么？	目标是让 Claude 能够处理需要多个工具才能回答的复杂查询。
当 Claude 需要使用多个工具来回答用户问题时，其背后的执行流程是什么？	Claude 请求使用工具 -> 我们执行工具 -> 将结果反馈给 Claude -> 重复此过程直到获得最终答案。
为了管理工具调用和结果反馈的循环，我们应该实现什么样的函数结构？	应该实现一个类似 `runConversation` 的函数，并在其中使用 `while` 循环。
为什么需要重构 `add user message` 和 `add assistant message` 这两个辅助函数？	因为它们需要能够处理包含多个消息块（如文本块和工具使用块）的响应，而不仅仅是纯文本。
在重构 `chat` 函数时，我们对它的返回值做了什么关键改变？	不再返回助手消息中的纯文本，而是返回整个从 Claude 接收到的消息对象。
引入 `text from message` 这个辅助函数的目的是什么？	它的作用是接收一个包含多个消息块的消息，并从中提取所有文本块的内容。
在构建工具调用应用时，我们必须对用户查询做出什么样的假设？	我们必须假设 Claude 可能会连续想要使用多个工具来回答查询。
在 `runConversation` 循环中，如果 Claude 的响应不是请求工具使用，我们应该做什么？	我们就知道这是一个最终响应，可以将其交付给用户。
