链 | 豆包MarsCode AI 刷题

57 阅读2分钟

为开发更复杂的应用程序,需要使用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 创建一系列链,后面将一次调用这些链。用第一条链将评论翻译成英语,用第二条链总结这篇评论,用第三条链识别最初的评论是什么语言,用第四条链接收多个输入,即第二条链的摘要及第三条链的语言,要求对摘要进行回复,使用其特定语言。