
大家好我是Java1234_小锋老师。先说结论很多人一听 LangChain觉得它很玄又是链、又是 Agent、又是向量库概念一堆。其实把它想简单一点就好——LangChain 不是一个更聪明的模型而是一套帮你把大模型「用起来」的工具箱。你自己调一次 OpenAI API 很容易但要做「多步推理 查知识库 调外部接口 记上下文」手写很快就乱成一团。LangChain 强就强在把这些脏活累活拆成可拼装的零件让你少写胶水代码。它到底解决了什么痛点直接调 API大致是这样用户问题 → 拼 Prompt → 调模型 → 拿到回复这在聊天 Demo 里够用。但真实业务往往是先去知识库里找相关文档再让模型根据文档回答必要时查天气、查数据库、发请求还要记住上一轮聊了什么手写这些逻辑到处都是if/else和各种适配代码。LangChain 的思路是用统一的接口把提示词、模型、检索、工具串成一条清晰的链路。整体长这样是否用户提问Prompt 模板可选检索知识库大模型需要工具?调用工具/API返回结果下面拆开看它到底强在哪几块。强项一把大模型「串」成流水线LangChain 最早火起来靠的就是Chain链这个概念上一步的输出自动变成下一步的输入。用 LCELLangChain Expression Language写起来很直观像搭积木fromlangchain_openaiimportChatOpenAIfromlangchain_core.promptsimportChatPromptTemplatefromlangchain_core.output_parsersimportStrOutputParser# 提示词模板把用户输入塞进固定句式promptChatPromptTemplate.from_template(你是一个简洁的技术助手。请用三句话解释{topic})# 模型和输出解析llmChatOpenAI(modelgpt-4o-mini,temperature0.3)parserStrOutputParser()# 用 | 把几步串起来像管道一样chainprompt|llm|parser resultchain.invoke({topic:什么是向量数据库})print(result)你会发现Prompt、模型、解析器各管各的中间用|连接。以后想换模型、改模板基本不用动整条业务逻辑。这种「可组合」的感觉才是很多人喜欢它的原因——代码读起来像流程而不是一堆散落的函数调用。强项二让 AI 能查资料再回答RAG大模型有个老问题它不知道你公司内部的文档也容易一本正经地胡说。常见解法叫RAG检索增强生成先检索相关内容再把内容塞进 Prompt让模型「照着资料说」。上传文档切分成小段转成向量并入库用户提问问题也转成向量在库里找最相关的几段把资料 问题一起交给模型基于资料生成回答用 LangChain 搭一个最小 RAG核心就这几步fromlangchain_openaiimportChatOpenAI,OpenAIEmbeddingsfromlangchain_community.vectorstoresimportFAISSfromlangchain_text_splittersimportRecursiveCharacterTextSplitterfromlangchain_core.promptsimportChatPromptTemplatefromlangchain_core.runnablesimportRunnablePassthroughfromlangchain_core.output_parsersimportStrOutputParser# 1. 准备一点「私有知识」docs[公司年假政策转正员工每年享有 10 天带薪年假。,报销规则差旅住宿上限 500 元/晚需提供发票。,技术栈约定后端统一使用 Python 3.11 FastAPI。,]# 2. 切分 向量化 入库splitterRecursiveCharacterTextSplitter(chunk_size100,chunk_overlap20)splitssplitter.create_documents(docs)vectorstoreFAISS.from_documents(splits,OpenAIEmbeddings())retrievervectorstore.as_retriever(k2)# 3. 提示词强制模型基于检索到的内容回答promptChatPromptTemplate.from_template(请只根据下面资料回答问题。如果资料里没有就说不知道。 资料 {context} 问题{question} )llmChatOpenAI(modelgpt-4o-mini,temperature0)# 4. 检索 → 拼 Prompt → 模型 → 纯文本rag_chain({context:retriever,question:RunnablePassthrough()}|prompt|llm|StrOutputParser())print(rag_chain.invoke(我们公司年假有几天))# 预期会基于资料回答10 天带薪年假这段代码的价值不在「炫技」而在于查资料和生成回答被拆开了。你以后可以单独换向量库、换切分策略、换模型而不用重写整套问答逻辑。强项三给 AI 配工具能真正干活只聊天不够。很多场景需要模型去「做动作」查天气、算数、读数据库、调内部 API。LangChain 里的 Agent大致就是模型自己决定「要不要用工具、用哪个工具」拿回结果后再继续想。需要不需要用户提问Agent 思考需要工具吗?选择并调用工具拿到工具结果直接给出最终回答一个很短的例子给模型一个「乘法工具」让它在需要时自己调用。fromlangchain_openaiimportChatOpenAIfromlangchain_core.toolsimporttoolfromlangchain.agentsimportcreate_tool_calling_agent,AgentExecutorfromlangchain_core.promptsimportChatPromptTemplate,MessagesPlaceholdertooldefmultiply(a:float,b:float)-float:计算两个数的乘积。当用户需要做乘法时使用。returna*b llmChatOpenAI(modelgpt-4o-mini,temperature0)tools[multiply]promptChatPromptTemplate.from_messages([(system,你是助手。需要计算时请调用工具不要自己瞎算。),(human,{input}),MessagesPlaceholder(agent_scratchpad),])agentcreate_tool_calling_agent(llm,tools,prompt)executorAgentExecutor(agentagent,toolstools,verboseTrue)resultexecutor.invoke({input:帮我算一下 23.5 乘以 18 等于多少})print(result[output])这里真正有意思的是你没有写「如果问题里有乘法就调用函数」这种硬编码。模型自己判断要不要用工具。业务一复杂这种能力就很值钱。强项四生态全换模型不伤筋动骨LangChain 还有一个很务实的优点对接面特别广。常见模型OpenAI、Anthropic、本地 Ollama、向量库FAISS、Chroma、Milvus、文档加载器PDF、网页、Notion……大多都有现成封装。比如换模型往往只改初始化这一行# 用 OpenAIfromlangchain_openaiimportChatOpenAI llmChatOpenAI(modelgpt-4o-mini)# 换成 Anthropic后面的 chain / agent 代码基本不用动# from langchain_anthropic import ChatAnthropic# llm ChatAnthropic(modelclaude-3-5-sonnet-latest)对团队来说这意味着原型阶段用贵一点的云模型上线后可以迁到更便宜或私有化的模型检索、工具、Prompt 那一层还能复用它强的不是某个单一功能而是「整条 AI 应用链路都帮你铺好了接口」。什么时候适合用场景要不要上 LangChain就调一次 API做个简单聊天框大可不必直接调官方 SDK 更轻要做知识库问答、多步流程、工具调用很合适能少写很多胶水代码想快速试不同模型 / 不同向量库合适换组件成本低业务极简、团队又很在意依赖体积可以先不用等复杂度上来再说一句话问题简单时它略重问题一复杂它开始省时间。写在最后LangChain 到底强在哪里我个人的感受是三句话它把「调用模型」升级成了「编排应用」。检索、工具、记忆这些刚需都有相对统一的写法。生态够大换零件比推倒重来轻松得多。它不是银弹也不是唯一选择。但如果你正在从「会调 ChatGPT」往「做真正能上线的 AI 功能」走LangChain 是一条很顺的坡道——先把链路跑通再慢慢抠性能和架构往往比一上来自己造轮子更划算。如果你也在用它做 RAG 或 Agent不妨从最小可运行的一条链开始别一上来就堆所有概念。跑通之后你自然会明白它强的地方其实就是让复杂流程变得能写、能改、能维护。)