LangChain链学习笔记| 豆包MarsCode AI刷题

163 阅读2分钟

LangChain实战课详细学习笔记

1. Chain的概念和重要性

Chain是LangChain中的关键组件,用于链接LangChain的各个组件和功能——模型之间彼此链接,或模型与其他组件链接。这种将多个组件相互链接,组合成一个链的想法简单但很强大。它简化了复杂应用程序的实现,并使之更加模块化,能够创建出单一的、连贯的应用程序,从而使调试、维护和改进应用程序变得容易。

2. LLMChain

LLMChain是LangChain中最基本的链,它围绕着语言模型推理功能又添加了一些功能,整合了PromptTemplate、语言模型(LLM或聊天模型)和Output Parser,相当于把Model I/O放在一个链中整体操作。它使用提示模板格式化输入,将格式化的字符串传递给LLM,并返回LLM输出。

2.1 LLMChain的代码示例

image.png

在这里,我们就把提示模板的构建和模型的调用封装在一起了。

3. 链的调用方式

链有很多种调用方式。

3.1 直接调用

刚才我们是直接调用的链对象。当我们像函数一样调用一个对象时,它实际上会调用该对象内部实现的__call__方法。

3.2 通过run方法

通过run方法,也等价于直接调用_call_函数。

3.3 通过predict方法

predict方法类似于run,只是输入键被指定为关键字参数而不是Python字典。

3.4 通过apply方法

apply方法允许我们针对输入列表运行链,一次处理多个输入。

3.5 通过generate方法

generate方法类似于apply,只不过它返回一个LLMResult对象,而不是字符串。LLMResult通常包含模型生成文本过程中的一些相关信息,例如令牌数量、模型名称等。

4. RouterChain

RouterChain,也叫路由链,能动态选择用于给定输入的下一个链。我们会根据用户的问题内容,首先使用路由器链确定问题更适合哪个处理模板,然后将问题发送到该处理模板进行回答。如果问题不适合任何已定义的处理模板,它会被发送到默认链。

7. 总结时刻

通过LangChain实战课的学习,我深刻体会到了Chain在构建复杂应用中的核心作用,它不仅提高了开发效率,还增强了程序的模块化和可维护性。LLMChain和Sequential Chain的结合使用,让我能够轻松实现从数据输入到处理再到输出的完整流程,而RouterChain和MultiPromptChain则展示了如何智能地根据输入内容动态选择处理路径,这对于构建智能客服系统尤为重要。这门课程不仅提升了我的技术能力,也为我未来解决实际问题提供了宝贵的思路和工具。