链(下):想学 “育花” 还是 “插花”?用 RouterChain 确定客户意图

73 阅读2分钟

昨天学校事情有点忙,给自己放了一天假

学习笔记:

课程链接

链(下):想学 “育花” 还是 “插花”?用 RouterChain 确定客户意图

学习目标

  • 理解如何使用LangChain框架中的RouterChain来确定客户的意图。
  • 学习如何构建多提示链(MultiPromptChain)来处理不同的客户查询。

代码解析

  1. 忽略警告:使用warnings.filterwarnings("ignore")来忽略运行时的警告信息。

  2. 设置OpenAI API密钥:虽然在代码中没有显示设置API密钥的步骤,但在实际使用中需要设置环境变量LLM_MODELEND来指定使用的模型。

  3. 构建场景模板

    • flower_care_template:用于回答关于鲜花护理的问题。
    • flower_deco_template:用于回答关于鲜花装饰的问题。
  4. 构建提示信息:创建一个包含两个场景的提示信息列表prompt_infos,每个场景都有对应的键、描述和模板。

  5. 初始化语言模型:使用ChatOpenAI类初始化语言模型,模型名称通过环境变量获取。

  6. 构建目标链:为每个场景创建一个LLMChain实例,并将它们存储在chain_map字典中。

  7. 构建路由链

    • 使用LLMRouterChainRouterOutputParser来构建路由链,它可以根据输入决定使用哪个目标链。
    • router_template定义了路由链的模板,其中包含了所有可能的目标链描述。
    • router_prompt是路由链的提示信息,它使用RouterOutputParser来解析输出。
  8. 构建默认链:如果路由链无法确定目标链,将使用ConversationChain作为默认链。

  9. 构建多提示链:使用MultiPromptChain将路由链和目标链结合起来,形成一个完整的处理流程。

  10. 测试:通过运行不同的查询来测试多提示链的功能,例如关于玫瑰浇水、婚礼场地装饰和区分阿豆和罗豆的问题。

学习要点

  • RouterChain的使用:如何通过路由链来确定用户的意图,并根据意图选择不同的处理链。
  • 多提示链的构建:如何将多个提示链和路由链结合起来,以处理不同类型的查询。
  • 环境变量的使用:在实际部署时,如何通过环境变量来配置API密钥和其他参数。

实践操作

  • 在本地环境中设置OpenAI API密钥。
  • 运行代码并观察不同查询的处理结果。
  • 尝试修改模板和提示信息,观察对结果的影响。

注意事项

  • 确保在运行代码前已经安装了所有必要的库和依赖。
  • 在实际应用中,需要处理API请求的安全性和成本问题。