链其实可以被视为LangChain中的一种基本功能单元。比如最常用到的LLM,在使用时,会把格式化简,让代码的可读性大大提升,但基本的数据定义不会减少。
LangChain中有多种chain,每种chain都有其特定的用途和实现方式,下面列举了几个用的较多的链。
LLMChain:这是LangChain中最基本的chain之一,由一个PromptTemplate和一个语言模型组成。它接受用户输入,使用PromptTemplate进行格式化,然后将格式化后的响应传递给LLM。LLMChain广泛应用于聊天机器人、智能问答工具、文档分析和摘要、代码分析等领域。
SequentialChain:这是一个更复杂的链,允许开发者定义多个链并将它们链接在一起。SequentialChain可以将一个链的输出作为下一个链的输入,从而实现复杂的逻辑处理。这是同时使用多个链的关键。
ConversationChain:这种链将一个LLM和一个ConversationPromptTemplate组合在一起,特别适用于需要对话功能的场景。例如,它可以用于构建智能客服系统或复杂的对话系统。
RouterChain:这种链用于根据不同的输入条件选择不同的处理路径。它可以根据用户的输入决定使用哪个子链进行处理。
TransformChain:这种链主要用于对数据进行预处理和后处理,可以在链中插入各种转换操作,如数据清洗、格式化等。
SimpleSequentialChain:这是一个简单的链,将一个链的输出作为下一个链的输入,适用于简单的顺序处理场景。
MultiPromptChain 允许 LLM 从多个提示中进行选择。通过提供一组模板/提示以及它们对应的名称和描述来构建该链。该链接受一个字符串作为输入,选择一个合适的提示,然后将输入传递到所选的提示中。(其有三个参数router_chain决定哪一个destination_chain应该被选中; destination_chain将名称映射到可以将输入路由到的候选链;default_chain,当其他链无法被选中时,会选择此默认链。)
链的调用方式有多种。如llm_chain(),括号里面可以放一个参数或者以字典的形式放入(多个参数),也可以使用run方法,predict方法不允许使用字典,apply方法可以使用列表链时使用,一次性可以使用多个输入,generate方法会返回生成结果中的相关信息,适合于测试模型。