使用 LangChain 构建多轮对话系统:结合 DeepSeek-R1 模型

引言

在构建智能对话系统时,多轮对话能力是提升用户体验的关键。LangChain 提供了强大的工具来实现这一功能。本文将通过一个实际的代码示例,展示如何使用 LangChain 和 DeepSeek-R1 构建一个多轮对话系统,并保存对话的历史记录。

代码解析与技术要点

1. 环境准备与模型创建

import os

from langchain_community.chat_message_histories import ChatMessageHistory
from langchain_core.messages import HumanMessage
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.runnables import RunnableWithMessageHistory
from langchain_openai import ChatOpenAI

os.environ["OPENAI_API_KEY"] = "sk-xxx"

model = ChatOpenAI(
    model='deepseek-reasoner',
    base_url="https://api.deepseek.com"
)

技术要点:参考环境引入和模型创建

2. 定义提示模板

为了使模型能够理解我们的需求,我们需要准备一个合适的 Prompt。以下代码展示了如何构建一个动态的 Prompt 模板,并引入 MessagesPlaceholder 来处理多轮对话:


                
### 将DeepSeek-R1-Distill-Qwen本地模型集成到LangChain 为了将DeepSeek-R1-Distill-Qwen本地模型成功集成到LangChain框架中,需遵循一系列特定的操作流程。这不仅涉及环境设置,还包括必要的依赖安装以及具体的代码实现。 #### 安装依赖库 首先,确保环境中已安装所有必需的Python包。可以通过pip工具完成这一操作: ```bash pip install langchain transformers torch datasets ``` 上述命令用于安装`langchain`, `transformers`, `torch` 和 `datasets` 这些对于加载和运行Qwen模型至关重要的软件包[^1]。 #### 加载预训练模型 接着,在Python脚本或Jupyter Notebook中编写如下代码片段以加载本地存储的DeepSeek-R1-Distill-Qwen模型文件: ```python from transformers import AutoTokenizer, AutoModelForCausalLM tokenizer = AutoTokenizer.from_pretrained("path/to/deepseek-r1-distill-qwen") model = AutoModelForCausalLM.from_pretrained("path/to/deepseek-r1-distill-qwen") ``` 这段代码利用Hugging Face Transformers库中的`AutoTokenizer`类实例化了一个分词器对象,并通过`AutoModelForCausalLM`创建了对应的因果语言模型实例。注意路径应替换为实际保存位置。 #### 配置LangChain应用 最后一步是在应用程序内部定义如何调用此模型来进行推理工作。下面是一个简单的例子展示怎样构建一个基本的语言链(Language Chain),并将其连接至之前初始化好的Qwen模型上: ```python import langchain as lc class QwenChain(lc.Chain): def __init__(self, tokenizer, model): super().__init__() self.tokenizer = tokenizer self.model = model def generate(self, prompt_text): inputs = self.tokenizer(prompt_text, return_tensors="pt").input_ids outputs = self.model.generate(inputs) response = self.tokenizer.decode(outputs[0], skip_special_tokens=True) return {"response": response} qwen_chain = QwenChain(tokenizer=tokenizer, model=model) prompt_example = "What is the capital of France?" result = qwen_chain.generate(prompt_example) print(result["response"]) ``` 在此示例中,自定义了一种继承自`lc.Chain`基类的新类型——`QwenChain`,它封装了对给定提示(`prompt`)执行预测所需的一切逻辑。之后便可以直接使用这个新组件作为标准部分参与到更复杂的对话系统或其他NLP任务当中去了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值