Ana içeriğe geç

Python'da FastAPI kullanarak bir LLM uygulamasını API uç noktası olarak sunma

"Python'da FastAPI Kullanarak LLM Uygulamasını Bir API Uç Noktası Olarak Sunma" başlıklı en son blog yazımızla, uygulamalarınızda Büyük Dil Modellerinin (LLM'ler) gücünü açığa çıkarın. GPT, Claude ve LLaMA gibi LLM'ler; sohbet botları, içerik üretimi ve daha birçok kullanım alanında devrim yaratıyor. API'lerin, projelerinize gelişmiş dil anlama ve üretme özelliklerini sorunsuzca entegre etmeyi sağlayan kritik köprüler olarak nasıl işlediğini keşfedin.

Yapay Zeka ile Keşfedin

Giriş

Büyük Dil Modelleri (LLM'ler), makinelerin insan benzeri metni anlama ve üretme biçimini dönüştüren Üretken Yapay Zekânın ön saflarında yer alır. GPT, Claude, LLaMA, Mistral, vb. gibi LLM modelleri; sohbet botları, içerik üretimi ve ötesinde yenilikleri yönlendirerek doğal dili işleme ve üretmede eşi benzeri görülmemiş yetenekler sunar.

Ancak LLM'lerin gerçek faydası ham hesaplama güçlerinin ötesine geçer; erişilebilirlik kilit unsurdur. API'ler (Uygulama Programlama Arayüzleri), çeşitli uygulamaların LLM'lerin gücünden yararlanmasını sağlayan köprülerdir. Geliştiricilerin, basit metin analizinden karmaşık diyalog sistemlerine kadar uzanan uygulamalarına gelişmiş dil anlama ve üretme özelliklerini entegre etmelerini mümkün kılarlar.

Bu eğitimde, OpenAI GPT modelini kullanan basit bir Python uygulaması oluşturacak ve Python'da FastAPI çerçevesi kullanılarak geliştirilecek bir API uç noktasıyla sunacağız.

Büyük Dil Modelleri

Büyük Dil Modelleri (LLM'ler), insan benzeri metni anlamak ve üretmek üzere tasarlanmış gelişmiş yapay zekâ sistemlerini ifade eder. Bu modeller, büyük miktarda veri üzerinde eğitilerek karmaşık kalıpları kavramalarını, dilin inceliklerini anlamalarını ve tutarlı yanıtlar üretmelerini sağlar.

LLM'ler; dil çevirisi, metin tamamlama, özetleme ve hatta sohbet etkileşimlerine girme gibi çeşitli dil görevlerini yerine getirebilir. GPT, bir LLM örneğidir.

Bu yazıda, OpenAI'nin GPT API'sini kullanan basit bir Python uygulaması geliştirecek ve ardından Python'da FastAPI çerçevesiyle uygulamamız için bir REST uç noktası oluşturacağız.

LLM, bir tür Üretken Yapay Zekâdır. Üretken Yapay Zekâyı ve yaratıcılığınızı nasıl artırabileceğini öğrenmek isterseniz, Üretken Yapay Zekâyı Kullanarak Yaratıcılığınızı Artırın başlıklı blog yazılarımıza ve Üretken Yapay Zekâ Devriminin İçinde adlı podcastimize göz atın.

Ayrıca yakında açılacak Büyük Dil Modelleri Kavramları kursumuza da kayıt olabilirsiniz.

API nedir?

Uygulama Programlama Arayüzü (API), farklı sistemlerin, uygulamaların ve cihazların sorunsuzca etkileşim kurup veri paylaşmasını sağlayan yazılım iletişiminin bel kemiğidir. Bir yazılım varlığının, diğerinin iç işleyişini bilmesine gerek kalmadan onun yeteneklerinden veya verilerinden yararlanmasına olanak tanıyan bir dizi kural ve protokol görevi görür.

API'ler günümüzün dijital ekosisteminde her yerde karşımıza çıkar; web servislerini, mobil uygulamaları ve bulut bilişimi güçlendirir, uygulamalar arası iletişimi ve üçüncü taraf hizmetlerin entegrasyonunu kolaylaştırır. Geliştiricilere yeni yazılımlar oluşturmayı hızlandırmak için kullanabilecekleri yapı taşları sağlayarak geliştirme sürecini basitleştirir; işlevselliği ve kullanıcı deneyimini, sıfırdan başlamadan artırır.

API'ler aracılığıyla geliştiriciler, aksi hâlde karmaşık veya imkânsız olabilecek yollarla uygulamalarını genişletebilirler; bu da API'leri modern yazılım geliştirmenin kritik bir bileşeni hâline getirir.

API nasıl çalışır? Ekran görüntüsü

Görsel Kaynağı

Makine öğrenimi modellerini gerçek hayatta dağıtmayla ilgili mühendisliği öğrenmekle ilgileniyorsanız, Makine Öğrenimi, Hatlar (Pipelines), Dağıtım ve MLOps üzerine bu kapsamlı rehbere göz atın. Ayrıca Datacamp'teki ücretsiz API'ye Giriş kursunu da inceleyebilirsiniz.

FastAPI

FastAPI, yüksek performanslı API'ler oluşturmak için tasarlanmış bir Python çerçevesidir. Öne çıkışı; hızı, kullanım kolaylığı ve eşzamanlı olmayan programlamayla uyumluluğuna dayanır. FastAPI, geliştiricilerin LLM işlevselliklerini API uç noktaları olarak sunmasını kolaylaştırır; böylece yapay zekâ destekli hizmetleri dağıtmak, yönetmek ve ölçeklendirmek daha basit hâle gelir.

FastAPI, tür ipuçları ve eşzamanlı olmayan programlama gibi modern Python özelliklerinden yararlanarak, NodeJS ve hatta Go ile yarışan hız iyileştirmeleri sunmasıyla performans ve verimlilik açısından öne çıkar.

Bu performans avantajı; gerçek zamanlı veri işleme ve eşzamanlı isteklerin ele alınmasını gerektiren, LLM'lerle etkileşime girenler gibi uygulamalar için kritik öneme sahiptir. Gelen verileri otomatik doğrulama ve yanıtları serileştirme becerisi, tekrarlayan kodu azaltır ve API geliştirmeyi daha temiz ve anlaşılır kılar.

OpenAPI gibi standartları kullanan otomatik dokümantasyon özelliği, geliştiricilere ve kullanıcılara net, etkileşimli API dokümantasyonu sağlar; entegrasyon ve test süreçlerini daha da basitleştirir.

Örnek API Oluşturma:

from typing import Union

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"Hello": "World"}

@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
    return {"item_id": item_id, "q": q}

Bu kod, FastAPI kullanarak basit bir web sunucusu oluşturur. Sunucu, iki tür web isteğine yanıt verir: Ana sayfayı ("/") ziyaret ettiklerinde kullanıcıyı "Hello World" diyerek selamlayan bir uç nokta ve belirli bir öğe sayfasını ("/items/{item_id}") ziyaret ettiklerinde öğenin kimliğini ve isteğe bağlı "q" sorgu parametresini gösteren başka bir uç nokta. Öğe kimliği zorunludur ve tamsayı olmalıdır; "q" sorgu parametresi ise isteğe bağlıdır ve bir dize olabilir veya hiç gönderilmeyebilir.

FastAPI sunucusunu şu komutla çalıştırın:

FastAPI sunucusunun nasıl başlatılacağını gösteren bash ekran görüntüsü. komut: uvicorn main:app --reload

Python'da uçtan uca uygulama oluşturma

Bu blogun ana amacı, LLM uygulamalarınız için REST API uç noktalarını nasıl hızla oluşturabileceğinizi göstermektir. OpenAI GPT-4 API'sini kullanan ve İngilizce metni Fransızcaya çeviren basit bir Python uygulaması (yalnızca bir fonksiyon) oluşturacağız. Bu uygulamada yalnızca translate_text adlı bir fonksiyon bulunur:

from openai import OpenAI
import os

os.environ["OPENAI_API_KEY"] = "..."

# Initialize OpenAI client with your API key
client = OpenAI()

def translate_text(input_str):
    completion = client.chat.completions.create(
        model="gpt-4-0125-preview",
        messages=[
            {
                "role": "system",
                "content": "You are an expert translator who translates text from english to french and only return translated text",
            },
            {"role": "user", "content": input_str},
        ],
    )

    return completion.choices[0].message.content

Bu fonksiyon, kullanıcıdan tek bir girdi alır ve bunu basitçe OpenAI GPT-4 modeline iletir. Bağlamı tanımlayan bir sistem komutu kullanır ve kullanıcı komutu, input_str içinde kullanıcıdan aldığımız metindir.

Aşağıdakini çalıştırarak bu fonksiyonu test edebilirsiniz. Fransızca metni geri almalısınız.

# test the function
translate_text("this is a test string to translate")

Bu uygulamayı başkalarıyla paylaşmayı düşünüyorsanız, Python ve komut satırı araçlarına aşina olan bazı kullanıcılar için Python dosyasını gönderip komut satırında çalıştırmalarını istemek işe yarayabilir.

Ancak bu yaklaşımın sınırlamaları vardır. Tüm kullanıcılar komut satırını kullanmakta rahat değildir; rahat olanlar için bile bir Python betiğini çalıştırmak, gerekli tüm bağımlılıkların kurulu olduğu bir Python ortamı gerektirir. Bu, zahmetli olabilir ve çeviri uygulamanızın işlevlerine kolayca erişme konusunda kullanıcılar için bir engel oluşturabilir.

İşte uygulamanızı bir REST API uç noktası olarak ortaya çıkarmak üzere FastAPI ile sarmalamanın güçlü bir çözüm hâline geldiği yer burasıdır. Bunu yaptığınızda, kullanıcıların kendi başlarına Python betikleri çalıştırmalarını gerektirmeden, internet üzerinden erişilebilen bir arayüz oluşturmuş olursunuz. Kullanıcılar, yalnızca Python değil, çok çeşitli platformlar ve programlama dilleri üzerinden yapılabilen basit web istekleriyle uygulamanızla etkileşim kurabilir.

FastAPI ile bir REST API oluşturmak, çeviri isteklerini alma ve çevirileri geri gönderme sürecini otomatikleştirir. Kullanıcılar, bir web arayüzü veya programatik bir API çağrısı aracılığıyla çevrilecek metni gönderebilir; bu da farklı kullanım senaryoları için işleri çok daha kolay ve esnek hâle getirir.

Bu basit fonksiyonu FastAPI kullanarak bir API uç noktasına dönüştürmek için kodumuzu şu şekilde değiştireceğiz:

from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
import os


os.environ["OPENAI_API_KEY"] = "..."


# Initialize OpenAI client with your API key
client = OpenAI()


# Initialize FastAPI client
app = FastAPI()


# Create class with pydantic BaseModel
class TranslationRequest(BaseModel):
    input_str: str


def translate_text(input_str):
    completion = client.chat.completions.create(
        model="gpt-4-0125-preview",
        messages=[
            {
                "role": "system",
                "content": "You are an expert translator who translates text from english to french and only return translated text",
            },
            {"role": "user", "content": input_str},
        ],
    )


    return completion.choices[0].message.content


@app.post("/translate/")  # This line decorates 'translate' as a POST endpoint
async def translate(request: TranslationRequest):
    try:
        # Call your translation function
        translated_text = translate_text(request.input_str)
        return {"translated_text": translated_text}
    except Exception as e:
        # Handle exceptions or errors during translation
        raise HTTPException(status_code=500, detail=str(e))

Bu API'yi yerelde çalıştırmak ve test etmek için aşağıdaki komutu çalıştırmanız yeterlidir:

uvicorn main:app --reload

Burada main.py, kodunuzu içeren dosyayı ifade eder. app ise kodunuzda app = FastAPI() satırıyla tanımlanan FastAPI uygulama örneğine işaret eder.

localhost:8000/docs adresine giderek şu şekilde görünen bir arayüz görebilirsiniz:

FastAPI uç noktaları dokümantasyon sayfasının ekran görüntüsü

POST'a tıklayın, ardından "try it out"a tıklayıp metin dizenizi girin ve Execute'a tıklayın.

FastAPI kullanıcı arayüzünün ekran görüntüsü

API'ye gönderilen bir curl komutunu, istek URL'sini (bu aşamada localhost'unuz) ve sunucu yanıtını görmelisiniz. 200 kodu başarıyı ifade eder; yanında Fransızca çeviriyi görebilirsiniz.

FastAPI kullanıcı arayüzünün ekran görüntüsü

Sonuç

Bu blog, GPT gibi Büyük Dil Modelleriyle güçlendirilmiş uygulamaları sunmak için FastAPI kullanarak bir API uç noktasının nasıl kurulacağını adım adım anlattı. FastAPI, performansı ve kullanım kolaylığıyla yüksek performanslı API'leri basitçe oluşturmanın bir yolunu sunar; bu da projelerine LLM'leri entegre etmek isteyen geliştiriciler için ideal bir seçimdir.

LLM uygulamaları, eğitim metodolojileri, etik hususlar ve en güncel araştırmaları kapsayan benzersiz bir kavramsal kursla LLM'lerin tüm potansiyelini keşfetmek isterseniz, Datacamp'teki ücretsiz Büyük Dil Modellerinde (LLM'ler) Ustalık kursuna göz atın.

Yetenek setinizi ve araç kutunuzu genişletmek mi istiyorsunuz? Yazılım geliştirme, web scraping ve geliştirme, veri analizi ve görselleştirme ile makine öğrenimi için 21 temel Python aracını öğrenin.

Moez Ali

Yazar

Moez Ali

Veri Bilimci, PyCaret'in Kurucusu ve Yaratıcısı

Konular

İlgili