導入
Pythonアプリケーションを開発する場合、そのスピード、シンプルさ、そして非同期プログラミングのサポートから、FastAPIは最適な選択肢です。このチュートリアルでは、多様なデータを管理するための柔軟性とスケーラビリティを提供するNoSQLデータベースでFastAPIを設定する方法を説明します。.
前提条件
- Ubuntu サーバー、sudo アクセスとファイアウォールが有効になっている非 root ユーザー。.
- Linux コマンドラインの紹介。.
- 注文
sudo apt-get アップデートUbuntu ターミナルで実行して、システム リポジトリで利用可能なソフトウェアの最新バージョンとセキュリティ更新がシステムにインストールされていることを確認します。.
注:これらの手順は、Ubuntu 24.04、Ubuntu 22.04、Ubuntu 20.04 の最新バージョンに適用されます。Ubuntu 18.04 以前をご利用の場合は、Ubuntu がこれらのバージョンをサポートしていないため、新しいバージョンへのアップグレードをお勧めします。.
ステップ1 – システムにPython環境を設定する
このチュートリアルでは、コマンドを実行するためにpython3パッケージを使用します。Ubuntuの新しいバージョンにはPython 3がデフォルトでインストールされているため、インストールを確認するには次のコマンドを実行してください。
python3 --version
このコマンドがエラーを返す場合は、次のコマンドを実行してパッケージをインストールまたは再インストールできます。
sudo apt-get install python3
次に、Python パッケージとその依存関係を安全にインストールするには、pip をインストールする必要があります。.
sudo apt-get install python3-pip
ステップ2 – 仮想環境を作成する
Ubuntu バージョン 24.04 未満を使用している場合は、仮想環境を作成する必要はありませんが、プロジェクトの依存関係を分離することがベスト プラクティスです。.
Python 3.11 および pip 22.3 以降では、Python ベース環境を「外部管理」としてマークする新しい PEP 668 が導入されました。つまり、仮想環境で作業していない限り、pip を使用してパッケージを正常にインストールすることはできません。 やれよ。.
このステップでは、プロジェクトの依存関係を分離し、異なるバージョンのパッケージ間で発生する可能性のある問題を予防する仮想環境をプロジェクト用に作成します。ターミナルで以下のコマンドを実行してください。
sudo apt-get install python3-venv
このコマンドは終了しました。 ベンヴ 仮想環境を作成するために必要なものがインストールされます。.
python3 -m venv fastapi-env
このコマンドは、仮想環境を作成します。 fastapi-env 作業ディレクトリ内にディレクトリが作成されます。この環境で作業を開始するには、有効化する必要があります。.
source fastapi-env/bin/activate
成功すると、次のようにターミナルプレビューが表示されます。
(fastapi-env) user@machine:~$
これで、この仮想環境内で必要な依存関係のインストールを開始できます。.
ステップ3 – 必要なライブラリとパッケージをインストールする
この手順では、このチュートリアルを正常に実行するために必要ないくつかのパッケージとライブラリをインストールします。.
まずインストールして ファストAPI まずはアプリの構築に必要なことから始め、 ウビコーン FastAPI アプリケーションを実行するために必要です。.
pip install fastapi uvicorn
このチュートリアルでは、MongoDBをNoSQLデータベースとして使用します。FastAPIからMongoDBを操作するには、 モーター MongoDB 用の非同期 Python ドライバーである をインストールします。.
pip install motor
ステップ4 – UbuntuにMongoDBをインストールしてセットアップする
Ubuntu システムに MongoDB をインストールするには、ターミナルで次のコマンド セットを実行します。
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.list成功した場合、このコマンドはechoパラメータを返します。それでは、簡単な更新を行ってください。
sudo apt-get update
これにより、MongoDB キーを設定した後に最新のアップデートを取得できるようになります。.
その後、MongoDB のインストールに必要な openssl 依存関係をシステムにインストールする必要があります。.
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実行後、サービスの再起動を求められます。再起動後、以下のコマンドでMongoDBをインストールしてください。
sudo apt-get install -y mongodb
MongoDB サービスを起動して有効にします。
sudo systemctl start mongod
sudo systemctl enable mongod次のコマンドを実行すると、MongoDB サービスのステータスを確認し、接続をテストできます。
sudo systemctl status mongod
mongo --eval 'db.runCommand({connectionStatus: 1})'
ステップ5 – FastAPIアプリケーションを作成する
次のステップはFastAPIアプリケーションを作成することです。作業ディレクトリに、 データベース.py 作成する:
nano database.py
空のテキストエディタが開きます。ここにデータベース接続ロジックを記述してください。.
from motor.motor_asyncio import AsyncIOMotorClient
MONGO_DETAILS = "mongodb://localhost:27017"
client = AsyncIOMotorClient(MONGO_DETAILS)
db = client.mydatabase
collection = db.mycollectionセットが マイコレクション データベースから マイデータベース データがいっぱいなので、ファイルが必要です メイン.py アプリケーションロジックを保持するクラスを作成します。以下のFastAPIアプリケーションでは、次のようにデータベースに接続します。 データベース.py AI予測のためのパスが確立され、定義されています。これらのパスは入力検証に使用されます。.
nano main.py
テキスト エディターで次のコードを記述します。
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このプログラムがどのように動作するかを説明します。
- Sklearnの線形回帰モデル: このモデルは入力特徴に基づいて出力を予測します。.
- Pydanticモデルからの入力データ: このモデルは、予測エンドポイントに期待される入力構造を定義します。ここでは、入力はfloat型です。.
- MongoDB パス: ルート
/アイテム/そしてPOST /items/これらを使用すると、MongoDB コレクションからアイテムを取得してインポートできます。.
ステップ6 – FastAPIアプリケーションを実行する
このプログラムを正常に実行するには、プログラムで使用されるライブラリとパッケージをインストールする必要があります。.
pip install pydantic scikit-learn numpy
ここで、次のコマンドを使用してこのプログラムを実行します。
uvicorn main:app --reload
このコマンドの出力は次のようになります。
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 UIを使用してインタラクティブなAPIドキュメントを自動生成します。以下のアドレスからアクセスできます。 http://127.0.0.1:8000/docs アクセスしてください。.
curl や Postman などのツールを使用して、入力に基づいて値を予測するエンドポイントを呼び出すことができます。.
curl -X POST "http://127.0.0.1:8000/predict/" -H "Content-type: application/json" -d '{"feature": 3}'
結果
このチュートリアルでは、MongoDB を使用して FastAPI アプリケーションを正常にデプロイし、入力予測を保存および取得できるシンプルな AI ベースのアプリケーションを構築する方法を学習しました。.
FastAPI と NoSQL データベースの組み合わせにより、AI ベースのアプリケーションを構築および拡張するための強力で柔軟な環境が提供されます。.









