【Agent智能体】24LangChain

📅 2026/7/8 8:46:36
【Agent智能体】24LangChain
章节二十四LangChain一、LangChain概述了解LangChain是什么以及为什么需要它。LangChain2022年由哈佛大学的Harrison Chase发起的开源框架专门用于开发由大语言模型驱动的应用程序。它的核心作用是把调用大模型的过程标准化让你不用关心每个模型厂商的API差异。为什么需要LangChain直接调用GPT或DeepSeek的API当然可以但不同厂商的API格式不同切换模型时学习成本高。LangChain提供了统一的调用方式你只需要改一行配置就能换模型而且内置了提示词模板、链式调用、输出解析等常用功能让你专注业务逻辑。第一步理解LangChain解决的核心问题——统一不同模型的调用接口第二步掌握四大核心模块——Model I/O、Chains、Retrieval、Agents第三步学会用LangChain调用模型、解析输出、组装流程二、核心模块掌握LangChain的四大核心模块及其作用。Model I/O标准化大模型的输入和输出。包含三个子模块Format格式化通过模板管理提示词把原始数据插入模板后送给模型Predict预测调用模型进行生成Parse解析把模型的自然语言输出转换成结构化数据如JSONChains链条把多个组件串成一个完整流程。比如提示词模板 → 调用模型 → 解析输出这三步可以组成一个Chain一次invoke就能完成全部操作。Retrieval检索RAG的核心能力从外部数据源检索相关信息作为上下文喂给模型让回答更准确。Agents智能体让模型自主规划步骤、调用工具来完成复杂任务。Agent会根据用户输入判断需要什么工具然后一步步执行。第一步根据需求选择核心模块——简单调用用Model I/O多步流程用Chains需要查资料用Retrieval需要自主决策用Agents三、环境准备掌握API-Key配置和虚拟环境搭建。API-Key调用大模型API的身份凭证相当于密码。不同平台OpenAI、DeepSeek、阿里云等都有自己的API-Key注册后生成。BASE_URL模型服务的网络地址。不同平台的地址不同调用时需要同时提供API-Key和BASE_URL。环境变量把敏感信息API-Key存放在系统环境变量中避免硬编码到代码里导致泄露。第一步在模型服务平台注册账号生成API-Key第二步在项目根目录创建.env文件写入API-Key和BASE_URL第三步安装python-dotenv包在代码中用load_dotenv()加载环境变量第四步用os.getenv()读取环境变量传入LangChain的模型配置安全提示不要把.env文件提交到Git仓库在.gitignore中加上.env。四、调用在线模型掌握通过LangChain调用各大模型平台的方法。ChatCompletion API最经典的OpenAI风格API传入消息列表返回模型回复。大部分国产模型DeepSeek、通义千问等都兼容这个接口。Responses APIOpenAI 2025年发布的新API支持服务端内置工具调用和状态维护是目前最先进的接口。init_chat_modelLangChain提供的统一初始化方法一行代码就能创建模型实例只需要指定模型名和厂商。第一步安装对应的LangChain集成包如langchain-openai、langchain-deepseek第二步用init_chat_model(modelgpt-4o, model_provideropenai)创建模型实例第三步传入消息列表包含SystemMessage、HumanMessage等调用模型第四步获取模型返回的AIMessage提取文本内容调用方式除了普通调用还支持——异步调用await llm.ainvoke(...)适合高并发场景流式调用llm.stream(...)实现打字机效果逐字输出批次调用llm.batch([...])一次发多个请求并行处理五、调用本地模型了解如何通过Ollama在本地运行大模型。Ollama一个开源的本地大模型运行框架支持Qwen、DeepSeek等主流模型。主要用来本地开发和原型验证生产环境一般用vLLM。第一步从ollama.com下载对应系统的安装包并安装第二步命令行执行ollama run qwen3:8b下载并运行模型第三步在LangChain中配置base_urlhttp://localhost:11434指向本地Ollama服务第四步正常调用模型和在线模型用法完全一样六、模型输出解析掌握让模型输出结构化数据的方法。结构化输出让模型按指定格式如JSON输出结果而不是自由发挥。这在生产环境中非常重要因为程序需要解析模型的输出做后续处理。方法一——Prompt约束在提示词中明确要求输出JSON格式配合JSONOutputParser自动解析。但这对模型能力有要求小模型容易输出格式错误的JSON。方法二——厂商结构化输出主流模型API提供了专门的参数限制输出格式。LangChain通过with_structured_output()方法统一封装了各家厂商的能力不管底层是OpenAI还是Google调用方式都一样。PydanticPython的数据校验库。先用Pydantic定义好JSON结构字段名、类型然后传给with_structured_output()模型就会按这个结构输出。第一步用Pydantic定义输出数据结构如包含城市和天气两个字段的类第二步调用llm.with_structured_output(Pydantic类)得到新的模型实例第三步正常调用输出自动解析为Pydantic对象直接访问属性即可七、提示词模板掌握PromptTemplate和ChatPromptTemplate的使用。提示词模板把固定文字和变量分开运行时动态填充变量。比如模板是你是一位{角色}请评价{主题}“运行时传入角色美食家、主题火锅”就生成完整提示词。PromptTemplate字符串模板适合单轮对话场景。ChatPromptTemplate聊天消息模板可以定义SystemMessage、HumanMessage、AIMessage的模板适合多轮对话场景。第一步创建模板用{变量名}占位第二步传入字典填充变量生成PromptValue第三步PromptValue可以直接传给模型也可以转成字符串或消息列表八、Chains链式调用理解Chains的核心思想和Runnable接口。Runnable接口LangChain最底层的统一接口定义了invoke、stream、batch等标准方法。模型、解析器、模板、检索器都实现了这个接口所以可以像拼积木一样组合。链式组装用管道符|把多个组件串起来。比如prompt | llm | parser就是一个完整的Chain——先填充模板再调用模型最后解析输出。一次invoke走完整个流程。第一步准备组件提示词模板、模型实例、输出解析器第二步用管道符连接——chain prompt | llm | parser第三步调用chain.invoke({变量: 值})自动走完整个流程第四步获取结构化输出结果九、LangChain生态包了解LangChain相关的包及其作用。langchain主包包含构建LLM应用的核心实现。langchain-core核心接口和抽象定义了Runnable、Message等基础类。langchain-openai/deepseek与各模型厂商的集成包封装了具体模型的调用逻辑。langchain-text-splitters文档切分工具用于RAG场景下的长文档处理。langchain-mcp-adapters连接MCP工具的适配器让LangChain应用可以调用外部工具。名词解释LangChain开源框架用统一的接口封装不同大模型的调用差异让你像搭积木一样组装AI应用。Model I/OLangChain的核心模块负责模型的输入格式化、调用预测和输出解析三步。Chain把多个组件串成一个完整流程一次调用自动走完。比如模板→模型→解析器。PromptTemplate提示词模板把固定内容和变量分开运行时动态填充避免重复写提示词。PydanticPython的数据校验库用来定义数据结构字段名、类型LangChain用它来做结构化输出。结构化输出让模型按指定格式如JSON输出而不是自由发挥方便程序解析处理。Ollama本地运行大模型的工具框架适合开发和测试生产环境用vLLM。环境变量存放敏感配置如API-Key的地方避免直接写在代码里造成泄露。BASE_URL模型服务的网络地址不同厂商地址不同调用API时需要指定。RunnableLangChain的统一接口所有组件模型、模板、解析器都实现了它所以可以链式组合。