基础入门

1. 引言

LangChain 是一个开源框架,旨在简化与大型语言模型的交互过程。它提供了一系列工具和组件,帮助开发者轻松地构建复杂的应用程序,如聊天机器人、问答系统等。本技术文档将详细介绍 LangChain 的核心概念、主要组件及其使用方法。

2. 快速入门

2.1 安装 LangChain

确保你的 Python 环境已安装。接着,安装 LangChain 社区版:

pip install -U langchain-community

如果遇到依赖问题,可以按照以下步骤解决:

pip uninstall tenacity
pip install 'tenacity==8.3.0'

2.2 获取 Moonshot API Key

访问 Moonshot 平台 (https://platform.moonshot.cn) 注册并获取 API Key。

2.3 安装其他依赖

安装必要的依赖库:

pip install dashscope faiss-cpu chromadb

3. LangChain 核心组件

3.1 大模型包装 (LLM Wrappers)

LangChain 提供了对各种大型语言模型的支持,这些模型被封装为易于使用的接口。以下是使用 LangChain 包装 OpenAI 的 GPT-4 模型的示例:

3.2 Prompt 模板

Prompt 模板是用于指导模型生成特定类型文本的预设模板。以下是一个简单的示例,展示如何使用 LangChain 的 PromptTemplate 类来创建一个模板,然后用它来生成文本:

3.3 Chain (链)

Chain 允许将不同的组件串联起来形成复杂的工作流程。以下是一个使用 LangChain 的 LLMChain 的例子,该链将一个 PromptTemplate 和一个 LLM 组件连接起来:

3.4 缓存支持

LangChain 支持多种缓存机制,例如内存缓存、SQLite 缓存、Redis 缓存等。以下是如何启用缓存的一个例子:

3.5 文档分割与向量化

处理文档,将其分割成更小的部分,并转换为向量表示。这里使用了 LangChain 的 RecursiveCharacterTextSplitter 来分割文档,并使用 DashScope 的文本嵌入服务进行向量化:

3.6 Agent

Agent 根据用户的输入执行相应的动作,并返回动作的结果。以下是一个使用 LangChain 的 create_react_agent 创建一个使用 ReAct 方法的代理的例子:

4. 对话记忆管理

对话记忆管理是确保模型理解上下文的关键。LangChain 提供了几种不同的对话记忆管理策略。

4.1 ConversationBufferMemory

这是最基本的缓冲记忆内存对象,它会保存所有的对话历史。

4.2 ConversationBufferWindowMemory

只保存最近的几次人类和 AI 的互动。

4.3 ConversationSummaryMemory

每次新互动发生时进行汇总,而不是保存整个对话历史。

4.4 ConversationSummaryBufferMemory

综合了 ConversationSummaryMemoryConversationBufferWindowMemory 的优点。

5. 工具与代理

5.1 工具创建

工具是用户问题理解和拆分的第一步,它从工具列表中选择合适的工具,将用户的提问转化为结构化数据,传递给工具函数。

5.2 使用 StructuredTool

5.3 创建 Action Agent

Action Agent 是一种典型的代理类型,它使用先前操作的输出来决定下一步的操作。

6. 向量存储与搜索

6.1 Faiss 入门

Faiss 是一个用于高效相似性搜索和密集向量聚类的库。

  • 安装 Faiss

  • 使用通义千问进行embedding

6.2 Chroma 简介

Chroma 是一个用于构建带有嵌入向量的 AI 应用程序的数据库,内置了入门所需的一切,并提供了简单的 API。

  • 安装 Chroma

  • 基本代码

7. LangChain 表达式语言

LangChain 表达式语言 (LCEL) 提供了一种声明式的方式链接 LangChain 组件。

7.1 RunnablePassthrough

RunnablePassthrough 是一个实用的组件,可以在不改变或添加额外键的情况下传递输入。

7.2 创建自定义Runnable

8. 高级主题

8.1 高级 Prompt 模板

LangChain 提供了丰富的 Prompt 模板选项,可以定制化模型的输入。

8.2 输出解析器

输出解析器负责解析代理的输出,并确定下一步的动作。

9. 结语

LangChain 提供了一个强大的框架来构建复杂的自然语言处理应用程序。通过学习本文档中的概念和技术,您可以开始探索和构建自己的应用程序。希望这份文档能成为您使用 LangChain 的宝贵资源。

最后更新于