part-1-langchain-概述与环境搭建
🦜🔗Part 1: LangChain 概述与环境搭建
文章目录
1.1 什么是 LangChain
详细解释
LangChain 是一个用于开发由大语言模型(LLM)驱动的应用程序的开源框架。你可以把它想象成 LLM 的"乐高积木" – 就像乐高积木可以拼搭出各种造型一样,LangChain 提供了各种标准化的组件,让你可以灵活地组合它们,构建出强大的 AI 应用。
类比理解:
- 如果说大语言模型(如 GPT-4)是一台发动机,那么 LangChain 就是方向盘、轮胎、底盘等配件
- 单独的发动机无法直接驾驶,但装上配件后就能变成一辆完整的汽车
- LangChain 帮你把发动机和各种配件标准化连接起来
能做什么
LangChain 可以帮你构建以下类型的应用:
| 应用类型 | 说明 | 示例 |
|---|---|---|
| 对话机器人 | 与用户进行多轮对话 | 客服机器人、私人助手 |
| 文档问答 | 基于文档内容回答问题 | 企业知识库问答 |
| 数据分析 | 用自然语言查询和分析数据 | 自然语言转 SQL |
| 代码生成 | 根据描述生成代码 | 编程助手 |
| 内容创作 | 自动生成文章、摘要、翻译 | 写作助手 |
| Agent 智能体 | 让 LLM 自主决策和使用工具 | 自动化工作流 |
| 多模态应用 | 处理文本、图片等多种输入 | 图片描述生成 |
核心价值(6 大能力)
- 模型集成:提供统一接口,轻松切换不同的 LLM 提供商(OpenAI、Anthropic、Google 等)
- 提示管理:系统化管理提示模板,支持变量插值、少样本学习等
- 链式调用:将多个组件串联成工作流,实现复杂的处理逻辑
- 数据连接:连接各种数据源(数据库、文档、API),让 LLM 能访问外部信息
- Agent 智能体:让 LLM 自主决定使用哪些工具来完成任务
- 记忆管理:管理对话历史,实现上下文感知的多轮对话
1.2 架构全景图
LangChain 的架构可以分为四个层次,从上到下分别是应用层、核心层、组件层和集成层:
各层详细解释
| 层次 | 作用 | 关键组件 |
|---|---|---|
| 应用层 | 用户直接使用的应用 | RAG 系统、聊天机器人、Agent |
| 核心层 | 框架的核心抽象和编排机制 | LCEL、Chains、Agent、Memory |
| 组件层 | 可复用的功能模块 | Models、Prompts、Parsers、Retrievers |
| 集成层 | 与外部服务和平台的对接 | OpenAI、Anthropic、向量数据库等 |
1.3 包结构详解
LangChain 1.3 采用模块化的包结构,你可以按需安装所需的包:
| 包名 | 作用 | 安装命令 | 核心导出 |
|---|---|---|---|
langchain-core |
基础抽象和接口定义 | pip install langchain-core |
Runnable, PromptValue, ChatMessage |
langchain |
核心框架(包含链、Agent 等) | pip install langchain |
LCEL, Chains, Memory, Retrievers |
langchain-community |
社区贡献的第三方集成 | pip install langchain-community |
各种文档加载器、向量存储、工具 |
langchain-openai |
OpenAI(GPT)模型集成 | pip install langchain-openai |
ChatOpenAI, OpenAIEmbeddings |
langchain-anthropic |
Anthropic(Claude)模型集成 | pip install langchain-anthropic |
ChatAnthropic |
langchain-google-genai |
Google(Gemini)模型集成 | pip install langchain-google-genai |
ChatGoogleGenerativeAI |
langchain-ollama |
Ollama 本地模型集成 | pip install langchain-ollama |
ChatOllama, OllamaEmbeddings |
langchain-huggingface |
HuggingFace 模型集成 | pip install langchain-huggingface |
HuggingFaceEmbeddings, HuggingFacePipeline |
重要提示:
langchain-core是所有包的基础依赖,安装其他包时会自动安装。langchain包会自动安装langchain-core和langchain-community。
1.4 环境搭建
系统要求
| 项目 | 最低要求 | 推荐配置 |
|---|---|---|
| 操作系统 | Windows 10 / macOS 10.15 / Ubuntu 20.04 | 最新稳定版 |
| Python | 3.9+ | 3.11 或 3.12 |
| 内存 | 4 GB | 8 GB+ |
| 磁盘空间 | 1 GB | 5 GB+ |
| 网络 | 需要访问互联网(下载包和调用 API) | 稳定的宽带连接 |
Python 版本检查
# 检查 Python 版本
python --version
# 或
python3 --version
# 检查 pip 版本
pip --version
# 或
pip3 --version
注意:如果版本低于 3.9,请先升级 Python。推荐从 python.org 下载安装。
创建虚拟环境
Windows(PowerShell):
# 创建虚拟环境
python -m venv langchain_env
# 激活虚拟环境
.\langchain_env\Scripts\Activate.ps1
# 如果遇到执行策略错误,先运行:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Windows(CMD):
# 创建虚拟环境
python -m venv langchain_env
# 激活虚拟环境
langchain_env\Scripts\activate.bat
macOS / Linux:
# 创建虚拟环境
python3 -m venv langchain_env
# 激活虚拟环境
source langchain_env/bin/activate
激活后,命令行提示符前会出现
(langchain_env)前缀,表示虚拟环境已激活。
安装 LangChain
# 第一步:升级 pip(推荐)
pip install --upgrade pip
# 第二步:安装 LangChain 核心包
pip install langchain
# 第三步:安装你需要的模型提供商包(按需选择)
pip install langchain-openai # OpenAI (GPT-3.5/GPT-4)
pip install langchain-anthropic # Anthropic (Claude)
pip install langchain-google-genai # Google (Gemini)
pip install langchain-ollama # Ollama (本地模型)
# 第四步:安装常用工具包(推荐)
pip install python-dotenv # 环境变量管理
pip install pydantic # 数据验证(通常已自动安装)
# 一次性安装所有推荐包
pip install langchain langchain-openai python-dotenv
API 密钥配置
方式一:使用 .env 文件(推荐)
在项目根目录创建 .env 文件:
# .env 文件内容
# OpenAI API 密钥
OPENAI_API_KEY=sk-your-openai-api-key-here
# Anthropic API 密钥(如果使用 Claude)
ANTHROPIC_API_KEY=sk-ant-your-anthropic-key-here
# Google API 密钥(如果使用 Gemini)
GOOGLE_API_KEY=your-google-api-key-here
# 可选:设置默认模型
OPENAI_MODEL=gpt-4o-mini
安全提示:务必将
.env文件添加到.gitignore中,绝不要将 API 密钥提交到代码仓库!
在 Python 代码中加载 .env 文件:
# load_env.py
from dotenv import load_dotenv
# 加载 .env 文件中的环境变量
load_dotenv()
# 现在可以通过 os.environ 访问这些变量
import os
print(f"OpenAI API Key: {os.environ.get('OPENAI_API_KEY', '未设置')}")
方式二:直接设置环境变量
# Linux / macOS
export OPENAI_API_KEY="sk-your-key-here"
# Windows (PowerShell)
$env:OPENAI_API_KEY="sk-your-key-here"
# Windows (CMD)
set OPENAI_API_KEY=sk-your-key-here
验证安装脚本
创建以下脚本验证你的安装是否成功:
# verify_installation.py
import sys
def check_python_version():
version = sys.version_info
print(f"Python 版本: {version.major}.{version.minor}.{version.micro}")
if version.major < 3 or (version.major == 3 and version.minor < 9):
print(" [错误] Python 版本需要 >= 3.9")
return False
print(" [通过] Python 版本满足要求")
return True
def check_package(package_name, import_name=None):
if import_name is None:
import_name = package_name
try:
mod = __import__(import_name)
version = getattr(mod, "__version__", "未知版本")
print(f" [通过] {package_name} (版本: {version})")
return True
except ImportError:
print(f" [缺失] {package_name} 未安装")
return False
def main():
print("=" * 50)
print("LangChain 安装验证")
print("=" * 50)
all_passed = True
print("\n1. 检查 Python 版本...")
all_passed &= check_python_version()
print("\n2. 检查核心包...")
all_passed &= check_package("langchain", "langchain")
all_passed &= check_package("langchain-core", "langchain_core")
all_passed &= check_package("langchain-community", "langchain_community")
print("\n3. 检查模型提供商包...")
check_package("langchain-openai", "langchain_openai")
check_package("langchain-anthropic", "langchain_anthropic")
check_package("langchain-ollama", "langchain_ollama")
print("\n4. 检查工具包...")
all_passed &= check_package("python-dotenv", "dotenv")
all_passed &= check_package("pydantic", "pydantic")
print("\n5. 检查 API 密钥配置...")
from dotenv import load_dotenv
load_dotenv()
import os
if os.environ.get("OPENAI_API_KEY"):
key = os.environ["OPENAI_API_KEY"]
print(f" [通过] OPENAI_API_KEY 已设置 ({key[:8]}...)")
else:
print(" [警告] OPENAI_API_KEY 未设置")
print("\n" + "=" * 50)
if all_passed:
print("所有核心依赖安装成功!")
else:
print("部分依赖缺失,请安装。")
print("=" * 50)
if __name__ == "__main__":
main()
常见安装错误排查
| 错误信息 | 原因 | 解决方案 |
|---|---|---|
No module named 'langchain' |
未安装 langchain 包 | pip install langchain |
No module named 'langchain_openai' |
未安装 OpenAI 集成包 | pip install langchain-openai |
python-dotenv not found |
未安装 dotenv | pip install python-dotenv |
TypeError: __init__() got an unexpected keyword argument |
版本不兼容 | pip install --upgrade langchain langchain-openai |
SSL: CERTIFICATE_VERIFY_FAILED |
网络代理/证书问题 | 检查网络设置 |
Permission denied |
权限不足 | 使用虚拟环境,或加 --user 参数 |
1.5 LangChain 1.3 新特性
4 大核心改进
1. 增强的 LCEL(LangChain Expression Language)
# 1.3 新增:更灵活的配置传递
from langchain_core.runnables import ConfigurableField
from langchain_openai import ChatOpenAI
model = ChatOpenAI(
model=ConfigurableField(
id="model_name",
name="Model",
description="选择要使用的模型"
)
)
result = model.invoke("你好")
result = model.invoke("你好", config={"configurable": {"model_name": "gpt-4o"}})
2. 改进的异步支持
import asyncio
from langchain_openai import ChatOpenAI
model = ChatOpenAI(model="gpt-4o-mini")
async def main():
results = await model.abatch([
"什么是机器学习?",
"什么是深度学习?",
"什么是自然语言处理?"
])
for result in results:
print(result.content)
asyncio.run(main())
3. TypedDict 结构化输出
from typing import TypedDict
from langchain_openai import ChatOpenAI
class MovieReview(TypedDict):
title: str
rating: float
summary: str
recommendation: str
model = ChatOpenAI(model="gpt-4o-mini")
structured_model = model.with_structured_output(MovieReview)
result = structured_model.invoke("评价电影《星际穿越》")
print(result)
4. 统一的模型初始化接口
from langchain.chat_models import init_chat_model
model = init_chat_model("gpt-4o-mini", model_provider="openai")
claude_model = init_chat_model("claude-3-5-sonnet-20241022", model_provider="anthropic")
ollama_model = init_chat_model("llama3", model_provider="ollama")
Breaking Changes 表格
| 变更项 | 旧版本(0.x) | 新版本(1.x) | 影响 |
|---|---|---|---|
| 导入路径 | from langchain.llms import OpenAI |
from langchain_openai import ChatOpenAI |
所有模型类移至独立包 |
| 链的创建 | LLMChain(llm=..., prompt=...) |
使用 LCEL: prompt | model |
旧的 Chain 类被废弃 |
| Agent 类型 | initialize_agent(...) |
使用 create_react_agent(...) |
Agent 初始化方式变更 |
| 文档加载器 | from langchain.document_loaders |
from langchain_community.document_loaders |
文档加载器移至社区包 |
| 输出解析器 | from langchain.output_parsers |
from langchain_core.output_parsers |
核心解析器移至 core 包 |
| 内存管理 | ConversationBufferMemory |
使用 RunnableWithMessageHistory |
内存管理方式重构 |
从 0.x 迁移注意事项
# ===== 旧版本(0.x)写法 - 已废弃 =====
from langchain.llms import OpenAI
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
prompt = PromptTemplate.from_template("告诉我关于 {topic} 的知识")
llm = OpenAI(model_name="text-davinci-003")
chain = LLMChain(llm=llm, prompt=prompt)
result = chain.run(topic="人工智能")
# ===== 新版本(1.x)写法 - 推荐 =====
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
prompt = ChatPromptTemplate.from_template("告诉我关于 {topic} 的知识")
model = ChatOpenAI(model="gpt-4o-mini")
chain = prompt | model
result = chain.invoke({"topic": "人工智能"})
1.6 最佳实践
项目结构建议
my_langchain_project/
├── .env # 环境变量(API 密钥等)
├── .gitignore # Git 忽略文件
├── requirements.txt # 依赖清单
├── src/ # 源代码目录
│ ├── chains/ # 链的定义
│ ├── prompts/ # 提示模板
│ ├── parsers/ # 输出解析器
│ └── utils/ # 工具函数
├── tests/ # 测试目录
└── notebooks/ # Jupyter 笔记本
依赖管理
# requirements.txt
langchain>=0.3.0
langchain-core>=0.3.0
langchain-community>=0.3.0
langchain-openai>=0.2.0
python-dotenv>=1.0.0
pydantic>=2.0.0
# src/utils/config.py
import os
from dotenv import load_dotenv
load_dotenv()
class Config:
DEFAULT_MODEL = os.getenv("DEFAULT_MODEL", "gpt-4o-mini")
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
DEFAULT_TEMPERATURE = float(os.getenv("DEFAULT_TEMPERATURE", "0.7"))
DEFAULT_MAX_TOKENS = int(os.getenv("DEFAULT_MAX_TOKENS", "2048"))
@classmethod
def get_model_kwargs(cls) -> dict:
return {
"temperature": cls.DEFAULT_TEMPERATURE,
"max_tokens": cls.DEFAULT_MAX_TOKENS,
}
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)