为开发更复杂的应用程序,需要使用Chain来链接LangChain中的各个组件和功能,包括模型之间的链接以及模型与其他组件之间的链接。
链在内部把一系列的功能进行封装,而链的外部则又可以组合串联。 链其实可以被视为LangChain中的一种基本功能单元。
LCEL Chains:链构造器
链构造器 函数调用 其他工具 使用场景
create_stuff_documents_chain 将文档列表收集并格式化成一个提示,然后传递给LLM。LLM将传递所有文档,所以请确保提示适合LLM的上下文窗口。
create_openai_fn_runnable √ 使用OpenAI函数调用来有选择性地构建输出响应。可以传递多个函数供其调用,但不一定要调用这些函数。
create_structured_output_runnable √ 可以使用OpenAI函数调用来强制LLM以某个函数进行响应。只能传入一个函数,并且链将始终返回此响应。
load_query_constructor_runnable 可以用来生成查询。需指定允许的操作列表,然后将自然语言查询转换为这些允许的操作的可运行对象。
create_sql_query_chain SQL数据库 从自然语言构建 SQL 数据库的查询
create_history_aware_retriever Retriever 检索器 该链接将收集对话历史记录,然后将其用于生成传递给底层检索器的搜索查询。
create_retrieval_chain Retriever 检索器 该链接将接收用户查询,然后传递给检索器以获取相关文档。随后,将这些文档(以及原始输入)传递给LLM以生成响应。
有两种类型的顺序链: 1.SimpleSequentialChain:单个输入/输出 2.SequentialChain:多个输入/输出
简单顺序链,每条链都有一个输入、一个输出,一条接一条。顺序链是将一系列链一个接一个地运行。
当我们的子链都只需要一个输入并且只返回一个输出时,SimpleSequentialChain这个方法很适用。 SimpleSequentialChain在只有一个输入和输出时表现非常好。 但如果有多个输入和输出,我们可以使用SequentialChain 创建一系列链,后面将一次调用这些链。用第一条链将评论翻译成英语,用第二条链总结这篇评论,用第三条链识别最初的评论是什么语言,用第四条链接收多个输入,即第二条链的摘要及第三条链的语言,要求对摘要进行回复,使用其特定语言。