Ndërtimi i një API LLM me performancë të lartë dhe gati për prodhim me FastAPI: Një udhëzues hap pas hapi

2/19/2026
6 min read

Ndërtimi i një API LLM me performancë të lartë dhe gati për prodhim me FastAPI: Një udhëzues hap pas hapi

FastAPI, si një kornizë moderne dhe me performancë të lartë Python Web, është e njohur për lehtësinë e përdorimit, shpejtësinë dhe dokumentacionin e API-ve të gjeneruara automatikisht. Sidomos në ndërtimin e API-ve të backend për aplikacionet LLM (Large Language Model), FastAPI tregon avantazhe të forta. Ky artikull do t'ju mësojë hap pas hapi se si të ndërtoni një API LLM gati për prodhim duke përdorur FastAPI dhe të eksploroni disa praktika më të mira.

Pse të zgjidhni FastAPI?

Kur ndërtoni API për aplikacionet LLM, FastAPI ofron avantazhet kryesore të mëposhtme:

  • Performancë e lartë: Bazuar në ASGI, FastAPI mund të trajtojë kërkesa me konkurencë të lartë, gjë që është thelbësore për aplikacionet LLM që kërkojnë përgjigje të shpejta.
  • Mbështetje asinkrone: FastAPI ka mbështetje të integruar për fjalët kyçe async dhe await, të cilat mund të përdoren për të trajtuar lehtësisht operacionet asinkrone, si p.sh. thirrja e inferencës LLM, duke shmangur bllokimin e fijeve kryesore.
  • Dokumentacioni automatik i API-ve: FastAPI përdor OpenAPI dhe JSON Schema për të gjeneruar automatikisht dokumentacion interaktiv të API-ve (Swagger UI), duke e bërë të lehtë për zhvilluesit të testojnë dhe përdorin API-n tuaj.
  • Validimi i të dhënave: FastAPI përdor Pydantic për të validuar të dhënat, duke siguruar saktësinë e parametrave të kërkesës dhe duke reduktuar gabimet.
  • Injektimi i varësive: Sistemi i injektimit të varësive të FastAPI mund të menaxhojë dhe ndajë lehtësisht burimet, si p.sh. modelet LLM.
  • Komunitet aktiv: FastAPI ka një komunitet të madh dhe aktiv, ku mund të gjeni burime dhe mbështetje të bollshme.

Përgatitja

  1. Instaloni Python: Sigurohuni që të keni instaluar Python 3.7 ose më të lartë.

  2. Instaloni FastAPI dhe Uvicorn: Përdorni pip për të instaluar FastAPI dhe Uvicorn (server ASGI):

    pip install fastapi uvicorn
    
  3. Zgjidhni një model LLM: Zgjidhni modelin LLM që dëshironi të përdorni. Mund të jetë një model nga OpenAI, ose një model me burim të hapur, si p.sh. TinyLlama. Nëse zgjidhni OpenAI, duhet të merrni një çelës API OpenAI. Nëse zgjidhni TinyLlama, duhet të shkarkoni skedarin e modelit.

Hapi 1: Krijimi i një aplikacioni FastAPI

Krijoni një skedar të quajtur main.py dhe shtoni kodin e mëposhtëm:

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

Ky kod përcakton një aplikacion FastAPI dhe përcakton dy modele Pydantic: InputText për të marrë tekstin hyrës dhe OutputText për të kthyer tekstin e gjeneruar.

Hapi 2: Shtimi i logjikës së inferencës LLM

Sipas modelit LLM që keni zgjedhur, shtoni logjikën përkatëse të inferencës. Këtu, si shembull, përdorim API-n OpenAI:

import openai
import os

# Merrni çelësin API OpenAI
openai.api_key = os.environ.get("OPENAI_API_KEY")  # Rekomandohet përdorimi i variablave të mjedisit
@app.post("/generate", response_model=OutputText)
async def generate_text(input_text: InputText):
    """
    Generates text based on the input text using OpenAI.
    """
    try:
        response = openai.Completion.create(
            engine="text-davinci-003", # Zgjidhni modelin
            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))

Kjo pjesë kodi definon një rrugë /generate, e cila pranon një objekt InputText si hyrje, thërret OpenAI API për të gjeneruar tekst dhe e kthen tekstin e gjeneruar si një objekt OutputText. Kini kujdes të zëvendësoni text-davinci-003 me modelin e duhur që keni zgjedhur.

Nëse përdorni modele lokale si TinyLlama, duhet të instaloni bibliotekat përkatëse, si p.sh. transformers, dhe ta ngarkoni modelin në memorie. Shembull kodi si më poshtë:

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):
    """
    Generates text based on the input text using 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))

Hapi 3: Ekzekutoni aplikacionin FastAPI

Përdorni Uvicorn për të ekzekutuar aplikacionin FastAPI:

uvicorn main:app --reload
```Kjo do të nisë një server lokal, të cilin mund ta vizitoni në shfletuesin tuaj në `http://127.0.0.1:8000/docs` për të parë dokumentacionin e gjeneruar automatikisht të API-së. Parametri `--reload` mund të rindezë automatikisht serverin pas modifikimeve të kodit, duke e bërë më të lehtë zhvillimin.

## Hapi 4: Testimi i API-së

Përdorni dokumentacionin e API-së ose mjete si curl për të testuar API-në tuaj. Për shembull, përdorni curl për të dërguar një kërkesë POST:

```bash
curl -X POST -H "Content-Type: application/json" -d '{"text": "Më trego një shaka për macet."}' http://127.0.0.1:8000/generate

Duhet të merrni një përgjigje JSON që përmban tekstin e gjeneruar.

Hapi 5: Shpërndarja në Prodhimi

Shpërndani aplikacionin tuaj FastAPI në një mjedis prodhimi, për shembull:

  • Docker: Përdorni Docker për të kontejnerizuar aplikacionin tuaj, duke e bërë më të lehtë shpërndarjen dhe menaxhimin.
  • Platforma Cloud: Shpërndani në një platformë cloud, si AWS, Google Cloud Platform ose Azure. Azure Cosmos DB dhe Azure Functions të përmendura në tekst mund të përdoren për të ndërtuar API pa server. Modal mund të përdoret gjithashtu për të shpërndarë aplikacione FastAPI që zgjerohen automatikisht.
  • Server: Shpërndani në serverin tuaj.

Praktikat më të Mira

  • Përdorni variablat e mjedisit për të ruajtur informacione të ndjeshme: Mos kodoni fort informacione të ndjeshme si çelësat e API-së në kod, por përdorni variablat e mjedisit.
  • Shtoni regjistrimin e logeve: Përdorni modulin e regjistrimit të logeve për të regjistruar statusin e funksionimit të API-së, duke e bërë më të lehtë korrigjimin dhe monitorimin.
  • Shtoni trajtimin e gabimeve: Përdorni blloqet try...except për të trajtuar përjashtimet e mundshme dhe për të kthyer mesazhe të përshtatshme gabimi.
  • Kufizimi i shpejtësisë: Përdorni një kufizues shpejtësie për të parandaluar abuzimin e API-së. FastAPI ka disa biblioteka të gatshme për kufizimin e shpejtësisë të disponueshme.
  • Caching: Për kërkesat e përsëritura, mund të përdorni caching për të përmirësuar performancën.
  • Monitorimi: Përdorni mjete monitorimi për të monitoruar performancën dhe disponueshmërinë e API-së.

Truket e Avancuara

  • Përpunimi asinkron: Për arsyetimin e LLM që kërkon kohë, përdorni fjalët kyçe async dhe await për përpunim asinkron, duke shmangur bllokimin e fijeve kryesore.
  • Përgjigje rrjedhëse: Përdorimi i përgjigjeve rrjedhëse (StreamingResponse) mund të kthejë tekstin e gjeneruar në kohë reale, duke përmirësuar përvojën e përdoruesit.
  • Shumëfijëzimi/Shumëprocesimi: Për arsyetimin e LLM që është intensiv në CPU, mund të përdorni shumëfijëzimin ose shumëprocesimin për të përmirësuar performancën.
  • Përshpejtimi i GPU-së: Nëse modeli juaj LLM mbështet përshpejtimin e GPU-së, mund të përdorni CUDA ose biblioteka të tjera përshpejtimi të GPU-së për të përmirësuar shpejtësinë e arsyetimit.

PërfundimFastAPI është një mjet i fuqishëm për ndërtimin e API-ve LLM me performancë të lartë dhe gati për prodhim. Nëpërmjet udhëzimeve të këtij artikulli, ju mund të ngriheni shpejt një API LLM dhe ta zgjeroni dhe optimizoni atë sipas nevojave tuaja. Mbani mend, mësimi dhe praktika e vazhdueshme janë çelësi për t'u bërë një zhvillues i shkëlqyer i aplikacioneve LLM. Hornbeam i përmendur në artikull është gjithashtu një server ASGI që meriton vëmendje, duke pretenduar se është më i shpejtë dhe më i qëndrueshëm se Gunicorn, dhe mund të përdoret për të vendosur aplikacione FastAPI.

Published in Technology

You Might Also Like