FastAPI ile Yüksek Performanslı, Üretime Hazır LLM API'si Oluşturma: Adım Adım Kılavuz

2/19/2026
5 min read

FastAPI ile Yüksek Performanslı, Üretime Hazır LLM API'si Oluşturma: Adım Adım Kılavuz

FastAPI, modern, yüksek performanslı bir Python Web çerçevesi olarak, kullanım kolaylığı, hızı ve otomatik olarak oluşturulan API belgeleri nedeniyle popülerdir. Özellikle LLM (Large Language Model - Büyük Dil Modeli) uygulamalarının arka uç API'lerini oluşturma konusunda FastAPI, güçlü avantajlar sergilemektedir. Bu makale, FastAPI kullanarak üretime hazır bir LLM API'si oluşturmanın adım adım nasıl yapılacağını öğretecek ve bazı en iyi uygulamaları keşfedecektir.

Neden FastAPI'yi Seçmelisiniz?

LLM uygulamalarının API'sini oluştururken FastAPI, aşağıdaki temel avantajları sunar:

  • Yüksek Performans: ASGI tabanlı olan FastAPI, yüksek eşzamanlı istekleri işleyebilir, bu da hızlı yanıt gerektiren LLM uygulamaları için çok önemlidir.
  • Asenkron Destek: FastAPI, async ve await anahtar kelimeleri için yerleşik desteğe sahiptir, bu da LLM çıkarımını çağırmak gibi asenkron işlemleri kolayca işlemeyi ve ana iş parçacığını engellemeyi önlemeyi sağlar.
  • Otomatik API Belgeleri: FastAPI, geliştiricilerin API'nizi test etmesini ve kullanmasını kolaylaştıran etkileşimli API belgelerini (Swagger UI) otomatik olarak oluşturmak için OpenAPI ve JSON Schema kullanır.
  • Veri Doğrulama: FastAPI, istek parametrelerinin doğruluğunu sağlamak ve hataları azaltmak için Pydantic'i kullanarak veri doğrulaması yapar.
  • Bağımlılık Enjeksiyonu: FastAPI'nin bağımlılık enjeksiyon sistemi, LLM modelleri gibi kaynakları yönetmeyi ve paylaşmayı kolaylaştırır.
  • Aktif Topluluk: FastAPI, zengin kaynaklara ve desteğe erişilebilen geniş ve aktif bir topluluğa sahiptir.

Hazırlık

  1. Python'u Yükleyin: Python 3.7 veya daha yüksek bir sürümünün yüklü olduğundan emin olun.

  2. FastAPI ve Uvicorn'u Yükleyin: FastAPI ve Uvicorn'u (ASGI sunucusu) pip kullanarak yükleyin:

    pip install fastapi uvicorn
    
  3. LLM Modeli Seçin: Kullanmak istediğiniz LLM modelini seçin. OpenAI'nin modelleri veya TinyLlama gibi açık kaynaklı bir model olabilir. OpenAI'yi seçerseniz, bir OpenAI API anahtarı almanız gerekir. TinyLlama'yı seçerseniz, model dosyalarını indirmeniz gerekir.

Adım 1: FastAPI Uygulaması Oluşturun

main.py adında bir dosya oluşturun ve aşağıdaki kodu ekleyin:

from fastapi import FastAPI, HTTPException
from pydantic import BaseModel

app = FastAPI(title="LLM API", description="LLM'lerle etkileşim için basit bir API.")

class InputText(BaseModel):
    text: str

class OutputText(BaseModel):
    generated_text: str

Bu kod, bir FastAPI uygulaması tanımlar ve iki Pydantic modeli tanımlar: InputText girdi metnini almak için, OutputText ise oluşturulan metni döndürmek için kullanılır.

Adım 2: LLM Çıkarım Mantığı Ekleme

Seçtiğiniz LLM modeline göre, ilgili çıkarım mantığını ekleyin. Burada, OpenAI API'sini kullanma örneği verilmiştir:

import openai
import os

# OpenAI API anahtarını alın
openai.api_key = os.environ.get("OPENAI_API_KEY")  # Çevre değişkeni kullanılması önerilir
@app.post("/generate", response_model=OutputText)
async def generate_text(input_text: InputText):
    """
    OpenAI kullanarak girdi metnine dayalı metin üretir.
    """
    try:
        response = openai.Completion.create(
            engine="text-davinci-003", # Modeli seçin
            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))

Bu kod, bir InputText nesnesini girdi olarak alan, OpenAI API'sini kullanarak metin üreten ve üretilen metni bir OutputText nesnesi olarak döndüren bir /generate rotası tanımlar. text-davinci-003'ü seçtiğiniz uygun modelle değiştirmeye dikkat edin.

TinyLlama gibi yerel modeller kullanılıyorsa, transformers gibi ilgili kütüphanelerin yüklenmesi ve modelin belleğe yüklenmesi gerekir. Kod örneği aşağıdaki gibidir:

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):
    """
    TinyLlama kullanarak girdi metnine dayalı metin üretir.
    """
    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))

Adım 3: FastAPI Uygulamasını Çalıştırma

FastAPI uygulamasını Uvicorn kullanarak çalıştırın:

uvicorn main:app --reload
```Bu, tarayıcınızda `http://127.0.0.1:8000/docs` adresinden erişebileceğiniz otomatik olarak oluşturulmuş API belgelerini görüntüleyebileceğiniz yerel bir sunucu başlatacaktır. `--reload` parametresi, geliştirme sırasında kolaylık sağlamak için kod değişikliklerinden sonra sunucuyu otomatik olarak yeniden başlatabilir.

## Adım 4: API'yi Test Etme

API belgelerini veya curl gibi araçları kullanarak API'nizi test edin. Örneğin, curl kullanarak bir POST isteği gönderin:

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

Oluşturulan metni içeren bir JSON yanıtı almalısınız.

Adım 5: Üretim Dağıtımı

FastAPI uygulamasını üretim ortamına dağıtın, örneğin:

  • Docker: Uygulamanızı Docker ile konteynerize edin, bu da dağıtımı ve yönetimi kolaylaştırır.
  • Bulut Platformu: AWS, Google Cloud Platform veya Azure gibi bir bulut platformuna dağıtın. Metinde bahsedilen Azure Cosmos DB ve Azure Functions, sunucusuz bir API oluşturmak için kullanılabilir. Modal ayrıca otomatik olarak ölçeklenen FastAPI uygulamalarını dağıtmak için de kullanılabilir.
  • Sunucu: Kendi sunucunuza dağıtın.

En İyi Uygulamalar

  • Hassas bilgileri saklamak için ortam değişkenlerini kullanın: API anahtarları gibi hassas bilgileri kodda sabit kodlamayın, bunun yerine ortam değişkenlerini kullanın.
  • Günlük kaydı ekleyin: API'nin çalışma durumunu kaydetmek, hata ayıklama ve izleme için günlük kaydı modülünü kullanın.
  • Hata işleme ekleyin: Olası istisnaları işlemek ve uygun hata mesajları döndürmek için try...except bloklarını kullanın.
  • Hız sınırlaması: API'nin kötüye kullanılmasını önlemek için hız sınırlayıcı kullanın. FastAPI'de kullanılabilecek bazı hazır hız sınırlama kitaplıkları vardır.
  • Önbelleğe alma: Tekrarlanan istekler için performansı artırmak için önbelleğe alma kullanabilirsiniz.
  • İzleme: API'nin performansını ve kullanılabilirliğini izlemek için izleme araçlarını kullanın.

Gelişmiş İpuçları

  • Asenkron işleme: Zaman alan LLM çıkarımı için, ana iş parçacığını engellemekten kaçınmak için async ve await anahtar kelimelerini kullanarak asenkron işleme kullanın.
  • Akış yanıtı: Kullanıcı deneyimini iyileştirmek için oluşturulan metni gerçek zamanlı olarak döndürmek için akış yanıtı (StreamingResponse) kullanın.
  • Çoklu iş parçacığı/çoklu işlem: CPU yoğun LLM çıkarımı için performansı artırmak için çoklu iş parçacığı veya çoklu işlem kullanabilirsiniz.
  • GPU hızlandırma: LLM modeliniz GPU hızlandırmayı destekliyorsa, çıkarım hızını artırmak için CUDA veya diğer GPU hızlandırma kitaplıklarını kullanabilirsiniz.

SonuçFastAPI, yüksek performanslı, üretime hazır LLM API'leri oluşturmak için güçlü bir araçtır. Bu makaledeki kılavuz sayesinde, hızlı bir şekilde bir LLM API'si kurabilir ve ihtiyaçlarınıza göre genişletebilir ve optimize edebilirsiniz. Unutmayın, sürekli öğrenme ve pratik, mükemmel bir LLM uygulama geliştiricisi olmanın anahtarıdır. Makalede bahsedilen Hornbeam de, Gunicorn'dan daha hızlı ve daha kararlı olduğunu iddia eden ve FastAPI uygulamalarını dağıtmak için kullanılabilecek dikkate değer bir ASGI sunucusudur.

Published in Technology

You Might Also Like