大学生小肠学习:LangChain完整知识点(智能体)
随着时代的发展,智能体已经逐渐进入到了我们的视野,只要我们紧跟时代步伐,无论未来怎样,相信自己,你都不会差。今天学习了完整的LangChain是什么?里面包括了什么,以及项目中应该怎么应用,还是,如果哪些地方有问题,大家一定要多多指出纠正我。
一.大模型
大模型分为:公共大模型&私有大模型
公用大模型:例如deepseek 豆包,成本低,不是很安全,长期使用成本会变高。申请个密钥就能用,按调用量计费,不用自己买显卡,上手最快。
私有大模型:自己创建的模型,比较安全。用Ollama这个工具,把大模型下载到自己电脑/服务期上,数据不流出内网,安全性高;但需要显卡硬件,成本高。
Ollama: 简化大模型语言模型(本地部署)+(运行过程)开源软件。

显卡是什么:如果CPU是办公室的主管,擅长处理复杂问题,那显卡好比一大群流水线工人,擅长同时干大量重复简单的工作。最基础的是画面输出,我觉得我的电脑的显卡应该很一般,因为不管是之前玩游戏还是制作3D建模时感觉画质都很一般,AI运算,比如大模型,本地AI绘图,RAG向量计算,需要海量数据计算,靠的是显卡跑。
openAI是什么:是一个大模型,制定API规范成为大模型API默认规范,几乎大模型都兼容openAI规范。
大模型API:访问模型对外暴露的API接口,实现与大模型的交互。
二.LangChain 和Agent到底是什么呢?
LangChain:我的理解就是一个开发智能体的平台(python,TypeScript)你是单一的库,是一整套【智能体开发工具全家桶】其中分为四个重要部分:
LangChain:快速搭建简单智能体原型
LangGraph:编排复杂流程,适合有分支、循环、状态保存的任务
Deep Agents:处理超长、多步骤的高复杂度任务
LangSmith:调试、测试、评估、部署智能体的平台

Agent:智能体, agent = 大模型+工具 +记忆。普通大模型只会聊天,Agent能自己判断“要不要执行?”自主动脑子来回答你,如果遇到复杂情况还会调用工具,最后整合答案给你。
pip install -U langchain
pip install -U langchain-openai
pip install -U langchain-deepseek
三. 模型初始化与调用
model的初始化:init_chat_model 根据模型的名称自动识别厂商,自动读取环境变量,一键创建对象。换模型只换模型名字即可。记得在环境变量中部署大模型的API哦。
模型参数:
1.temperature:控制生成文本随机性,值越小越准,越大越发散。
2.max_tokens:生成文本长度
3.top_p:控制生成文本多样性,值越小越稳定。
4.timeout:接口请求超时时间
5.max_retries:请求失败重试次数(1~5)
调用模型的形式:
invoke阻塞式:发完请求需要等待,模型全部生成完内容一步返回,适合后台处理数据。
stream流式访问:模型生成一个字就返回一个字,适合聊天界面,用户感体验很好。
在Agent中使用模型:引用create_agent 完整任务流程,有记忆,返回完整运行快照。
那模型 invoke 调用和智能体 invoke 调用有什么区别呢?
模型.invoke () 是直接调用「大模型本身」,它只负责 “生成文本”;
智能体.invoke () 是调用「一整套智能系统」,它会自己规划、调用工具、查资料,最终给你完成任务。
| 调用方式 | 适合场景 | 典型例子 |
|---|---|---|
| 模型.invoke () | 简单、单步、纯文本处理,不需要外部信息 | 翻译、润色、文本分类、简单文案生成 |
| 智能体.invoke () | 复杂、多步骤、需要外部信息 / 工具的任务 | 客服问答、数据分析、信息检索、任务规划、工具调用 |
四.和模型沟通的三件套:消息,提示词,输出解析
消息(Message):本质就是给大模型发消息,大模型返回消息,并不是纯文本,是需要分角色的:系统提示,用户输入,AI回复。LangChain都封装成了对象,不用自己写字典。还支持发送照片(本地图片装成base64)
base64:通用编码从二进制换成纯文本
提示词(prompt):发送给模型的指令。想要有稳定的输出,一定要会写提示词
提示词模板 = 身份 + 指令 + 样例 +上下文
输出解析器(OutputParser):模型默认返回自然语言,程序不好处理。解析器就是把输出转成程序能用的格式:
纯文本解析器:只提取文字,去掉多余包装
JSON 解析器:自动转成 Python 字典
Pydantic 解析器:企业最常用,强类型校验,字段错了直接报错,适合复杂业务场景。
五.工具
工具就是给智能体装上了手脚,如果模型是大脑的话,那么工具一定是躯干哈哈哈。
工具分为自定义工具和第三方工具:
自定义工具:写个普通的参数 + @Tool 装饰器就行。模型会自己判断什么时候调用什么。注意:config和runtime是保留参数名,不能自己定义。
第三方工具:LangChain内置了一大堆现成的工具,比如说Tavily网页搜索,Agent遇到不知道的事会自己全网搜索,不用你写爬虫。
六. 记忆
记忆分为短期记忆和长期记忆:
短期记忆:当前会话记住 一般存在内存 redis中,程序关了就没了,适合开发测试。用InMemorySaver实现,靠thread_id区分不同人的对话。
长期记忆:存在数据库里(比如 SQLite),程序重启也还在,适合正式产品。同一个thread_id下次打开还能接着聊。
那么最重要的是什么?就是不让智能体胡说八道。为了解决这个问题:RAG
七. RAG是什么?
大模型有两个核心痛点:幻觉+ 知识时效性不足(也就是说假话+知识老旧)
解决方案:微调/ RAG
微调:在预训练大模型基础上,用领域专属数据进一步训练,让大模型内化专业知识。就是让知识记住,成本高,周期长,更新麻烦。
RAG:检索增强生成,生成前先从外部知识库(文档/数据库/网页)检索相关事实。将检索结果与用户问题一同输入模型。就是模型先去知识库搜索相关内容,再根据搜到的内容生成答案。成本低,更新方便,还能溯源答案来源,是现在的主流方案。
RAG 分两大步:
离线建库:把文档(PDF、Word、TXT 等)读进来→切成小块→转成向量→存到向量数据库,做好索引。
在线问答:用户提问→把问题也转成向量→去向量库搜最相似的几段文字→把问题 + 搜到的资料一起发给大模型→模型根据资料生成答案。

八.链式调用(LCEL)
把组件串成流水线,让我感觉很像java中的流。
核心逻辑就是链式调用。
eg: chain = prompt | LLM | parser
提示词模板|大模型|输出解析器
用 | 符号把提示词模板,大模型,输出解析器串起来,像流水线一样自动传参。
只要你传你最开始的变量,它会自动一步处理,最后返回你想要的结果。
支持的调用方式*3:
同步调用:invoke
流式输出:stream
批量处理:batch
(必须实现统一规范:Runnable接口)

九. RAG 四步走:加载→拆分→向量化→存库
1.文档加载器:负责把各种格式的文件读成 LangChain 统一的Document格式。
常用的: 读 TXT 的TextLoader、
读 PDF 的PyPDFLoader、
读 Markdown 的UnstructuredMarkdownLoader
读 CSV 的CSVLoader。
2.文本分割器:因为大模型上下文长度优先,而且整段文档检索不准。切成小块后,技能放进上下文,又能精准匹配语义。
CharacterTextSplitter:按固定字符数硬切,简单粗暴,容易把一句话切两半,适合纯文本日志。
RecursiveCharacterTextSplitter:最常用,分层切割,优先按段落、再按句子、再按词,尽量不破坏语义,适合绝大多数文档。
3.嵌入模型:把文字转换成一串数字(向量),语义相近的文字,向量距离就近。
可以用阿里云百炼的在线嵌入 API,方便稳定。
也可以用本地开源的bge-m3模型,用 Ollama 跑,免费、数据不出去,效果很好,是现在主流的开源选择。
4.向量数据库
文本向量存储:文本嵌入向量 = 向量存储 +语义相似性检索 (核心:语义相似性检索)
入门推荐Chroma:轻量、本地文件存储,不用装服务,开箱即用。
生产环境常用 Milvus、Pinecone、Redis 向量检索等。
5.检索器:将文档存入向量数据库中,执行语义检索,从知识库中匹配与用户问题最相关的文本片段。 功能是:从本地向量库加载已存储的文档数据,执行相似度检索,支持设置返回条数。支持相关评分。

好啦,终于整理完了,知识好多,希望知识都能自动吸入大脑,好了大家拜拜~
-------------------------------------------
- 大模型对接:公有 API(低成本快上手)/ 本地 Ollama(高隐私需硬件),API 普遍兼容 OpenAI 格式。
- LangChain 四大件:LangChain(快速原型)、LangGraph(流程编排)、Deep Agents(复杂任务)、LangSmith(调试部署)。
- Agent = 大模型 + 工具 + 记忆,自主规划调用工具完成任务。
- 模型调用:
init_chat_model一键初始化;invoke阻塞返回,stream流式输出。 - 消息四角色:system(身份指令)、human(用户输入)、ai(模型回复)、tool(工具结果)。
- 提示词四要素:身份、指令、样例、上下文;用模板复用,避免重复编写。
- 输出解析器:Str(纯文本)、Json(字典)、Pydantic(强类型校验,企业首选)。
- 工具定义:函数加
@tool装饰器,参数加类型注解;禁用config/runtime参数名。 - 记忆分类:短期(内存 InMemorySaver)、长期(数据库 SqliteSaver);靠
thread_id标识会话。 - RAG 解决:幻觉、知识过时;无需微调,外挂知识库,成本低可溯源。
- RAG 两阶段:离线建库(加载→拆分→向量化→存库);在线检索(问题向量化→匹配→组提示→生成)。
- LCEL 链式调用:
A | B | C管道式串联,自动传参;支持 invoke/stream/batch 三种调用。 - 文档加载:统一转 Document 对象;常用 Text/PyPDF/Markdown/CSV 加载器;Docling 解析强但更重。
- 文本拆分:优先用 RecursiveCharacterTextSplitter,分层语义切割,
chunk_size+chunk_overlap控制大小和重叠。 - 嵌入模型:文本转向量,用于语义匹配;在线用百炼,本地推荐 bge-m3(Ollama 部署)。
- 向量库:入门用 Chroma(本地轻量);生产用 Milvus/Pinecone 等;支持相似度检索 + 评分。
- 项目落地:RAG 检索工具 + Agent 记忆 + 流式输出 + FastAPI 接口 = 完整智能问答系统。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)