4.Multi-Turn conversation
此文档由 学习AI的1000天 翻译制作(抖音,B站,YouTube)
邮箱: szqshan@gmail.com | 微信: szqshan
网址: www.xueai.org
==================================================
在使用Anthropic API和Claude时,有一个关键概念你需要理解:Claude不会存储你的任何对话历史记录。你发出的每个请求都是完全独立的,不会记住之前的交流内容。

这意味着如果你想要进行多轮对话,让Claude记住之前消息的上下文,你需要自己处理对话状态。
无状态对话的问题
假设你问Claude"什么是量子计算?"并得到了一个很好的回答。然后你继续问"再写一句话"——Claude完全不知道你在指什么。它会写一句关于完全随机内容的话,因为它对量子计算讨论没有任何记忆。

多轮对话的工作原理
要维持对话上下文,你需要做两件事:
- 在你的代码中手动维护所有消息的列表
- 在每次请求时发送完整的消息历史记录

以下是实际有效的流程:
- 向Claude发送你的初始用户消息
- 获取Claude的回复并将其作为assistant消息添加到你的消息列表中
- 将你的后续问题作为另一条user消息添加
- 将整个对话历史发送给Claude

构建辅助函数
为了让对话管理更加简便,你可以创建三个辅助函数:
def add_user_message(messages, text):
user_message = {"role": "user", "content": text}
messages.append(user_message)
def add_assistant_message(messages, text):
assistant_message = {"role": "assistant", "content": text}
messages.append(assistant_message)
def chat(messages):
message = client.messages.create(
model=model,
max_tokens=1000,
messages=messages,
)
return message.content[0].text
整合所有功能
以下是如何使用这些函数来维持对话的方法:
# 从空消息列表开始
messages = []
# 添加初始用户问题
add_user_message(messages, "Define quantum computing in one sentence")
# 获取Claude的回复
answer = chat(messages)
# 将Claude的回复添加到对话历史中
add_assistant_message(messages, answer)
# 添加后续问题
add_user_message(messages, "Write another sentence")
# 获取包含完整上下文的后续回复
final_answer = chat(messages)
现在Claude将理解"再写一个句子"是指对量子计算定义的扩展,因为你已经提供了完整的对话上下文。
这些辅助函数在你使用Claude的工作中将非常有用,让构建能够在多轮交互中维持有意义对话的应用程序变得更加容易。
==================================================
此文档由 学习AI的1000天 翻译制作(抖音,B站,YouTube)
邮箱: szqshan@gmail.com | 微信: szqshan
网址: www.xueai.org