通义千问 API 默认不会记录您的历史对话信息。多轮对话功能可以让大模型“拥有记忆”,满足如追问、信息采集等需要连续交流的场景。
你好,我叫peter 你好,Peter!很高兴认识你。有什么我可以帮忙的吗? 已关闭多轮对话 通义千问 API 不会记录您的对话记录。如果您需要让大模型参考历史对话信息,需要将历史对话信息与新的指令一同输入到通义千问 API 中。 您需要已获取API Key并配置API Key到环境变量。如果通过OpenAI SDK或DashScope SDK进行调用,还需要安装SDK。 实现多轮对话的关键在于维护一个 messages 数组,您可以将每一轮的对话历史以及新的指令以 OpenAI兼容 DashScope Python Node.js curl 示例代码以手机商店导购为例,导购与顾客会进行多轮对话来采集购买意向,采集完成后会结束会话。 如果模型调用失败并返回报错信息,请参见错误信息进行解决。 Q:多轮对话如何收费? A:多轮对话按照输入与输出的 Token 数进行计费。需要注意的是,历史对话信息也会包含在输入 Token 中。上下文缓存(Context Cache)可以一定程度上降低您在使用多轮对话时的使用成本。效果对比
以上组件仅供您参考,并未真实发送请求。
如何使用
前提条件
开始使用
{"role": "xxx", "content": "xxx"}
的形式添加到 messages 数组中,从而使大模型可以参考历史对话信息进行回复。import osfrom openai import OpenAIdef get_response(messages):
client = OpenAI( # 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
) # 模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models
completion = client.chat.completions.create(model="qwen-plus", messages=messages) return completion# 初始化一个 messages 数组messages = [
{ "role": "system", "content": """你是一名百炼手机商店的店员,你负责给用户推荐手机。手机有两个参数:屏幕尺寸(包括6.1英寸、6.5英寸、6.7英寸)、分辨率(包括2K、4K)。
你一次只能向用户提问一个参数。如果用户提供的信息不全,你需要反问他,让他提供没有提供的参数。如果参数收集完成,你要说:我已了解您的购买意向,请稍等。""",
}
]
assistant_output = "欢迎光临百炼手机商店,您需要购买什么尺寸的手机呢?"print(f"模型输出:{assistant_output}\n")while "我已了解您的购买意向" not in assistant_output:
user_input = input("请输入:") # 将用户问题信息添加到messages列表中
messages.append({"role": "user", "content": user_input})
assistant_output = get_response(messages).choices[0].message.content # 将大模型的回复信息添加到messages列表中
messages.append({"role": "assistant", "content": assistant_output}) print(f"模型输出:{assistant_output}") print("\n")
错误码
常见问题