การให้บริการเอเจนต์ผ่าน API
ห่อหุ้มเอเจนต์ด้วย FastAPI พร้อมการยืนยันตัวตน การตรวจสอบคำขอ และการส่งข้อมูลแบบสตรีมผ่าน SSE หรือ WebSockets
การให้บริการเอเจนต์ผ่าน API เป็นบทเรียน AI Agents ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Agents และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ
จากสมุดบันทึกสู่บริการ
ตัวแทนที่ทำงานได้ในสมุดบันทึกเป็นเพียงจุดเริ่มต้น เมื่อต้องนำไปใช้งานจริง ให้ห่อหุ้มตัวแทนไว้ใน API HTTP ที่บริการอื่นเรียกใช้ได้
FastAPI Skeleton
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class AgentRequest(BaseModel):
query: str
user_id: str
class AgentResponse(BaseModel):
answer: str
trace_id: str
@app.post('/agents/qa', response_model=AgentResponse)
def qa(req: AgentRequest):
trace_id = run_agent(req.query, req.user_id)
return AgentResponse(answer=result.answer, trace_id=trace_id)การยืนยันตัวตน
จุดเชื่อมต่อของตัวแทนทุกจุดต้องยืนยันตัวตน ใช้คีย์ API หรือ OAuth ตามประเภทของผู้เรียก:
from fastapi import Header, HTTPException
def require_api_key(api_key: str = Header(alias='X-API-Key')):
if not is_valid(api_key):
raise HTTPException(401, 'Invalid API key')
return api_key
@app.post('/agents/qa')
def qa(req: AgentRequest, key=Depends(require_api_key)):
...การตอบกลับแบบสตรีม
สำหรับส่วนติดต่อผู้ใช้แบบสนทนา ให้สตรีมโทเคนด้วย SSE:
from fastapi.responses import StreamingResponse
@app.post('/agents/qa/stream')
def qa_stream(req: AgentRequest):
def gen():
for chunk in stream_agent(req.query):
yield f'data: {chunk}\n\n'
yield 'data: [DONE]\n\n'
return StreamingResponse(gen(), media_type='text/event-stream')การตรวจสอบคำขอ
Pydantic บังคับใช้ชนิดข้อมูลและการตรวจสอบพื้นฐาน เพิ่มการตรวจสอบแบบกำหนดเองตามความจำเป็น:
from pydantic import Field
class AgentRequest(BaseModel):
query: str = Field(min_length=1, max_length=10_000)
user_id: str
options: dict = {}การจัดการข้อผิดพลาด
แปลงข้อยกเว้นเป็นการตอบกลับ HTTP ที่สะอาด:
from fastapi import HTTPException
@app.exception_handler(BudgetExceeded)
def budget_handler(req, exc):
return JSONResponse({'error': 'budget-exceeded'}, status_code=429)
@app.exception_handler(Exception)
def catch_all(req, exc):
log.exception('Unhandled')
return JSONResponse({'error': 'internal', 'trace_id': get_trace_id()}, status_code=500)การทำงานพร้อมกัน
FastAPI ใช้การทำงานแบบอะซิงโครนัสเป็นค่าเริ่มต้น สำหรับตัวแทนที่ใช้ CPU หนัก (พบไม่บ่อย) หรือชุดพัฒนาซอฟต์แวร์ที่ทำงานแบบบล็อก ให้ใช้ไคลเอ็นต์แบบอะซิงโครนัส:
from openai import AsyncOpenAI
client = AsyncOpenAI()
async def run_agent_async(query):
return await client.chat.completions.create(...)Health and Readiness Endpoints
@app.get('/healthz')
def healthz():
return {'status': 'ok'}
@app.get('/readyz')
def readyz():
if not vector_db.is_healthy():
raise HTTPException(503)
return {'status': 'ready'}Containerise
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ['uvicorn', 'main:app', '--host', '0.0.0.0', '--port', '8080']เรียกใช้ด้วยตัวประมวลผลหลายตัว
Uvicorn + Gunicorn สำหรับระบบจริง:
gunicorn -k uvicorn.workers.UvicornWorker -w 4 main:appพร็อกซีย้อนกลับ
โปรดวาง Nginx หรือ Caddy ไว้ด้านหน้าเพื่อจัดการ TLS, gzip และการอนุญาตรายการ IP
Logging Structured Output
import structlog
log = structlog.get_logger()
@app.middleware('http')
async def log_requests(request, call_next):
response = await call_next(request)
log.info('http', method=request.method, path=request.url.path, status=response.status_code)
return responseCORS for Browser Clients
from fastapi.middleware.cors import CORSMiddleware
app.add_middleware(
CORSMiddleware,
allow_origins=['https://app.example.com'],
allow_methods=['*'], allow_headers=['*']
)รายการตรวจสอบสำหรับระบบใช้งานจริง
สิ่งใดจำเป็นสำหรับ API ของเอเจนต์ที่ใช้งานจริง
สรุปทบทวน
FastAPI + Pydantic + ไคลเอนต์แบบอะซิงโครนัส + การสตรีม + การยืนยันตัวตน + บันทึกแบบมีโครงสร้าง + โพรบตรวจสุขภาพ นี่คือองค์ประกอบขั้นต่ำสำหรับระบบใช้งานจริง
คำถามที่พบบ่อย
บทเรียน “การให้บริการเอเจนต์ผ่าน API” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การให้บริการเอเจนต์ผ่าน API” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Agents ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การให้บริการเอเจนต์ผ่าน API”
ห่อหุ้มเอเจนต์ด้วย FastAPI พร้อมการยืนยันตัวตน การตรวจสอบคำขอ และการส่งข้อมูลแบบสตรีมผ่าน SSE หรือ WebSockets คุณปฏิบัติ AI Agents ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Agents หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Agents บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “การให้บริการเอเจนต์ผ่าน API” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน AI Agents นี้ได้ไหม
ได้ บทเรียน AI Agents ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การให้บริการเอเจนต์ผ่าน API
- เวิร์กโฟลว์แบบไม่พร้อมกันและงานเบื้องหลัง
- การจำกัดอัตราและการจัดการโควตา
- การนำเอเจนต์ขึ้นระบบแบบบลู-กรีนและคานารี