Byg højtydende, produktionsklar LLM API med FastAPI: En trin-for-trin guide

2/19/2026
6 min read

Byg højtydende, produktionsklar LLM API med FastAPI: En trin-for-trin guide

FastAPI, som et moderne, højtydende Python Web framework, er populært på grund af dets brugervenlighed, hastighed og automatisk genererede API-dokumentation. Især inden for opbygning af backend API'er til LLM (Large Language Model) applikationer, viser FastAPI stærke fordele. Denne artikel vil trin for trin lære dig, hvordan du bruger FastAPI til at bygge en produktionsklar LLM API og udforske nogle bedste praksisser.

Hvorfor vælge FastAPI?

Når du bygger API'er til LLM-applikationer, giver FastAPI følgende vigtige fordele:

  • Høj ydeevne: Baseret på ASGI kan FastAPI håndtere høje samtidige forespørgsler, hvilket er afgørende for LLM-applikationer, der kræver hurtig respons.
  • Asynkron support: FastAPI har indbygget understøttelse af async og await nøgleordene, hvilket gør det nemt at håndtere asynkrone operationer, såsom at kalde LLM-inferens, og undgå at blokere hovedtråden.
  • Automatisk API-dokumentation: FastAPI bruger OpenAPI og JSON Schema til automatisk at generere interaktiv API-dokumentation (Swagger UI), hvilket gør det nemt for udviklere at teste og bruge din API.
  • Datavalidering: FastAPI bruger Pydantic til datavalidering, hvilket sikrer korrektheden af ​​anmodningsparametre og reducerer fejl.
  • Dependency Injection: FastAPIs dependency injection system gør det nemt at administrere og dele ressourcer, såsom LLM-modeller.
  • Aktivt fællesskab: FastAPI har et stort og aktivt fællesskab, hvor du kan få adgang til rige ressourcer og support.

Forberedelse

  1. Installer Python: Sørg for, at du har installeret Python 3.7 eller nyere.

  2. Installer FastAPI og Uvicorn: Brug pip til at installere FastAPI og Uvicorn (ASGI-server):

    pip install fastapi uvicorn
    
  3. Vælg LLM-model: Vælg den LLM-model, du vil bruge. Det kan være en OpenAI-model eller en open source-model, såsom TinyLlama. Hvis du vælger OpenAI, skal du få en OpenAI API-nøgle. Hvis du vælger TinyLlama, skal du downloade modelfilen.

Trin 1: Opret en FastAPI-applikation

Opret en fil ved navn main.py, og tilføj følgende kode:

from fastapi import FastAPI, HTTPException
from pydantic import BaseModel

app = FastAPI(title="LLM API", description="A simple API for interacting with LLMs.")

class InputText(BaseModel):
    text: str

class OutputText(BaseModel):
    generated_text: str

Denne kode definerer en FastAPI-applikation og definerer to Pydantic-modeller: InputText bruges til at modtage inputtekst, og OutputText bruges til at returnere den genererede tekst.

Trin 2: Tilføj LLM-inferenslogik

Tilføj den tilsvarende inferenslogik baseret på den LLM-model, du har valgt. Her er et eksempel på brug af OpenAI API:

import openai
import os

# Hent OpenAI API-nøglen
openai.api_key = os.environ.get("OPENAI_API_KEY")  # Det anbefales at bruge miljøvariabler
```@app.post("/generate", response_model=OutputText)
async def generate_text(input_text: InputText):
    """
    Genererer tekst baseret på inputteksten ved hjælp af OpenAI.
    """
    try:
        response = openai.Completion.create(
            engine="text-davinci-003", # Vælg model
            prompt=input_text.text,
            max_tokens=150,
            n=1,
            stop=None,
            temperature=0.7,
        )
        generated_text = response.choices[0].text.strip()
        return OutputText(generated_text=generated_text)
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))

Dette kodeafsnit definerer en /generate rute, der modtager et InputText objekt som input, kalder OpenAI API'en for at generere tekst og returnerer den genererede tekst som et OutputText objekt. Husk at erstatte text-davinci-003 med den model, du vælger.

Hvis du bruger en lokal model som TinyLlama, skal du installere de relevante biblioteker, f.eks. transformers, og indlæse modellen i hukommelsen. Et kodeeksempel følger:

from transformers import pipeline
import torch

generator = pipeline('text-generation', model="TinyLlama/TinyLlama-1.1B-Chat-v1.0", torch_dtype=torch.bfloat16, device_map="auto")

@app.post("/generate", response_model=OutputText)
async def generate_text(input_text: InputText):
    """
    Genererer tekst baseret på inputteksten ved hjælp af TinyLlama.
    """
    try:
        generated_text = generator(input_text.text, max_length=50, do_sample=True, temperature=0.7)[0]['generated_text']
        return OutputText(generated_text=generated_text)
    except Exception as e:
        raise HTTPException(status_code=500, detail=str(e))

Trin 3: Kør FastAPI-applikationen

Kør FastAPI-applikationen ved hjælp af Uvicorn:

uvicorn main:app --reload
```Dette vil starte en lokal server, som du kan få adgang til i din browser via `http://127.0.0.1:8000/docs` for at se den automatisk genererede API-dokumentation. `--reload` parameteren kan automatisk genstarte serveren, når koden ændres, hvilket gør udviklingen nemmere. // Dette gør udviklingen nemmere.

## Trin 4: Test API'en

Brug API-dokumentationen eller værktøjer som curl til at teste din API. For eksempel, brug curl til at sende en POST-anmodning:

```bash
curl -X POST -H "Content-Type: application/json" -d '{"text": "Tell me a joke about cats."}' http://127.0.0.1:8000/generate

Du bør modtage et JSON-svar, der indeholder den genererede tekst.

Trin 5: Produktionsimplementering

Implementer din FastAPI-applikation i et produktionsmiljø, for eksempel:

  • Docker: Brug Docker til at containerisere din applikation for nem implementering og administration. // Gør det nemt at implementere og administrere.
  • Cloud-platform: Implementer til en cloud-platform, såsom AWS, Google Cloud Platform eller Azure. // Eksempler på cloud-platforme. Azure Cosmos DB og Azure Functions, der nævnes i teksten, kan bruges til at bygge serverless API'er. Modal kan også bruges til at implementere automatisk skalerende FastAPI-applikationer.
  • Server: Implementer til din egen server.

Bedste praksis

  • Brug miljøvariabler til at gemme følsomme oplysninger: Undgå at hardcode følsomme oplysninger som API-nøgler i koden, og brug i stedet miljøvariabler. // Brug i stedet miljøvariabler.
  • Tilføj logføring: Brug logføringsmodulet til at registrere API'ens driftsstatus for nem fejlfinding og overvågning. // For nem fejlfinding og overvågning.
  • Tilføj fejlhåndtering: Brug try...except blokke til at håndtere potentielle undtagelser og returnere passende fejlmeddelelser. // Og returner passende fejlmeddelelser.
  • Hastighedsbegrænsning: Brug en hastighedsbegrænser til at forhindre misbrug af API'en. FastAPI har nogle færdiglavede hastighedsbegrænsningsbiblioteker tilgængelige. // FastAPI har nogle færdiglavede hastighedsbegrænsningsbiblioteker tilgængelige.
  • Caching: For gentagne anmodninger kan du bruge caching til at forbedre ydeevnen.
  • Overvågning: Brug overvågningsværktøjer til at overvåge API'ens ydeevne og tilgængelighed.

Avancerede tips

  • Asynkron behandling: For tidskrævende LLM-inferens skal du bruge async og await nøgleordene til asynkron behandling for at undgå at blokere hovedtråden. // Undgå at blokere hovedtråden.
  • Streaming-respons: Brug streaming-respons (StreamingResponse) til at returnere den genererede tekst i realtid og forbedre brugeroplevelsen. // Forbedre brugeroplevelsen.
  • Multithreading/multiprocessing: For CPU-intensive LLM-inferens kan du bruge multithreading eller multiprocessing til at forbedre ydeevnen.
  • GPU-acceleration: Hvis din LLM-model understøtter GPU-acceleration, kan du bruge CUDA eller andre GPU-accelerationsbiblioteker til at øge inferenshastigheden.

KonklusionFastAPI er et kraftfuldt værktøj til at bygge højtydende, produktionsklare LLM API'er. Gennem denne artikels guide kan du hurtigt opsætte en LLM API og udvide og optimere den efter dine behov. Husk, at kontinuerlig læring og praksis er nøglen til at blive en fremragende LLM applikationsudvikler. Hornbeam, der nævnes i artiklen, er også en ASGI-server, der er værd at holde øje med, og som hævder at være hurtigere og mere stabil end Gunicorn, og som kan bruges til at deploye FastAPI-applikationer.

Published in Technology

You Might Also Like