第九,十篇链笔记 | 豆包MarsCode AI 刷题

80 阅读3分钟

什么是chain:

Chain将多个组件(如模型、提示模板、解析器)连接成一个连贯的工作流。

通过模块化设计,简化了复杂应用的实现、调试、维护和扩展。

chain如何工作:

  • Chain的封装功能,LLMChain,它接收用户输入,通过提示模板格式化后传递给LLM处理。

  • 可以通过组合多个Chain或将Chain与其他组件连接,构建更高级的系统

总结来说,Chain是LangChain模块化架构的核心,帮助开发者高效地构建强大且易于维护的应用程序。

LLMChain 是 LangChain 中最基础的链,用于简化语言模型的输入和输出操作。它将 PromptTemplat(提示模板)、语言模型(如 LLM 或聊天模型)以及 Output parser 整合在一起,把整个模型的输入输出流程封装为一个连贯的操作。

使用前后对比

不用链:

创建提示模板,通过 PromptTemplate 格式化输入。

调用模型实例(如 OpenAI 接口),传递格式化的提示,并获取结果。

提示构建和模型调用是独立的两个步骤,代码冗长。

使用LLMChain:

使用 LLMChain,将提示模板和模型调用流程封装在一起。

简化了代码结构,更直观且易于维护。

LangChain 提供了多种调用链的方法:

  • 直接调用:通过 “call” 方法,直接调用链对象,可以传递单个输入或字典形式的多个输入。

  • run:等价于直接调用,用于传递单个输入。

  • predict:通过关键字参数传递输入。

  • apply:一次性处理多个输入,用于批量操作。

  • generate:类似于 apply,但返回更详细的 LLMResult 对象,包含模型生成过程的附加信息。

顺序链,将多输出链在一起输出一个最终结果

示例:

  • 第一步:生成鲜花的知识性说明

  • 第二步:生成评论

  • 第三步:生成社交媒体文案

思考题1:

image.png RouterChain和MultiPromptChain 实现一个鲜花运营智能客服系统,根据用户问题的类型(鲜花养护或鲜花装饰)动态选择不同的处理逻辑。

RouterChain:

  • RouterChain 动态选择处理。
  • 系统根据用户输入内容,使用路由器链决定问题类型,并选择相应的处理模板。
  • 如果问题不匹配任何已定义模板,则由默认链处理。

通过key查找匹配的模板,使用prompt_infos列表,存储每个模板的key、描述(description)和内容(template)。

遍历 prompt_infos 列表,为每个模板构建一个 LLMChain。 将链存储在字典 chain_map 中,供后续路由选择。

使用 LLMRouterChain 构建一个路由器链: 定义路由模板 router_template,列出候选模板的名称和描述。 构造 router_prompt,引导大语言模型根据用户输入选择合适的模板。定义一个默认链 default_chain,处理无法分类的问题。最后使用 MultiPromptChain 整合所有链。 思考题1: 将MultiPromptChain中verbose设为False时报错,只改变其他verbose时字体会改变,输出更简洁。 思考题2:

image.png