尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
LangChain入门---基于DeepSeek-V4-Pro模型
一.LangChain基础概念1.什么是LLM大语言模型LLM是基于海量文本训练的深度学习模型能够理解和生成自然语言。其核心是通过Transformer架构捕捉上下文依赖关系实现文本生成、问答、翻译等任务。典型代表如GPT-4、Claude、DeepSeek-V4-Pro等。2.为什么需要LangChain直接调用LLM存在以下痛点功能单一模型仅完成基础文本生成缺乏工具调用、记忆等能力。流程复杂需手动拼接提示词、解析输出、处理错误等。可维护性差业务逻辑与模型调用代码高度耦合。3.LangChain是什么LangChain是一个框架(降低你上手大模型的难度)通过编排层Orchestration Layer增强LLM能力提供以下核心功能工具集成绑定外部API、数据库等扩展模型能力。工作流编排通过流水线组合多步骤任务。状态管理支持对话历史、短期记忆等上下文维护。4.LangChain与LLM的关系能力层LLM提供基础文本生成能力如DeepSeek-V4-Pro。编排层LangChain通过工具、记忆、流程控制扩展LLM应用场景。二.LangChain模块这里介绍下组件的概念1.LangChain 组件的概念在 LangChain 中组件Component是指构成一个 LLM 应用的各种标准化、可复用、可组合的功能模块。每个组件都实现了统一的Runnable接口使得它们能够像“乐高积木”一样被轻松连接起来形成复杂的处理流水线LCEL。2.核心抽象Runnable与LCELRunnable一切皆可执行所有组件模型、工具、解析器均实现Runnable接口支持统一调用方式# 所有这些都是 Runnable而且 DeepSeek 和 OpenAI 都能使用 from langchain_core.runnables import Runnable # 1. 模型相关 - ChatModel # 聊天模型 ✅ - LLM # 传统大语言模型 ✅ - Embeddings # 嵌入模型 ✅ # 2. 提示词相关 - PromptTemplate # 提示模板 ✅ - ChatPromptTemplate # 聊天提示模板 ✅ - FewShotPromptTemplate # 少样本模板 ✅ # 3. 解析器相关 - StrOutputParser # 字符串输出 ✅ - JsonOutputParser # JSON输出 ✅ - PydanticOutputParser # Pydantic输出 ✅ # 4. 检索器相关 - VectorStoreRetriever # 向量检索器 ✅ - MultiVectorRetriever # 多向量检索器 ✅ - ParentDocumentRetriever # 父文档检索器 ✅ # 5. 工具相关 - Tool # 工具 ✅ - StructuredTool # 结构化工具 ✅ # 6. 链相关 - LLMChain # LLM链 ✅ - ConversationChain # 对话链 ✅ - RetrievalQA # 检索问答链 ✅ # 7. 其他 Runnable - RunnableLambda # 自定义函数 ✅ - RunnableParallel # 并行执行 ✅ - RunnableBranch # 条件分支 ✅ - RunnablePassthrough # 透传 ✅ - RunnableBinding # 绑定参数 ✅ - RunnableConfigurable # 可配置 ✅LCELLangChain表达式语言用|运算符连接组件形成流水线chain prompt | model | output_parser数据流动示例输入 → 提示词模板 → 模型 → 输出解析 → 结构化结果3.聊天模型1.定义并调用DeepSeek-V4-Pro模型可以先在系统环境变量里填入Key变量名:DEEPSEEK_API_KEY这样变量值:Key值方式一ChatDeepSeek类(包含OpenAI原生方法)import os from langchain_core.messages import SystemMessage, HumanMessage from langchain_deepseek import ChatDeepSeek from pyexpat.errors import messages # 聊天模型组件 # LangChain DeepSeek 包下载:pip install -U langchain langchain-core langchain-deepseek python-dotenv # 1. 定义 DeepSeek 模型关键必须填 base_url 和 api_key DeepSeek ChatDeepSeek( modeldeepseek-v4-pro, base_urlhttps://api.deepseek.com/v1, # DeepSeek 官方接口地址 api_keyos.getenv(DEEPSEEK_API_KEY), # 你必须填自己的密钥 temperature0.7, # 可选参数 ) # 2.定义数据 messages [ SystemMessage(content你是一名专业的翻译官), HumanMessage(content帮我翻译Hello World!), ] # 3. 调用模型 response DeepSeek.invoke(messages) print(response.content) # import os # from langchain_core.messages import SystemMessage, HumanMessage # from langchain_openai import ChatOpenAI # 改用 OpenAI # # # 1. 定义 OpenAI 模型通常只需 model 和 api_key # chatgpt ChatOpenAI( # modelgpt-4o-mini, # 或 gpt-3.5-turbo # api_keyos.getenv(OPENAI_API_KEY), # 你的 OpenAI API 密钥 # temperature0.7, # ) # # # 2. 定义消息完全相同 # messages [ # SystemMessage(content你是一名专业的翻译官), # HumanMessage(content帮我翻译Hello World!), # ] # # # 3. 调用模型 # response chatgpt.invoke(messages) # print(response.content)方式二init_chat_model统一入口# DeepSeek deepseek init_chat_model( modeldeepseek-v4-pro,#模型 model_providerdeepseek, #供应商 api_keyos.getenv(DEEPSEEK_API_KEY),#从系统中自动读取KEY base_urlhttps://api.deepseek.com, # DeepSeek 需要 base_url ) # OpenAI openai init_chat_model( modelgpt-4o-mini, model_provideropenai, api_keyos.getenv(OPENAI_API_KEY), # OpenAI 不需要 base_url有默认值 ) # Anthropic Claude claude init_chat_model( modelclaude-3-haiku-20240307, model_provideranthropic, api_keyos.getenv(ANTHROPIC_API_KEY), ) #需要显示定义供应商的场景 # 场景1模型名称有歧义或无法识别 model init_chat_model( modelclaude-3-haiku, # 可能无法自动识别是 anthropic 还是其他 model_provideranthropic # 需要显式指定 ) # 场景2你想覆盖默认的提供商绑定极少见 model init_chat_model( modelgpt-4o-mini, model_providerazure # 强制使用 Azure OpenAI 而非标准 OpenAI )2.为模型装上“手脚”工具定义与绑定工具定义使用tool装饰器创建自定义工具from langchain.tools import tool tool def search_news(query: str) - str: 实时新闻搜索工具 return fetch_news_api(query)工具绑定与调用model_with_tools model.bind_tools([search_news]) response model_with_tools.invoke(今天有哪些AI新闻) tool_calls response.tool_calls # 解析模型触发的工具调用实战工具Tavily网络搜索Tavily简介专为AI优化的搜索引擎API提供高质量结果过滤自动摘要生成免费额度支持集成示例from langchain_community.tools import TavilySearchResults search TavilySearchResults() chain prompt | model.bind_tools([search]) | process_tool_calls结构化返回输出解析方案方案对比方案优点缺点Pydantic类型校验完善需预先定义模型JSON Schema动态灵活校验能力较弱TypedDictPython原生支持无运行时类型检查Pydantic解析示例from pydantic import BaseModel class NewsItem(BaseModel): title: str summary: str parser PydanticOutputParser(pydantic_objectNewsItem) chain prompt | model | parser # 输出自动转为NewsItem对象流式传输实现方案同步流式for chunk in model.stream(讲个故事): print(chunk.content, end)异步流式SSE集成async for chunk in model.astream(生成报告): send_sse_event(chunk) # 推送到前端进阶能力预告Agent动态决策工具调用路径Memory短期/长期对话记忆管理RAG结合外部知识库增强回答准确性学习资源官方文档https://python.langchain.com代码仓库https://github.com/langchain-ai/langchainDeepSeek集成指南https://platform.deepseek.com/docs
RELATED

相关推荐

Fusion 360 自制机械臂:从设计到 URDF+ROS2+Rviz联合Gazebo+MoveIt+Setup_Assistant+程序控制+录制动作运动规划保姆级教程

Fusion 360 自制机械臂:从设计到 URDF+ROS2+Rviz联合Gazebo+MoveIt+Setup_Assistant+程序控制+录制动作运动规划保姆级教程

环境信息: ubuntu 22.04ros2 humblemoveit2Gazebo Fortress 注意事项: 关键设计规范 建模前必须遵守以下规则,否则插件无法正常导出 URDF: 遵循右手坐标系规则机器人建模严格采用笛卡尔右手坐标系,保证在 ROS 2 的…

📅 2026/10/16 2:21:32
Linux内核层定制实战:配置裁剪、启动参数调优与驱动适配

Linux内核层定制实战:配置裁剪、启动参数调优与驱动适配

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/16 2:21:32
Docker Desktop 数据迁移完整流程(Windows 10/11 x64)

Docker Desktop 数据迁移完整流程(Windows 10/11 x64)

前提 两台机器都是 Windows 10 / 11 x64 拥有管理员权限 知道旧机器 Docker Desktop 版本(例如4.31.1),很重要!!!! 旧机器已安装 WSL 功能 WSL功能检查和准备 如果安装过Docker Desktop会自动…

📅 2026/10/16 2:16:32
MORE NEWS

更多资讯

📰

文件时间属性修改全攻略:批量操作、工具选型与避坑指南

提到“文件时间属性修改神器”,我第一反应就是笑——因为上周我刚用它救回一批老照片的拍摄时间,家里母上大人差点把相机时钟错乱的历史照片全删了。这玩意儿听起来冷门,但真到用的时候,谁用谁知道:整理文件归档、修复…

📰

电视播不了视频怎么办?格式、投屏、解码问题排查指南

电视画面突然提示“不支持此音频格式”,要么U盘里的电影放到电视上根本没显示,要么手机投屏到电视一直转圈圈……这些问题我碰到过太多次了。身边朋友一遇到就问我“是不是电视坏了,要不要换一台”。说实话,绝大多数情况下真不是电…

📰

X startup failed 报错排查:服务器安装图形界面失败怎么办

机房远程控制台里,我盯着屏幕看了快十分钟,引导加载完内核后,没有出现预想中的图形安装界面,只留下一行鲜红的字:X or window manager startup failed, falling back to mode然后安装程序自动切到了一个简陋的文本界面…

📰

Java调用海康威视HCNetSDK实现无浏览器视频预览

简介:本资源是一份面向Java开发者与物联网视频监控领域初学者的实战型SDK集成方案,聚焦海康威视摄像头预览功能的完整Java实现。资源提供可直接运行的工程代码与配套本地库,解决Java调用C/C底层SDK的技术难点,尤其适用于需快速接入…

📰

微信聊天记录导出指南:用 WeChatMsg 把消息变成 HTML、Word 与 CSV 文件

微信聊天记录导出指南:用 WeChatMsg 把消息变成 HTML、Word 与 CSV 文件 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_…

📰

HTML常用标签深度实战:语义化、表单与可访问性避坑指南

写过几年页面&#xff0c;我一直有个感受&#xff1a;HTML标签看起来是最入门的东西&#xff0c;真正上手项目之后&#xff0c;反而是最容易被低估的一环。刚接触前端的人&#xff0c;对着教程敲几遍<div>、<p>、<img>&#xff0c;觉得“这不就是几个标签吗”…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬