giriiş
Python uygulamaları geliştirirken, hızı, basitliği ve eşzamansız programlama desteğiyle FastAPI mükemmel bir seçimdir. Bu eğitimde, çeşitli verileri yönetmek için esneklik ve ölçeklenebilirlik sunan bir NoSQL veritabanıyla FastAPI kurulumunu inceleyeceğiz.
Ön koşullar
- Ubuntu Sunucusu, sudo erişimine sahip ve güvenlik duvarı etkin olan kök olmayan bir kullanıcı.
- Linux komut satırına giriş.
- Emir
sudo apt-get güncellemeSisteminizin sistem depolarında bulunan yazılımların en son sürümlerine ve güvenlik güncellemelerine sahip olduğundan emin olmak için Ubuntu terminalinde çalıştırın.
Not: Bu talimatlar Ubuntu'nun en son sürümleri olan Ubuntu 24.04, Ubuntu 22.04 ve Ubuntu 20.04 için geçerlidir. Ubuntu 18.04 veya daha eski bir sürüm kullanıyorsanız, Ubuntu artık bu sürümleri desteklemediğinden daha yeni bir sürüme yükseltmenizi öneririz.
Adım 1 – Sisteminizde Python ortamını kurma
Bu eğitim boyunca, komutları çalıştırmak için Python3 paketini kullanacağız. Ubuntu'nun yeni sürümleri varsayılan olarak Python 3 yüklü olarak gelir, bu nedenle kurulumunu doğrulamak için aşağıdaki komutu çalıştırın:
python3 --version
Bu komut bir hata döndürürse, aşağıdaki komutu çalıştırarak paketi yükleyebilir veya yeniden yükleyebilirsiniz:
sudo apt-get install python3
Daha sonra Python paketlerini ve bağımlılıklarını güvenli bir şekilde kurmak için pip'i kurmanız gerekir.
sudo apt-get install python3-pip
Adım 2 – Sanal bir ortam oluşturun
Ubuntu sürüm < 24.04 kullanıyorsanız sanal ortam oluşturmanıza gerek yoktur, ancak proje bağımlılıklarını ayırmak en iyi uygulamadır.
Python 3.11 ve pip 22.3 ile başlayarak, Python temel ortamlarını "harici olarak yönetilen" olarak işaretleyen yeni bir PEP 668 tanıtıldı; bu, sanal bir ortamda çalışmadığınız sürece paketleri yüklemek için pip'i başarıyla kullanamayacağınız anlamına geliyor. Yap bunu.
Bu adımda, farklı paket sürümleri arasında olası sorunları önlemek için proje bağımlılıklarını izole eden projeniz için sanal bir ortam oluşturacaksınız. Terminalde aşağıdaki komutları çalıştırın:
sudo apt-get install python3-venv
Bu komut kapalıdır. venv Sanal ortamın oluşturulması için gerekenleri kuracaktır.
python3 -m venv fastapi-env
Bu komut, sanal bir ortam oluşturur. fastapi-env Çalışma dizininizin içinde bir dizin oluşturacaktır. Bu ortamda çalışmaya başlamak için etkinleştirmeniz gerekir.
source fastapi-env/bin/activate
Başarılı olursanız terminal önizlemesinin aşağıdaki gibi görüntülendiğini göreceksiniz:
(fastapi-env) user@machine:~$
Artık bu sanal ortamın içerisine gerekli bağımlılıkları kurmaya başlayabilirsiniz.
Adım 3 – Gerekli kitaplıkları ve paketleri yükleyin
Bu adımda, bu eğitimi başarıyla takip etmek için gereken birkaç paketi ve kütüphaneyi yükleyeceksiniz.
İlk önce kurulum yaparak Hızlı API Uygulamanızı oluşturmak için gerekenlerle başlayacağız ve ardından mavi boynuzlu at FastAPI uygulamasını çalıştırmak için gerekenler.
pip install fastapi uvicorn
Bu eğitimde, MongoDB'yi NoSQL veritabanı olarak kullanacağız. MongoDB ile FastAPI üzerinden etkileşim kurmak için şunları yapmanız gerekir: motor MongoDB için asenkron bir Python sürücüsü olan Install'ı kurun.
pip install motor
Adım 4 – Ubuntu'ya MongoDB'yi Kurun ve Ayarlayın
MongoDB'yi Ubuntu sisteminize kurmak için terminalde aşağıdaki komut setini çalıştırın:
wget -qO - https://www.mongodb.org/static/pgp/server-7.0.asc | sudo gpg --dearmor -o /usr/share/keyrings/mongodb-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/mongodb-archive-keyring.gpg] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.listBaşarılı olursa, bu komut echo parametresini döndürecektir. Şimdi hızlı bir güncelleme yapalım:
sudo apt-get update
Bu, MongoDB anahtarlarınızı ayarladıktan sonra en son güncellemeleri aldığınızdan emin olmanızı sağlar.
Daha sonra MongoDB kurulumu için gerekli olan openssl bağımlılığını sisteminize kurmanız gerekmektedir.
wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_amd64.deb
sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.debÇalıştırdıktan sonra hizmetleri yeniden başlatmanız istenecektir. Yeniden başlattıktan sonra, aşağıdaki komutu kullanarak MongoDB'yi yükleyin:
sudo apt-get install -y mongodb
MongoDB servislerini başlatın ve etkinleştirin:
sudo systemctl start mongod
sudo systemctl enable mongodAşağıdaki komutları çalıştırarak MongoDB servisinin durumunu kontrol edebilir ve bağlantıyı test edebilirsiniz:
sudo systemctl status mongod
mongo --eval 'db.runCommand({connectionStatus: 1})'
Adım 5 – FastAPI Uygulaması Oluşturun
Bir sonraki adım, bir FastAPI uygulaması oluşturmaktır. Çalışma dizininizde, şu adlı bir dosya oluşturun: veritabanı.py Yaratmak:
nano database.py
Boş bir metin düzenleyici açılacaktır. Veritabanı bağlantı mantığınızı buraya yazın.
from motor.motor_asyncio import AsyncIOMotorClient
MONGO_DETAILS = "mongodb://localhost:27017"
client = AsyncIOMotorClient(MONGO_DETAILS)
db = client.mydatabase
collection = db.mycollectionKümenin varsayıldığı benim koleksiyonum Veritabanından veritabanım Verilerle dolu, şimdi bir dosyaya ihtiyacınız var ana.py Uygulama mantığınızı tutan bir sınıf oluşturun. Aşağıdaki FastAPI uygulamasında, veritabanına şu şekilde bağlanın: veritabanı.py Yapay zeka tahminleri için yollar belirlenir ve tanımlanır. Bu yollar, girdi doğrulaması için kullanılır.
nano main.py
Metin düzenleyicide aşağıdaki kodu yazın:
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from sklearn.linear_model import LinearRegression
import numpy as np
from database import collection
app = FastAPI()
# simple dataset and model
x = np.array([[1], [2], [3], [4], [5]])
y = np.array([2, 4, 6, 8, 10])
model = LinearRegressions()
model.fit(x, y)
# define the Pydantic model for input validation
class InputData(BaseModel):
feature: float
# route_1 for predicting the output based on input feature
@app.post("/predict/")
async def predict(input_data: InputData):
try:
prediction = model.predict([[input_data.feature]])
return {"prediction": prediction[0]}
except Exception as ex:
raise HTTPException(status_code=400, detail=str(ex))
# route_2 to interact with MongoDB
@app.get("/items/")
async def get_item():
items = []
async for item in collection.find():
items.append(item)
return items
# route_3 to add a new item to MongoDB
@app.post("/items/")
async def create_item(item: dict):
new_item = await collection.insert_one(item)
created_item = await collection.fine_one({"_id": new_item.inserted_id})
return created_itemİşte bu programın nasıl çalıştığına dair bir açıklama:
- Sklearn'den Doğrusal Regresyon Modeli: Bu model, bir girdi özelliğine dayanarak çıktıyı tahmin eder.
- Pydantic modelinden Giriş Verileri: Bu model, tahmin son noktası için beklenen girdi yapısını tanımlar. Burada girdi, float türündedir.
- MongoDB yolları: Rotalar
/öğeler/VePOST /öğeler/MongoDB koleksiyonunuzdan öğeleri almanıza ve içe aktarmanıza olanak tanırlar.
Adım 6 – FastAPI uygulamasını çalıştırın
Bu programı başarıyla çalıştırmak için programda kullanılan kütüphaneleri ve paketleri kurmanız gerekmektedir.
pip install pydantic scikit-learn numpy
Şimdi bu programı çalıştırmak için aşağıdaki komutu kullanın:
uvicorn main:app --reload
Bu komutun çıktısı aşağıdaki gibi olacaktır:
Output
INFO: Will watch for changes in these directories: ['/path/to/your/project']
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [XXXXX] using statreload
INFO: Started server process [XXXXX]
INFO: Waiting for application startup.
INFO: Application startup complete.FastAPI, Swagger kullanıcı arayüzünü kullanarak etkileşimli API dokümantasyonunu otomatik olarak oluşturdu. Dokümantasyona şu adresten erişebilirsiniz: http://127.0.0.1:8000/docs Erişin.
Girdilerinize göre değeri tahmin eden bir uç noktayı çağırmak için curl veya Postman gibi araçları kullanabilirsiniz.
curl -X POST "http://127.0.0.1:8000/predict/" -H "Content-type: application/json" -d '{"feature": 3}'
Sonuç
Bu eğitimde, MongoDB ile bir FastAPI uygulamasının nasıl başarılı bir şekilde dağıtılacağını ve girdi tahminlerini depolayıp alabilen basit bir yapay zeka tabanlı uygulamanın nasıl oluşturulacağını öğrendiniz.
FastAPI ve NoSQL veritabanının birleşimi, yapay zeka tabanlı uygulamaların oluşturulması ve ölçeklendirilmesi için güçlü ve esnek bir ortam sağlar.









