0Pricing
AI Agents · Lekcja

Udostępnianie agentów za API

Opakuj agenta w FastAPI z uwierzytelnianiem, walidacją żądań i strumieniowaniem przez SSE lub WebSockets.

Udostępnianie agentów za API to bezpłatna lekcja AI Agents na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Agents, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Agents zawiera 4 lekcji w sumie.

Części tej lekcji nie zostały jeszcze przetłumaczone i są wyświetlane po angielsku.

Od notebooka do usługi

Działający agent w notebooku to dopiero początek. Aby go wdrożyć, należy opakować go w interfejs API HTTP, z którego mogą korzystać inne usługi.

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)

Uwierzytelnianie

Każdy endpoint agenta musi uwierzytelniać wywołującego. W zależności od typu wywołującego należy używać kluczy API lub 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)):
    ...

Strumieniowanie odpowiedzi

W przypadku interfejsów czatu należy strumieniować tokeny za pomocą 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')

Walidacja żądań

Pydantic wymusza stosowanie typów i przeprowadza podstawową walidację. W razie potrzeby należy dodać niestandardową walidację:

from pydantic import Field

class AgentRequest(BaseModel):
    query: str = Field(min_length=1, max_length=10_000)
    user_id: str
    options: dict = {}

Obsługa błędów

Należy mapować wyjątki na przejrzyste odpowiedzi 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)

Współbieżność

FastAPI domyślnie korzysta z async. W przypadku agentów obciążających CPU (rzadko) lub blokujących SDK należy używać klientów asynchronicznych:

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']

Uruchamianie z wieloma workerami

Uvicorn + Gunicorn w środowisku produkcyjnym:

gunicorn -k uvicorn.workers.UvicornWorker -w 4 main:app

Reverse proxy

Nginx lub Caddy należy umieścić przed aplikacją, aby obsługiwały TLS, gzip i listę dozwolonych adresów 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=['*']
)

Element listy kontrolnej wdrożenia produkcyjnego

Co jest niezbędne w każdym produkcyjnym API agenta?

Podsumowanie

FastAPI + Pydantic + klient asynchroniczny + strumieniowanie + uwierzytelnianie + ustrukturyzowane logi + sondy kondycji. To produkcyjne minimum.

Często zadawane pytania

Czy lekcja „Udostępnianie agentów za API” jest bezpłatna?

Tak — pełny tekst „Udostępnianie agentów za API” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Agents, przejdź na CoddyKit PRO. Kurs AI Agents zawiera 4 lekcji w sumie.

Co nauczysz się w „Udostępnianie agentów za API”?

Opakuj agenta w FastAPI z uwierzytelnianiem, walidacją żądań i strumieniowaniem przez SSE lub WebSockets. Ćwiczysz AI Agents z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć AI Agents?

Nie wymagamy żadnego doświadczenia. AI Agents w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Udostępnianie agentów za API”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji AI Agents?

Tak. Każda lekcja AI Agents zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Udostępnianie agentów za API
  2. Asynchroniczne przepływy pracy i zadania w tle
  3. Ograniczanie częstotliwości i zarządzanie limitami
  4. Wdrożenia blue-green i canary dla agentów
← Powrót do AI Agents