LangChain是一个强大的开发大模型应用的框架,它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互,将多个组件链接在一起,并集成额外的资源,例如 API 和数据库。
LangChain的常用模块组件:
-
模型 ( Models )
-
模式 ( Schema )
-
提示词 ( Prompt )
-
代理( Agents )
-
链( Chains )
-
索引 ( Indexes )
-
内存(Memory)
什么是 model?
LangChain model 是一个基于语言模型的框架,用于构建聊天机器人、生成式问答(GQA)、摘要等功能。LangChain 的核心思想是可以将不同的组件“链”在一起,以创建更高级的语言模型应用。
LLMs: 模型的简单使用,不支持流,不支持参数配置
Chat: 可以配置模型,支持流,支持参数配置
什么是Chains?
在简单应用中,单独使用LLM是可以的,但更复杂的应用需要将LLM进行链接。例如,我们可以创建一个链,该链接收用户输入,使用PromptTemplate对其进行格式化,然后将格式化后的响应传递给LLM。链允许我们将多个组件组合在一起创建一个单一的、连贯的应用。
四个常用的链:
-
LLMChain:一个链,将一个LLM和一个PromptTemplate组合在一起。
-
SimpleSequentialChain:一个简单的链,将一个链的输出作为下一个链的输入。
-
SequentialChain:一个更复杂的链,允许我们定义多个链,并将它们链接在一起。
-
ConversationChain:一个链,将一个LLM和一个ConversationPromptTemplate组合在一起。
LangChain中常用的Promtp有哪些?
1.PromptTemplate
2.ChatPromptTemplate
3.ChatMessagePromptTemplate
4.StringPromptTemplate
5、使用PipelinePromptTemplate实现多步提示词
LangChain中四种文档处理链是什么
-
StuffDocumentsChain
这种链最简单直接,是将所有获取到的文档作为 context 放入到 Prompt 中,传递到 LLM 获取答案。这种方式可以完整的保留上下文,调用 LLM 的次数也比较少,建议能使用 stuff 的就使用这种方式。其适合文档拆分的比较小,一次获取文档比较少的场景,不然容易超过 token 的限制。
-
RefineDocumentsChain
通过迭代更新的方式获取答案。先处理第一个文档,作为 context 传递给 llm,获取中间结果 intermediate answer。然后将第一个文档的中间结果以及第二个文档发给 llm 进行处理,后续的文档类似处理。Refine 这种方式能部分保留上下文,以及 token 的使用能控制在一定范围。
-
MapReduceDocumentsChain
先通过 LLM 对每个 document 进行处理,然后将所有文档的答案在通过 LLM 进行合并处理,得到最终的结果。
MapReduce 的方式将每个 document 单独处理,可以并发进行调用。但是每个文档之间缺少上下文。
-
MapRerankDocumentsChain
MapRerankDocumentsChain 和 MapReduceDocumentsChain 类似,先通过 LLM 对每个 document 进行处理,每个答案都会返回一个 score,最后选择 score 最高的答案。MapRerank 和 MapReduce 类似,会大批量的调用 LLM,每个 document 之间是独立处理。
LangChain内置的几个示例选择器
1 根据长度要求智能选择示例(长度选择)
2 根据输入相似度选择示例(最大边际相关性)
3 根据输入相似度选择示例(最大余弦相似度)
LangChain怎么自定义选择器?
示例选择器需要继承 BaseExampleSelector 类,并且需要实现两个方法:
add_example 方法,该方法接受一个示例并将其添加到 ExampleSelector 中
select_examples 方法,该方法接受输入变量(用于用户输入)并返回要在 few shot 提示中使用的示例列表。
LangChain内置的输出解释器有哪些?
列表解析器:CommaSeparatedListOutputParser,NumberedListOutputParser
日期时间解析器:DatetimeOutputParser
Pydantic 解析器
JSON 解析器:
XML解析器:
Markdown 解析器:
结构化输出解析器 structured
修复解析器 重试解析器
什么是Agents
Agents 是一个具有智能功能的智能体,它使用 LLM 和工具来执行任务。
Agents 核心思想是使用LLM来选择要采取的一系列动作。在链式结构中,一系列动作是硬编码的(在代码中)。 在 Agents 中,使用语言模型作为推理引擎来确定要采取的动作及其顺序。
Agents 包括几个关键组件:
-
Agent: 用于生成指令和执行动作的代理。
-
Tool: 用于执行动作的函数。
-
Memory: 用于存储历史对话和生成的指令。
-
LLM: 用于生成指令和执行动作的 LLM。
Toolkits都包括哪些
CSV 代理 文档比较 Pandas Dataframe Agent SQL数据库代理 Vectorstore 代理