Skip to main content

链 Chains

在简单应用中,单独使用LLM是可以的,但是更复杂的应用需要将LLM链接在一起 - 要么与其他LLM链接在一起,要么与其他组件链接在一起。

LangChain为这种“链接”应用提供了Chain接口。我们将链定义为一系列对组件的调用,可以包括其他链。基本接口很简单:

class Chain(BaseModel, ABC):  
"""所有链都应该实现的基本接口。"""

memory: BaseMemory
callbacks: Callbacks

def __call__(
self,
inputs: Any,
return_only_outputs: bool = False,
callbacks: Callbacks = None,
) -> Dict[str, Any]:
...

将组件组合在一起形成链的思想简单而强大。它极大地简化了复杂应用的实现,并使应用更加模块化,从而更容易调试、维护和改进应用。

有关更多详细信息,请查看:

  • How-to,了解不同链特性的演示
  • Foundational,熟悉核心构建块链
  • Document,学习如何将文档纳入链中
  • Popular,常见用例的链
  • Additional,查看一些更高级的链和集成,可以直接使用

为什么我们需要链?

链允许我们将多个组件组合在一起,创建一个单一、连贯的应用程序。例如,我们可以创建一个链,接收用户输入,使用PromptTemplate对其进行格式化,然后将格式化后的响应传递给LLM。我们可以通过将多个链组合在一起,或将链与其他组件组合,构建更复杂的链。

入门

使用LLMChain

LLMChain是最基本的构建块链。它接收一个提示模板,将其与用户输入进行格式化,并返回LLM的响应。

要使用LLMChain,首先创建一个提示模板。

from langchain.llms import OpenAI  
from langchain.prompts import PromptTemplate

llm = OpenAI(temperature=0.9)
prompt = PromptTemplate(
input_variables=["product"],
template="What is a good name for a company that makes {product}?",
)

现在,我们可以创建一个非常简单的链,它将接收用户输入,使用提示模板进行格式化,然后将其发送给LLM。

from langchain.chains import LLMChain  
chain = LLMChain(llm=llm, prompt=prompt)

# 仅指定输入变量运行链。
print(chain.run("colorful socks"))

输出结果为:

Colorful Toes Co.

如果有多个变量,可以使用字典一次性输入它们。

prompt = PromptTemplate(  
input_variables=["company", "product"],
template="What is a good name for {company} that makes {product}?",
)
chain = LLMChain(llm=llm, prompt=prompt)
print(chain.run({
'company': "ABC Startup",
'product': "colorful socks"
}))

输出结果为:

Socktopia Colourful Creations.

您还可以在LLMChain中使用聊天模型:

from langchain.chat_models import ChatOpenAI  
from langchain.prompts.chat import (
ChatPromptTemplate,
HumanMessagePromptTemplate,
)
human_message_prompt = HumanMessagePromptTemplate(
prompt=PromptTemplate(
template="What is a good name for a company that makes {product}?",
input_variables=["product"],
)
)
chat_prompt_template = ChatPromptTemplate.from_messages([human_message_prompt])
chat = ChatOpenAI(temperature=0.9)
chain = LLMChain(llm=chat, prompt=chat_prompt_template)
print(chain.run("colorful socks"))

输出结果为:

Rainbow Socks Co.