Skip to main content

从 LLMChain 迁移

LLMChain 将提示模板、LLM 和输出解析器结合成一个类。

切换到 LCEL 实现的一些优势包括:

  • 对内容和参数的清晰理解。遗留的 LLMChain 包含默认的输出解析器和其他选项。
  • 更容易的流式处理。LLMChain 仅通过回调支持流式处理。
  • 更容易访问原始消息输出(如果需要)。LLMChain 仅通过参数或回调暴露这些内容。
%pip install --upgrade --quiet langchain-openai
import os
from getpass import getpass

os.environ["OPENAI_API_KEY"] = getpass()

遗留

from langchain.chains import LLMChain
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI

prompt = ChatPromptTemplate.from_messages(
[("user", "Tell me a {adjective} joke")],
)

chain = LLMChain(llm=ChatOpenAI(), prompt=prompt)

chain({"adjective": "funny"})
{'adjective': 'funny',
'text': "Why couldn't the bicycle stand up by itself?\n\nBecause it was two tired!"}

LCEL

from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI

prompt = ChatPromptTemplate.from_messages(
[("user", "Tell me a {adjective} joke")],
)

chain = prompt | ChatOpenAI() | StrOutputParser()

chain.invoke({"adjective": "funny"})
'Why was the math book sad?\n\nBecause it had too many problems.'

请注意,LLMChain 默认返回一个包含输入和输出的 dict。如果需要这种行为,我们可以使用另一个 LCEL 原语 RunnablePassthrough 来复制它:

from langchain_core.runnables import RunnablePassthrough

outer_chain = RunnablePassthrough().assign(text=chain)

outer_chain.invoke({"adjective": "funny"})
{'adjective': 'funny',
'text': 'Why did the scarecrow win an award? Because he was outstanding in his field!'}

下一步

查看 本教程 以获取有关使用提示模板、LLMs 和输出解析器的更多详细信息。

查看 LCEL 概念文档 以获取更多背景信息。


此页面是否有帮助?


您还可以留下详细的反馈 在 GitHub 上