我是 langchain 和 langserve 的新手。 langserve 的定义是“LangServe 帮助开发人员将 LangChain 可运行对象和链部署为 REST API”。 但无法理解两者之间的基本区别。
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
model = ChatOpenAI()
prompt = ChatPromptTemplate.from_template("tell me a joke about {topic}")
chain = prompt | model
链=提示| model 这是一个链还是可运行的。如果是链,那么runnable是怎么写的,需要什么runnable?
我们可以使用 Runnable 方法创建链的组件。例如,考虑下面的代码:
vectorstore = DocArrayInMemorySearch.from_texts(
["harrison worked at kensho", "bears like to eat honey"],
embedding=OpenAIEmbeddings()
)
retriever = vectorstore.as_retriever()
template = """Answer the question based only on the following context:
{context}
Question: {question}
"""
prompt = ChatPromptTemplate.from_template(template)
retrival = RunnableMap({
"context": lambda x: retriever.get_relevant_documents(x["question"]),
"question": lambda x: x["question"]
})
chain = retrival | prompt | model | output_parser
正如您在上面的代码中看到的,runnable 和 chain 都被起诉。但是,我将链的一个组件定义为可运行组件。 这样做是因为现在我可以将两个参数传递给链,而且现在我们可以并行运行这些可运行对象。
因此,runnable 和 chain 无法进行比较,而是可以将链的组件创建为 runnable。