chain下_小记 | 豆包MarsCode AI刷题

42 阅读3分钟

PromptTemplate导入区别

PromptTemplate和LLMChain都是从langchain顶层模块中导入的。这可能是因为langchain库的设计者将这些类在顶层模块中进行了重新导出,以便简化导入路径。 from langchain import PromptTemplate 表明PromptTemplate类在langchain顶层模块中进行重新导入,用户可以通过更简洁的导入路径来使用这些类,而不需要关心他们在库内部的具体位置

from langchain import PromptTemplate是简化路径的结果,意味着PromptTemplate类在langchain顶层模块中进行了重新导出。这种设计简化用户的导入路径,使代码更简洁。

temperature的作用

在ChatOpenAI中temperature用于控制生成文本的随机性,他决定了模型在生成下一个词时选择的概率分布。较高的温度值会使生成的文本更加的随机和多样化,而较低的温度值生成的文本更加保守和确定

整体框架

  1. 构建处理模板:为鲜花护理和鲜花装饰分别定义两个字符串模板。
  2. 提示信息:使用一个列表来组织和存储这两个处理模板的关键信息,如模板的键、描述和实际内容。
  3. 初始化语言模型:导入并实例化语言模型。
  4. 构建目标链:根据提示信息中的每个模板构建了对应的LLMChain,并存储在一个字典中。
  5. 构建LLM路由链:这是决策的核心部分。首先,它根据提示信息构建了一个路由模板,然后使用这个模板创建了一个LLMRouterChain。
  6. 构建默认链:如果输入不适合任何已定义的处理模板,这个默认链会被触发。
  7. 构建多提示链:使用MultiPromptChain将LLM路由链、目标链和默认链组合在一起,形成一个完整的决策系统。

RouterChain

  • 用途:用于在多个子链之间进行路由选择,根据苏杭如的条件或规则将请求路由到不同的子链
  • 应用范围:适用于需要根据不同的输入类型或条件执行不同处理逻辑的场景。例如,根据用户问题的类型选择不同的回答逻辑
  • 实现: 使用路由规则或条件来决定请求应该被发送到哪个子链

MultiRouterChain

  • 用途:用于并行执行多个子链,并将所有子链的结果合并成一个最终的结果。
  • 应用范围: 设用于需要同时执行多个任务,并将其结果进行综合处理的场景。例如,同时查询多个数据源并整合结果。
  • 实现:并行执行多个子链,并在所有子链完成后合并结果

RouterChain 更合适需要动态路由请求的场景,常用于复杂的对话系统和需要条件分支处理的任务。

MultiRouterChain更适合需要并行处理多个任务的场景,常用于数据聚合和多任务处理

MultiPromptChain中有三个关键元素。

  • router_chain(类型RouterChain)
  • destination_chains(类型Mapping[str, LLMChain])
  • default_chain(类型LLMChain)

除了处理目标链和路由链之外,我们还需要准备一个默认链。如果路由链没有找到适合的链,那么,就以默认链进行处理。