ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Langchain 从部署到调用各大主流厂商大模型使用详解

Langchain 从部署到调用各大主流厂商大模型使用详解 目录一、前言二、Langchain 介绍2.1 Langchain 是什么2.2 为什么要学习 LangChai2.3 LangChain 的核心组件2.4 LangChain 分层架构图2.5 LangChain 使用场景三、Langchain 安装与使用3.1 环境准备3.2 Langchain 安装过程3.2.1 一键安装依赖包3.3 对接三方厂商大模型3.3.1 对接deepseek3.3.2 对接智谱大模型3.3.3 对接阿里云百炼平台3.4 ChatOpenAI 兼容用法3.4.1 使用ChatOpenAI3.4.2 模型初始化 init_chat_model3.5 调用中转平台大模型3.5.1 OpenRouter四、写在最后一、前言大型语言模型LLM的能力发展到今天已经非常完善但是企业项目直接调用 API 构建实际应用时开发者常面临数据孤岛、上下文缺失、任务编排复杂等挑战。于是LangChain 应运而生这个开源框架通过标准化的组件和灵活的编排能力让开发者能像搭积木一样将 LLM 与外部数据源、工具和业务逻辑无缝连接快速构建出 RAG 智能问答、自主决策 Agent 等强大应用。本文将从实际使用角度出发系统梳理 LangChain 的核心架构、关键组件及典型应用场景帮助读者快速上手并落地于真实项目。二、Langchain 介绍2.1 Langchain 是什么LangChain 是一个开源框架专为简化基于大型语言模型LLM 的应用程序开发而设计-。它由哈佛大学的 Harrison Chase 于 2022 年 10 月发起其核心目标是让开发者能够像“搭积木”一样将各种模块快速组合构建出功能强大的 AI 应用。可以把 LangChain 理解为大模型的工作流编排工具。大模型本身像一个强大的“大脑”而 LangChain 则负责为这个“大脑”赋予“手脚”和“逻辑”让它能够读取文件、调用 API、操作数据库并分步骤执行复杂的任务。官网LangChain: the open agent platform to own your intelligence官网文档Home - Docs by LangChain2.2 为什么要学习 LangChai直接调用大模型 API 虽然简单但在构建实际应用时会遇到诸多挑战而 LangChain 正是为了解决这些痛点而生。解决大模型的局限大模型存在信息滞后、无法执行具体操作、缺乏任务规划能力等局限。LangChain 通过连接外部数据源和工具让模型能获取实时信息并执行操作。提供统一的开发接口它为大模型、向量数据库等提供了标准接口让你能轻松切换或组合不同的模型如 OpenAI、Anthropic 等无需为每个供应商编写适配代码。简化复杂应用的开发通过内置的 RAG检索增强生成、Memory记忆 和 Agents智能体 等组件LangChain 能大幅简化数据集成、上下文管理和复杂任务自动化的开发难度。提升开发效率它提供了大量预制组件让开发者能将更多精力放在业务逻辑上快速验证想法而无需从零编写大量胶水代码glue code。2.3 LangChain 的核心组件LangChain 的核心是其高度模块化的组件架构。以下是几个最主要的组件组件核心作用关键能力 / 用途模型 I/O (Model I/O)标准化与 LLM 的交互接口统一调用多模型API、管理提示词Prompt模板、结构化解析模型输出检索 (Retrieval)让 LLM 能访问外部数据源是 RAG 应用的基础。包含文档加载器Loaders、文本分割器Splitters和向量存储Vector Stores用于处理并检索私有数据。记忆 (Memory)在多次对话或任务中维护上下文状态。管理对话历史实现短期会话记忆和长期知识存储让应用具备“记忆力”。链 (Chains)将多个组件和步骤串联成一个可复用的工作流-。通过 LangChain 表达式语言LCEL可以用|管道操作符简洁地构建链。智能体 (Agents)让 LLM 能动态决策并自主调用外部工具Tools来完成任这是 LangChain 最强大的能力之一使 LLM 从“问答机”升级为“决策中枢”回调 (Callbacks)实现全链路的日志记录、监控和调试与 LangSmith 等平台集成用于追踪和性能分析2.4 LangChain 分层架构图下图是结合LangChain 核心组件的一个完整的分层调用架构图┌─────────────────────────────────────────────────────────────────────────────┐ │ 第5层部署 可观测性层 │ │ ┌──────────────────────────┐ ┌──────────────────────────────────────┐ │ │ │ LangServe │ │ LangSmith │ │ │ │ (一键部署为REST API) │ │ (调试、监控、评估、追踪) │ │ │ └──────────────────────────┘ └──────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────────────┘ ▲ │ ┌─────────────────────────────────────────────────────────────────────────────┐ │ 第4层应用 编排层 │ │ ┌──────────────────────────┐ ┌──────────────────────────────────────┐ │ │ │ Chains (链) │ │ Agents (智能体) │ │ │ │ 预定义的工作流编排 │ │ LLM自主决策动态调用工具 │ │ │ │ 例RAG链、对话链 │ │ 例旅行规划Agent、数据分析Agent │ │ │ └──────────────────────────┘ └──────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────────────┘ ▲ │ ┌─────────────────────────────────────────────────────────────────────────────┐ │ 第3层核心抽象层 │ │ ┌─────────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────────────┐ │ │ │ Model I/O │ │Retrieval │ │ Memory │ │ Tools │ │ │ │ 模型交互 │ │ 检索增强 │ │ 记忆管理 │ │ 外部工具/API │ │ │ │ 提示词模板 │ │ 文档加载 │ │ 对话状态 │ │ 搜索/计算/数据库 │ │ │ │ 输出解析 │ │ 向量存储 │ │ 上下文缓存│ │ 自定义函数 │ │ │ └─────────────┘ └──────────┘ └──────────┘ └──────────────────────┘ │ └─────────────────────────────────────────────────────────────────────────────┘ ▲ │ ┌─────────────────────────────────────────────────────────────────────────────┐ │ 第2层协议 集成层 │ │ ┌──────────────────────────┐ ┌──────────────────────────────────────┐ │ │ │ LangChain-Core │ │ LangChain-Community │ │ │ │ 基础抽象接口定义 │ │ 第三方组件集成实现 │ │ │ │ LCEL表达式语言 │ │ OpenAI/Anthropic/Chroma/Pinecone │ │ │ └──────────────────────────┘ └──────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────────────────────┘ ▲ │ ┌─────────────────────────────────────────────────────────────────────────────┐ │ 第1层基础 LLM 提供商 │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ OpenAI │ │Anthropic│ │ Google │ │ Cohere │ │ 开源 │ ... │ │ │ GPT-4 │ │ Claude │ │ Gemini │ │Command │ │Llama/Qwen│ │ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ └─────────────────────────────────────────────────────────────────────────────┘2.5 LangChain 使用场景基于上述组件LangChain 的应用场景非常广泛主要包括检索增强生成RAG这是 LangChain 最核心的应用场景之一。通过连接企业内部的 PDF、数据库、网页等私有数据让 LLM 能够基于这些信息生成更准确、更相关的回答有效减少模型“幻觉”。智能客服与聊天机器人构建能访问公司知识库、查询订单状态或处理售后问题的智能客服系统-。自主智能体Agent开发能自主规划并执行复杂任务的 AI 助手-。例如一个旅行代理智能体可以处理旅客的查询和订票-一个数据分析智能体可以自动“查询数据库 → 分析数据 → 生成报告并发送邮件”。企业内部流程自动化将 LLM 集成到企业工作流中例如自动处理员工入职数据-、进行多语言文档翻译并推送到通信工具等。内容生成与摘要自动对长篇文档、网页内容进行摘要总结或根据要求生成特定风格的报告、营销文案等。三、Langchain 安装与使用3.1 环境准备在开始使用之前先在本地准备好下面的环境安装python 版本 3.10安装python集成开发环境比如pycharm虚拟环境conda 或 venv或uv在阿里云百炼deepseek等大模型官网注册账号并获取到apikey3.2 Langchain 安装过程3.2.1 一键安装依赖包为了减少后续的安装步骤可以一次性安装下面的几个依赖包pip install langchain langchain-openai python-dotenv pip install -qU langchain-deepseek pip install langchain_deepseek在实际开发中可能会对接不同的模型供应商或者通过一些中转模型代理平台使用下表列举了一些主流的模型供应商如果需要安装依赖包的时候可以快速获取平台网址备注OpenRouterhttps://openrouter.ai/全球主流,含国外模型CloseAIhttps://platform.closeai-asia.com/亚洲最大含国外模型阿里云百炼https://bailian.console.aliyun.com/企业端友好硅基流动https://www.siliconflow.cn/性价比高适合个人百度千帆https://console.bce.baidu.com/qianfan/overview主打百度生态火山引擎https://console.volcengine.com/ark/主打字节多模态生态注意每个平台配置时都需要几个要素:模型名、api-key、base-urlpython-dotenv 用于从 .env 文件加载 API Key这是管理敏感信息的最佳实践可以避免将 Key 硬编码在代码中。3.3 对接三方厂商大模型接下来分别介绍下如何在langchain 中对接一些主流的厂商大模型进行对话文档chat-models | langchain_community | LangChain Reference在LangChain中初始化模型主要可以通过直接使用特定的Model class和使用统一的init_chat_model函数这两种方式来实现。这里先讲方式1这种方式最直接。LangChain为一些大模型供应商提供了专门的Model类导入对应的具体类(如ChatOpenAl、ChatAnthropic、ChatDeepSeek、Chatollama、ChatHunyuan、ChatTongyi、ChatZhipuAl)并进行实例化。在文档中可以看到3.3.1 对接deepseek首先需要到deepseek网站上创建并获取到apikey创建一个.env 文件接下来对接的各个模型厂商的apikey等信息均放在里面先安装依赖包pip install langchain_deepseek完整的对接deepseek的示例代码如下from langchain_deepseek import ChatDeepSeek from dotenv import load_dotenv import os #1、读取.env配置文件中的信息。相关的环境变量以.env文件中的优先 load_dotenv(overrideTrue) DEEPSEEK_API_KEY os.getenv (DEEPSEEK_API_KEY) DEEPSEEK_BASE_URL os.getenv(DEEPSEEK_BASE_URL) # 2、模型初始化 llm_deepseek ChatDeepSeek( modeldeepseek-v4-flash, api_keyDEEPSEEK_API_KEY, api_baseDEEPSEEK_BASE_URL, ) # 3、模型调用 response llm_deepseek.invoke(请用一句话介绍自己) print(response)运行一下看到下面的效果说明通过对接deepseek大模型调用成功在deepseek的官方api接口文档中关于调用的参数有更详细的说明3.3.2 对接智谱大模型官网智谱丨BigModel 平台为了程序中调用先安装相关依赖包# 安装 Langchain 社区依赖包,[包含ChatHunyuan、ChatTongyi、ChatZhipuAI pip install langchain-community 或者最新推荐这个 pip install langchain_zhipu # ChatZhipuAI/智谱 AI 认证相关依赖 pip install pyjwt在.env文件中中补充下面的关键信息ZHIPUAI_API_KEY你的apikey ZHIPUAI_BASE_URLhttps://open.bigmodel.cn/api/paas/v4/完整调用代码如下from langchain_community.chat_models import ChatZhipuAI from dotenv import load_dotenv import os #1、读取.env配置文件中的信息。相关的环境变量以.env文件中的优先 load_dotenv(overrideTrue) ZHIPUAI_API_KEY os.getenv (ZHIPUAI_API_KEY) ZHIPUAI_BASE_URL os.getenv(ZHIPUAI_BASE_URL) # 2、模型初始化 llm_zhipu ChatZhipuAI( modelglm-5.1, api_keyZHIPUAI_API_KEY, api_baseZHIPUAI_BASE_URL, ) # 3、模型调用 response llm_zhipu.invoke(请用一句话介绍自己) print(response)运行一下看到下面的结果3.3.3 对接阿里云百炼平台阿里云百炼地址大模型服务平台百炼控制台先安装几个依赖文件#切换python环境 conda activate langchainl.2 # ChatTongyi/阿里通义千问依赖包 pip install dashscope在.env文件中增加下面的配置# 阿里云百炼平台 DASHSC0PE_API_KEY你的apikey完整代码如下from langchain_community.chat_models import ChatTongyi from dotenv import load_dotenv import os #1、读取.env配置文件中的信息。相关的环境变量以.env文件中的优先 load_dotenv(overrideTrue) DASHSC0PE_API_KEY os.getenv (DASHSC0PE_API_KEY) # 2、模型初始化 llm_tongyi ChatTongyi( modelqwen3-max, api_key DASHSC0PE_API_KEY ) # 3、模型调用 response llm_tongyi.invoke(请用一句话介绍自己) print(response)运行一下看到下面的效果说明调用成功3.4 ChatOpenAI 兼容用法3.4.1 使用ChatOpenAI一方面LangChain没有为所有大模型厂商提供专用接口见Langchain大模型集成列表。如果选用的平台没有专用接口可以通过兼容接口调用。另一方面专用接口的对接方式五花八门如腾讯混元的ChatHunyuan需要单独的APP_ID SecretId Secretkey配置繁琐用户不友好。大多数API平台都支持OpenAI API接口规范所以基本都可以通过 ChatOpenAI集成。在官方文档Chat model integrations - Docs by LangChain 中可以看到LangChain展示了部分支持的大模型列表假如某个大模型不在这个里面通过上面的方式就不好调用了以deepseek为例langchain 提供了对其大模型调用的支持只需要在初始化大模型编码的部分将原本的ChatDeepSeek 调整为 ChatOpenAI 即可其他的代码几乎不用动如下from langchain_openai import ChatOpenAI from dotenv import load_dotenv import os #加载配置文件 load_dotenv(overrideTrue) DEEPSEEK_API_KEY os.getenv (DEEPSEEK_API_KEY) DEEPSEEK_BASE_URL os.getenv (DEEPSEEK_BASE_URL) # 2、模型初始化 llm_chatopen ChatOpenAI( modeldeepseek-v4-flash, api_keyDEEPSEEK_API_KEY, base_urlDEEPSEEK_BASE_URL, ) # 3、模型调用 response llm_chatopen.invoke(请用一句话介绍自己) print(response)如果在一开始没有安装相关依赖包还需要手动安装一下pip install langchain_openai运行上面的代码仍然可以得到相同的结果3.4.2 模型初始化 init_chat_modelinit_chat_model是LangChain1.x中推出的用于初始化聊天模型的统一接口。只要是LangChain支持的模型都可以处理它会根据模型名称自动选择对应的模型类初始化实例。init_chat_model和直接使用 ChatTongyi、ChatopenAI、ChatDeepSeek有什么区别呢init_chat_model是LangChain 1.0的统一接口优势包括统一接口无需记住每个提供商的不同初始化方式(以一致的方式初始化)易于切换简化了智能体系统中模型切换策略(只需修改模型字符串)简洁明了更简洁的语法减少样板代码自动适配内部根据模型标识自动选择对应的驱动类(ChatOpenAI、ChatDeepSeek)如下完整示例代码from langchain.chat_models import init_chat_model from dotenv import load_dotenv import os #1、读取.env配置文件中的信息。相关的环境变量以.env文件中的优先 load_dotenv(overrideTrue) DEEPSEEK_API_KEY os.getenv (DEEPSEEK_API_KEY) DEEPSEEK_BASE_URL os.getenv(DEEPSEEK_BASE_URL) # 2、模型初始化 llm_deepseek init_chat_model( modeldeepseek-v4-flash, api_keyDEEPSEEK_API_KEY, base_urlDEEPSEEK_BASE_URL, ) # 3、模型调用 response llm_deepseek.invoke(请用一句话介绍自己) print(response)3.5 调用中转平台大模型受政策影响国内无法直接调用国外顶尖的闭源模型某些复杂任务需要用这些模型实现此时可以通过中转平台达到目的。3.5.1 OpenRouter官网OpenRouter登录进去之后可以看到里面有很多国外的大模型OpenRouter是一个多模型API聚合平台提供统一的OpenAI兼容接口可以通过一个API Key调用OpenAl、Claude、Gemini、DeepSeek、Qwen等不同厂商的大模型。它适合用于模型对比、模型路由、Agent应用开发和课程实验。是目前知名度最高的中转平台。但是使用的话需要tizi(即魔法大家都懂的)LangChain当前版本为OpenRouter提供了专用集成:ChatOpenRouter。使用之前先安装一下依赖pip install langchain-openrouter再在.env文件中添加下面的信息OPENROUTER_API_KEYYOUR_API_KEY OPENROUTER_API_BASEhttps://openrouter.ai/api/v1如何获取apikey进入OpenRouter网站进入到某个具体的模型下面点击右上方的尝试该模型进去之后点击创建一个apikey即可获取到完整的代码如下from dotenv import load_dotenv import os from langchain_openrouter import ChatOpenRouter #加载配置文件 load_dotenv(overrideTrue) OPENROUTER_API_KEY os.getenv (OPENROUTER_API_KEY) OPENROUTER_API_BASE os.getenv (OPENROUTER_API_BASE) # 2、模型初始化 model ChatOpenRouter( modeldeepseek/deepseek-v3.2, api_keyOPENROUTER_API_KEY, base_urlOPENROUTER_API_BASE, ) # 3、模型调用 response model.invoke(请用一句话介绍自己) print(response)运行一下效果如下四、写在最后本文详细介绍了Langchain 的安装过程以及使用Langchain 调用主流的大模型的实际案例展示本篇到此结束感谢观看。
返回列表