第1章:LangChain介绍与环境搭建
欢迎来到LangChain入门教程!本章将带你了解LangChain的基本概念,并完成开发环境的搭建。即使你是零基础,也能轻松上手。
1.1 什么是LangChain?
LangChain是一个用于开发大语言模型(LLM)应用的Python/JavaScript框架。简单来说,它是组装LLM应用的"乐高积木",让你能够把各种功能模块串联起来。
想象一下,你要搭建一座房子:
- 单独的大语言模型就像是一块块散落的砖块
- LangChain则提供了钢筋、水泥、脚手架等工具和连接件
- 让你能快速把砖块搭建成稳固的房子
1.2 为什么要用LangChain?
使用LangChain开发LLM应用,有以下几个显著优势:
1.2.1 简化开发
不用从零写很多重复代码。比如:
- 调用API的封装
- 对话历史的存储和管理
- 提示词(Prompt)的格式化
- 输出结果的解析
这些常用功能LangChain都已经帮你封装好了,开箱即用。
1.2.2 模块化设计
LangChain采用组件化设计,各个模块之间松耦合:
- 可复用:写好一个提示词模板,到处都能用
- 可替换:今天用OpenAI的模型,明天换成Anthropic的,代码改动很小
- 可组合:像搭积木一样,把多个组件组合成复杂的应用
1.2.3 生态丰富
LangChain拥有庞大的生态系统,支持:
- 各种模型:OpenAI、Anthropic、Google、HuggingFace、本地模型等
- 各种数据库:向量数据库(Pinecone、Chroma、FAISS等)、关系型数据库
- 各种工具:搜索引擎、API接口、文件系统、代码执行器等
1.3 LangChain的核心组件
LangChain主要由以下六大核心组件构成:
1.3.1 Model I/O(模型输入输出)
负责与大语言模型进行交互,包括:
- Models:封装各种LLM和Chat Model的调用
- Prompts:提示词模板的管理和格式化
- Output Parsers:将模型输出解析为结构化数据
1.3.2 Chains(链)
Chain是LangChain的核心概念,用于把多个操作串联起来:
- 最简单的Chain:提示词 → 模型 → 输出
- 复杂的Chain:检索文档 → 构建提示词 → 调用模型 → 解析输出
- 链可以嵌套,形成更复杂的逻辑
1.3.3 Indexes(索引)
用于处理外部文档数据,实现检索增强生成(RAG):
- Document Loaders:加载各种格式的文档(PDF、Word、网页等)
- Text Splitters:将长文档切分成适合处理的片段
- Vector Stores:存储文档的向量表示,支持语义搜索
- Retrievers:从向量库中检索相关文档
1.3.4 Memory(记忆)
让AI应用"记住"之前的对话内容:
- Conversation Buffer Memory:保存完整对话历史
- Conversation Summary Memory:对历史对话进行摘要
- Entity Memory:记住对话中提到的实体信息
1.3.5 Agents(智能体)
让LLM具备自主决策能力:
- Agent根据用户输入,自主决定使用哪些工具
- 可以调用搜索、计算器、API、代码执行等工具
- 实现复杂的推理和任务执行
1.3.6 Callbacks(回调)
用于监控和调试应用:
- 记录每次API调用的耗时和token消耗
- 实时监控链的执行过程
- 集成LangSmith进行生产环境监控
1.4 环境搭建(详细步骤)
现在开始动手搭建开发环境。请按照以下步骤操作:
1.4.1 确认Python版本
LangChain需要Python 3.8或更高版本。打开终端,输入以下命令检查:
# 检查Python版本
python --version
# 或
python3 --version
如果版本低于3.8,请从Python官网下载安装最新版本。
1.4.2 创建虚拟环境(推荐)
为了避免依赖冲突,建议为每个项目创建独立的虚拟环境:
# 创建项目目录
mkdir my_langchain_project
cd my_langchain_project
# 创建虚拟环境
python -m venv venv
# Windows系统激活虚拟环境
venv\Scripts\activate
# Mac/Linux系统激活虚拟环境
source venv/bin/activate
激活成功后,命令行前面会显示 (venv) 标识。
1.4.3 安装LangChain
使用pip安装LangChain核心库:
# 安装LangChain核心库
pip install langchain
# 同时安装社区版(包含更多集成)
pip install langchain-community
1.4.4 安装模型库
根据你使用的模型,安装对应的库。以下是常用选项:
# 如果使用OpenAI模型(推荐入门使用)
pip install openai
# 如果使用Anthropic Claude模型
pip install anthropic
# 如果使用HuggingFace本地模型
pip install transformers
pip install torch
# 如果使用Azure OpenAI
pip install openai
1.4.5 配置API Key
使用环境变量方式存储API Key是最安全的做法:
Windows PowerShell:
# 设置OpenAI API Key(临时,仅当前窗口有效)
$env:OPENAI_API_KEY = "sk-your-api-key-here"
# 永久设置(添加到系统环境变量)
[Environment]::SetEnvironmentVariable("OPENAI_API_KEY", "sk-your-api-key-here", "User")
Mac/Linux (bash/zsh):
# 临时设置
export OPENAI_API_KEY="sk-your-api-key-here"
# 永久设置(添加到 ~/.bashrc 或 ~/.zshrc)
echo 'export OPENAI_API_KEY="sk-your-api-key-here"' >> ~/.bashrc
source ~/.bashrc
使用.env文件(项目级别):
# 安装python-dotenv
pip install python-dotenv
在项目根目录创建 .env 文件:
OPENAI_API_KEY=sk-your-api-key-here
1.4.6 第一个Hello World程序
环境配置完成后,我们来写第一个程序验证一切正常:
# hello_world.py
# LangChain入门第一个程序
# 导入必要的库
from langchain.llms import OpenAI
from dotenv import load_dotenv
import os
# 加载.env文件中的环境变量
load_dotenv()
# 创建OpenAI模型实例
# temperature控制输出随机性,0.0最确定,1.0最随机
llm = OpenAI(temperature=0.7)
# 调用模型进行预测
response = llm.predict("你好,请介绍一下自己")
# 打印模型输出
print("AI的回答:")
print(response)
运行程序:
python hello_world.py
如果看到AI的回复,恭喜你!环境搭建成功!
1.
load_dotenv() - 加载.env文件中的API Key2.
OpenAI(temperature=0.7) - 创建模型实例3.
llm.predict() - 发送提示词并获取回复4.
temperature - 创造性参数,越低越保守
1.5 LangChain生态介绍
除了核心库,LangChain还提供了丰富的配套工具:
1.5.1 LangServe
用于将LangChain应用部署为REST API服务:
- 一键将Chain转换为可部署的服务
- 自动生成API文档(基于FastAPI)
- 支持流式输出和批处理
pip install "langserve[all]"
1.5.2 LangSmith
LangChain的官方监控和调试平台:
- 追踪每一次LLM调用(输入、输出、耗时、token消耗)
- 可视化Chain的执行流程
- 评估和测试应用效果
- 支持数据集管理和A/B测试
访问 smith.langchain.com 注册使用。
1.5.3 LangChain Expression Language (LCEL)
LCEL是LangChain的声明式语法,用于组合组件:
- 使用管道符
|连接各个组件 - 代码更简洁、易读
- 自动支持流式输出和并行执行
LCEL示例:
# LCEL语法示例
from langchain.prompts import ChatPromptTemplate
from langchain.chat_models import ChatOpenAI
# 定义提示词模板
prompt = ChatPromptTemplate.from_template("用一句话介绍{topic}")
# 使用管道符连接组件
chain = prompt | ChatOpenAI()
# 调用链
result = chain.invoke({"topic": "LangChain"})
print(result)
本章小结
恭喜完成第1章的学习!你已经掌握了:
- ✅ LangChain是什么,为什么要用它
- ✅ LangChain的六大核心组件
- ✅ 如何搭建开发环境
- ✅ 运行了第一个Hello World程序
- ✅ LangChain生态系统概览