昨天学校事情有点忙,给自己放了一天假
学习笔记:
课程链接
链(下):想学 “育花” 还是 “插花”?用 RouterChain 确定客户意图
学习目标
- 理解如何使用LangChain框架中的RouterChain来确定客户的意图。
- 学习如何构建多提示链(MultiPromptChain)来处理不同的客户查询。
代码解析
-
忽略警告:使用
warnings.filterwarnings("ignore")来忽略运行时的警告信息。 -
设置OpenAI API密钥:虽然在代码中没有显示设置API密钥的步骤,但在实际使用中需要设置环境变量
LLM_MODELEND来指定使用的模型。 -
构建场景模板:
flower_care_template:用于回答关于鲜花护理的问题。flower_deco_template:用于回答关于鲜花装饰的问题。
-
构建提示信息:创建一个包含两个场景的提示信息列表
prompt_infos,每个场景都有对应的键、描述和模板。 -
初始化语言模型:使用
ChatOpenAI类初始化语言模型,模型名称通过环境变量获取。 -
构建目标链:为每个场景创建一个
LLMChain实例,并将它们存储在chain_map字典中。 -
构建路由链:
- 使用
LLMRouterChain和RouterOutputParser来构建路由链,它可以根据输入决定使用哪个目标链。 router_template定义了路由链的模板,其中包含了所有可能的目标链描述。router_prompt是路由链的提示信息,它使用RouterOutputParser来解析输出。
- 使用
-
构建默认链:如果路由链无法确定目标链,将使用
ConversationChain作为默认链。 -
构建多提示链:使用
MultiPromptChain将路由链和目标链结合起来,形成一个完整的处理流程。 -
测试:通过运行不同的查询来测试多提示链的功能,例如关于玫瑰浇水、婚礼场地装饰和区分阿豆和罗豆的问题。
学习要点
- RouterChain的使用:如何通过路由链来确定用户的意图,并根据意图选择不同的处理链。
- 多提示链的构建:如何将多个提示链和路由链结合起来,以处理不同类型的查询。
- 环境变量的使用:在实际部署时,如何通过环境变量来配置API密钥和其他参数。
实践操作
- 在本地环境中设置OpenAI API密钥。
- 运行代码并观察不同查询的处理结果。
- 尝试修改模板和提示信息,观察对结果的影响。
注意事项
- 确保在运行代码前已经安装了所有必要的库和依赖。
- 在实际应用中,需要处理API请求的安全性和成本问题。