链
在简单应用中,单独使用LLM是可以的, 但更复杂的应用需要将LLM进行链接 - 要么相互链接,要么与其他组件链接。
LangChain为这种"链接"应用提供了Chain接口。我们将链定义得非常通用,它是对组件调用的序列,可以包含其他链。基本接口很简单:
class Chain(BaseModel, ABC):
"""Base interface that all chains should implement."""
memory: BaseMemory
callbacks: Callbacks
def __call__(
self,
inputs: Any,
return_only_outputs: bool = False,
callbacks: Callbacks = None,
) -> Dict[str, Any]:
...
将组件组合成链的思想简单而强大。它极大地简化了复杂应用的实现,并使应用更模块化,从而更容易调试、维护和改进应用。
更多具体信息请查看:
为什么我们需要链?
链允许我们将多个组件组合在一起创建一个单一的、连贯的应用。例如,我们可以创建一个链,该链接收用户输入,使用PromptTemplate对其进行格式化,然后将格式化后的响应传递给LLM。我们可以通过将多个链组合在一起或将链与其他组件组合来构建更复杂的链。
快速入门 (Get started)
Using 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)
# Run the chain only specifying the input variable.
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.