Bild vom Autor
FastAPI ist ein beliebtes Webframework zum Erstellen von APIs mit Python. Es ist tremendous einfach zu erlernen und wird von Entwicklern geliebt.
FastAPI nutzt Python-Typhinweise und basiert auf Pydantic. Dies vereinfacht die Definition von Datenmodellen und Anforderungs-/Antwortschemata. Das Framework validiert Anforderungsdaten automatisch anhand dieser Schemata und reduziert so potenzielle Fehler. Es unterstützt auch nativ asynchrone Endpunkte, wodurch die Erstellung leistungsfähiger APIs, die E/A-gebundene Vorgänge effizient verarbeiten können, einfacher wird.
In diesem Tutorial erfahren Sie, wie Sie Ihre erste API mit FastAPI erstellen. Von der Einrichtung Ihrer Entwicklungsumgebung bis zum Erstellen einer API für eine einfache Machine-Studying-App führt Sie dieses Tutorial durch alle Schritte: Definieren von Datenmodellen, API-Endpunkten, Verarbeiten von Anfragen und mehr. Am Ende dieses Tutorials haben Sie ein gutes Verständnis dafür, wie Sie mit FastAPI schnell und effizient APIs erstellen können. Additionally legen wir los.
Schritt 1: Einrichten der Umgebung
FastAPI erfordert Python 3.7 oder höher. Stellen Sie daher sicher, dass Sie eine aktuelle Model von Python installiert haben. Erstellen und aktivieren Sie im Projektverzeichnis eine dedizierte virtuelle Umgebung für das Projekt:
$ python3 -m venv v1
$ supply v1/bin/activate
Der obige Befehl zum Aktivieren der virtuellen Umgebung funktioniert, wenn Sie Linux oder MacOS verwenden. Wenn Sie Home windows verwenden, Überprüfen Sie die Dokumente um virtuelle Umgebungen zu erstellen und zu aktivieren.
Installieren Sie als Nächstes die erforderlichen Pakete. Sie können FastAPI und uvicorn mit pip installieren:
$ pip3 set up fastapi uvicorn
Dadurch werden FastAPI und alle erforderlichen Abhängigkeiten sowie uvicorn installiert, der Server, den wir zum Ausführen und Testen der von uns erstellten API verwenden werden. Da wir mit scikit-learn ein einfaches maschinelles Lernmodell erstellen werden, installieren Sie es auch in Ihrer Projektumgebung:
$ pip3 set up scikit-learn
Nachdem die Set up abgeschlossen ist, können wir mit dem Programmieren beginnen! Den Code finden Sie auf GitHub.
Schritt 2: Erstellen einer FastAPI-App
Erstellen Sie eine major.py-Datei im Projektverzeichnis. Der erste Schritt besteht darin, eine FastAPI-App-Instanz wie folgt zu erstellen:
# Create a FastAPI app
# Root endpoint returns the app description
from fastapi import FastAPI
app = FastAPI()
Der Iris-Datensatz ist einer der Spielzeugdatensätze, mit denen Sie arbeiten, wenn Sie mit der Datenwissenschaft beginnen. Er enthält 150 Datensätze, 4 Funktionen und eine Zielbezeichnung (Artwork der Iris). Um die Dinge einfach zu halten, erstellen wir eine API zur Vorhersage der Irisart.
In den nächsten Schritten erstellen wir ein logistisches Regressionsmodell und einen API-Endpunkt für die Vorhersage. Nachdem Sie das Modell erstellt und die /predict/
API-Endpunkt: Sie sollten in der Lage sein, eine POST-Anfrage mit den Eingabefunktionen an die API zu senden und die vorhergesagte Artwork als Antwort zu erhalten.
Iris Prediction API | Bild vom Autor
Damit es hilfreich ist, definieren wir auch einen Root-Endpunkt, der die Beschreibung der App zurückgibt, die wir erstellen. Dazu definieren wir den get_app_description
und erstellen Sie den Root-Endpunkt mit der @app
Dekorateur wie folgt:
# Outline a operate to return an outline of the app
def get_app_description():
return (
"Welcome to the Iris Species Prediction API!"
"This API means that you can predict the species of an iris flower primarily based on its sepal and petal measurements."
"Use the '/predict/' endpoint with a POST request to make predictions."
"Instance utilization: POST to '/predict/' with JSON knowledge containing sepal_length, sepal_width, petal_length, and petal_width."
)
# Outline the foundation endpoint to return the app description
@app.get("https://www.kdnuggets.com/")
async def root():
return {"message": get_app_description()}
Wenn Sie eine GET-Anfrage an den Stammendpunkt senden, wird die Beschreibung zurückgegeben.
Schritt 3: Erstellen Sie einen logistischen Regressionsklassifikator
Bisher haben wir eine FastAPI-App instanziiert und einen Root-Endpunkt definiert. Jetzt ist es an der Zeit, Folgendes zu tun:
- Erstellen Sie ein maschinelles Lernmodell. Wir verwenden einen logistischen Regressionsklassifikator. Wenn Sie mehr über logistische Regression erfahren möchten, lesen Sie Erstellen von Vorhersagemodellen: Logistische Regression in Python.
- Definieren Sie eine Vorhersagefunktion, die die Eingabefunktionen empfängt und das maschinelle Lernmodell verwendet, um eine Vorhersage für die Artwork (eine von Setosa, Versicolor und Virginica) zu treffen.
Logistischer Regressionsklassifikator | Bild vom Autor
Wir bauen einen einfachen logistischen Regressionsklassifikator aus scikit-learn und definieren den predict_species
Funktion wie gezeigt:
# Construct a logistic regression classifier
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
# Load the Iris dataset
iris = load_iris()
X, y = iris.knowledge, iris.goal
# Prepare a logistic regression mannequin
mannequin = LogisticRegression()
mannequin.match(X, y)
# Outline a operate to foretell the species
def predict_species(sepal_length, sepal_width, petal_length, petal_width):
options = ((sepal_length, sepal_width, petal_length, petal_width))
prediction = mannequin.predict(options)
return iris.target_names(prediction(0))
Schritt 4: Pydantic-Modell für Eingabedaten definieren
Als nächstes sollten wir die Daten modellieren, die wir in der POST-Anfrage senden. Hier sind die Eingabemerkmale die Länge und Breite der Kelch- und Blütenblätter – alles Fließkommawerte. Um dies zu modellieren, erstellen wir ein IrisData
Klasse, die vom Pydantic erbt BaseModel
Klasse wie folgt:
# Outline the Pydantic mannequin on your enter knowledge
from pydantic import BaseModel
class IrisData(BaseModel):
sepal_length: float
sepal_width: float
petal_length: float
petal_width: float
Wenn Sie ein kurzes Tutorial zur Verwendung von Pydantic für die Datenmodellierung und -validierung benötigen, lesen Sie Pydantic-Tutorial: Datenvalidierung in Python ganz einfach.
Schritt 5: Erstellen Sie einen API-Endpunkt
Nachdem wir nun den Klassifikator erstellt und die predict_species
Funktion bereit, können wir den API-Endpunkt für die Vorhersage erstellen. Wie zuvor können wir die @app
Dekorateur zum Definieren der /predict/
Endpunkt, der eine POST-Anfrage akzeptiert und die vorhergesagte Artwork zurückgibt:
# Create API endpoint
@app.submit("/predict/")
async def predict_species_api(iris_data: IrisData):
species = predict_species(iris_data.sepal_length, iris_data.sepal_width, iris_data.petal_length, iris_data.petal_width)
return {"species": species}
Und es ist Zeit, die App auszuführen!
Schritt 6: Ausführen der App
Sie können die App mit dem folgenden Befehl ausführen:
$ uvicorn major:app --reload
Hier major
ist der Title des Moduls und app
ist die FastAPI-Instanz. Die --reload
Flag stellt sicher, dass die App neu geladen wird, wenn es Änderungen im Quellcode gibt.
Beim Ausführen des Befehls sollten ähnliche INFO-Meldungen angezeigt werden:
INFO: Will look ahead to modifications in these directories: ('/dwelling/balapriya/fastapi-tutorial')
INFO: Uvicorn operating on http://127.0.0.1:8000 (Press CTRL+C to stop)
INFO: Began reloader course of (11243) utilizing WatchFiles
INFO: Began server course of (11245)
INFO: Ready for utility startup.
INFO: Utility startup full.
…
…
Wenn Sie zu „http://127.0.0.1:8000“ (localhost) navigieren, sollten Sie die App-Beschreibung sehen:
App wird auf localhost ausgeführt
Schritt 7: Testen der API
Sie können nun POST-Anfragen an die /predict/
Endpunkt mit den Kelch- und Blütenblattmessungen – mit gültigen Werten – und erhalten Sie die vorhergesagte Artwork. Sie können ein Befehlszeilenprogramm wie cURL verwenden. Hier ist ein Beispiel:
curl -X 'POST'
'http://localhost:8000/predict/'
-H 'Content material-Kind: utility/json'
-d '{
"sepal_length": 5.1,
"sepal_width": 3.5,
"petal_length": 1.4,
"petal_width": 0.2
}'
Für diese Beispielanforderung ist dies die erwartete Ausgabe:
Einpacken
In diesem Tutorial haben wir uns mit dem Erstellen einer API mit FastAPI für ein einfaches Klassifizierungsmodell befasst. Wir haben die in den Anfragen zu verwendenden Eingabedaten modelliert, API-Endpunkte definiert, die App ausgeführt und die API abgefragt.
Nehmen Sie als Übung ein vorhandenes Modell für maschinelles Lernen und bauen Sie mit FastAPI eine API darauf auf. Viel Spaß beim Programmieren!
Bala Priya C ist Entwicklerin und technische Redakteurin aus Indien. Sie arbeitet gerne an der Schnittstelle zwischen Mathematik, Programmierung, Datenwissenschaft und Inhaltserstellung. Ihre Interessens- und Fachgebiete umfassen DevOps, Datenwissenschaft und natürliche Sprachverarbeitung. Sie liest, schreibt, programmiert und trinkt gerne Kaffee! Derzeit arbeitet sie daran, ihr Wissen zu lernen und mit der Entwickler-Neighborhood zu teilen, indem sie Tutorials, Anleitungen, Meinungsbeiträge und mehr verfasst. Bala erstellt auch ansprechende Ressourcenübersichten und Programmier-Tutorials.