调用Deepseek r1 api实现多轮对话

Deepseek r1 api的单次调用在官网的说明文档里面有,可以实现。但是多轮对话的代码给的是deepseek-chat 即deepseekv3的。相比v3,r1模型多了一个reasoning_content直接按照v3的方法append上去会报错。话不多说,直接看下代码。、

from openai import OpenAI

client = OpenAI(api_key="你的api-key", base_url="https://api.deepseek.com")
#多轮对话示意

# Round 1
messages = [{"role": "user", "content": "你好,这里是测试消息"}]
response = client.chat.completions.create(
    model="deepseek-reasoner",
    messages=messages
)

messages.append({"role": "assistant", "content": response.choices[0].message.content})
print(f"Messages Round 1: {messages}")
print( response.choices[0].message)

这里是第一轮打印出来的结果:

Messages Round 1: [{'role': 'user', 'content': '你好,这里是测试消息'}, {'role': 'assistant', 'content': '你好!收到你的测试消息了,目前一切正常。如果有任何问题或需要进一步帮助,请随时告诉我!😊'}]

# Round 2
messages.append({"role": "user", "content": "这里是第二论测试消息,你能知道我上一在说啥吗?"})
response = client.chat.completions.create(
    model="deepseek-reasoner",
    messages=messages
)

messages.append({"role": "assistant", "content": response.choices[0].message.content})
print(f"Messages Round 2: {messages}")

这里是第二轮打印出了的结果

Messages Round 2: [{'role': 'user', 'content': '你好,这里是测试消息'}, {'role': 'assistant', 'content': '你好!收到你的测试消息了,目前一切正常。如果有任何问题或需要进一步帮助,请随时告诉我!😊'}, {'role': 'user', 'content': '这里是第二论测试消息,你能知道我上一在说啥吗?'}, {'role': 'assistant', 'content': '你好!当然记得,你之前发送的是测试消息:“你好,这里是测试消息”,我回复了确认收到的信息。现在这是第二轮测试,一切仍然正常哦!如果有其他需求或问题,随时告诉我~ 😄'}]

print(response.choices[0].message)

打印结果:

ChatCompletionMessage(content='你好!当然记得,你之前发送的是测试消息:“你好,这里是测试消息”,我回复了确认收到的信息。现在这是第二轮测试,一切仍然正常哦!如果有其他需求或问题,随时告诉我~ 😄', refusal=None, role='assistant', audio=None, function_call=None, tool_calls=None, reasoning_content='好的,用户这次发来了“这里是第二论测试消息,你能知道我上一在说啥吗?”。首先,我需要确认用户的问题是什么。看起来用户可能在测试我的记忆能力,或者检查上下文是否连贯。\n\n用户提到“第二论”,可能是“第二轮”的笔误。接着,用户问“你能知道我上一在说啥吗?”,这里的“上一在”应该是“上一句”或者“上一次”的误写。需要确认用户是否正确输入,但根据上下文,应该是询问我是否记得之前的对话。\n\n回顾之前的对话历史,用户第一次发送了测试消息,我回复确认收到。用户现在发送第二轮测试,并询问是否记得之前的内容。虽然通常对话型AI不会长期记忆对话,但在同一个会话中,模型可以访问之前的交流记录。\n\n用户可能想测试我在同一会话中的上下文理解能力。需要正确指出之前的对话内容,即第一次的测试消息,并确认当前消息是第二轮测试。同时,用户可能有打字错误,需要适当处理,避免让用户感到被纠正的不快。\n\n此外,用户可能希望得到友好的回应,保持对话的连贯性。因此,在回答时,应该先确认之前的对话内容,然后回应当前的测试消息,并保持积极和支持的态度,邀请用户继续提问或测试。\n\n需要确保回答准确、自然,不显得机械,同时处理用户的潜在需求,即验证我的上下文处理能力和纠错能力,同时保持愉快的交流氛围。')

在response.choices[0].message里面我们可以明显看到content和reasoning_content两个部分的回答。over

对了,这个框架硅基流动也可以用虽然硅基流动的网页对话框似乎没反应,但是api在我测试期间一直有反应:https://cloud.siliconflow.cn/i/JruKR67p 这个是博主的邀请链接。替换为:

model="deepseek-ai/DeepSeek-R1"

base_url="https://api.siliconflow.cn/v1"

api_key替换为自己的就可以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值