目录
- [一、LangChain 到底是啥?](#一、LangChain 到底是啥?)
- 二、环境准备
-
- [1. 前提](#1. 前提)
- [2. 安装依赖](#2. 安装依赖)
- [3. 拿到大模型 API Key](#3. 拿到大模型 API Key)
- 三、让LangChain调用大模型
- 四、核心语法详解
-
- [1. LLM / ChatModel(大模型核心)](#1. LLM / ChatModel(大模型核心))
- [2. Loader(文档加载器)](#2. Loader(文档加载器))
- [3. Vectorstore/Index(向量索引)](#3. Vectorstore/Index(向量索引))
- [4. Chain(链)](#4. Chain(链))
- [5. Memory(记忆)](#5. Memory(记忆))
- [五、实战Demo:RAG检索 + 带记忆对话](#五、实战Demo:RAG检索 + 带记忆对话)
-
- [1. 准备工作](#1. 准备工作)
- [2. 完整代码](#2. 完整代码)
- 六、3个核心概念
一、LangChain 到底是啥?
LangChain是一个用于开发由大型语言模型(llm)支持的应用程序的框架。
大模型(比如通义千问、ChatGLM、文心一言)本身只会聊天、写文案、回答问题,但它做不了这些事:
- 读你电脑里的 PDF/Word/文本文件
- 联网查最新新闻、天气
- 连数据库查数据
- 按固定步骤自动执行任务
LangChain 就是一个「连接器+脚手架」
把大模型和各种工具(文件、网络、数据库、代码)绑在一起,让AI变成能干活的实用工具,而不是只会聊天的机器人。
二、环境准备
1. 前提
电脑装了 Python 3.8+(没有就先装Python)
2. 安装依赖
打开终端/CMD,复制运行:
bash
# 安装核心包
pip install langchain
# 安装国产大模型包(用通义千问举例,免费好用)
pip install dashscope
3. 拿到大模型 API Key
以阿里云通义千问为例:
- 去阿里云百炼平台注册
- 创建API-KEY
- 复制保存好你的
DASHSCOPE_API_KEY
三、让LangChain调用大模型
python
import os
from langchain.llms import Tongyi
# 填入你的API Key
os.environ["DASHSCOPE_API_KEY"] = "你的key"
# 初始化大模型
llm = Tongyi(model_name="qwen-turbo")
# 提问
question = "用一句话介绍LangChain"
answer = llm(question)
# 输出结果
print(answer)
四、核心语法详解
所有LangChain代码都是这5个组件拼出来的:
1. LLM / ChatModel(大模型核心)
作用 :对接大模型(通义、ChatGPT、文心一言),是AI的「大脑」
核心语法:
python
# 1. 导入模型类
from langchain.llms import 模型名
# 2. 初始化模型(固定写法)
llm = 模型名(参数)
# 3. 调用模型(两种写法通用)
# 写法1:直接传文本
llm("你的问题")
# 写法2:predict方法
llm.predict("你的问题")
关键词 :llm 是所有代码的基础,代表AI大脑
2. Loader(文档加载器)
作用 :读取本地文件(txt/pdf/word)、网页、数据库,是AI的「眼睛」
核心语法:
python
# 1. 导入加载器(不同文件用不同Loader)
from langchain.document_loaders import TextLoader # 读txt
# from langchain.document_loaders import PyPDFLoader # 读pdf
# 2. 初始化加载器(传文件路径)
loader = TextLoader("文件路径", encoding="utf-8")
# 3. 加载文档(底层方法,无需手动写)
# loader.load()
关键词 :loader = 读文件,所有RAG代码第一步必用
3. Vectorstore/Index(向量索引)
作用 :把文档转成AI能检索的格式,是RAG的「检索库」
核心语法:
python
# 1. 导入索引创建器
from langchain.indexes import VectorstoreIndexCreator
# 2. 从加载器创建索引(固定写法)
index = VectorstoreIndexCreator().from_loaders([loader])
# 3. 检索提问
index.query("你的问题", llm=大脑)
关键词 :index = 检索本地文档,RAG核心
4. Chain(链)
作用 :把「大脑+检索+记忆」串起来,是AI的「工作流」
核心语法:
python
# 1. 导入链
from langchain.chains import ConversationChain
# 2. 初始化链(传大脑+记忆)
chain = ConversationChain(llm=llm, memory=记忆)
# 3. 执行链
chain.predict(input="内容")
关键词 :chain = 执行任务的流水线,所有自动化功能都靠它
5. Memory(记忆)
作用 :让AI记住对话历史,是AI的「记性」
核心语法:
python
# 1. 导入记忆类
from langchain.memory import ConversationBufferMemory
# 2. 初始化记忆
memory = ConversationBufferMemory()
关键词 :memory = 对话记忆,配合Chain使用
五、实战Demo:RAG检索 + 带记忆对话
最具代表性 :同时集成 LLM大模型 + Loader文件加载 + Vectorstore向量检索 + Memory对话记忆 + Chain链式调用
核心功能:基于本地文档问答 + 永久记住对话历史,是企业级AI应用的基础原型
1. 准备工作
新建 info.txt 文件,写入个人信息:
我的名字是李华
今年28岁
职业是软件工程师
居住在上海
爱好是摄影、旅行、看书
2. 完整代码
python
import os
from langchain.llms import Tongyi
from langchain.document_loaders import TextLoader
from langchain.indexes import VectorstoreIndexCreator
from langchain.memory import ConversationBufferMemory
from langchain.chains import RetrievalQA
from langchain.chains import ConversationalRetrievalChain
# 配置API Key
os.environ["DASHSCOPE_API_KEY"] = "你的key"
# ===================== 1. 初始化核心组件 =====================
# 初始化AI大脑(LLM语法)
llm = Tongyi(model_name="qwen-turbo")
# 初始化对话记忆(Memory语法)
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)
# ===================== 2. 加载并构建本地文档检索库 =====================
# 读取本地文件(Loader语法)
loader = TextLoader("info.txt", encoding="utf-8")
# 创建向量索引(Vectorstore语法)
index = VectorstoreIndexCreator().from_loaders([loader])
# 获取检索器(RAG核心组件)
retriever = index.vectorstore.as_retriever()
# ===================== 3. 构建综合对话链(Chain语法) =====================
# 融合:检索 + 记忆 + 大模型 = 终极对话链
qa_chain = ConversationalRetrievalChain.from_llm(
llm=llm,
retriever=retriever,
memory=memory
)
# ===================== 4. 开始对话测试 =====================
# 问题1:查询文档内容
print("问题1:我的名字和职业是什么?")
result1 = qa_chain({"question": "我的名字和职业是什么?"})
print("AI回答:", result1["answer"], "\n")
# 问题2:基于记忆+文档追问(AI会记住上下文)
print("问题2:我居住在哪里?爱好是什么?")
result2 = qa_chain({"question": "我居住在哪里?爱好是什么?"})
print("AI回答:", result2["answer"], "\n")
# 问题3:自由对话(验证记忆功能)
print("问题3:刚才你都知道了我的哪些信息?")
result3 = qa_chain({"question": "刚才你都知道了我的哪些信息?"})
print("AI回答:", result3["answer"])
六、3个核心概念
- Loader(加载器):读文件、PDF、网页的工具
- Chain(链):把「大模型+步骤+工具」串起来
- Memory(记忆):让AI记住之前的对话内容