mirror of
https://github.com/hwchase17/langchain
synced 2024-10-29 17:07:25 +00:00
b05bb9e136
Adds LangServe package * Integrate Runnables with Fast API creating Server and a RemoteRunnable client * Support multiple runnables for a given server * Support sync/async/batch/abatch/stream/astream/astream_log on the client side (using async implementations on server) * Adds validation using annotations (relying on pydantic under the hood) -- this still has some rough edges -- e.g., open api docs do NOT generate correctly at the moment * Uses pydantic v1 namespace Known issues: type translation code doesn't handle a lot of types (e.g., TypedDicts) --------- Co-authored-by: Bagatur <22008038+baskaryan@users.noreply.github.com>
34 lines
829 B
Python
Executable File
34 lines
829 B
Python
Executable File
#!/usr/bin/env python
|
|
"""Example LangChain server exposes a chain composed of a prompt and an LLM."""
|
|
from fastapi import FastAPI
|
|
from langchain.chat_models import ChatOpenAI
|
|
from langchain.prompts import ChatPromptTemplate
|
|
from typing_extensions import TypedDict
|
|
|
|
from langserve import add_routes
|
|
|
|
model = ChatOpenAI()
|
|
prompt = ChatPromptTemplate.from_template("tell me a joke about {topic}")
|
|
chain = prompt | model
|
|
|
|
app = FastAPI(
|
|
title="LangChain Server",
|
|
version="1.0",
|
|
description="Spin up a simple api server using Langchain's Runnable interfaces",
|
|
)
|
|
|
|
|
|
class ChainInput(TypedDict):
|
|
"""The input to the chain."""
|
|
|
|
topic: str
|
|
"""The topic of the joke."""
|
|
|
|
|
|
add_routes(app, chain, input_type=ChainInput)
|
|
|
|
if __name__ == "__main__":
|
|
import uvicorn
|
|
|
|
uvicorn.run(app, host="localhost", port=8000)
|