2026/7/31 4:12:28

LangChain 实战:基于 DeepSeek 与多模型生态的环境搭建与统一调用

LangChain 实战:基于 DeepSeek 与多模型生态的环境搭建与统一调用 在上一篇文章中我们聊到了 LangChain 的整体架构演进。今天我们正式进入实战部分——搭建 LangChain 1.x 开发环境并手把手完成基于 DeepSeek 及其他主流大模型的统一接口调用。一、为什么首选 DeepSeek 开展开发在目前的 LLM 应用开发中DeepSeek 凭借极高的性价比与优秀的推理能力成为了众多团队和个人开发者的首选。对于 LangChain 开发者来说DeepSeek 还有一个极大的优势官方 API 完美兼容 OpenAI 接口格式。这意味着只要一个 SDK 或框架支持 OpenAI 的协议规范我们只需修改三个核心参数就能无缝切换到 DeepSeekAPI Key你的 DeepSeek 密钥Base URL[https://api.deepseek.com](https://api.deepseek.com)Model Name如deepseek-v4-flash根据官方最新模型选首先我们进入DeepSeek官网页面打开API开放平台然后创建API key创建好的api key一定要复制下来因为没有办法二次查看。二、理解 OpenAI 兼容 API 规范所谓的“OpenAI 兼容 API”已经成为了目前 LLM 行业事实上的标准。无论是 DeepSeek、硅基流动SiliconFlow、Moonshot 还是开源模型服务vLLM, Ollama基本都遵循这套 JSON 交互格式。标准的 Chat Completions 调用结构通常如下基于Pythonclient.chat.completions.create( modeldeepseek-v4-flash, messages[ {role: user, content: 你好} ], )LangChain 底层也是在这一规范之上将模型封装成了统一的接口组件方便后续与 Prompt Template、Output Parser、RAG Retriever 以及 Agent Tools 进行链式或图式编排。三、开发环境准备1. Python 版本推荐建议使用Python 3.10 或 3.11。3.10 / 3.11LangChain 1.x 生态兼容性最好、第三方集成包适配最完整的版本踩坑率最低3.12可正常使用3.13由于版本较新部分小众社区扩展包可能存在适配延迟。2. 依赖安装与国内镜像配置在项目虚拟环境中运行以下命令安装核心依赖Bashpip install langchain langchain-openai openai python-dotenv如果下载速度较慢可临时指定清华镜像源Bashpip install langchain langchain-openai openai python-dotenv -i https://pypi.tuna.tsinghua.edu.cn/simple3. 配置密钥与环境变量为了保证代码安全严禁将 API Key 硬编码在 Python 源码中。在项目根目录下创建.env文件代码段DEEPSEEK_API_KEYyour_actual_deepseek_api_key DEEPSEEK_BASE_URLhttps://api.deepseek.com同时一定要创建.gitignore文件防止敏感密钥被意外提交到 Git 仓库代码段.env .venv/ __pycache__/ *.pyc在代码中我们可以使用python-dotenv库读取环境变量Pythonimport os from dotenv import load_dotenv load_dotenv() # 加载 .env 文件中的配置 print(API Key 已成功加载:, os.getenv(DEEPSEEK_API_KEY)[:8] ******)四、从原生 SDK 到 LangChain 1.x 的代码演进为了彻底搞懂 LangChain 的封装机制我们按“原生 SDK - LangChain ChatOpenAI - LangChain 1.xinit_chat_model”的顺序逐一讲解。阶段一用 OpenAI 原生 SDK 调通 DeepSeek在接入 LangChain 之前推荐先用原生的openai库验证 API Key 和网络联通性。创建01_openai_compatible.pyPythonimport os from dotenv import load_dotenv from openai import OpenAI load_dotenv() # 实例化 OpenAI 客户端但指向 DeepSeek 的 Base URL client OpenAI( api_keyos.getenv(DEEPSEEK_API_KEY), base_urlos.getenv(DEEPSEEK_BASE_URL), ) response client.chat.completions.create( modeldeepseek-v4-flash, messages[ {role: user, content: 请用一句话介绍 LangChain 是什么。} ], ) print(response.choices[0].message.content)注意这里的client.chat.completions是原生 SDK 的方法不要与 LangChain 的ChatOpenAI类混化。如果能正常打印回答说明密钥和网络环境一切正常阶段二使用 LangChain 的ChatOpenAI显式类这是早期 LangChain 教程中最常见的写法Pythonimport os from dotenv import load_dotenv from langchain_openai import ChatOpenAI load_dotenv() # 创建模型实例 model ChatOpenAI( modeldeepseek-v4-flash, temperature0.7, api_keyos.getenv(DEEPSEEK_API_KEY), base_urlos.getenv(DEEPSEEK_BASE_URL), ) # 1. 单次同步调用 (.invoke) response model.invoke(请解释 LangChain 模型接口的统一性。) print(【Invoke 返回】\n, response.content) # 2. 流式响应输出 (.stream) print(\n【Stream 输出】) for chunk in model.stream(请用一句话总结人工智能的意义): print(chunk.content, end, flushTrue)知识点补充temperature超参数的选择策略阶段三使用官方推荐的init_chat_model工厂函数最佳实践在 LangChain 0.2/1.0 时代官方大幅改动了模型实例化的机制引入了统一工厂方法init_chat_model。它允许我们通过参数配置动态加载不同厂商的模型真正实现了代码层面的解耦。创建02_langchain_first_call.pyPythonimport os from dotenv import load_dotenv from langchain.chat_models import init_chat_model load_dotenv() # 使用 1.x 推荐的工厂函数创建模型实例 model init_chat_model( modeldeepseek-v4-flash, model_provideropenai, # 表示使用 OpenAI 兼容的 API 规范 api_keyos.getenv(DEEPSEEK_API_KEY), base_urlos.getenv(DEEPSEEK_BASE_URL), temperature0.7, ) print(流式输出中) for chunk in model.stream(什么是 Deep Agent): print(chunk.content, end, flushTrue)核心参数说明model_provideropenai并不是指定使用 OpenAI 官方的 GPT 模型而是告诉 LangChain“请使用OpenAI 兼容协议来解析这个接口”。五、实战案例构建一个简易的 AI 答疑助手我们利用刚刚实例化的init_chat_model编写一个带有格式约束的控制台答疑工具。创建03_course_assistant.pyPythonimport os from dotenv import load_dotenv from langchain.chat_models import init_chat_model load_dotenv() # 1. 统一初始化模型 model init_chat_model( modeldeepseek-v4-flash, model_provideropenai, api_keyos.getenv(DEEPSEEK_API_KEY), base_urlos.getenv(DEEPSEEK_BASE_URL), temperature0.7, ) # 2. 构造 Prompt 渲染函数 def build_prompt(user_question: str) - str: return f 你是一名专业的 AI 技术助教。 请使用最简洁、通俗的语言回答问题适合初学者理解。 回答格式必须满足以下要求 1. 先给出核心结论 2. 举一个生活或开发中的实际例子 3. 全文控制在 200 字以内。 学生的问题是{user_question} if __name__ __main__: question input(请输入你的技术问题) prompt_content build_prompt(question) print(\n--- AI 助教回答中 ---) for chunk in model.stream(prompt_content): print(chunk.content, end, flushTrue) print(\n--------------------)六、横向拓展快速接入其他主流大模型在实际业务开发中我们不可能只依赖一家模型供应商。得益于 LangChain 的统一抽象接入其他厂商的模型也变得极其简单。1. 接入第三方 OpenAI 代理如 CloseAI / 自建 API 网关如果你使用的是类似 CloseAI 或第三方聚合网关服务只需修改base_url与api_keyPythonfrom langchain_openai import ChatOpenAI model ChatOpenAI( modelgpt-4o-mini, temperature0.7, api_keysk-your-proxy-key, base_urlhttps://api.openai-proxy.org/v1 # 代理服务商提供的 URL ) for chunk in model.stream(请用一句话总结人工智能的意义): print(chunk.content, end, flushTrue)2. 接入阿里通义千问Qwen / DashScope当我们直接在init_chat_model中传入model_providerdashscope时目前 LangChain 可能会抛出错误PlaintextValueError: Unsupported model_providerdashscope.这是因为阿里云 DashScope 平台尚未完全内置进 LangChain 的 Core 注册表中。解决方案借助langchain-community包安装阿里云官方 SDK 与社区包Bashpip install -U dashscope langchain_community使用社区封装的Tongyi适配器Pythonfrom langchain_community.llms.tongyi import Tongyi model Tongyi( modelqwen-plus, temperature0.3, api_keyyour_dashscope_api_key ) for chunk in model.stream(LangChain 由哪几部分组成): print(chunk, end, flushTrue)3. 接入硅基流动SiliconFlow硅基流动同样提供了标准的 OpenAI 兼容接口可以直接复用init_chat_modelPythonimport os from dotenv import load_dotenv from langchain.chat_models import init_chat_model load_dotenv() # .env 中配置 # GUIJI_BASE_URLhttps://api.siliconflow.cn/v1 # GUIJI_API_KEYsk-xxxx model init_chat_model( base_urlos.getenv(GUIJI_BASE_URL), api_keyos.getenv(GUIJI_API_KEY), modeldeepseek-ai/DeepSeek-V4-Flash, # 硅基流动托管的模型标识符 model_provideropenai, temperature0.7 ) for chunk in model.stream(什么是 Deep Agent): print(chunk.content, end, flushTrue)七、多模型接入的最佳实践法则在企业级项目开发中建议遵循以下接入层策略Plaintext┌─────────────────────────────────────────┐ │ 优先使用 init_chat_model 工厂函数 │ └────────────────────┬────────────────────┘ │ ┌─────────────┴─────────────┐ ▼ ▼ 【支持 OpenAI 规范】 【不支持规范 / 官方集成】 设置 model_provideropenai 使用 langchain-community 填入 base_url / api_key 专属适配器 (如 Tongyi)首选init_chat_model它统一了各厂家的加载逻辑使你的业务代码具备极高的平滑迁移能力只需要修改配置文件中的环境变量即可切换底层模型社区包兜底若遇到暂未接入注册表的服务商优先去langchain-community查找对应的集成包保持 SDK 版本一致定期升级langchain与各厂商底层 SDK如dashscope、openai避免因为 API 变更导致的序列化报错。八、常见排坑指南API Key 加载不到 /NoneType报错检查.env文件是否准确存放在项目根目录检查代码顶部是否显式执行了load_dotenv()。连接超时Timeout / Connection Refused确认DEEPSEEK_BASE_URL拼写无误注意是否有尾部斜杠或多余的/v1检查企业内网环境是否开启了严格的 HTTP/HTTPS 代理阻断。HTTP 401 / 403 错误401API Key 无效或过期403通常为账户余额不足如聚合平台未充值或请求已被服务端风控识别。总结与后续预告通过本文我们完成了 LangChain 1.x 开发环境的搭建理解了 OpenAI 兼容规范的底层逻辑并学会了如何通过init_chat_model实现跨模型供应商的统一调用。在接下来的文章中我们将深入讲解LangChain 的核心工程化组件Prompt Template 模板化管理与 Output Parsers 结构化输出解析。敬请关注