1. LangChain框架概述
LangChain是由Harrison Chase于2022年10月创建的一个围绕大语言模型(LLMs)构建的Python框架。作为一个开源项目,它已经成为AI应用开发领域的重要工具。LangChain的核心价值在于为各种LLMs提供通用接口,将这些模型相关的组件"链接"在一起,从而显著降低开发复杂LLMs应用的难度。
关键理解:LangChain本身并不开发大语言模型,而是作为"粘合剂"将不同模型、工具和服务连接起来,形成一个完整的应用开发框架。
1.1 核心设计理念
LangChain的设计遵循几个关键原则:
- 标准化接口:为不同类型的模型(如LLMs、聊天模型、嵌入模型)提供统一的调用方式
- 模块化组件:将AI应用开发拆分为可复用的组件(如提示词模板、记忆模块、输出解析器等)
- 链式调用:通过管道(|)操作符将组件串联,形成自动化的工作流
- 扩展性:支持自定义组件和第三方集成,适应不同场景需求
1.2 主要应用场景
LangChain特别适合以下类型的应用开发:
- 基于文档的问答系统
- 智能聊天机器人
- 自动化内容生成
- 数据分析和报告生成
- 知识管理和检索系统
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与安装
2.1 基础环境要求
在开始使用LangChain前,需要确保具备以下环境:
- Python 3.8或更高版本
- pip包管理工具
- 稳定的网络连接(用于访问模型API)
2.2 安装核心包
通过pip安装LangChain及其相关组件:
bash复制pip install langchain langchain-community langchain-ollama langchain-chroma dashscope chromadb bs4 jq
安装说明:
langchain: 核心框架langchain-community: 社区维护的模型和工具集成langchain-ollama: Ollama本地模型支持langchain-chroma: Chroma向量数据库集成dashscope: 阿里云通义千问APIchromadb: 轻量级向量数据库bs4和jq: 数据处理辅助工具
2.3 可选模型配置
根据使用场景,可能需要配置以下模型API密钥:
- 阿里云通义千问:需要在阿里云控制台获取API密钥
- OpenAI:需要OpenAI账号和API密钥
- 本地Ollama:需要下载并运行Ollama服务
3. 模型基础使用
3.1 模型类型概述
LangChain支持三种主要模型类型:
| 模型类型 | 特点 | 典型应用场景 |
|---|---|---|
| LLMs (大语言模型) | 基于Transformer架构,参数量大,文本生成能力强 | 内容创作、代码生成、文本摘要 |
| Chat Models (聊天模型) | 针对对话场景优化,支持多轮交互 | 聊天机器人、虚拟助手 |
| Embeddings Models (嵌入模型) | 将文本转换为向量表示 | 语义搜索、文档聚类、推荐系统 |
3.2 基础模型调用
3.2.1 通义千问LLM示例
python复制from langchain_community.llms.tongyi import Tongyi
# 实例化模型
llm = Tongyi(model='qwen-max')
# 模型推理
res = llm.invoke("帮我讲个笑话吧")
print(res)
3.2.2 本地Ollama模型调用
python复制from langchain_ollama import OllamaLLM
# 确保Ollama服务已启动并下载了相应模型
llm = OllamaLLM(model="llama2")
res = llm.invoke("解释一下量子计算的基本概念")
print(res)
3.3 流式输出
对于需要逐步显示结果的场景,可以使用stream方法:
python复制from langchain_community.llms.tongyi import Tongyi
llm = Tongyi(model='qwen-max')
# 流式输出
for chunk in llm.stream("用300字介绍人工智能发展史"):
print(chunk, end="", flush=True)
流式输出特别适合:
- 长时间生成的场景
- 需要实时显示结果的交互应用
- 网络条件不佳时的渐进式加载
4. 聊天模型进阶
4.1 消息类型系统
LangChain的聊天模型使用结构化消息类型:
| 消息类型 | 对应角色 | 用途 |
|---|---|---|
| SystemMessage | system | 设置模型的行为和上下文 |
| HumanMessage | user | 用户输入的问题或指令 |
| AIMessage | assistant | 模型的回复内容 |
4.2 多轮对话示例
python复制from langchain_ollama import ChatOllama
from langchain_core.messages import HumanMessage, AIMessage, SystemMessage
# 实例化聊天模型
model = ChatOllama(model="qwen3:4b")
# 构建消息历史
messages = [
SystemMessage(content="你是一个边塞诗人。"),
HumanMessage(content="写一首唐诗"),
AIMessage(content="锄禾日当午,汗滴禾下土,谁知盘中餐,粒粒皆辛苦。"),
HumanMessage(content="按照你上一个回复的格式,在写一首唐诗。")
]
# 流式执行
res = model.stream(input=messages)
for chunk in res:
print(chunk.content, end="", flush=True)
4.3 嵌入模型使用
文本嵌入模型将文本
