1. Gambaran LangServe
LangServe adalah sebuah perpustakaan (library) yang membantu para pengembang menjalankan program dan rantai LangChain
sebagai API REST. LangServe mengintegrasikan FastAPI dan menggunakan pydantic untuk validasi data.
2. Fitur
LangServe memiliki fitur-fitur berikut:
- Secara otomatis menyimpulkan mode masukan dan keluaran dari objek LangChain dan melakukan validasi untuk setiap panggilan API, memberikan pesan error yang kaya
- Halaman dokumentasi API yang berisi JSONSchema dan Swagger
- Titik akhir
/invoke/
,/batch/
, dan/stream/
yang efisien mendukung banyak permintaan bersamaan pada satu server - Titik akhir
/stream_log/
untuk melakukan streaming semua (atau sebagian) langkah-langkah intermediate dari rantai/agen -
Fitur baru sejak versi 0.0.40, mendukung
astream_events
untuk membuat streaming lebih mudah tanpa mengurai keluaran daristream_log
- Halaman
/playground/
dengan keluaran streaming dan langkah-langkah intermediate - Pelacakan bawaan opsional ke LangSmith, hanya dengan menambahkan kunci API Anda
- Dibangun dengan perpustakaan Python sumber terbuka yang telah diuji dalam pertempuran seperti FastAPI, Pydantic, uvloop, dan asyncio
- Memanggil server LangServe menggunakan SDK klien seperti memanggil Runnable lokal (atau langsung memanggil API HTTP)
- LangServe Hub
3. Batasan
- Pemanggilan klien untuk peristiwa yang berasal dari server belum didukung
- Dokumentasi OpenAPI tidak dihasilkan saat menggunakan Pydantic V2. FastAPI tidak mendukung namespace campuran pydantic v1 dan v2. Lihat bagian di bawah untuk lebih jelasnya.
4. Instalasi
Anda dapat menginstal LangServe menggunakan perintah berikut:
pip install "langserve[all]"
Atau instal kode klien menggunakan pip install "langserve[client]"
, dan kode server menggunakan pip install "langserve[server]"
.
4. Contoh Aplikasi
Di bawah ini, kami menunjukkan bagaimana mempublikasikan model, rantai, dan agen yang didefinisikan dalam LangChain sebagai API REST untuk aplikasi lain yang akan memanggilnya. Jika Anda sudah familiar dengan FastAPI, caranya sederhana, cukup menggunakan kelas utilitas yang disediakan oleh langserve
untuk mendaftarkan rute FastAPI.
Berikut contoh kode:
from fastapi import FastAPI
from langchain.prompts import ChatPromptTemplate
from langchain.chat_models import ChatAnthropic, ChatOpenAI
from langserve import add_routes
app = FastAPI(
title="LangChain Server",
version="1.0",
description="Server API sederhana menggunakan antarmuka Runnable dari LangChain",
)
add_routes(
app,
ChatOpenAI(),
path="/openai",
)
add_routes(
app,
ChatAnthropic(),
path="/anthropic",
)
model = ChatAnthropic()
prompt = ChatPromptTemplate.from_template("ceritakan lelucon tentang {topik}")
add_routes(
app,
prompt | model,
path="/joke",
)
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="localhost", port=8000)
Jika Anda berniat memanggil titik akhir dari browser, Anda juga perlu mengatur header CORS. Anda dapat melakukannya dengan menggunakan middleware bawaan dalam FastAPI:
from fastapi.middleware.cors import CORSMiddleware
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
expose_headers=["*"],
)
5. Dokumentasi
Setelah menjalankan contoh di atas, LangServe
secara otomatis menghasilkan dokumentasi API untuk semua rute yang terdaftar. Anda dapat memeriksa dokumentasi OpenAPI yang dihasilkan pada alamat berikut:
http://localhost:8000/docs
Pastikan untuk menambahkan sufiks /docs
.
⚠️ Jika menggunakan pydantic v2, dokumentasi tidak akan dihasilkan untuk invoke, batch, stream, dan stream_log. Disarankan untuk menggunakan versi pydantic v1.
6. Pengenalan tentang Rute API
Berikut adalah pengenalan terhadap antarmuka API yang dihasilkan oleh LangServe
setelah mendaftarkan rute API.
Sebagai contoh, pertimbangkan kode berikut:
add_routes(
app,
runnable,
path="/my_runnable",
)
LangServe
akan menghasilkan antarmuka berikut:
-
POST /my_runnable/invoke
- Antarmuka untuk pemanggilan model -
POST /my_runnable/batch
- Antarmuka untuk pemanggilan model secara batch -
POST /my_runnable/stream
- Antarmuka untuk pemanggilan model secara streaming -
POST /my_runnable/stream_log
- Antarmuka untuk pemanggilan model secara streaming dengan output log -
POST /my_runnable/astream_events
- Pemanggilan model streaming asinkron dengan output acara -
GET /my_runnable/input_schema
- Deskripsi parameter antarmuka untuk pemanggilan model -
GET /my_runnable/output_schema
- Deskripsi parameter antarmuka untuk output model -
GET /my_runnable/config_schema
- Deskripsi konfigurasi model
7. Playground
LangServe
menyediakan halaman debug UI untuk setiap rute yang terdaftar, sehingga memudahkan untuk mendepan Chain
, Agent
, dan layanan LangChain lainnya yang kita definisikan.
Anda dapat mengakses contoh Playground
dalam format berikut: kunjungi /my_runnable/playground/
.