news 2026/9/2 16:34:35

新手程序员必看:收藏这份 LangChain 实战指南,轻松入门大模型开发

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
新手程序员必看:收藏这份 LangChain 实战指南,轻松入门大模型开发

本文深入探讨了智能体开发的本质与痛点,对比了纯 API 调用与 LangChain 方案在多工具、多轮交互场景下的差异。通过代码示例展示了 LangChain 如何简化开发流程,并详细解析了 LLM 抽象层、Chain、Tool、Memory、VectorStore 五大核心组件的设计理念与适用场景。文章最后提出了工程决策建议,强调不为了用框架而用框架,简单场景直接调 API,复杂场景则应利用 LangChain 提升开发效率。

开场:从"纸上谈兵"到"动手开发"

上篇聊了智能体本质 – 目标驱动、环境交互、动态决策。概念清楚了,接下来:怎么动手?

你是个有经验的 Python 开发者。想写个能调工具的智能体。

方案 A:直接调 OpenAI API

很快发现问题远不止"发请求、拿结果"。消息格式要手拼、多轮历史自己维护、工具调用手动解析 JSON 再 dispatch、出错自己重试、超 token 自己截断……代码越写越长,逻辑越缠越乱。

方案 B:用 LangChain

定义好工具,框架自动完成消息拼接、工具解析、结果回注、循环控制。你只关注一件事:决策逻辑。

核心问题:智能体开发痛点在哪?LangChain 为何能解决?

一句话:智能体开发 = 从"模型调用"走向"系统工程"。LangChain 价值 = 封装重复逻辑,让你聚焦决策规则设计。

图1:纯 API 痛点 vs LangChain 方案


  1. 第一性原理:智能体开发到底难在哪?

先想清楚:智能体和一次 API 调用的本质区别?

智能体 ≠ 调一次 API。智能体 = 循环(Loop)。

基本运行流程:

用户输入 > LLM 推理 > 需要工具?> 调用工具 > 结果反馈 > 继续推理 > 输出答案

每次循环要处理六件事:

#任务描述
1消息格式化问句转 API 的 message 结构
2模型调用HTTP 请求、流式、重试、token 计数
3工具调用解析从 LLM 返回的文本/JSON 提取工具名和参数
4结果注入工具执行结果重新格式化成 LLM 能理解的输入
5上下文维护整轮交互拼到历史消息列表
6循环控制继续还是结束?最大迭代?错误恢复?

💡 痛点公式:N 个工具 x M 步循环 = N x M 次手动编排。

类比:纯 API 开发 = 不用框架写 Web 服务。你可以手写 HTTP 解析器 + 路由 + 中间件 – 但为什么要重复造轮子?

什么时候该用纯 API? 只需一次性 LLM 调用(如翻译一句话),直接调 API 够用。但任务需要多步推理、工具调用、外部知识中的任何一项,就需要抽象层了。


  1. 10 行代码见分晓

纸上谈兵不如看代码。同一个场景——带加法工具的对话——两个方案对比。

方案 A:纯 API 调用

import openai, json def add(a: int, b: int) -> int: return a + b messages = [{"role": "user", "content": "123 + 456 等于多少?"}] while True: resp = openai.chat.completions.create( model="gpt-4", messages=messages, tools=[{"type": "function", "function": {"name": "add", "description": "加法计算器", "parameters": {"type": "object", "properties": {"a": {"type": "number"}, "b": {"type": "number"}}}}}}] msg = resp.choices[0].message if not msg.tool_calls: print(msg.content); break for tc in msg.tool_calls: if tc.function.name == "add": args = json.loads(tc.function.arguments) result = add(args["a"], args["b"]) messages.append({"role": "tool", "tool_call_id": tc.id, "content": str(result)})

如果工具从 1 个变成 5 个?循环跑 10 步?还要处理错误恢复、token 截断? 每加一个工具,if-else 多一条;每多一步,消息列表长一段。复杂度不是线性增长——是指数级膨胀。

方案 B:LangChain

from langchain.tools import tool from langchain.agents import create_tool_calling_agent, AgentExecutor @tool def add(a: int, b: int) -> int: """加法计算器""" return a + b agent = create_tool_calling_agent(llm, [add], prompt) executor = AgentExecutor(agent=agent, tools=[add]) result = executor.invoke({"input": "123 + 456 等于多少?"}) print(result["output"])

关键对比:

维度纯 APILangChain
工具定义手写 JSON Schema + if-else dispatch@tool装饰器 + 声明式注册
循环控制自己写 while + breakAgentExecutor 自动管理
消息管理手动维护 messages 列表框架自动拼接和回注
扩展工具加一个工具 = 加一个 if-else 分支加一个@tool函数,注册即可
换模型改 model 参数 + 兼容性代码ChatXxx()类名
错误处理自己 try-except + 重试框架内置

核心洞察:工具增多、交互复杂时,纯 API 复杂度线性暴涨。LangChain 保持 O(1)——你不再写"怎么调",而是声明"要什么"。


  1. 五大核心组件:为什么需要?

LangChain 不是大一统黑盒,是由多个独立组件组成的工具箱。每个组件解决一类问题。

不需要一次性全上,用多少取多少——这才是工程思维。

3.1 LLM 抽象层——为什么需要?

直接调 OpenAI API,某天想换 Anthropic 或本地 Ollama——调用代码、消息格式、参数映射,几乎全部重写。

LLM 抽象层 = “统一换肤层”。

from langchain_openai import ChatOpenAI from langchain_anthropic import ChatAnthropic from langchain_ollama import ChatOllama llm = ChatOpenAI(model="gpt-4") # llm = ChatAnthropic(model="claude-3-opus") # 换一行即可 # llm = ChatOllama(model="llama3") # 本地也在话下 result = llm.invoke("你好") # 后续代码全不改

还自动处理:重试策略、token 计数、流式输出、响应解析。

什么时候用? 项目可能涉及多模型时(测试期换模型、生产用收费模型+兜底免费模型、本地开发用 Ollama)。一生只用一家模型一个实例?直接调 SDK 也行。

3.2 Chain——为什么需要?

单次 LLM 调用只能做一件事。真实世界需要多步流程:先查知识库 → 再调工具 → 最后整理输出。

Chain = “工作流胶水”。

chain = {"context": retriever | format_docs, "question": lambda x: x["question"]} / | prompt | llm | StrOutputParser() result = chain.invoke({"question": "公司年假政策是什么?"})

|管道符串联——像 Unix 管道一样直观。手写 3-5 个函数编排、传中间结果、处理错误——Chain 让流程清晰如流程图。

什么时候用? 任务含 2 步以上(“先检索再生成”、“先分析再决策”),或需复用流程组合时。

3.3 Tool——为什么需要?

LLM 只能生成文本,做不了数学、查不了数据库、调不了外部 API。Tool = “手脚扩展”。

三个要素浓缩成一条@tool

@tool def search_weather(city: str, date: str) -> str: """查询指定城市在指定日期的天气情况""" return f"{city}在{date}的天气是晴天,25°C。"

函数名 = name,注释 = description,类型注解 = args_schema。框架自动三件事:转 function definition → 解析 tool_calls → dispatch 并回传结果。

没这个抽象:手写 JSON Schema → 拼到 API 调用 → 解析返回 → if-else dispatch → 格式化回注——每个工具加一个分支,每次循环重复一遍。

什么时候用? 智能体需调用外部功能(搜索、计算、数据库、API)就用 @tool。超过 1 个工具,省下的工作量已超过学习成本。

图2:Agent 执行循环——框架自动完成从"解析工具调用"到"结果回注"的全链路

3.4 Memory——为什么需要?

LLM 天生无状态。每次对话,它对之前说过的话一无所知。Memory = “短期记忆”。

不用 Memory:每次手动把历史拼到 messages 列表——还得自己管"消息长了怎么办"。

策略原理适用场景
ConversationBufferMemory完整保留所有历史对话轮次少,需完整上下文
ConversationBufferWindowMemory只保留最近 K 轮长对话,防 token 溢出
ConversationSummaryMemoryLLM 生成摘要极长对话,需压缩
VectorStoreRetrieverMemory按语义检索最相关片段超大规模历史

什么时候用? 只要需要多轮对话(聊天机器人、多步排查、客服),Memory 是必选。起始推荐BufferWindowMemory——简单、可控、不爆 token。

3.5 VectorStore——为什么需要?

LLM 知识有截止日期,不包含你的私有数据。问"公司的年假政策是什么"——它不可能知道。

VectorStore = “长期知识”。

from langchain_community.document_loaders import PyPDFLoader from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain_openai import OpenAIEmbeddings from langchain_community.vectorstores import FAISS loader = PyPDFLoader("员工手册.pdf") docs = loader.load() chunks = RecursiveCharacterTextSplitter( chunk_size=500, chunk_overlap=50).split_documents(docs) vectorstore = FAISS.from_documents(chunks, OpenAIEmbeddings()) retriever = vectorstore.as_retriever()

没有这个抽象层:每个数据源自己写加载器、调 embedding API 自己管索引、检索策略自己实现——一个 RAG 写下来至少 200 行样板代码。

什么时候用? 智能体需知道训练数据中没有的信息时——文档问答、私有知识库、帮助中心。通用知识问答,LLM 预训练知识已足够。


  1. 工程决策:什么时候用 LangChain?

技术选型没有银弹。

场景推荐方案原因
一次性 LLM 调用(翻译一句话)curl / 直接 SDK一行代码解决
简单对话机器人(单轮 Q&A)直接 API + 手写 history引入框架反而重
多工具智能体(3+ 工具 + 多轮)LangChain工具调度循环复杂度超出人工管理范围
多步 RAG 问答(检索+生成)LangChain + VectorStore文档加载、切分、检索、生成一体化
生产级复杂 AgentLangChain + LangGraph需状态持久化 + 流式 + 人工审核
毫秒级响应场景纯 API 手写框架有极小开销

核心原则:不为了用框架而用框架。

简单场景直接调 API,更干净、更快、心智负担更低。但当你需要 3 个以上工具、多轮交互、外部知识时,LangChain 的抽象层省的不是一行代码——是一整个工程。


  1. 常见误区

误区真相
“用了 LangChain 就不用写代码”框架只处理基础设施,核心决策逻辑还得你自己写
“所有场景都应该用 LangChain”简单场景用框架反而引入不必要的复杂度
“@tool 万能的”复杂工具的输入输出需要仔细设计 schema
“Memory 能自动解决所有上下文”要先选合适的策略和窗口大小

  1. 总结

回到开头:智能体开发这么复杂,怎么入手?

LangChain 的答案:把复杂性拆开,分层解决。

  • LLM 抽象层 — 一行代码换模型
  • Chain — 管道符串起多步流程
  • Tool — 装饰器声明即用
  • Memory — 多种策略按需选
  • VectorStore — 私有数据也能用

五个组件划出智能体开发的"地基"。理解了它们,你就从"知道 LangChain 是个框架"变成了"知道 LangChain 为什么长这样"。

系列回顾:

标题核心
1从"自动执行"到"自主决策"智能体本质 = 目标驱动 + 环境交互 + 动态决策
2LangChain 是首选工具智能体开发 = 从"模型调用"到"系统工程"

概念 + 工具,两条腿走路。下一步:组装第一个完整的智能体程序——真正的"动手时刻"。

最后

2026 年一晃已经过半,AI 大模型的热潮不仅没有降温,反而持续升温!

金融行业用大模型做风控、医疗依靠 AI 解析影像,电商、制造、教育各行各业,都在把 AI 融入日常业务。曾经热闹的 “百模大战”,早就告别单纯比拼模型参数,正式进入落地应用时代

现在企业疯狂紧缺一类人才:懂业务、懂 AI、能做出可上线项目的大模型开发工程师,岗位缺口大,薪资待遇十分可观。

风口再好,不如手握高薪 offer 实在。行情火热,普通人、程序员该怎样从零入门大模型,抓住这波机会?

今天整理好【2026 最新版】AI 大模型全套免费学习资源,覆盖零基础入门、项目实战、理论知识、大厂面试,从基础一路进阶。所有资料分类归档,没有多余杂料,无套路免费分享给想要入局 AI 赛道的程序员与零基础小白!

👇👇扫码免费领取全部内容👇👇

1、大模型系统化完整学习路线

2、大模型经典书籍&文档

3、AI 大模型最新行业研究报告

4、企业级实战项目 + 完整配套源码

5、大厂大模型面试真题汇总

6、这些资料真的有用吗?

这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理,现任上海殷泊信息科技CEO,其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证,服务航天科工、国家电网等1000+企业,以第一作者在IEEE Transactions发表论文50+篇,获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。

资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的技术人员,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 16:32:17

C#集成Detic Onnx模型:实现超2万类物体检测与掩码处理

简介:本资源是基于C#与ONNX Runtime实现的Detic通用物体检测解决方案,面向计算机视觉开发者及.NET平台AI应用实践者,支持对ImageNet-21K扩展的21000余类物体进行高精度检测与实例分割,适用于大规模细粒度识别、工业质检、智能标注…

作者头像 李华
网站建设 2026/9/2 16:29:36

Prompt优化工具:从模糊指令到高质量提示词的自动化构建指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/2 16:26:07

金融风控实战:基于Python的上市公司财务风险预警模型构建指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/2 16:25:08

小白程序员入门大模型开发的核心技术学习路线,助你抓住AI红利!

本文由大厂在职Agent开发工程师AgentGuide总结,提供一份从基础到高级的大模型应用开发学习路线。内容涵盖大模型基础认知、提示词工程、检索增强生成(RAG)、Agent智能体应用、工程实践及微调原理等六大模块。旨在帮助想转行或求职Agent开发的…

作者头像 李华
网站建设 2026/9/2 16:23:22

系统全线崩溃别急着重构:先分层归因,找出真正短板

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华