# DeepSeek API 配置 DEEPSEEK_API = { "base_url": "https://api.deepseek.com/v1/chat/completions", "api_key": "sk-d5623076734d4d1bb6fe246938931ab1", # 替换为你的实际key "default_model": "deepseek-chat", "max_history": 10 }写一个程序使用上面的api实现多轮对话
时间: 2025-05-18 13:12:41 浏览: 19
### 使用 DeepSeek API 实现多轮对话
为了实现基于 DeepSeek API 的多轮对话程序,可以结合 LangChain 工具库的功能。以下是详细的说明以及示例代码。
#### 1. 准备工作
在开始之前,需要完成以下准备工作:
- 安装必要的依赖项 `langchain` 和 `deepseek`。
- 获取并配置 DeepSeek API 密钥。
- 设置环境变量以便于访问 API[^1]。
安装所需包可以通过以下命令完成:
```bash
pip install langchain deepseek openai
```
#### 2. 多轮对话的核心逻辑
多轮对话的关键在于维护会话历史记录,并将其作为上下文传递给模型。LangChain 提供了专门用于管理聊天消息历史的类 `ChatMessageHistory`,这使得我们可以轻松地存储和检索用户的输入与模型的回答[^2]。
#### 3. 示例代码
下面是一个完整的 Python 脚本,展示了如何利用 DeepSeek-R1 模型构建一个多轮对话系统:
```python
import os
from langchain_community.chat_message_histories import ChatMessageHistory
from langchain_core.messages import HumanMessage, AIMessage
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.runnables import RunnableWithMessageHistory
from langchain_openai import ChatOpenAI
# 配置 DeepSeek API 参数
os.environ["DEEPSEEK_API_KEY"] = "your-deepseek-api-key"
model = ChatOpenAI(
model='deepseek-reasoner',
temperature=0.7,
max_tokens=256,
base_url="https://api.deepseek.com/v1"
)
# 初始化消息历史对象
history = ChatMessageHistory()
def get_response(user_input):
"""获取模型响应"""
history.add_user_message(user_input) # 添加用户的消息到历史中
prompt_template = ChatPromptTemplate.from_messages([
("system", "You are a helpful assistant."),
("human", "{user_message}"),
("ai", "{response}")
])
runnable_model = RunnableWithMessageHistory(model=model, message_history=history)
response = runnable_model.invoke(HumanMessage(content=user_input)) # 发送请求至模型
ai_message = AIMessage(content=str(response))
history.add_ai_message(ai_message.content) # 将 AI 响应加入历史记录
return ai_message.content
if __name__ == "__main__":
while True:
user_input = input("User: ")
if user_input.lower() in ["exit", "quit"]:
break
response = get_response(user_input)
print(f"Assistant: {response}")
```
上述脚本实现了基本的循环交互机制,在每次迭代过程中都会更新会话历史并将最新一轮的内容发送给 DeepSeek 模型进行推理[^2]。
---
###
阅读全文
相关推荐














