LangChain系列文章
现在我们已经建立了一个应用程序,我们需要提供服务。这就是LangServe
的作用。LangServe
帮助开发人员将LCEL
链部署为REST API
。该库与FastAPI
集成,并使用pydantic
进行数据验证。
为了为我们的应用程序创建一个服务器,我们将创建一个serve.py文件,其中包括三个内容:
langserve.add_routes
完成#!/usr/bin/env python
from typing import List
from fastapi import FastAPI
from langchain.prompts import ChatPromptTemplate
from langchain.chat_models import ChatOpenAI
from langchain.schema import BaseOutputParser
from langserve import add_routes
# 1. Chain definition
class CommaSeparatedListOutputParser(BaseOutputParser[List[str]]):
"""Parse the output of an LLM call to a comma-separated list."""
def parse(self, text: str) -> List[str]:
"""Parse the output of an LLM call."""
return text.strip().split(", ")
template = """You are a helpful assistant who generates comma separated lists.
A user will pass in a category, and you should generate 5 objects in that category in a comma separated list.
ONLY return a comma separated list, and nothing more."""
human_template = "{text}"
chat_prompt = ChatPromptTemplate.from_messages([
("system", template),
("human", human_template),
])
category_chain = chat_prompt | ChatOpenAI() | CommaSeparatedListOutputParser()
# 2. App definition
app = FastAPI(
title="LangChain Server",
version="1.0",
description="A simple API server using LangChain's Runnable interfaces",
)
# 3. Adding chain route
add_routes(
app,
category_chain,
path="/category_chain",
)
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="localhost", port=8000)
这就是!如果我们执行这个文件:
python Basic/serve.py
我们应该在本地主机的8000端口看到我们的链被提供localhost:8000
。
每个LangServe服务都配有一个简单的内置UI,用于配置和调用具有流式输出和可见中间步骤的应用程序。前往 http://localhost:8000/category_chain/playground/一下吧!
现在让我们为与我们的服务进行程序交互设置客户端。我们可以使用langserve.RemoteRunnable轻松实现这一点。使用它,我们可以像运行客户端一样与服务链进行交互。
from langserve import RemoteRunnable
remote_chain = RemoteRunnable("http://localhost:8000/category_chain/")
remote_chain.invoke({"text": "colors"})
# >> ['red', 'blue', 'green', 'yellow', 'orange']
要了解LangServe的其他许多功能,请点击这里。
我们已经讨论了如何使用LangChain构建应用程序,如何使用LangSmith跟踪它,以及如何使用LangServe提供服务。这三者中都有比我们在这里介绍的更多功能。要继续你的旅程:
https://github.com/zgpeace/pets-name-langchain/tree/develop
https://python.langchain.com/docs/get_started/quickstart