用 LangChain 搭 DeepSeek 打造智能问答系统:教你一步步封装 API 搞定对话记忆

在这里插入图片描述

网罗开发 (小红书、快手、视频号同名)

  大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。

图书作者:《ESP32-C3 物联网工程开发实战》
图书作者:《SwiftUI 入门,进阶与实战》
超级个体:COC上海社区主理人
特约讲师:大学讲师,谷歌亚马逊分享嘉宾
科技博主:华为HDE/HDG

我的博客内容涵盖广泛,主要分享技术教程、Bug解决方案、开发工具使用、前沿科技资讯、产品评测与使用体验。我特别关注云服务产品评测、AI 产品对比、开发板性能测试以及技术报告,同时也会提供产品优缺点分析、横向对比,并分享技术沙龙与行业大会的参会体验。我的目标是为读者提供有深度、有实用价值的技术洞察与分析。

展菲:您的前沿技术领航员
👋 大家好,我是展菲!
📱 全网搜索“展菲”,即可纵览我在各大平台的知识足迹。
📣 公众号“Swift社区”,每周定时推送干货满满的技术长文,从新兴框架的剖析到运维实战的复盘,助您技术进阶之路畅通无阻。
💬 微信端添加好友“fzhanfei”,与我直接交流,不管是项目瓶颈的求助,还是行业趋势的探讨,随时畅所欲言。
📅 最新动态:2025 年 3 月 17 日
快来加入技术社区,一起挖掘技术的无限潜能,携手迈向数字化新征程!


摘要

这篇文章会带大家一步步用 LangChain 封装 DeepSeek 的 API,并构建一个带记忆和知识库检索能力的智能问答系统。哪怕你之前没接触过 LangChain,也能轻松跟上节奏,把 DeepSeek 变成你自己的 AI 小助手。

引言

在构建智能问答系统时,开发者往往会面临两个主要问题:一是如何快速集成大模型 API,二是如何让模型在对话中“记住”之前的内容,甚至还能实时从知识库中“查资料”。

LangChain 就是专门为这个场景生的。它提供了一整套封装机制,不仅能帮你轻松调用像 DeepSeek 这样的模型,还能搞定上下文记忆、知识库检索、工具调用等进阶玩法。

这篇文章,我们就用 LangChain + DeepSeek,做一个实战版本的问答助手出来。

准备工作

安装依赖

确保你本地环境中安装了 Python 3.9+,并安装以下包:

pip install langchain openai requests

如果你想使用知识库检索,还需要:

pip install faiss-cpu tiktoken

DeepSeek API 密钥

在 DeepSeek 平台申请 API Key,并记下你的接口地址和 key,备用。

封装 DeepSeek 成 LangChain 的 LLM

LangChain 默认是支持 OpenAI 接口规范的模型。DeepSeek 也是遵循这套协议的,所以我们可以直接用 LangChain 提供的 ChatOpenAI 封装它。

from langchain.chat_models import ChatOpenAI
from langchain.schema import HumanMessage

llm = ChatOpenAI(
    openai_api_base="https://api.deepseek.com/v1", # 你的 DeepSeek 接口
    openai_api_key="你的API_KEY",
    model_name="deepseek-chat",
)

response = llm([HumanMessage(content="你好!你是谁?")])
print(response.content)

运行起来,如果你能拿到一条自然语言的回答,说明基础 API 封装成功了!

加点“记忆”功能:带上下文的对话

对话型 AI 另一个关键是“记忆”上下文,比如你提到“他是谁”,模型能知道“他”是你上一句问的那个人。

我们可以给 LangChain 配上“记忆模块”:

from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemory

conversation = ConversationChain(
    llm=llm,
    memory=ConversationBufferMemory()
)

response = conversation.predict(input="我叫小明")
print(response)

response = conversation.predict(input="我是谁?")
print(response)  # 应该回答“小明”

是不是已经开始有点 AI 聊天的味道了?

再加点“知识”:接入向量检索的知识库

想让问答系统变得更“专业”,我们可以为它配一个知识库。比如将产品文档、公司规章整理成向量,让模型“查资料”再回答。

创建向量知识库

from langchain.vectorstores import FAISS
from langchain.embeddings import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.document_loaders import TextLoader

loader = TextLoader("docs/product_intro.txt")
documents = loader.load()

splitter = CharacterTextSplitter(chunk_size=300, chunk_overlap=20)
docs = splitter.split_documents(documents)

embeddings = OpenAIEmbeddings(openai_api_key="你的DeepSeek API Key")
vectorstore = FAISS.from_documents(docs, embeddings)

基于知识库的问答链

from langchain.chains import RetrievalQA

qa = RetrievalQA.from_chain_type(
    llm=llm,
    retriever=vectorstore.as_retriever()
)

response = qa.run("我们的产品有哪些核心功能?")
print(response)

QA 环节

Q:DeepSeek 支持哪些模型?

A:目前主推的是类 GPT 的 chat 模型,你可以选择不同版本的 DeepSeek-chat 系列,具体看官网支持。

Q:LangChain 一定要配 FAISS 吗?

A:不一定,LangChain 支持多种向量库,包括 Pinecone、Chroma、Weaviate 等,看你自己的项目需求和预算。

Q:DeepSeek 和 OpenAI API 可以互换吗?

A:DeepSeek 遵循 OpenAI 的接口规范,意味着只要是支持 OpenAI 的工具,一般都能无缝替换成 DeepSeek。

总结

本篇文章带你实操了一遍如何用 LangChain 快速集成 DeepSeek,并构建出一个具备对话记忆 + 知识库检索能力的智能问答系统。

从 API 封装、上下文记忆到文档问答,LangChain + DeepSeek 的组合非常适合做 PoC 快速迭代,也方便部署在私有环境中继续升级。

未来展望

如果你想继续拓展,可以尝试:

  • 加入多轮对话的意图识别

  • 接入企业内网文档做私有知识问答

  • 封装 API 对外提供 SaaS 服务

  • 搭配 RAG(检索增强生成)实现更强理解力

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

网罗开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值