news 2026/10/16 2:21:29

LangChain入门---基于DeepSeek-V4-Pro模型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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与LCEL

Runnable:一切皆可执行

所有组件(模型、工具、解析器)均实现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 # 可配置 ✅

LCEL(LangChain表达式语言)

用|运算符连接组件形成流水线:

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( model="deepseek-v4-pro", base_url="https://api.deepseek.com/v1", # DeepSeek 官方接口地址 api_key=os.getenv("DEEPSEEK_API_KEY"), # 你必须填自己的密钥 temperature=0.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( # model="gpt-4o-mini", # 或 "gpt-3.5-turbo" # api_key=os.getenv("OPENAI_API_KEY"), # 你的 OpenAI API 密钥 # temperature=0.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( model="deepseek-v4-pro",#模型 model_provider="deepseek", #供应商 api_key=os.getenv("DEEPSEEK_API_KEY"),#从系统中自动读取KEY base_url="https://api.deepseek.com", # DeepSeek 需要 base_url ) # OpenAI openai = init_chat_model( model="gpt-4o-mini", model_provider="openai", api_key=os.getenv("OPENAI_API_KEY"), # OpenAI 不需要 base_url(有默认值) ) # Anthropic Claude claude = init_chat_model( model="claude-3-haiku-20240307", model_provider="anthropic", api_key=os.getenv("ANTHROPIC_API_KEY"), ) #需要显示定义供应商的场景 # 场景1:模型名称有歧义或无法识别 model = init_chat_model( model="claude-3-haiku", # 可能无法自动识别是 anthropic 还是其他 model_provider="anthropic" # 需要显式指定 ) # 场景2:你想覆盖默认的提供商绑定(极少见) model = init_chat_model( model="gpt-4o-mini", model_provider="azure" # 强制使用 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_object=NewsItem) 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/langchain
  • DeepSeek集成指南:https://platform.deepseek.com/docs
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/16 2:20:47

从零手写BP神经网络:NumPy实现MNIST手写数字识别

简介:面向深度学习初学者的BP神经网络手写数字识别工程,完整覆盖了从数据加载、模型构建到训练与预测的流程,可帮助读者吃透反向传播算法中梯度下降、链式法则等细节。资源包共包含2000个文件,其中以图片样本为主,辅以…

作者头像 李华
网站建设 2026/10/16 2:20:12

Typora+PicGo+Gitee搭建免费博客图床,彻底解决图片管理难题

/* 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:20:06

Midscene 浏览器自动化 10 分钟速成指南

Midscene 浏览器自动化 10 分钟速成指南 【免费下载链接】midscene See interfaces like a human. E2E testing in natural language. 项目地址: https://gitcode.com/GitHub_Trending/mid/midscene Midscene 是一款 AI 浏览器自动化工具,装好 Chrome 扩展&a…

作者头像 李华
网站建设 2026/10/16 2:19:52

用代码做视觉创作:artcraft类项目的技术选型与实战经验

1. 从“artcraft”这个词本身说起:它到底指什么第一次看到“artcraft”这个标题,我脑子里冒出来的第一个念头是:这大概率不是一个现成的框架名,也不是某个大厂开源的库。它更像是把“art”和“craft”两个词拼在一起造出来的一个概…

作者头像 李华
网站建设 2026/10/16 2:18:35

mermaid 在线图表编辑器:免安装,浏览器里秒出流程图

mermaid 在线图表编辑器:免安装,浏览器里秒出流程图 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-li…

作者头像 李华