1. ภาพรวมของ LangServe
LangServe เป็นไลบรารีที่ช่วยให้นักพัฒนาสามารถเรียกใช้โปรแกรมและล๊อคของ LangChain
ในรูปแบบของ REST APIs ได้ มันผนวกกับ FastAPI และใช้ pydantic สำหรับการตรวจสอบข้อมูล
2. คุณสมบัติ
LangServe มีคุณสมบัติต่อไปนี้:
- คาดการณ์โหมดการนำเข้าและการส่งออกโดยอัตโนมัติจากอ็อปเจ็กต์ของ LangChain และดำเนินการตรวจสอบสำหรับแต่ละการเรียก API โดยมีข้อความผิดพลาดที่มีประโยชน์
- หน้าเอกสาร API ประกอบด้วย JSONSchema และ Swagger
- เสถียรภาพของ
/invoke/
,/batch/
, และ/stream/
จุดปลายทางที่มีประสิทธิภาพ รองรับคำขอหลายคำขอพร้อมกันบนเซิร์ฟเวอร์เดียว - จุดปลายทาง
/stream_log/
สำหรับการสตรีมข้อมูลทั้งหมด (หรือส่วน) ขั้นตอนกลางของ chain/agent -
คุณสมบัติใหม่ เริ่มต้นตั้งแต่เวอร์ชัน 0.0.40 รองรับ
astream_events
เพื่อทำให้การสตรีมง่ายขึ้นโดยไม่ต้องแยกการแกะเอาเอาผลลัพธ์ของstream_log
- หน้าเล่นเสียงเล่นหน้าให้เสียงออกและขั้นตอนกลาง
- การติดตามทางในงานสร้างภายในไปยัง LangSmith แค่เพิ่ม API key ของคุณมาเท่านั้น
- นำเสนอด้วยไลบรารี Python ที่ถูกทดสอบแล้วเช่น FastAPI, Pydantic, uvloop, และ asyncio
- เรียกเซิร์ฟเวอร์ LangServe โดยใช้ SDK ลูกค้าเพียงแค่เรียกดู Runnable ที่ทำงานอยู่ในระบบเดียวกัน (หรือโอนยังผ่าน HTTP API โดยตรง)
- LangServe Hub
3. ข้อจำกัด
- ยังไม่รองรับการคืนภาคผลลัพธ์สำหรับเหตุการณ์ที่เกิดขึ้นจากเซิร์ฟเวอร์
- เอกสาร OpenAPI ไม่ถูกสร้างขึ้นเมื่อใช้ Pydantic V2 FastAPI ไม่รองรับเนมสเปซ pydantic v1 และ v2 ผสมกัน ดูในส่วนด้านล่างสำหรับข้อมูลเพิ่มเติม
4. การติดตั้ง
คุณสามารถติดตั้ง LangServe โดยใช้คำสั่งต่อไปนี้:
pip install "langserve[all]"
หรือติดตั้งรหัสลูกค้าโดยใช้ pip install "langserve[client]"
, และรหัสเซิร์ฟเวอร์โดยใช้ pip install "langserve[server]"
.
4. ประยุกต์การตัวอย่าง
ด้านล่างเราแสดงตัวอย่างภาพรวมถึงการเผยแพร่โมเดล, chain, และ agent ที่กำหนดไว้ใน LangChain เป็น REST APIs สำหรับแอปพลิเคชั่นอื่นที่ทำการเรียกใช้ หากคุณคุ้นเคยกับ FastAPI, มันเป็นเรื่องง่ายเพียงแค่ใช้คลาสยูทิลิตีที่ให้ไว้โดย langserve
เพื่อลงทะเบียนเส้นทาง FastAPI
ตัวอย่างต่อไปนี้เป็นตัวอย่างของการเรียกใช้โมเดลแชท OpenAI, โมเดลแชท Anthropic, และ chain ที่ใช้โมเดล Anthropic ในการทำให้เรามีฮาเรื่องเรื่องเฉพาะ
นี่คือโค้ดตัวอย่าง:
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="Simple API server using Runnable interface of LangChain",
)
add_routes(
app,
ChatOpenAI(),
path="/openai",
)
add_routes(
app,
ChatAnthropic(),
path="/anthropic",
)
model = ChatAnthropic()
prompt = ChatPromptTemplate.from_template("tell me a joke about {topic}")
add_routes(
app,
prompt | model,
path="/joke",
)
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="localhost", port=8000)
หากคุณตั้งใจที่จะเรียกใช้จุดปลายทางจากเบราว์เซอร์ คุณยังต้องการตั้งค่าส่วนผนวก คุณสามารถทำเช่นนี้โดยใช้ middleware ที่ซี่งเข้ามาใน FastAPI:
from fastapi.middleware.cors import CORSMiddleware
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
expose_headers=["*"],
)
5. เอกสารประกอบ
หลังจากที่รันตัวอย่างนี้ LangServe
จะสร้างเอกสาร API โดยอัตโนมัติสำหรับเส้นทางทั้งหมดที่ลงทะเบียนแล้ว คุณสามารถตรวจสอบเอกสาร OpenAPI ที่สร้างเอาไว้ได้ที่ที่อยู่ต่อไปนี้:
http://localhost:8000/docs
โปรดแน่ใจว่า ต้อง ต่อท้าย ด้วย /docs
⚠️ หากใช้ pydantic v2, เอกสารจะไม่ถูกสร้างสำหรับ invoke, batch, stream, และ stream_log แนะนำให้ใช้เวอร์ชัน pydantic v1 แทน
6. แนะนำเกี่ยวกับ API Routes
ด้านล่างนี้คือการแนะนำอินเทอร์เฟซ API ที่ถูกสร้างขึ้นโดย LangServe
หลังจากลงทะเบียนเส้นทาง API
ตัวอย่างเช่น พิจารณาโค้ดต่อไปนี้:
add_routes(
app,
runnable,
path="/my_runnable",
)
LangServe
จะสร้างอินเทอร์เฟสต่อไปนี้:
-
POST /my_runnable/invoke
- อินเทอร์เฟสสำหรับการเรียกใช้โมเดล -
POST /my_runnable/batch
- อินเทอร์เฟสสำหรับการเรียกใช้โมเดลแบบแบทช์ -
POST /my_runnable/stream
- อินเทอร์เฟสสำหรับการเรียกใช้โมเดลแบบสตรีม -
POST /my_runnable/stream_log
- อินเทอร์เฟสสำหรับการเรียกใช้โมเดลแบบสตรีมพร้อมผลลัพธ์การบันทึก -
POST /my_runnable/astream_events
- การเรียกใช้โมเดลแบบสตรีมแบบไม่ซิงโครนัสพร้อมผลลัพธ์การออกแบบ -
GET /my_runnable/input_schema
- คำอธิบายพารามิเตอร์ของอินเทอร์เฟสสำหรับการเรียกใช้โมเดล -
GET /my_runnable/output_schema
- คำอธิบายของพารามิเตอร์ของอินเทอร์เฟสสำหรับผลลัพธ์ของโมเดล -
GET /my_runnable/config_schema
- คำอธิบายการกำหนดค่าของโมเดล
7. พื้นที่เล่นเสื้อผ้า
LangServe
มีหน้าต่างการแก้ปัญหา UI สำหรับเส้นทางที่ลงทะเบียนไว้ทุกอัน ทำให้ง่ายต่อการแก้ไขข้อบกพร่องของ Chain
, Agent
, และบริการ LangChain อื่น ๆ ที่เรากำหนด
คุณสามารถเข้าถึงตัวอย่างของ Playground
ในรูปแบบต่อไปนี้: เข้าชม /my_runnable/playground/
.