Bruke FastAPI for å bygge en høyytelses, produksjonsklar LLM API: En trinnvis veiledning

2/19/2026
5 min read

Bruke FastAPI for å bygge en høyytelses, produksjonsklar LLM API: En trinnvis veiledning

FastAPI, som et moderne, høyytelses Python Web-rammeverk, er populært for sin brukervennlighet, hastighet og automatisk genererte API-dokumentasjon. Spesielt når det gjelder å bygge backend-API-er for LLM (Large Language Model) applikasjoner, viser FastAPI en sterk fordel. Denne artikkelen vil trinnvis lære deg hvordan du bruker FastAPI til å bygge en produksjonsklar LLM API, og utforske noen beste praksiser.

Hvorfor velge FastAPI?

Når du bygger API-er for LLM-applikasjoner, gir FastAPI følgende viktige fordeler:

  • Høy ytelse: Basert på ASGI kan FastAPI håndtere høye samtidige forespørsler, noe som er avgjørende for LLM-applikasjoner som krever rask respons.
  • Asynkron støtte: FastAPI har innebygd støtte for async og await nøkkelordene, som enkelt kan håndtere asynkrone operasjoner, for eksempel å kalle LLM-inferens, og unngå å blokkere hovedtråden.
  • Automatisk API-dokumentasjon: FastAPI bruker OpenAPI og JSON Schema for automatisk å generere interaktiv API-dokumentasjon (Swagger UI), som gjør det enkelt for utviklere å teste og bruke API-et ditt.
  • Datavalidering: FastAPI bruker Pydantic for datavalidering, og sikrer at forespørselsparametrene er korrekte, og reduserer feil.
  • Avhengighetsinjeksjon: FastAPIs avhengighetsinjeksjonssystem kan enkelt administrere og dele ressurser, for eksempel LLM-modeller.
  • Aktivt fellesskap: FastAPI har et stort og aktivt fellesskap, og du kan få rikelig med ressurser og støtte.

Forberedelser

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

  2. Installer FastAPI og Uvicorn: Bruk pip til å installere FastAPI og Uvicorn (ASGI-server):

    pip install fastapi uvicorn
    
  3. Velg LLM-modell: Velg LLM-modellen du vil bruke. Det kan være en OpenAI-modell, eller en åpen kildekode-modell, for eksempel TinyLlama. Hvis du velger OpenAI, må du skaffe deg en OpenAI API-nøkkel. Hvis du velger TinyLlama, må du laste ned modellfilen.

Trinn 1: Opprett en FastAPI-applikasjon

Opprett en fil med navnet main.py, og legg til 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 koden definerer en FastAPI-applikasjon og definerer to Pydantic-modeller: InputText brukes til å motta inndatatekst, og OutputText brukes til å returnere generert tekst.

Trinn 2: Legg til LLM-inferenslogikk

Legg til den tilsvarende inferenslogikken basert på LLM-modellen du velger. Her er et eksempel på bruk av OpenAI API:

import openai
import os

# Hent OpenAI API-nøkkel
openai.api_key = os.environ.get("OPENAI_API_KEY")  # Anbefales å bruke miljøvariabler
```@app.post("/generate", response_model=OutputText)
async def generate_text(input_text: InputText):
    """
    Genererer tekst basert på inndatateksten ved hjelp av OpenAI.
    """
    try:
        response = openai.Completion.create(
            engine="text-davinci-003", # Velg modell
            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))

Denne koden definerer en /generate-rute som mottar et InputText-objekt som input, kaller OpenAI API for å generere tekst, og returnerer den genererte teksten som et OutputText-objekt. Husk å erstatte text-davinci-003 med den modellen du velger.

Hvis du bruker lokale modeller som TinyLlama, må du installere de tilhørende bibliotekene, for eksempel transformers, og laste modellen inn i minnet. Kodeeksempel som 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 basert på inndatateksten ved hjelp av 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))

Steg 3: Kjør FastAPI-applikasjonen

Kjør FastAPI-applikasjonen med Uvicorn:

uvicorn main:app --reload
```Dette vil starte en lokal server, og du kan besøke `http://127.0.0.1:8000/docs` i nettleseren din for å se den automatisk genererte API-dokumentasjonen. `--reload`-parameteren kan automatisk starte serveren på nytt etter at koden er endret, noe som er praktisk for utvikling.

## Steg 4: Test API

Bruk API-dokumentasjonen eller verktøy som curl for å teste API-et ditt. For eksempel, bruk curl til å sende en POST-forespørsel:

```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 motta et JSON-svar som inneholder den genererte teksten.

Steg 5: Produksjonsdistribusjon

Distribuer FastAPI-applikasjonen din til et produksjonsmiljø, for eksempel:

  • Docker: Bruk Docker til å containerisere applikasjonen din, noe som gjør det enkelt å distribuere og administrere.
  • Skyplattform: Distribuer til en skyplattform, for eksempel AWS, Google Cloud Platform eller Azure. Azure Cosmos DB og Azure Functions som er nevnt i artikkelen kan brukes til å bygge serverless API-er. Modal kan også brukes til å distribuere automatisk skalerende FastAPI-applikasjoner.
  • Server: Distribuer til din egen server.

Beste praksis

  • Bruk miljøvariabler for å lagre sensitiv informasjon: Ikke hardkod sensitiv informasjon som API-nøkler i koden din, men bruk heller miljøvariabler.
  • Legg til logging: Bruk loggingsmodulen til å registrere driftsstatusen til API-et, noe som er praktisk for feilsøking og overvåking.
  • Legg til feilhåndtering: Bruk try...except-blokker for å håndtere mulige unntak og returnere passende feilmeldinger.
  • Hastighetsbegrensning: Bruk en hastighetsbegrenser for å forhindre misbruk av API-et. Det finnes noen ferdige hastighetsbegrensningsbiblioteker tilgjengelig for FastAPI.
  • Cache: For gjentatte forespørsler kan du bruke cache for å forbedre ytelsen.
  • Overvåking: Bruk overvåkingsverktøy for å overvåke ytelsen og tilgjengeligheten til API-et.

Avanserte tips

  • Asynkron behandling: For tidkrevende LLM-inferens, bruk async og await-nøkkelordene for asynkron behandling for å unngå å blokkere hovedtråden.
  • Strømmende respons: Bruk strømmende respons (StreamingResponse) for å returnere generert tekst i sanntid, noe som forbedrer brukeropplevelsen.
  • Multitråding/multiprocessing: For CPU-intensive LLM-inferenser kan du bruke multitråding eller multiprocessing for å forbedre ytelsen.
  • GPU-akselerasjon: Hvis din LLM-modell støtter GPU-akselerasjon, kan du bruke CUDA eller andre GPU-akselerasjonsbiblioteker for å øke inferenshastigheten.

KonklusjonFastAPI er et kraftfullt verktøy for å bygge høyytelses, produksjonsklare LLM API-er. Gjennom denne veiledningen kan du raskt sette opp et LLM API og utvide og optimalisere det i henhold til dine behov. Husk at kontinuerlig læring og praksis er nøkkelen til å bli en dyktig LLM-applikasjonsutvikler. Hornbeam som er nevnt i artikkelen er også en ASGI-server som er verdt å følge med på, den hevder å være raskere og mer stabil enn Gunicorn, og kan brukes til å distribuere FastAPI-applikasjoner.

Published in Technology

You Might Also Like