- Published on
AI探秘-LangChain使用不完全指南
- Authors

- Name
- noodles
- 每个人的花期不同,不必在乎别人比你提前拥有
LangChain使用不完全指南:从入门到精通
LangChain是一个强大的框架,用于构建基于大语言模型(LLM)的应用程序。它提供了丰富的工具和组件,让开发者能够轻松构建复杂的AI应用。本文将带你从基础概念开始,逐步深入LangChain的各个核心功能。
目录
什么是LangChain
LangChain是一个开源框架,专门用于开发由语言模型驱动的应用程序。它提供了:
- 模块化设计:将复杂的AI应用分解为可重用的组件
- 链式调用:将多个组件串联起来形成工作流
- 多模型支持:支持OpenAI、Anthropic、本地模型等多种LLM
- 丰富的工具集:包含文档处理、向量数据库、记忆系统等
LangChain包分类
1. 核心包(Core Packages)
langchain- 核心框架langchain-core- 核心组件
2. 合作伙伴包(Partner Packages)
这些是由 LangChain 官方合作伙伴维护的包,通常有官方支持和保证:
langchain-openai- OpenAI 集成langchain-anthropic- Anthropic 集成
3. 社区集成包(Community Integrations)
这些是由社区开发和维护的包:
langchain-ollama- Ollama 集成langchain-community- 社区贡献的集成
环境搭建
# 安装核心包
pip install langchain
pip install langchain-core
# 这里因为要使用ollama本地模型 所以安装langchain-ollama
pip install langchain-ollama
# 安装社区包(包含更多集成)
pip install langchain-community
基本使用
2. Models - 模型
模型可以通过两种方式使用:
1. 与代理配合使用 - 在创建代理时可以动态指定模型 2. 独立使用 - 模型可以直接调用(在代理循环之外),用于文本生成、分类或提取等任务,无需代理框架
LangChain提供了标准化的模型接口,支持多种LLM提供商:
模型调用方法
| 方法 | 功能 | 使用场景 | 返回值 |
|---|---|---|---|
invoke() | 同步调用模型 | 单次请求,需要等待结果 | 直接返回完整结果 |
stream() | 流式调用模型 | 实时显示生成过程 | 返回生成器,逐块返回内容 |
batch() | 批量异步处理 | 并行处理多个请求 | 返回所有结果列表 |
batch_as_completed() | 批量异步处理(完成即返回) | 无需等待所有完成 | 完成一个返回一个 |
工具调用
通过绑定工具在大模型会返回请求调用工具的指令,然后根据指令调用工具函数并返回结果.在agent模式中会自动处理这个调用过程
工具调用流程示意
用户输入
|
v
LLM 接收 messages 并生成响应(可能包含 tool_calls)
|
|-- 若无 tool_calls -------------------------------> 直接返回最终回答
|
|-- 若包含 tool_calls:
| |
| v
| 解析 tool_calls 列表(name, args)
| |
| v
| 查找并调用对应工具(tool_registry[name].invoke(args))
| |
| v
| 将工具返回结果封装为 ToolMessage,追加到 messages
| |
| v
| 将扩展后的 messages 再次发送给 LLM(model_with_tools.invoke)
| |
| v
| 生成结合工具结果的最终回答
|
v
返回给用户
结构化输出
可以通过Model实现格式化处理,可以实现在后续的环节更好的处理
3. Messages - 消息
消息是 LangChain 中模型上下文的基本单元,代表模型的输入与输出。Message 通常包含角色(role)、内容(content)以及元数据(metadata);
Message类型
| 类型 | 作用 | 典型内容 | 备注 |
|---|---|---|---|
| System message | 告诉模型如何行为,并为交互提供全局上下文 | 规则、角色设定、风格要求 | 通常放在最前面,影响整轮对话走向 |
| Human message | 代表用户输入与模型的交互 | 问题、指令、数据 | 也可包含文件摘要、外部信息等 |
| AI message | 模型生成的响应 | 文字内容;可能包含工具调用信息(tool_calls)及元数据 | 当触发工具调用时,会携带调用的工具名与参数 |
| Tool message | 工具调用的输出 | 工具执行结果,如检索内容、计算结果、API响应 | 通常作为后续消息再次提供给模型以生成最终回答 |
4. Middleware - 中间件
用于处理请求和响应的中间件:
延伸阅读