DeepSeek API 多轮对话怎么写?保留消息历史并核对第二轮回答

用 DeepSeek Chat Completions 两次请求演示消息历史的保存与重发,并核对第二轮是否理解追问。

DeepSeek API 的多轮对话要由客户端保存并重发消息历史。第二轮只发送“它叫什么名字?”而不带第一轮内容时,模型没有可靠依据知道“它”指什么。下面用两次非流式请求演示消息列表的构造与验证,面向已经能完成第一条 API 请求的 Python 开发者。

把第一轮问答加入消息列表

DeepSeek Chat Completions 接口文档把 messages 定义为当前对话的消息数组。官方思考模式指南的多轮对话小节展示了把上一轮 assistant 消息和下一轮 user 消息接到同一列表的方式。这里使用非思考模式且不传 tools,示例仅需保留用户消息和最终回答文本。

DeepSeek API 多轮对话怎么写?保留消息历史并核对第二轮回答

先在本机设置 DEEPSEEK_API_KEY 环境变量,并安装 openai Python 包。以下“叫小橘的猫”是演示输入,不代表真实用户资料。

import os
from openai import OpenAI

key = os.environ.get("DEEPSEEK_API_KEY")
if not key:
    raise RuntimeError("请先设置 DEEPSEEK_API_KEY")
client = OpenAI(api_key=key, base_url="https://api.deepseek.com")
messages = [{"role": "user", "content": "我养了一只叫小橘的猫。请只回答收到。"}]

first = client.chat.completions.create(
    model="deepseek-flash",
    messages=messages,
    extra_body={"thinking": {"type": "disabled"}},
)
first_answer = first.choices[0].message.content or ""
messages.append({"role": "assistant", "content": first_answer})
messages.append({"role": "user", "content": "它叫什么名字?请只回答名字。"})

second = client.chat.completions.create(
    model="deepseek-flash",
    messages=messages,
    extra_body={"thinking": {"type": "disabled"}},
)
second_answer = second.choices[0].message.content or ""
print("第二轮:", second_answer)
print("是否包含预期名字:", "小橘" in second_answer)

怎样判断是否真的保留了上下文

运行后核对第二轮是否提到“小橘”,并查看布尔检查结果。如果结果为 False,先打印消息的角色顺序和脱敏后的内容,确认列表按 user、assistant、user 排列;不要把 API Key 打出来。模型回答可能有不同措辞,布尔检查是这个演示的快速核对,不是生产环境的通用质量测试。

第二次请求会重新携带第一轮消息,因此历史增长会增加输入 token。可以从返回的 usage.prompt_tokens 核对单次请求用量;长对话需要按任务保留关键事实、裁剪无关历史。官方接口并没有要求你把所有旧消息永久塞进同一次请求。

思考模式与工具调用的边界

上述示例明确关闭思考模式且未传 tools。官方指南说明:开启思考模式但不传 tools 时,上一轮 reasoning_content 不必回传;如果请求携带 tools,则此前的 reasoning_content 必须按指南保留,否则可能返回 400。不要把这段简化代码直接用于工具调用流程。

本文依据官方文档给出可运行的请求结构,未使用你的密钥实测。若出现鉴权、余额或网络错误,先按返回状态码处理;成功响应也要人工核对第二轮是否正确指代。

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/30045.html

赞 (0)
AI小管家的头像AI小管家
Suno Studio 2.0 怎么做音量自动化?画曲线、试听并导出
上一篇 1天前
DeepSeek 思考与非思考模式有什么区别?API 开关、返回字段与参数边界
下一篇 1天前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部