Der Weg vom Jupyter-Notebook zur Production-API ist weit. LangServe, FastAPI-Integration, Streaming, Error Handling und Skalierung — hier lernen Sie, LangChain-Anwendungen produktionsreif zu deployen.
LangServe verwandelt jede LangChain-Chain in eine REST-API:
from fastapi import FastAPI
from langserve import add_routes
app = FastAPI(title="Agent API")
add_routes(app, rag_chain, path="/rag")
add_routes(app, agent_chain, path="/agent")
| Endpoint | Methode | Beschreibung |
|---|---|---|
/rag/invoke | POST | Synchroner Aufruf |
/rag/stream | POST | Server-Sent Events Streaming |
/rag/batch | POST | Batch-Verarbeitung |
/rag/input_schema | GET | Input-Schema (JSON Schema) |
/rag/playground | GET | Interaktiver Playground |
Streaming ist kritisch für gute User Experience. LangServe unterstützt verschiedene Streaming-Modi:
# Server-Side
from langserve import add_routes
add_routes(app, chain, path="/chat")
# Client-Side
from langserve import RemoteRunnable
remote = RemoteRunnable("http://localhost:8000/chat")
async for chunk in remote.astream({"question": "Was ist RAG?"}):
print(chunk, end="", flush=True)
from langchain_core.runnables import RunnableWithFallbacks
chain_with_fallback = primary_chain.with_fallbacks(
[fallback_chain],
exceptions_to_handle=(TimeoutError, RateLimitError)
)
Bei wiederholten Fehlern den Service temporär deaktivieren:
| Strategie | Beschreibung | Wann |
|---|---|---|
| Horizontal | Mehrere Instanzen hinter Load Balancer | Viele gleichzeitige Requests |
| Queue-Based | Celery/Redis für async Processing | Lang laufende Agent-Tasks |
| Caching | Semantic Cache für häufige Queries | Wiederkehrende Fragen |
| Batch | Requests bündeln und parallel verarbeiten | Batch-Verarbeitung |
LLM-Kosten können schnell eskalieren. Strategien zur Optimierung:
Praxis-Tipp: Deployen Sie frühzeitig eine minimale Version. Ein einfacher Endpoint mit einer Chain ist besser als ein perfektes lokales Notebook. Iterieren Sie in Production — mit Tracing und Evaluation als Sicherheitsnetz.
Was macht LangServe?