【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 方法:用于批量处理多个输入,能提高处理效率。
### 使用 LangChainLangChain-OpenAI 进行 Prompt | Model | JSONOutputParser 链式调用 GPT-4 的具体示例 LangChain 是一种用于构建大型语言模型 (LLM) 应用程序的框架,它允许开发者轻松集成不同的组件来创建复杂的流水线。以下是使用 `langchain` 和 `langchain-openai` 实现链式调用 GPT-4 并解析其输出为 JSON 的方法。 #### 安装依赖库 首先需要安装必要的 Python 包: ```bash pip install langchain openai ``` #### 示例代码实现 下面是一个完整的代码示例: ```python from langchain.prompts import PromptTemplate from langchain.llms import OpenAI from langchain.chains import LLMChain from langchain.output_parsers.json import parse_json_markdown # 设置 OpenAI API 密钥和模型名称 import os os.environ["OPENAI_API_KEY"] = "your_openai_api_key_here" # 创建提示模板 prompt_template = """You are a helpful assistant. Given the following context, answer the question as truthfully as possible. Context: {context} Question: {question} Answer in JSON format with key 'answer'. Example: {"answer": "Your response here"}""" prompt = PromptTemplate(template=prompt_template, input_variables=["context", "question"]) # 初始化 GPT-4 模型 llm = OpenAI(model_name="gpt-4", temperature=0) # 构建 chain = LLMChain(llm=llm, prompt=prompt) # 输入数据 input_data = { "context": "The capital of France is Paris.", "question": "What is the capital of France?" } # 执行并获取响应 response = chain.run(input_data) # 解析 JSON 输出 parsed_response = parse_json_markdown(response) print(parsed_response) ``` 上述代码实现了以下功能: 1. **定义 Prompt Template**: 提供了一个结构化的输入模板,其中包含上下文 (`context`) 和问题 (`question`)。 2. **初始化 GPT-4 模型**: 使用 `OpenAI` 类指定模型名称为 `"gpt-4"`[^1]。 3. **构建 Chain**: 将 Prompt 和 LLM 绑定到一起形成一个可执行的工作流。 4. **运行 Chain**: 向工作流提供具体的输入数据,并接收来自 GPT-4 的响应。 5. **JSON 解析器**: 利用 `parse_json_markdown` 函数将返回的结果转换成标准的 Python 字典对象。 #### 关键点说明 - **Prompt Design**: 设计良好的提示对于获得预期结果至关重要。在此处,我们明确要求模型以特定格式(即 JSON)作答[^2]。 - **Error Handling**: 如果模型未能按照期望格式生成输出,则可能需要额外处理逻辑来捕获异常情况。 - **Performance Considerations**: 调整参数如温度 (`temperature`) 可影响生成质量与多样性;较低值倾向于更一致的回答而较高值则更具创造性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值