【GPT入门】第26课 掌握langchain LCEL 链式调用的三种方法

发布于:2025-03-20 ⋅ 阅读:(16) ⋅ 点赞:(0)

在 LangChain 里,链式调用构建完成后有多种调用方式,invoke 方法就是其中之一,下面为你详细介绍常见的调用方法。

1. 使用 __call__ 语法(直接调用链对象)

这是最常用且直观的调用方式,就像调用普通函数一样调用链对象。示例如下:

from langchain.llms import OpenAI
import os

# 设置 OpenAI API 密钥
os.environ["OPENAI_API_KEY"] = "your_openai_api_key"

# 自定义检查重复项的函数
def check_duplicated(input_dict):
    text = input_dict.get('text', '')
    return {'text': text}

# 初始化语言模型
model = OpenAI()

# 自定义解析器函数
def parser(model_output):
    return model_output.strip()

# 构建链式调用
is_duplicated_chain = (check_duplicated | model | parser)

# 准备输入数据
input_data = {'text': '请介绍一下人工智能的发展历程'}

# 直接调用链对象
output = is_duplicated_chain(input_data)
print(output)

在上述代码中,is_duplicated_chain(input_data) 其实是调用了链对象的 __call__ 方法。

2. 使用 invoke 方法

invoke 方法和直接调用链对象在功能上基本一致,同样可以用来触发链式调用。示例如下:

# ... 前面的代码保持不变 ...

# 使用 invoke 方法调用链
output = is_duplicated_chain.invoke(input_data)
print(output)

invoke 方法在某些场景下会更具灵活性,比如你可能需要在调用时传入额外的参数,不过目前的链式调用实现中,这两种方式的核心功能是相同的。

3. 使用 apply 方法(针对批量输入)

如果你有多个输入需要批量处理,就可以使用 apply 方法。该方法接收一个输入列表,然后依次对列表中的每个输入执行链式调用,并返回一个输出列表。示例如下:

# ... 前面的代码保持不变 ...

# 准备批量输入数据
input_list = [
    {'text': '请介绍一下人工智能的发展历程'},
    {'text': '机器学习有哪些常见算法'}
]

# 使用 apply 方法批量调用链
output_list = is_duplicated_chain.apply(input_list)
for output in output_list:
    print(output)

apply 方法会自动遍历输入列表,对每个输入执行链式调用,最后将所有输出收集到一个列表中返回。

总结

  • __call__ 语法:最常用,调用方式简洁直观,适用于单个输入的情况。
  • invoke 方法:和直接调用链对象功能类似,在某些场景下可能更具灵活性。
  • apply 方法:用于批量处理多个输入,能提高处理效率。