LangChain:安装与应用
目录
参考
- LangChain 安装教程 (opens new window)
- 轻松入门LangChain:逐步安装指南 (opens new window)
- LangChain 安装指南 (opens new window)
# LangChain:安装与应用
# LangChain安装指南
# 一、环境准备
Python版本:推荐 Python 3.8+(对低版本兼容性有限)。
包管理工具:使用
pip
安装依赖。虚拟环境:在虚拟环境中安装,以隔离项目依赖,避免依赖冲突。
# 方法一:venv python -m venv myenv source myenv/bin/activate # Linux/macOS myenv\Scripts\activate # Windows
1
2
3
4# 方法二:conda conda create -n langchain-env python=3.10 conda activate langchain-env
1
2
3
# 二、安装核心基础包
# 安装主包
pip install langchain
2
主包提供了一个基本的起点,安装主包langchain时同时安装了langchain-core核心包库。注意:仅安装此包无法连接具体模型或数据源,需额外安装集成包。
# 1. LangChain(主包)
- 定位:应用开发框架
- 功能:
- 提供构建大语言模型(LLM)应用的高层抽象和工具链
- 链(Chains):预定义的工作流程(如问答链、摘要链)
- 代理(Agents):动态决策模块
- 内存(Memory):对话状态管理
- 检索(Retrieval):文档处理工具
- 提供构建大语言模型(LLM)应用的高层抽象和工具链
- 特点:集成中心,通过
langchain-community
整合第三方服务
# 2. LangChain-Core(核心库)
定位:基础架构层
功能:
定义核心抽象接口:
Runnable
:可执行组件的统一接口BasePromptTemplate
:提示词模板规范BaseOutputParser
:输出解析器标准
实现LangChain表达式语言(LCEL):
from langchain_core.prompts import ChatPromptTemplate from langchain_core.output_parsers import StrOutputParser chain = ( ChatPromptTemplate.from_template("{topic}是什么?") | model | StrOutputParser() )
1
2
3
4
5
6
7
8
特点:轻量级,仅包含基础抽象(无具体实现)、可扩展,允许自定义组件实现
# 3. LangChain和LangChain-Core的关系
langchain 是面向终端开发者的上层框架,包含开箱即用的组件和集成。
langchain-core 是支撑前者的底层引擎,定义接口规范和核心运行时。
特性 | LangChain | LangChain-Core |
---|---|---|
定位 | 应用开发框架 | 基础架构规范 |
包含内容 | 链/代理/内存等完整工具 | 抽象接口+LCEL核心 |
依赖关系 | 依赖core和其他扩展包 | 零依赖(纯接口定义) |
安装大小 | 较大(~10MB) | 极小(~1MB) |
典型使用场景 | 快速开发端到端应用 | 开发底层组件/定制框架 |
版本更新频率 | 高(每周更新) | 低(保持稳定) |
# 三、安装生态系统包(按需选择)
# 1、集成与扩展包
# 1. 特定提供商包
功能:针对主流AI服务商(如OpenAI、Azure OpenAI、Anthropic)的专属集成。
# 安装示例: pip install langchain-openai # OpenAI模型 pip install langchain-huggingface # Hugging Face模型集成
1
2
3
# 2. langchain-community
功能:集成第三方服务(如数据库、API、向量存储等),包含大量社区贡献的适配器。
# 安装 pip install langchain-community
1
2示例集成:
- 数据库:
langchain_community.sql_database
- API:
langchain_community.llms.tongyi
(通义千问) - 向量存储:
langchain_community.vectorstores.chroma
- 数据库:
# 3. langchain-experimental
功能:实验性代码库,包含前沿功能(如多模态、强化学习),适合研究场景。
# 安装 pip install langchain-experimental
1
2
# 2、应用开发包
# 1. LangGraph
功能:构建有状态、多角色交互的应用(如对话系统、工作流引擎)。
# 安装 pip install langgraph
1
2
# 2. LangServe
功能:将LangChain链(Chain)部署为REST API,支持客户端-服务端分离。
# 安装 pip install "langserve[all]" # 完整安装(客户端+服务端) pip install "langserve[client]" # 仅客户端 pip install "langserve[server]" # 仅服务端
1
2
3
4
# 3. LangChain CLI
功能:命令行工具,用于模板管理、LangServe项目初始化。
# 安装 pip install langchain-cli
1
2
# 3、专用工具包
# 1. LangSmith SDK
功能:调试、监控和评估LLM应用的工具链,可独立使用。
# 安装 pip install langsmith # 通常随LangChain自动安装
1
2
# 2. langchain-huggingface
功能:Hugging Face官方合作包,支持其模型在LangChain中的无缝调用。
# 安装 pip install langchain-huggingface
1
2
# 五、验证安装
# 1. 检查包信息
pip show langchain
输出:
Name: langchain Version: 0.3.25 Summary: Building applications with LLMs through composability Home-page: Author: Author-email: License: MIT Location: D:\ResLibFiles\Repository\Anaconda\anaconda3\envs\pystu\Lib\site-packages Requires: langchain-core, langchain-text-splitters, langsmith, pydantic, PyYAML, requests, SQLAlchemy Required-by:
1
2
3
4
5
6
7
8
9
10解释:
Name: 包名,这里是
langchain
。Version: 当前安装的版本,这里是
0.3.25
。Summary: 包的简要描述,说明这个包用于通过组合性构建基于大型语言模型(LLMs)的应用程序。
Home-page: 项目的主页,这里没有显示,通常会是项目的GitHub地址或官方网站。
Author 和 Author-email: 作者和作者邮箱,这里没有显示。
License: 许可证类型,这里是MIT许可证。
Location: 包安装的位置,即该包在本地文件系统中的路径。
Requires: 该包所依赖的其他Python包。从输出中可以看到,langchain依赖于:
langchain-core
: LangChain的核心库,包含基础抽象和LangChain表达式语言(LCEL)。langchain-text-splitters
: 用于文本分割的工具。langsmith
: LangChain的开发者平台,用于调试、测试、监控和评估LLM应用。pydantic
: 用于数据验证和设置管理的库。PyYAML
: 用于处理YAML文件的库。requests
: 用于发送HTTP请求的库。SQLAlchemy
: 一个ORM(对象关系映射)库,用于数据库操作。
Required-by: 显示哪些包依赖于此包。这里为空,表示当前环境中没有其他已安装的包依赖于这个
langchain
包。
# 2. 简单测试代码
import langchain
import langchain_core
# 导入特定集成(如langchain_openai)
print("LangChain版本:", langchain.__version__)
print("Core版本:", langchain_core.__version__)
2
3
4
5
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
prompt = ChatPromptTemplate.from_template("告诉我关于{topic}的一句话")
model = ChatOpenAI(api_key="YOUR_KEY") # 替换真实API Key
chain = prompt | model
response = chain.invoke({"topic": "宇宙"})
print(response.content) # 应输出非空文本
2
3
4
5
6
7
8
9