0Pricing
AI Agents · บทเรียน

การให้บริการเอเจนต์ผ่าน 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 response

CORS 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การให้บริการเอเจนต์ผ่าน API
  2. เวิร์กโฟลว์แบบไม่พร้อมกันและงานเบื้องหลัง
  3. การจำกัดอัตราและการจัดการโควตา
  4. การนำเอเจนต์ขึ้นระบบแบบบลู-กรีนและคานารี
← กลับไปที่ AI Agents