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.
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.
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.
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("/")defread_root():return{"Hello":"World"}@app.get("/items/{item_id}")defread_item(item_id:int, q: Union[str,None]=None):return{"item_id": item_id,"q": q}Altyapı:
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:
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()deftranslate_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.contentAltyapı:
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")Altyapı:
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 BaseModelclassTranslationRequest(BaseModel):
input_str:strdeftranslate_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 endpointasyncdeftranslate(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 translationraise HTTPException(status_code=500, detail=str(e))Altyapı:
Bu API'yi yerelde çalıştırmak ve test etmek için aşağıdaki komutu çalıştırmanız yeterlidir:
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:
POST'a tıklayın, ardından "try it out"a tıklayıp metin dizenizi girin ve Execute'a tıklayın.
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.
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.
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
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.
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:
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:
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_textadlı bir fonksiyon bulunur: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_striç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.
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:
Bu API'yi yerelde çalıştırmak ve test etmek için aşağıdaki komutu çalıştırmanız yeterlidir:
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:
POST'a tıklayın, ardından "try it out"a tıklayıp metin dizenizi girin ve Execute'a tıklayın.
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.
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.