Коришћење FastAPI-ја за изградњу високо-перформансних, производно спремних LLM API-ја: Водич корак по корак

2/19/2026
5 min read

Коришћење FastAPI-ја за изградњу високо-перформансних, производно спремних LLM API-ја: Водич корак по корак

FastAPI, као модеран, високо-перформансан Python Web framework, је популаран због своје лакоће коришћења, брзине и аутоматски генерисане API документације. Посебно у изградњи LLM (Large Language Model) апликација за backend API, FastAPI показује велике предности. Овај чланак ће вас корак по корак научити како да користите FastAPI за изградњу производно спремног LLM API-ја, и истражити неке најбоље праксе.

Зашто одабрати FastAPI?

Приликом изградње API-ја за LLM апликације, FastAPI нуди следеће кључне предности:

  • Високе перформансе: Заснован на ASGI, FastAPI може да обрађује велики број истовремених захтева, што је кључно за LLM апликације које захтевају брз одговор.
  • Асинхрона подршка: FastAPI има уграђену подршку за кључне речи async и await, што олакшава руковање асинхроним операцијама, као што је позивање LLM закључивања, избегавајући блокирање главне нити.
  • Аутоматска API документација: FastAPI користи OpenAPI и JSON Schema за аутоматско генерисање интерактивне API документације (Swagger UI), што олакшава програмерима да тестирају и користе ваш API.
  • Валидација података: FastAPI користи Pydantic за валидацију података, осигуравајући исправност параметара захтева, смањујући грешке.
  • Убризгавање зависности: Систем за убризгавање зависности FastAPI-ја олакшава управљање и дељење ресурса, као што су LLM модели.
  • Активна заједница: FastAPI има велику и активну заједницу, што омогућава приступ богатим ресурсима и подршци.

Припрема

  1. Инсталирајте Python: Уверите се да сте инсталирали Python 3.7 или новију верзију.

  2. Инсталирајте FastAPI и Uvicorn: Користите pip за инсталирање FastAPI и Uvicorn (ASGI сервер):

    pip install fastapi uvicorn
    
  3. Изаберите LLM модел: Изаберите LLM модел који желите да користите. Може бити OpenAI модел, или модел отвореног кода, на пример TinyLlama. Ако одаберете OpenAI, морате да набавите OpenAI API кључ. Ако одаберете TinyLlama, морате да преузмете датотеку модела.

Корак 1: Креирање FastAPI апликације

Креирајте датотеку под називом main.py и додајте следећи код:

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

Овај код дефинише FastAPI апликацију и дефинише два Pydantic модела: InputText за пријем улазног текста, OutputText за враћање генерисаног текста.

Корак 2: Додавање LLM логике закључивања

У зависности од LLM модела који сте одабрали, додајте одговарајућу логику закључивања. Овде је пример коришћења OpenAI API-ја:

import openai
import os

# Набавите OpenAI API кључ
openai.api_key = os.environ.get("OPENAI_API_KEY")  # Препоручује се коришћење променљиве окружења
```@app.post("/generate", response_model=OutputText)
async def generate_text(input_text: InputText):
    """
    Generiše tekst na osnovu unetog teksta koristeći OpenAI.
    """
    try:
        response = openai.Completion.create(
            engine="text-davinci-003", # Izaberite 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))

Ovaj kod definiše /generate rutu, koja prihvata InputText objekat kao ulaz, poziva OpenAI API za generisanje teksta i vraća generisani tekst kao OutputText objekat. Obratite pažnju da zamenite text-davinci-003 odgovarajućim modelom po vašem izboru.

Ako koristite lokalne modele kao što je TinyLlama, potrebno je da instalirate odgovarajuću biblioteku, na primer transformers, i učitate model u memoriju. Primer koda je sledeći:

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):
    """
    Generiše tekst na osnovu unetog teksta koristeći 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))

Korak 3: Pokretanje FastAPI aplikacije

Koristite Uvicorn za pokretanje FastAPI aplikacije:

uvicorn main:app --reload
```Ово ће покренути локални сервер, коме можете приступити у прегледачу на `http://127.0.0.1:8000/docs` да бисте видели аутоматски генерисану API документацију. Параметар `--reload` може аутоматски поново покренути сервер након измене кода, што олакшава развој.

## Корак 4: Тестирање API-ја

Користите API документацију или алатке као што је curl да бисте тестирали свој API. На пример, користите curl да пошаљете POST захтев:

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

Требало би да добијете JSON одговор који садржи генерисани текст.

Корак 5: Производно окружење

Примените FastAPI апликацију у производно окружење, на пример:

  • Docker: Користите Docker да контејнеризујете своју апликацију, што олакшава примену и управљање.
  • Cloud платформа: Примените на cloud платформу, као што су AWS, Google Cloud Platform или Azure. Azure Cosmos DB и Azure Functions, поменути у тексту, могу се користити за изградњу serverless API-ја. Modal се такође може користити за примену FastAPI апликација које се аутоматски скалирају.
  • Сервер: Примените на сопствени сервер.

Најбоље праксе

  • Користите променљиве окружења за складиштење осетљивих информација: Немојте хардкодирати осетљиве информације као што су API кључеви у коду, већ користите променљиве окружења.
  • Додајте евидентирање (логирање): Користите модул за евидентирање да бисте забележили статус рада API-ја, што олакшава отклањање грешака и надзор.
  • Додајте руковање грешкама: Користите try...except блокове да бисте обрадили могуће изузетке и вратили одговарајуће поруке о грешкама.
  • Ограничење брзине (Rate limiting): Користите ограничавач брзине да бисте спречили злоупотребу API-ја. FastAPI има неколико готових библиотека за ограничавање брзине.
  • Кеширање: За поновљене захтеве, можете користити кеширање да бисте побољшали перформансе.
  • Надзор: Користите алатке за надзор да бисте пратили перформансе и доступност API-ја.

Напредни трикови

  • Асинхрона обрада: За дуготрајно LLM закључивање, користите кључне речи async и await за асинхрону обраду, избегавајући блокирање главне нити.
  • Стриминг одговор: Коришћење стриминг одговора (StreamingResponse) може да врати генерисани текст у реалном времену, побољшавајући корисничко искуство.
  • Вишенитни/вишепроцесни рад: За CPU интензивно LLM закључивање, можете користити вишенитни или вишепроцесни рад да бисте побољшали перформансе.
  • GPU убрзање: Ако ваш LLM модел подржава GPU убрзање, можете користити CUDA или друге GPU библиотеке за убрзање закључивања.

ЗакључакFastAPI је моћан алат за изградњу LLM API-ја високих перформанси и спремних за продукцију. Кроз упутства у овом чланку, можете брзо подесити LLM API и проширити га и оптимизовати према вашим потребама. Запамтите, континуирано учење и пракса су кључни за постајање одличног програмера LLM апликација. Hornbeam, поменут у тексту, је такође ASGI сервер вредан пажње, који тврди да је бржи и стабилнији од Gunicorn-а и може се користити за распоређивање FastAPI апликација.

Published in Technology

You Might Also Like