Published on

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

Authors
  • avatar
    Name
    noodles
    每个人的花期不同,不必在乎别人比你提前拥有

LangChain使用不完全指南:从入门到精通

LangChain是一个强大的框架,用于构建基于大语言模型(LLM)的应用程序。它提供了丰富的工具和组件,让开发者能够轻松构建复杂的AI应用。本文将带你从基础概念开始,逐步深入LangChain的各个核心功能。

目录

  1. 什么是LangChain
  2. LangChain包分类
  3. 环境搭建
  4. 核心组件

什么是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 - 中间件

用于处理请求和响应的中间件:

延伸阅读