LangChain 表达式语言 (LCEL) 的链式使用方法

什么是 LCEL?

LCEL (LangChain Expression Language) 是 LangChain 提供的一种声明式的方式,用于构建复杂的链式调用流程。你可以把它想象成用乐高积木搭建流程,每个积木代表一个组件(比如 LLM、PromptTemplate、输出解析器等),通过 LCEL,你可以像拼积木一样把它们连接起来,形成一个完整的流程。

LCEL 的优势:

  • 简洁易懂: 使用声明式语法,代码更清晰,易于理解和维护。
  • 灵活性强: 可以轻松地组合各种组件,构建复杂的流程。
  • 可扩展性好: 方便添加、删除或修改流程中的组件。
  • 流式处理: 支持流式输出,可以更快地看到结果。
  • 并行处理: 可以并行执行流程中的某些步骤,提高效率。

LCEL 的核心概念:

  • Runnable: LCEL 的核心接口,表示可以被调用的对象。LangChain 中的大多数组件(如 LLM、PromptTemplate、输出解析器等)都实现了 Runnable 接口。
  • Pipe Operator (|): 管道操作符,用于连接 Runnable 对象,表示将前一个 Runnable 的输出作为后一个 Runnable 的输入。
  • RunnableSequence: 由多个 Runnable 对象通过管道操作符连接而成的序列。
  • RunnableParallel: 并行执行多个 Runnable 对象。
  • RunnablePassthrough: 将输入原封不动地传递给下一个 Runnable 对象。
  • RunnableLambda: 允许你将一个 Python 函数包装成 Runnable 对象。

LCEL 的基本用法:

  1. 导入必要的模块:

    from langchain.prompts import PromptTemplate
    from langchain.llms import OpenAI
    from langchain.chains import LLMChain
    from langchain.schema import StrOutputParser
    
  2. 创建 Runnable 对象:

    • PromptTemplate: 用于创建提示词模板。

      prompt = PromptTemplate.from_template("请用{language}写一个关于{topic}的故事。")
      
    • LLM: 用于调用大型语言模型。

      llm = OpenAI(temperature=0.7)  # temperature 控制生成文本的随机性
      
    • StrOutputParser: 将 LLM 的输出转换为字符串。

      output_parser = StrOutputParser()
      
    • RunnableLambda: 将 Python 函数包装成 Runnable 对象。

      def format_output(text):
          return f"**故事:**\n{
               
                
                text}"
      
      formatter = RunnableLambda(format_output)
      
  3. 使用管道操作符 (|) 连接 Runnable 对象:

    chain = prompt | llm | output_parser 

猜你喜欢

转载自blog.csdn.net/roamingcode/article/details/145494885
今日推荐