真正通俗易懂的Langchain入门学习(二)
一、基础认知:用“搭积木”思维理解LangChain
1. 什么是LangChain?
想象你买了一个超智能的机器人(比如ChatGPT),它能说会道、知识渊博,但有个问题:
- 它像一本百科全书,却不知道你公司的产品信息
- 它擅长聊天,但不会帮你查天气、订机票
- 它能写诗,但无法自动分析Excel表格
LangChain就是给这个机器人装上的“万能工具箱”:
- 连接能力:让机器人能读取你的本地文档、访问数据库
- 流程控制:把“查资料→分析→写报告”这样的多步骤任务串成流水线
- 记忆管理:让机器人记住昨天的对话,像老朋友一样聊天
生活案例:
普通聊天机器人:
你问:“帮我查订单123456的状态” → 它回答:“抱歉,我无法访问订单系统”用LangChain改造后的机器人:
- 识别“订单查询”意图 → 2. 调用公司数据库API → 3. 返回:“订单123456已发货,预计明天送达”
2. 为什么需要LangChain?
传统LLM的三大局限:
- 信息孤岛:模型训练数据截止于某个时间点,无法获取最新信息(如实时股价)
- 功能单一:只能生成文本,不能执行实际动作(如发送邮件、修改数据库)
- 缺乏逻辑:复杂任务需要人工拆解步骤(如“分析销售数据→生成图表→总结问题→给出建议”需要多次交互)
LangChain的解决方案:
传统LLM | LangChain增强版 |
---|---|
静态知识库 | 实时连接数据库/互联网 |
单次问答 | 多步骤自动化流程 |
失忆式对话 | 带记忆的连续对话 |
纯文本输出 | 调用API生成PPT/Excel |
比喻理解:
把LangChain想象成乐高积木底座——单独的语言模型是积木块,LangChain提供拼接规则和连接件,让你能搭建出城堡、飞船等复杂结构。
3. 核心组件详解(配生活化案例)
(1) Models(模型层)
- 作用:对接不同的大脑(语言模型)
- 常见类型:
- 云端模型:OpenAI的GPT、Anthropic的Claude(像租用超级计算机)
- 本地模型:Llama2、ChatGLM(像自家装的服务器)
案例对比:
# 使用OpenAI from langchain.llms import OpenAI llm = OpenAI(model_name="gpt-3.5-turbo") # 使用本地模型 from langchain.llms import HuggingFaceHub llm = HuggingFaceHub(repo_id="google/flan-t5-xxl")
(2) Chains(任务链)
- 作用:把零散操作串成工作流,像工厂流水线
- 典型结构:
输入 → 数据清洗 → 调用模型 → 结果解析 → 输出
生活案例:自动写周报
- 读取本周工作日志(Markdown文件)
- 提取关键事件
- 让LLM生成总结段落
- 自动格式化为公司模板
- 发送邮件给主管
from langchain.chains import TransformChain, LLMChain, SimpleSequentialChain
# 第一步:清洗数据
clean_chain = TransformChain(...)
# 第二步:生成总结
report_chain = LLMChain(...)
# 串联成完整链
weekly_report_chain = SimpleSequentialChain(chains=[clean_chain, report_chain])
(3) Agents(智能代理)
- 作用:给机器人配备瑞士军刀,动态选择工具
- 核心要素:
- 工具库:搜索引擎、计算器、数据库连接器等
- 决策逻辑:根据问题自动选择工具
经典场景:旅行规划助手
用户问:“我想去巴黎玩三天,预算5000元”
- 调用天气API查巴黎近期天气
- 访问机票数据库查低价航班
- 使用LLM生成景点推荐
- 组合结果生成完整攻略
from langchain.agents import load_tools
tools = load_tools(["serpapi", "llm-math"], llm=llm)
agent.run("巴黎三日游5000元预算,推荐行程?")
(4) Memory(记忆管理)
- 作用:让对话有连续性,像人类一样记住上下文
- 实现方式:
- 短期记忆:记住最近5轮对话
- 长期记忆:将关键信息存入数据库
对比示例:
无记忆对话:
用户:“昨天的会议结论是什么?” → AI:“请提供会议记录”有记忆对话:
用户:“把昨天的会议结论总结成邮件” → AI自动调取之前的会议摘要 → 生成邮件草稿
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory()
memory.save_context({"input": "周二会议讨论了什么"}, {"output": "决定推进A项目"})
print(memory.load_memory_variables({})) # 输出:{'history': 'Human: 周二会议...\nAI: 决定推进A项目'}
(5) Indexes(数据索引)
- 作用:把外部数据变成模型能理解的“营养餐”
- 处理流程:
文档 → 分割成片段 → 向量化存储 → 语义检索
企业应用案例:
- 上传公司产品手册(PDF)
- 员工问:“X型号设备的最大负载是多少?”
- 系统自动检索手册相关内容 → 生成精准回答
from langchain.document_loaders import PyPDFLoader
loader = PyPDFLoader("manual.pdf")
pages = loader.load_and_split()
# 后续进行向量存储与检索...
4. LangChain vs 普通LLM开发
通过一个对比场景理解差异:
任务:构建一个股票分析助手
步骤 | 普通LLM开发 | LangChain方案 |
---|---|---|
获取实时股价 | 无法实现 | 调用Yahoo Finance API |
生成分析报告 | 手动拼接提示词 | 自动组装数据→分析→生成 |
多轮对话 | 每次需重复输入股票代码 | 自动记忆上下文 |
输出格式 | 纯文本 | 自动生成Markdown报告 |
5. 学习路线图建议
现在你已经掌握了LangChain的基础逻辑,就像一个厨师了解了厨房的工具布局。接下来可以点火开灶,开始动手做第一道菜了!