PromptTemplate导入区别
PromptTemplate和LLMChain都是从langchain顶层模块中导入的。这可能是因为langchain库的设计者将这些类在顶层模块中进行了重新导出,以便简化导入路径。
from langchain import PromptTemplate
表明PromptTemplate类在langchain顶层模块中进行重新导入,用户可以通过更简洁的导入路径来使用这些类,而不需要关心他们在库内部的具体位置
from langchain import PromptTemplate是简化路径的结果,意味着PromptTemplate类在langchain顶层模块中进行了重新导出。这种设计简化用户的导入路径,使代码更简洁。
temperature的作用
在ChatOpenAI中temperature用于控制生成文本的随机性,他决定了模型在生成下一个词时选择的概率分布。较高的温度值会使生成的文本更加的随机和多样化,而较低的温度值生成的文本更加保守和确定
链
整体框架
- 构建处理模板:为鲜花护理和鲜花装饰分别定义两个字符串模板。
- 提示信息:使用一个列表来组织和存储这两个处理模板的关键信息,如模板的键、描述和实际内容。
- 初始化语言模型:导入并实例化语言模型。
- 构建目标链:根据提示信息中的每个模板构建了对应的LLMChain,并存储在一个字典中。
- 构建LLM路由链:这是决策的核心部分。首先,它根据提示信息构建了一个路由模板,然后使用这个模板创建了一个LLMRouterChain。
- 构建默认链:如果输入不适合任何已定义的处理模板,这个默认链会被触发。
- 构建多提示链:使用MultiPromptChain将LLM路由链、目标链和默认链组合在一起,形成一个完整的决策系统。
RouterChain
- 用途:用于在多个子链之间进行路由选择,根据苏杭如的条件或规则将请求路由到不同的子链
- 应用范围:适用于需要根据不同的输入类型或条件执行不同处理逻辑的场景。例如,根据用户问题的类型选择不同的回答逻辑
- 实现: 使用路由规则或条件来决定请求应该被发送到哪个子链
MultiRouterChain
- 用途:用于并行执行多个子链,并将所有子链的结果合并成一个最终的结果。
- 应用范围: 设用于需要同时执行多个任务,并将其结果进行综合处理的场景。例如,同时查询多个数据源并整合结果。
- 实现:并行执行多个子链,并在所有子链完成后合并结果
RouterChain 更合适需要动态路由请求的场景,常用于复杂的对话系统和需要条件分支处理的任务。
MultiRouterChain更适合需要并行处理多个任务的场景,常用于数据聚合和多任务处理
MultiPromptChain中有三个关键元素。
- router_chain(类型RouterChain)
- destination_chains(类型Mapping[str, LLMChain])
- default_chain(类型LLMChain)
除了处理目标链和路由链之外,我们还需要准备一个默认链。如果路由链没有找到适合的链,那么,就以默认链进行处理。