【GPT入门】第26课 掌握langchain LCEL 链式调用的三种方法
在 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
方法:用于批量处理多个输入,能提高处理效率。