新闻详情

新闻详情

首页 / 资讯中心 / 详情

LangChain核心实战:从大模型调用到Agent开发与LangGraph选型

发布时间:2026/9/6 23:56:21来源:尧图网络
LangChain核心实战:从大模型调用到Agent开发与LangGraph选型
刚开始接触 LangChain 的时候很多同学都有这样的困惑今天看到一个教程在讲 Model明天又看到一个教程在讲 Agent后天又冒出 LangGraph、RAG、CrewAI。各种概念堆在一起感觉每个单词都认识但就是串不起来更不知道从哪一步开始动手写自己的第一个项目。这篇文章就专门解决这个问题。我会围绕 LangChain 中最核心的三条主线展开大模型 Model 的构建与调用方式智能 Agent 的开发流程与工具调用LangChain 与 LangGraph 的选型对比和实战组合。文章会从概念讲起配合完整可运行的代码示例覆盖环境准备、核心代码、运行验证、常见报错排查以及工程落地建议。不管你是刚开始学 LangChain 的新手还是想快速把大模型能力接入业务的后端开发者跟着本文走一遍都能独立搭出一个基于大模型和 Agent 的最小可用项目。1. 背景与核心概念1.1 LangChain 是什么LangChain 是一个用于构建大语言模型LLM应用的开源框架。它本身不提供大模型而是相当于一个“胶水层”和“工具箱”把模型提供商OpenAI、DeepSeek、通义千问等、提示词模板、外部工具、向量数据库、记忆模块串联起来帮助开发者用更少的代码完成复杂的大模型应用。换句话说如果没有 LangChain你要自己写一套代码去对接各家模型 API自己处理提示词拼接、流式输出、上下文记忆、工具调用参数解析。有了 LangChain这些通用能力被封装成标准组件你可以把精力放在业务逻辑上。1.2 大模型 Model 是什么在 LangChain 中Model 是连接大模型 API 的封装对象。它负责将“用户的输入文本”发送给大模型服务并把返回结果包装成统一的格式。这里需要区分几个容易混淆的概念概念说明Chat Models对话模型以消息列表为输入输出适合聊天、多轮对话LLMs文本补全模型以纯文本为输入输出适合文本补全、生成Embedding Models向量模型将文本转换为向量用于知识库检索、相似度计算Multimodal Models多模态模型支持文本、图片、音频等多类型输入在实际开发中绝大多数场景使用的是 Chat Models比如 OpenAI 的 GPT 系列、DeepSeek 的 deepseek-chat、阿里的通义千问等。LangChain 通过统一的接口来调用这些差异较大的 API业务代码不需要跟着模型供应商变化而大幅改动。1.3 智能 Agent 是什么Agent智能体可以理解为“能够自主决定调用什么工具来完成任务的 AI 程序”。它和普通模型调用的区别在于普通模型调用是一问一答模型只负责生成文本Agent 则会在生成文本的过程中判断自己是否需要查询数据库、调用计算器、搜索网页或者调用其他 API然后循环执行“思考 → 调用工具 → 观察结果 → 再思考”的过程直到完成任务。举个例子普通模型对话 用户今天北京天气怎么样 模型我今天不能获取实时的天气数据。 Agent 对话 用户今天北京天气怎么样 Agent 思考我需要调用天气查询工具。 Agent 调用search_weather(city北京) 工具返回晴气温 5~15℃ Agent 回答今天北京天气晴朗气温在 5~15℃ 之间。这就是 Agent 和普通模型的核心区别。掌握 Agent 开发意味着你能让大模型真正“动手干活”而不仅仅是“动嘴聊天”。1.4 这三者的关系可以用一个简单的比喻理解Model 是大脑负责思考和生成Agent 是决策者负责拆解任务、决定调用哪个工具LangChain 是神经系统把大脑、决策者、工具、记忆全部连接起来。理解了这三者的关系后面所有的代码都是在围绕它们做组合编排。2. 环境准备与版本说明在开始写代码之前先准备好运行环境。2.1 运行环境本文示例使用 Python 3.10 以上版本建议使用虚拟环境隔离项目依赖。操作系统可以是 Windows、macOS 或 Linux本文不会用到平台特有的命令。2.2 安装 LangChain 相关依赖LangChain 的版本更新比较快API 在不同大版本之间可能有调整。本文以 LangChain 0.3 系列为例演示如果你使用的是其他版本代码可能需要微调。pip install langchain langchain-openai langchain-core说明langchainLangChain 主框架。langchain-openaiLangChain 官方提供的 OpenAI 兼容接口适配包注意它不仅仅支持 OpenAI也支持所有兼容 OpenAI 协议的模型服务比如 DeepSeek、通义千问、Moonshot 等。langchain-coreLangChain 核心抽象层。如果你后续要使用 LangGraph可以再安装pip install langgraph2.3 获取模型 API Key本文的示例会使用 OpenAI 兼容接口。你需要准备一个模型服务商的 API Key无论是 OpenAI、DeepSeek、通义千问还是其他服务商都可以因为在 LangChain 中它们的接入方式非常相似。环境变量配置方式export OPENAI_API_KEY你的API Key export OPENAI_API_BASEhttps://api.deepseek.com # 如果使用非OpenAI官方服务可配置此项在 Windows 的 CMD 中环境变量配置方式不同set OPENAI_API_KEY你的API Key这里要注意一点不同模型服务商的 API 地址和模型名称不同配置时需要以你实际使用的服务商文档为准。不要盲目照搬网上的配置。2.4 项目结构为了便于阅读和管理本文采用以下目录结构langchain-practice/ ├── .env # 环境变量配置 ├── 01_model_basic.py # 模型基本调用示例 ├── 02_lcel_demo.py # LCEL 链式调用示例 ├── 03_agent_demo.py # Agent 开发示例 └── 04_rag_demo.py # RAG 知识库示例如果你使用.env文件保存密钥需要安装python-dotenv并在代码中加载pip install python-dotenv下面开始写第一份代码。3. 大模型 Model 构建与调用3.1 创建模型对象在 LangChain 中创建模型对象的方式有两种一种是直接使用具体的模型类另一种是使用统一的初始化函数。直接使用ChatOpenAI是最常见的方式# 文件路径langchain-practice/01_model_basic.py import os from dotenv import load_dotenv from langchain_openai import ChatOpenAI load_dotenv() # 创建对话模型对象 llm ChatOpenAI( modeldeepseek-chat, temperature0.7, api_keyos.getenv(OPENAI_API_KEY), base_urlos.getenv(OPENAI_API_BASE), ) # 调用模型 resp llm.invoke(请用一句话介绍你自己) print(resp.content)代码解释model模型名称具体值取决于你的模型服务商。temperature生成随机性参数值越大回答越随机值越小越确定。一般取值范围 0~2。api_keyAPI 密钥建议通过环境变量读取不要硬编码在代码里。base_urlAPI 服务地址使用 OpenAI 官方服务时可以不填使用第三方兼容服务时需要指定。运行这段代码后程序会向模型服务发送请求然后把模型的回答打印出来。3.2 使用统一函数初始化模型LangChain 0.3 版本开始提供init_chat_model函数可以用同样的代码切换不同模型供应商适合做模型无关的应用# 文件路径langchain-practice/01_model_basic.py from langchain.chat_models import init_chat_model # 通过字符串指定模型供应商和模型名称 llm init_chat_model( modeldeepseek-chat, model_provideropenai, # 使用 OpenAI 兼容协议 temperature0.7, ) resp llm.invoke(请用一句话介绍你自己) print(resp.content)这种方式的优势是当你想从 DeepSeek 切换到通义千问或 OpenAI 时只需要修改model_provider和model两个参数核心业务代码不需要改动。3.3 多轮对话与消息类型在实际业务中我们更多时候需要保留上下文让模型“记得”之前聊过什么。LangChain 使用消息列表来组织多轮对话# 文件路径langchain-practice/01_model_basic.py from langchain_core.messages import HumanMessage, SystemMessage, AIMessage messages [ SystemMessage(content你是一个乐于助人的中文助手。), HumanMessage(content给我推荐一本学习 Python 的书。), AIMessage(content我推荐《Python编程从入门到实践》。), HumanMessage(content这本书适合零基础吗), ] resp llm.invoke(messages) print(resp.content)这里可以看到Chat 模型的输入是消息列表每条消息有role区分System 表示系统角色设定Human 表示用户消息AI 表示模型回复。这种方式比简单的字符串拼接更适合表达多轮对话结构。3.4 结构化输出与输出解析器大模型返回的是文本。但在真实项目中我们往往需要模型返回 JSON 格式的数据方便程序解析和存储。LangChain 的with_structured_output可以做到这一点。# 文件路径langchain-practice/01_model_basic.py from pydantic import BaseModel, Field # 定义输出结构 class MovieReview(BaseModel): title: str Field(description电影名称) score: float Field(description评分范围0-10) summary: str Field(description电影简评) structured_llm llm.with_structured_output(MovieReview) resp structured_llm.invoke(请评价电影《盗梦空间》) print(resp.title) print(resp.score) print(resp.summary)这里用 Pydantic 定义了一个输出格式类with_structured_output会让模型按照这个格式返回LangChain 内部会自动把 JSON 字符串解析成MovieReview对象。这种结构化输出的能力在业务开发中非常实用比如信息抽取、数据分类、订单解析等场景不需要再自己写正则去匹配模型的返回值。4. LCEL 表达式语言与链式调用4.1 什么是 LCELLCELLangChain Expression LanguageLangChain 表达式语言是 LangChain 中用于组合组件的一种声明式语法。它用|管道符把多个组件串联起来上一组件的输出会作为下一组件的输入。核心语法非常直观chain prompt | llm | output_parser这个表达式的意思就是把提示词模板传给模型模型生成的输出再交给输出解析器处理。4.2 提示词模板与链式调用下面是一个完整的链式调用示例# 文件路径langchain-practice/02_lcel_demo.py from dotenv import load_dotenv from langchain_core.prompts import ChatPromptTemplate from langchain_openai import ChatOpenAI from langchain_core.output_parsers import StrOutputParser load_dotenv() # 1. 创建提示词模板{topic} 是需要填充的变量 prompt ChatPromptTemplate.from_template( 你是一名资深技术博主请围绕主题【{topic}】写一篇技术文章的提纲要求包含3个章节。 ) # 2. 创建模型 llm ChatOpenAI( modeldeepseek-chat, temperature0.5, ) # 3. 创建输出解析器把模型输出转成字符串 output_parser StrOutputParser() # 4. 用管道符串联成链 chain prompt | llm | output_parser # 5. 调用链 result chain.invoke({topic: LangChain Agent 开发}) print(result)运行结果会是一份包含 3 个章节的技术文章提纲。代码解释ChatPromptTemplate.from_template从模板字符串创建提示词模板{topic}是占位符运行时会被替换成真实值。StrOutputParser将模型返回的 AIMessage 对象转换为字符串方便直接使用。chain.invoke({topic: ...})执行整条链传入模板所需的变量。4.3 流式输出在实际项目中白屏等待模型返回是很糟糕的体验流式输出可以让结果一个字一个字地显示出来。# 文件路径langchain-practice/02_lcel_demo.py for chunk in chain.stream({topic: 大模型应用落地实践}): print(chunk, end, flushTrue)LCEL 链默认支持流式输出不需要额外配置。当你在前端做流式交互时这个能力非常有用。4.4 LCEL 的优势LCEL 不仅仅是语法糖它提供了几个对工程化非常重要的能力并行执行链中没有前后依赖的组件可以并行执行提升吞吐量。流式支持链中任意组件支持流式时整条链也支持流式。异步支持通过chain.ainvoke()调用异步接口。可观测性LangSmith 可以接入 LCEL 链查看每一步的输入输出方便调试。在项目实战中建议尽可能使用 LCEL 来组织你的模型调用逻辑而不是写散落的函数调用。5. 智能 Agent 开发实战5.1 Agent 的结构LangChain 中一个标准 Agent 由三个部分组成模型负责推理和决策。工具Agent 可以调用的函数或 API。Agent 执行器负责循环调度“思考 → 行动 → 观察”。社区中目前最主流的 Agent 架构是 ReActReasoning and Acting它让模型在每一轮思考时同时输出动作决定然后根据工具返回结果继续推理。下图展示了 Agent 的执行流程用户输入 → Agent 思考 → 调用工具 → 观察结果 → 再思考 → 最终回答5.2 定义一个工具在 LangChain 中只需要在函数上添加tool装饰器就可以把普通函数变成 Agent 可调用的工具# 文件路径langchain-practice/03_agent_demo.py from langchain_core.tools import tool import random tool def roll_dice(sides: int) - str: 掷一个指定面数的骰子返回点数结果。sides 为骰子面数必须是正整数。 result random.randint(1, sides) return f掷出了一个 {sides} 面的骰子结果是 {result}这里的关键是函数的 docstring它会作为工具描述传给模型。模型正是依靠这段描述来决定什么时候该调用这个工具。所以工具的描述要清晰、准确说明用途和参数含义。5.3 创建 Agent使用create_react_agent可以快速创建一个 ReAct 模式的 Agent# 文件路径langchain-practice/03_agent_demo.py from langchain_openai import ChatOpenAI from langchain.agents import create_react_agent, AgentExecutor from langchain_core.prompts import PromptTemplate # 创建模型 llm ChatOpenAI( modeldeepseek-chat, temperature0.3, ) # 工具列表 tools [roll_dice] # ReAct Agent 的标准提示词模板LangChain 提供了默认模板 prompt PromptTemplate.from_template( 你是一个可以调用工具的助手。请根据用户的问题决定是否需要使用工具并根据工具的结果回答。 尽可能帮助用户。你有以下工具可用 {tools} 工具名称: 工具使用说明 使用格式如下 Thought: 你当前需要思考要做什么 Action: 要使用的工具名称必须从 [{tool_names}] 中选择 Action Input: 工具输入参数 Observation: 工具返回的结果 ...重复上述过程 如果你已经有了最终答案请这样输出 Thought: 我现在知道答案了 Final Answer: 最终回复给用户的答案 用户的问题{input} 工作区日志 {agent_scratchpad} ) # 创建 Agent 对象 agent create_react_agent(llmllm, toolstools, promptprompt) # 创建执行器 agent_executor AgentExecutor( agentagent, toolstools, verboseTrue, # 打印中间过程便于调试 handle_parsing_errorsTrue, # 模型输出格式错误时自动重试 ) # 运行 Agent result agent_executor.invoke({input: 帮我掷一个6面的骰子然后告诉我结果。}) print(result[output])运行这段代码后在终端里可以看到 Agent 的“思考过程” Entering new AgentExecutor chain... Thought: 用户需要掷骰子我可以使用 roll_dice 工具。 Action: roll_dice Action Input: {sides: 6} Observation: 掷出了一个 6 面的骰子结果是 4 Thought: 我现在知道答案了 Final Answer: 你掷了一个6面的骰子结果是4。 Finished chain. 你掷了一个6面的骰子结果是4。这里说一下几个常见概念AgentExecutorAgent 的执行环境负责循环调用 Agent 直到模型输出 Final Answer或达到最大迭代次数。verboseTrue开启调试日志能看到每一步的思考过程开发阶段建议开启。handle_parsing_errorsTrue当模型输出的 Action 格式不规范时LangChain 会自动把错误信息反馈给模型让它重新输出减少“格式错误导致中断”的问题。5.4 多工具 Agent 实战为了让 Agent 更加实用下面做一个稍微复杂一点的示例让 Agent 同时具备“掷骰子”和“计算圆面积”两种能力。# 文件路径langchain-practice/03_agent_demo.py import math from langchain_core.tools import tool tool def roll_dice(sides: int) - str: 掷一个指定面数的骰子返回点数结果。sides 为骰子面数必须是正整数。 result random.randint(1, sides) return f掷出了一个 {sides} 面的骰子结果是 {result} tool def calculate_circle_area(radius: float) - str: 计算圆的面积radius 为半径。返回面积结果。 area math.pi * radius * radius return f半径为 {radius} 的圆面积是 {area:.2f} tools [roll_dice, calculate_circle_area] agent create_react_agent(llmllm, toolstools, promptprompt) agent_executor AgentExecutor(agentagent, toolstools, verboseTrue) result agent_executor.invoke({input: 一个半径为5的圆面积是多少}) print(result[output])当用户提问“半径为5的圆面积”时Agent 会判断需要调用calculate_circle_area工具传入参数radius5然后基于工具返回值回答。5.5 Agent 开发的核心要点在实际项目中开发 Agent以下几件事比写代码本身更重要工具设计要单一职责每个工具最好只做一件事工具越多越需要清晰的描述。工具描述要详细模型是靠描述来理解工具的描述模糊会导致模型不知道何时调用、不知道传什么参数。控制迭代次数默认 Agent 最多迭代一定次数超出后自动终止防止死循环。做好错误处理工具内部可能抛异常需要让工具返回“错误信息”而不是直接崩溃让 Agent 有机会自我纠正。做好安全边界涉及数据库操作、文件删除、支付等敏感操作时Agent 不能直接执行必须经过人工确认。6. LangChain 与 LangGraph 的区别与选型6.1 LangGraph 是什么LangGraph 是 LangChain 团队推出的另一个框架用于构建有状态、可编排的 Agent 应用。它把整个任务流程建模为一张“图”节点Node代表处理步骤边Edge代表流转条件图会维护一个共享状态节点之间通过状态传递数据。很多同学会问LangChain 和 LangGraph 到底有什么区别LangChain 适合线性的、简单的链式调用。LangGraph 适合需要分支、循环、人工介入、复杂状态管理的 Agent 工作流。6.2 简单对比对比维度LangChainLangGraph核心模型线性链式调用有向图结构状态管理消息列表显式状态对象分支跳转不支持支持条件边循环迭代不支持AgentExecutor 内部循环支持图的循环人工介入不友好支持中断和恢复适用场景简单 LLM 调用、RAG、问答复杂 Agent、多角色协作、审批流6.3 什么场景选择 LangGraph当你的 Agent 业务流程符合以下特征时建议考虑 LangGraph流程包含多个固定步骤比如“先做意图分类再根据分类走不同分支”。需要人工审批节点比如“Agent 生成 SQL → 人工确认 → 再执行”。多个 Agent 之间需要协作比如一个负责规划、一个负责执行。业务流程需要断点续跑、状态恢复。而对于简单的“调用工具回答问题”使用 LangChain 的create_react_agent已经足够不需要为了用框架而用框架。6.4 LangGraph 最小示例下面用 LangGraph 实现一个“先判断是否是数学问题再决定是否调用计算工具”的简单流程# 文件路径langchain-practice/04_langgraph_demo.py from typing import TypedDict from langgraph.graph import StateGraph, END # 定义状态 class AgentState(TypedDict): question: str need_calculate: bool final_answer: str # 节点1判断是否需要计算 def classify(state: AgentState): question state[question] # 这里用简单的关键词判断模拟意图识别实际项目中可以用模型判断 need_calculate 计算 in question or 多少 in question return {need_calculate: need_calculate} # 节点2直接回答 def direct_answer(state: AgentState): return {final_answer: f这是普通问题{state[question]}} # 节点3调用计算这里简化为返回提示 def calculate_answer(state: AgentState): return {final_answer: f这是计算问题{state[question]}需要调用计算工具。} # 构建图 graph StateGraph(AgentState) graph.add_node(classify, classify) graph.add_node(direct, direct_answer) graph.add_node(calculate, calculate_answer) graph.set_entry_point(classify) graph.add_edge(classify, direct) graph.add_edge(classify, calculate) graph.add_edge(direct, END) graph.add_edge(calculate, END) app graph.compile() # 运行 result app.invoke({question: 计算 25 * 4 等于多少}) print(result[final_answer])这段代码展示了 LangGraph 的核心思想把问题处理拆成节点节点之间通过状态传递数据流程可以按条件分支。在实际项目中classify节点中的关键词判断会替换成模型调用或者更完整的工具选择逻辑。Ground 上 LangGraph 与 AgentExecutor 并不冲突LangGraph 可以作为更底层的编排框架Agent 节点也可以是图中的一个节点。7. RAG 知识库增强实战7.1 什么是 RAGRAGRetrieval-Augmented Generation检索增强生成是目前大模型落地中最常用的技术之一。它的核心思路是在模型回答前先从外部知识库中检索出相关的文档片段把这些片段拼接进提示词再让模型基于这些资料回答。RAG 解决的核心问题是“大模型知识陈旧”和“无法获取私有知识”。比如企业内部有一份产品手册模型显然没学过但通过 RAG 可以先把手册内容检索出来再让模型根据手册内容回答。7.2 RAG 的基本流程文档加载 → 文本切分 → 向量化 → 存储向量库 → 用户提问 → 检索相似文档 → 拼接提示词 → 模型回答下面实现一个最简单的 RAG 示例使用内存向量存储# 文件路径langchain-practice/05_rag_demo.py from dotenv import load_dotenv from langchain_openai import ChatOpenAI, OpenAIEmbeddings from langchain_community.vectorstores import FAISS from langchain.text_splitter import CharacterTextSplitter from langchain_core.prompts import ChatPromptTemplate from langchain_core.output_parsers import StrOutputParser from langchain_core.runnables import RunnablePassthrough load_dotenv() # 1. 准备知识文档 document LangChain 是一个用于构建大语言模型应用的开源框架。 它支持模型调用、提示词管理、Agent 开发、RAG 检索增强等功能。 LangGraph 是 LangChain 团队推出的流程编排框架适合复杂 Agent 应用。 # 2. 文本切分 splitter CharacterTextSplitter( chunk_size50, chunk_overlap10, ) chunks splitter.split_text(document) # 3. 向量化并存入向量库 embeddings OpenAIEmbeddings(modeltext-embedding-ada-002) vectorstore FAISS.from_texts(chunks, embeddingembeddings) # 4. 创建检索器 retriever vectorstore.as_retriever(search_kwargs{k: 2}) # 5. 定义提示词模板要求模型只能基于资料回答 prompt ChatPromptTemplate.from_template( 请基于以下资料回答问题。如果资料中没有相关内容请回答资料中没有提到。 资料 {context} 问题{question} 回答 ) # 6. 构建 RAG 链 def format_docs(docs): return \n\n.join([d.page_content for d in docs]) llm ChatOpenAI(modeldeepseek-chat, temperature0.2) rag_chain ( {context: retriever | format_docs, question: RunnablePassthrough()} | prompt | llm | StrOutputParser() ) # 7. 提问 result rag_chain.invoke(LangGraph 是什么) print(result)运行这段代码后模型会结合检索到的知识库内容回答“LangGraph 是什么”而不是完全依赖自己的知识储备。代码解释CharacterTextSplitter把长文本按字符长度切分成片段这样检索时定位更精准。OpenAIEmbeddings负责把文本变成向量。不同模型服务商提供的向量模型不同接口需要按实际情况调整。FAISS开源向量检索库适合本地开发学习和中小规模数据。RunnablePassthrough()原样传递用户问题不经过处理。retriever | format_docs检索器检索到文档后用format_docs把多个文档拼接成一个字符串。8. 常见问题与排查思路在 LangChain 开发过程中最容易遇到的问题集中在模型 API 接入、工具调用格式、版本兼容这三个方面。下表汇总了常见情况和解决思路问题现象常见原因解决思路调用模型时报401或AuthenticationErrorAPI Key 无效或环境变量未加载检查环境变量是否设置正确确认是否调用load_dotenv()报404或Model Not Found模型名称配置错误或当前服务商不支持该模型查看服务商文档确认模型名称准确无误报400请求参数错误模型服务商要求的参数格式与当前代码不匹配检查base_url是否配置正确确认请求参数在服务商支持范围ModuleNotFoundError: langchain_community缺少社区扩展包执行pip install langchain-communityAgent 不调用工具直接回答工具描述不清晰或模型的工具调用能力被关闭完善工具 docstring检查模型参数是否禁止了工具调用Agent 一直不结束反复调用工具未能形成最终答案或迭代次数过少检查工具返回结果是否可被模型理解通过max_iterations限制最大迭代次数Agent 工具参数解析失败模型生成的 Action Input 不是合法 JSON开启handle_parsing_errorsTrue在提示词中给出更严格的输出格式示例向量库检索结果不准确文本切分粒度不合适或检索数量过少调整chunk_size和chunk_overlap增大k值同一套代码不同版本行为不同LangChain 版本差异导致 API 调整固定依赖版本升级前仔细查看官方迁移文档通用排查顺序建议确认报错信息里完整的错误内容不要只看第一行。先单独调用 API 供应商的接口排除 LangChain 层面的问题。再最小化 LangChain 代码逐步加上组件定位是哪一层出的问题。确认 Python 环境和依赖版本避免版本冲突。开启verboseTrue或接入 LangSmith 观察内部执行过程。9. 最佳实践与工程建议9.1 密钥与配置管理千万不要把 API Key 硬编码在代码仓库里。推荐使用环境变量或.env文件管理密钥并将.env文件加入.gitignore。在不同环境开发、测试、生产之间切换时通过环境变量覆盖配置。9.2 模型管理在实际项目中你会同时接触多个模型供应商和多个模型版本。建议在项目内做一个统一的模型配置层把模型名称、服务地址、参数集中管理方便切换和灰度。不要在每个业务文件里都直接创建ChatOpenAI对象。9.3 提示词版本管理提示词是影响大模型输出质量的关键因素。建议把提示词模板独立成文件或配置项不要散落到业务代码中。改动提示词后要认真测试有条件时可以维护提示词版本记录避免回滚困难。9.4 错误处理与重试大模型 API 调用可能因为限流、网络抖动等原因失败。业务代码要针对 API 调用增加合理的重试机制和兜底提示。同时断点续传、人工确认机制在企业级 Agent 中是不可或缺的尤其是涉及资金、删除、审批等高风险操作时。9.5 安全边界Agent 工具中的权限范围要严格遵循最小权限原则。凡是涉及生产环境数据变更、敏感信息读取的工具都应该增加人工审批步骤。不要因为“Agent 很智能”就让它直接执行所有操作。9.6 日志与可观测性大模型应用的调试成本比传统程序高因为模型输出不可控。建议记录每次请求的完整输入和输出。记录 Agent 的思考过程、工具调用参数和返回结果。对模型响应耗时、Token 消耗进行监控。借助 LangSmith 等平台可以很好地完成这些观测工作。9.7 性能优化大模型应用通常会遇到“回复慢”的问题可以从以下几个方向优化使用流式输出减少用户等待感。减少提示词中的无效内容降低 Token 消耗。对常见问题做缓存命中缓存时不再调用模型。模型选型时根据任务复杂度选择合适规格不过度追求最强模型。10. 总结与学习路线本文围绕 LangChain 的三条核心主线做了完整梳理大模型 Model 的构建与调用、LCEL 链式编排、智能 Agent 开发并补充了 LangGraph 的选型对比和 RAG 知识库增强的入门示例。建议按照以下顺序继续深入学习先熟练使用ChatOpenAI完成模型调用、多轮对话和结构化输出。掌握 LCEL 语法能组合出提示词、模型、输出解析器组成的任务链。独立实现一个带 2 到 3 个工具的 Agent理解 ReAct 循环机制。学习 LangGraph 的状态图设计尝试把 Agent 流程做成可控制的工作流。结合业务场景实践 RAG从文档加载、切分、向量化到检索问答完整落地。如果你正在规划企业级大模型应用优先关注模型选型与成本控制、提示词工程沉淀、Agent 安全边界、可观测性建设这几条主线。框架本身变化很快但工程方法论是长期沉淀的资产。把本文提供的代码跑通再结合自己的业务场景改一改就能完成从“会调用 API”到“能开发 Agent 应用”的跨越。如果这篇文章对你有帮助欢迎收藏备用也欢迎在评论区交流你在实际开发中遇到的问题。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

2026 AI视觉与物联网开发板选购指南:从MCU到Jetson的档位解析 2026/9/7 0:02:22

2026 AI视觉与物联网开发板选购指南:从MCU到Jetson的档位解析

2026 年已经过了一大半,如果你现在正准备入手 AI 视觉或物联网开发板,我建议你先别急着下单。市面上从几十块的 ESP32 到几千块的英伟达 Jetson,价格差了近百倍,宣传话术却几乎一样,都告诉你“能跑 AI、能做视觉、能搞…

阅读更多 →
基于Vue的企业门户网站管理系统的设计与实现 2026/9/7 0:02:22

基于Vue的企业门户网站管理系统的设计与实现

目 录 摘 要 Abstract 目 录 1 引言 1.1 选题背景 1.2 研究现状 1.3 目的和意义 1.4 论文结构安排 1.5本章小结 2 开发环境与技术 2.1 MySQL数据库 2.2 Java语言技术 2.3 Spring Boot框架 2.4 Vue.js 2.5 本章小节 3 系统分析 …

阅读更多 →
BS EN 13814-1-2019游乐设施安全标准:设计与制造核心要点解析 2026/9/7 0:02:22

BS EN 13814-1-2019游乐设施安全标准:设计与制造核心要点解析

简介:BS EN 13814-1:2019是英国采纳欧洲标准EN 13814-1:2019的正式版本,由BSI标准出版,重点规定游乐设施和游乐设备在设计与制造环节的安全准则,与BS EN 13814-2:2019、BS EN 13814-3:2019共同取代旧版BS EN 13814:2004。该标准面…

阅读更多 →
UL 1642锂电池安全标准全解析:测试项目、认证流程与避坑指南 2026/9/7 0:02:22

UL 1642锂电池安全标准全解析:测试项目、认证流程与避坑指南

简介:UL 1642是锂电池安全领域的重要规范,本中文版资源适合锂电池制造商、检测机构工程师及产品认证相关人员阅读,用于理解电池在设计与制造层面的安全要求、测试方法与合规要点。资源共1个PDF文件,压缩包大小834KB,便…

阅读更多 →
基于YOLOv8和PyQt5的麦穗稻穗检测识别系统设计与实现 2026/9/7 0:02:22

基于YOLOv8和PyQt5的麦穗稻穗检测识别系统设计与实现

这次我们来看一个把目标检测算法和桌面端工具结合得很典型的项目:基于 YOLOv8 PyQt5 的麦穗稻穗检测识别系统。这个项目本身不是新概念,但它的价值在于落地形态很完整。YOLOv8 负责核心的麦穗稻穗目标检测,PyQt5 负责提供可视化的桌面交互界…

阅读更多 →
斗图助手 第 011 个开关:允许超长关键词的位置、验证方法与风险边界 2026/9/6 23:59:22

斗图助手 第 011 个开关:允许超长关键词的位置、验证方法与风险边界

🔥 个人主页: 杨利杰YJlio ❄️ 个人专栏: 《Windows 疑难杂症与工单复盘案例库》 《Sysinternals实战教程》 《WINDOWS教程》 《Windows PowerShell 实战》 《IOS插件分析测试》 《超简单:用Python让Excel飞起来》…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞