**Wprowadzenie: Tworzenie API do obsługi modeli uczenia maszynowego przy użyciu Flask lub FastAPI**
Tworzenie interfejsów programistycznych, zwanych API, to sposób, w który połączysz swoje modele uczenia maszynowego ze światem. Kiedy budujesz model, który potrafi coś przewidywać, chcesz, aby inni ludzie mogli go używać.
API pozwala im wysyłać dane i otrzymywać wyniki bez konieczności rozumienia całego kodu wewnątrz.
Dwa główne narzędzia robią to zadanie dla Ciebie. Flask, stworzony w 2010 roku przez Armina Ronachera, to lekka platforma, która działa od lat. FastAPI, wydana publicznie w 2018 roku przez Sebastiana Ramíreza, to nowsze rozwiązanie, które pracuje szybciej.
Obie platformy pozwalają Ci udostępnić swoje modele innym osobom przez internet.
Dlaczego to ważne? Wyobraź sobie, że nauczyłeś komputer rozpoznawać kwiaty. Używasz zbioru danych Iris z trzema gatunkami, a Twój model osiąga dokładność 97 procent. Teraz chcesz, aby każdy mógł go testować.
Tutaj pojawia się API. Wysyłasz cztery liczby, które opisują kwiat, a system zwraca Ci odpowiedź, jaki to gatunek.
Oba narzędzia pracują inaczej. Flask używa systemu synchronicznego i działa z serwerem Gunicorn. FastAPI pracuje asynchronicznie i korzysta z Uvicorna, na przykład polecenie `uvicorn step4-predict:app –reload –port 8080`.
FastAPI tworzy dokumentację automatycznie, którą widzisz na stronie `http://127.0.0.1:8.
Główne Wnioski
- Flask i FastAPI to popularne frameworki do tworzenia API dla modeli uczenia maszynowego. Flask powstał w 2010 roku (autor: Armin Ronacher), a FastAPI w 2018 roku (autor: Sebastian Ramírez).
- FastAPI jest szybki i wspiera asynchroniczność oraz walidację danych dzięki Pydantic. Automatycznie generuje dokumentację OpenAPI i Swagger UI. Flask jest prostszy dla początkujących, ale nie ma natywnej walidacji ani asynchroniczności.
- Przykład zastosowania: model RandomForestClassifier na zbiorze danych Iris, osiągający 97% dokładności. Model zapisuje się np. do pliku “random_forest_model.pkl” i udostępnia przez REST API.
- FastAPI pozwala łatwo tworzyć endpointy POST do predykcji i GET do testowania. Dokumentacja dostępna jest pod “/docs” (np. http://localhost:8000/docs). Flask wymaga ręcznego dodania walidacji i dokumentacji.
- Do testowania API używaj narzędzi takich jak CURL, Postman lub pytest. To pomaga szybko wykryć błędy i sprawdzić odpowiedzi API.
Wybór frameworka do tworzenia API

Kiedy wybierasz framework do tworzenia API, myśl o swoich potrzebach. Flask jest prosty i lekki, ale FastAPI oferuje świetną wydajność i asynchroniczność.
Flask: Zalety i wady
Poniżej masz podsumowanie zalet i wad Flask w krótkich punktach.
| Zalety | Wady |
|---|---|
|
|
Przejdź dalej do sekcji o FastAPI, aby zobaczyć alternatywę.
FastAPI: Zalety i wady
FastAPI to nowoczesny wybór do budowy API dla modeli ML.
| Zalety | Wady |
|---|---|
|
|
Kluczowe kroki tworzenia API
Zaczynamy od zainstalowania niezbędnych bibliotek. Potem przygotowujemy model uczenia maszynowego… i uruchamiamy nasz serwer API. Prosto, prawda?
Instalacja wymaganych bibliotek
Zainstalujesz potrzebne pakiety zanim uruchomisz API. Skonfigurujesz środowisko, by uniknąć problemów.
- Utwórz wirtualne środowisko i aktywuj je, użyj pip do instalacji pakietów, to chroni zależności twojego projektu.
- Zainstaluj pandas i numpy, te biblioteki obsługują przetwarzanie danych i serializację danych przed wejściem do modelu.
- Zainstaluj tensorflow, ten pakiet uruchomi model uczenia maszynowego, pamiętaj o kompatybilnej wersji Pythona i GPU jeśli potrzebujesz przyspieszenia.
- Zainstaluj Flask i Flask-RESTful, to mikroframework z dodatkami do tworzenia RESTful API i prostego routingu.
- Dodaj Flask-SQLAlchemy i Flask-WTF jeśli planujesz bazy danych i formularze, te biblioteki ułatwiają integrację z bazami danych.
- Zainstaluj FastAPI poleceniem pip install fastapi, dodaj także pip install uvicorn, Uvicorn będzie serwerem ASGI dla aplikacji asynchronicznych.
- Zainstaluj pydantic i starlette, FastAPI używa ich do data validation, dependency injection i szybkiego routingu.
- Zainstaluj flask-marshmallow i flask-inputs jeśli potrzebujesz zaawansowanej walidacji i serializacji, to pomaga w error handling i data validation.
- Rozważ użycie Dockerfile do automatyzacji uruchomienia aplikacji Flask, Dockerfile zbuduje obraz i uprości deployment na serwerze.
- Zainstaluj narzędzia do testów i benchmarków, dodaj curl i Postman do testowania ręcznego, użyj pytest do testów automatycznych.
- Pomyśl o GraphQL z Graphene, ten wybór sprawdzi się przy złożonych api endpoints i alternatywie do RESTful API.
- Zainstaluj dodatkowe paczki zależne od projektu, na przykład biblioteki do serializacji, wstrzykiwania zależności i integracji z django dla większych aplikacji webowych.
Następnie przygotujesz model uczenia maszynowego.
Przygotowanie modelu uczenia maszynowego
Model uczenia maszynowego trzeba najpierw przygotować. Użyjesz zbioru danych Iris, który zawiera trzy gatunki kwiatów: Setosa, Versicolor i Virginica. Upewnij się, że dane są czyste i gotowe do użycia.
To ważny krok.
Następnie wybierzesz model. Może to być RandomForestClassifier, który osiągnął dokładność 97% na zbiorze danych Iris. Wykorzystaj bibliotekę scikit-learn do treningu modelu.
Zapiszesz go później w pliku, na przykład w “./model/random_forest_model.pkl”. Pamiętaj, że Twoje predykcje będą opierać się na czterech parametrach: sepal_length, sepal_width, petal_length, petal_width (float).
Kiedy model będzie gotowy, możesz go udostępnić przez REST API. Dodatkowo, stworzysz endpoint do ponownego trenowania modelu. Możesz zmienić parametry, takie jak test_size. Dzięki temu dostosujesz model do innych danych.
Dobre przygotowanie to klucz do sukcesu!
Uruchomienie serwera API
Aplikacja FastAPI działa w szybki i prosty sposób. Możesz łatwo uruchomić serwer API.
- Aby uruchomić aplikację FastAPI, użyj polecenia:
uvicorn step4-predict:app --reload --port 8080. To sprawi, że serwer zacznie działać na porcie 8080. - Domyślnie serwer ASGI FastAPI nasłuchuje na porcie 8000. Sprawdź ten port, jeśli nie zmieniłeś ustawień.
- Dla aplikacji Flask użyj polecenia:
python run app.py. To także włączy Twój serwer API. - W przypadku środowiska produkcyjnego, Flask powinien być uruchamiany przez serwer WSGI, np. Gunicorn. Dzięki temu możesz obsłużyć więcej użytkowników.
- API jest bezstanowe, co oznacza, że wielu użytkowników może korzystać z niego jednocześnie. Każda prośba jest traktowana osobno.
- Użytkownik może wysyłać dane do API w formacie JSON. To popularny format wymiany danych w aplikacjach webowych.
- Odpowiedź z API również przychodzi w formacie JSON. Dzięki temu łatwo przetworzysz wyniki we własnej aplikacji.
- Interaktywna dokumentacja API dostępna jest pod adresem http://127.0.0.1:8080/docs dla FastAPI. Możesz tam testować swoje endpointy i zobaczyć wszystkie funkcje.
Zaraz zajmiemy się budowaniem API przy użyciu Flask!
Budowanie API przy użyciu Flask
Budowanie API z Flask jest łatwe i szybkie. Najpierw skonfigurujesz środowisko, a potem wczytasz swój model uczenia maszynowego.
Konfiguracja środowiska
Aby zbudować API w Flask, musisz skonfigurować swoje środowisko. To ważny krok, więc nie spiesz się. Sprawdź poniższe kroki, aby to zrobić.
- Stwórz wirtualne środowisko za pomocą polecenia
python -m venv nazwa_środowiska. Pozwoli ci to na zarządzanie bibliotekami oddzielnie dla każdego projektu. - Aktywuj swoje wirtualne środowisko. Na Windows wpisz
nazwa_środowiskaScriptsactivate, a na macOS lub Linux użyjsource nazwa_środowiska/bin/activate. - Zainstaluj Flask, pisząc
pip install Flask. Jest to mikroframework webowy, który jest łatwy do zrozumienia i używania. - W razie potrzeby zainstaluj inne biblioteki, takie jak NumPy czy Pandas, które mogą wspomagać twój model uczenia maszynowego.
- Stwórz plik
app.py, gdzie będziesz pisał kod swojego API w Flask. - Skonfiguruj swój projekt, dodając potrzebne importy do pliku
app.py. - Nie zapomnij dodać pliku
.gitignore, aby uniknąć przesyłania niepotrzebnych plików do repozytorium Git.
Dzięki tym krokom ładnie przygotujesz swoje środowisko. Teraz jesteś gotów do budowy API przy pomocy Flask i wykorzystania swojego modelu uczenia maszynowego!
Wczytanie modelu ML
Model uczenia maszynowego (ML) jest kluczowy w działaniu API. Umożliwia on przewidywanie na podstawie danych. Oto jak wczytać model ML.
- Wybierz format zapisu modelu, np. pickle lub h5 dla TensorFlow.
- Użyj odpowiednich bibliotek, takich jak scikit-learn, TensorFlow lub PyTorch.
- Sprawdź lokalizację pliku z modelem, np. “./model/random_forest_model.pkl”.
- Załaduj model podczas startu aplikacji, aby poprawić czas odpowiedzi API.
- W Flask możesz wykorzystać Flask-RESTful do łatwego ładowania modelu ML.
- Przechowuj model w pamięci, aby uniknąć wielokrotnego wczytywania.
- Po wczytaniu model jest gotowy do predykcji na podstawie danych z żądania.
- Korzystaj z 4884 parametrów modelu sieci neuronowej do skutecznych prognoz.
- Testuj aplikację po załadunku modelu, aby upewnić się, że działa jak należy.
Wczytanie modelu to kluczowy krok w budowaniu API dla aplikacji webowych i rozwiązań związanych z data science!
Definiowanie endpointów API
Wczytanie modelu ML to ważny krok. Teraz przyszedł czas na definiowanie endpointów API. Endpointy to miejsca, gdzie aplikacje wymieniają dane.
- Wybierz nazwę dla swojego endpointu. Nazwa powinna być łatwa do zrozumienia i opisywać, co robi dany endpoint.
- Użyj dekoratora @app.route do zdefiniowania endpointu w Flask. Możesz ustawić różne metody, takie jak GET lub POST.
- Określ typ danych wejściowych. Możesz przesyłać je jako parametry URL lub JSON w ciele żądania.
- Odbieraj dane za pomocą funkcji kontrolera. Ta funkcja przetworzy dane i wykona odpowiednią akcję, np. wywołanie modelu ML do predykcji.
- Przygotuj odpowiedź w formacie JSON za pomocą jsonify w Flask. To sprawi, że odpowiedź będzie czytelna dla użytkownika.
- Zadbaj o walidację danych wejściowych. Flask nie oferuje tego automatycznie, więc możesz skorzystać z dodatkowych bibliotek, jeśli chcesz mieć pewność jakości danych.
- Sprawdź działanie swojego endpointu, testując go lokalnie przed wdrożeniem go na większą skalę.
Definiowanie endpointów to kluczowy element tworzenia API w pracy z modelami uczenia maszynowego!
Obsługa żądań GET i POST
W tej części omówimy, jak obsługiwać żądania GET i POST. To kluczowe elementy w tworzeniu API dla aplikacji webowych.
- GET jest używane do pobierania danych. Na przykład, możesz chcieć uzyskać listę przychodów lub wydatków.
- W Flask, możesz użyć parametru methods w dekoratorze @app.route, aby określić metody HTTP. Umożliwi to serwerowi rozpoznawanie żądań GET.
- Przy wykorzystaniu request.args, możesz łatwo pobierać dane z URL. To działa dobrze dla małych zapytań.
- Odpowiedzi API są najczęściej w formacie JSON. Sprawia to, że są one czytelne i łatwe do użycia.
- POST jest stosowane do wysyłania danych do serwera. Na przykład, gdy dodajesz nowy wydatek lub przychód.
- Do odbioru danych z POST służy request.json w Flask. Ułatwia to pracę z danymi wejściowymi.
- Ważne jest zwracanie kodów statusów HTTP w odpowiedziach, takich jak 200 dla sukcesu lub 400 dla błędów.
- Obsługa błędów w API jest istotna. Możesz zastosować mechanizmy try/except oraz @app.errorhandler, aby zarządzać wyjątkami.
- Dobrą praktyką jest walidacja danych wejściowych przed ich przetworzeniem; wymaga to jednak dodatkowych rozszerzeń jak Marshmallow.
Teraz jesteśmy gotowi, by przejść dalej… na temat budowania API przy użyciu Flask!
Budowanie API przy użyciu FastAPI
Szybko nauczy się budować API z FastAPI. Możesz łatwo wczytać swój model uczenia maszynowego, a Pydantic pomoże w walidacji danych.
Instalacja i konfiguracja FastAPI
FastAPI to szybki framework do budowania API w Pythonie. Działa na bazie Pydantic i Starlette, co sprawia, że jest wydajny.
- Zainstaluj FastAPI. Użyj polecenia: pip install fastapi.
- Zainstaluj serwer Uvicorn. To zrobisz poprzez: pip install uvicorn.
- Sprawdź wersję Pythona. FastAPI działa od wersji 3.6.
- Stwórz plik aplikacji, na przykład app.py. To w nim napiszesz kod swojego API.
- Wczytaj model uczenia maszynowego w swoim pliku aplikacyjnym. Możesz użyć popularnych modeli jak TensorFlow czy PyTorch.
- Uruchom aplikację FastAPI z terminala, wpisując: uvicorn nazwa_pliku:app –reload.
- Sprawdź działanie serwera na porcie 8000. Możesz otworzyć przeglądarkę i wpisać adres: http://127.0.0.1:8000/.
- Skorzystaj z automatycznie wygenerowanej dokumentacji OpenAPI dostępnej pod adresem /docs.
Przygotowanie do tworzenia API to świetny krok! Następnie możesz przejść do definiowania struktury danych wejściowych z Pydantic i endpointów do predykcji w FastAPI!
Wczytanie modelu ML za pomocą FastAPI
Możesz łatwo wczytać swój wytrenowany model ML z FastAPI. To prosta operacja, która pozwala na szybkie uruchomienie predykcji.
- Zainstaluj potrzebne biblioteki. Możesz użyć polecenia pip install fastapi scikit-learn uvicorn.
- Przygotuj plik modelu. Twój model klastrowania, jak RandomForestClassifier, powinien być zapisany przez pickle w pliku, np. “./model/random_forest_model.pkl”.
- Stwórz nowy plik Python i zaimportuj potrzebne pakiety. Użyj: import fastapi oraz import pickle.
- Załaduj model ML do pamięci. Użyj kodu: with open(“model/random_forest_model.pkl”, “rb”) as f: model = pickle.load(f).
- Zainicjuj instancję FastAPI w swoim skrypcie, pisząc: app = FastAPI().
- Stwórz endpoint przewidywania przy użyciu dekoratora @app.post(“/predict”). To będzie twoja ścieżka do uzyskania wyników.
- Zdefiniuj strukturę danych wejściowych z Pydantic, aby upewnić się, że dane mają prawidłowy format.
- Dodaj funkcję obsługującą żądanie POST i wykonującą przewidywania na podstawie danych wejściowych.
- Użyj metody .json() do zwrócenia wyników jako JSON klientowi wysyłającemu dane.
Proste, prawda? FastAPI sprawia, że wszystko jest szybkie i wygodne w pracy z modelami uczenia maszynowego!
Definiowanie struktury danych wejściowych z Pydantic
Definiowanie struktury danych z Pydantic to kluczowy element w pracy z FastAPI. Ułatwia to walidację danych wejściowych.
- Tworzenie klasy modelu. Klasa musi dziedziczyć po
BaseModelz Pydantic. Możesz w niej określić pola, które chcesz zbierać, np.sepal_length,sepal_width,petal_length, ipetal_width. Wszystkie typy są float. - Walidacja danych wejściowych. Pydantic automatycznie sprawdza poprawność danych na podstawie typu zdefiniowanego w klasie modelu. Dzięki temu unikniesz niespodzianek, gdy użytkownicy będą wysyłać dane.
- Wykorzystanie Pydantic do konwersji danych. Pydantic nie tylko waliduje, ale także konwertuje przysłane dane do odpowiednich typów. To bardzo zwiększa bezpieczeństwo Twojej aplikacji.
- Struktura zapytania wyjaśnia wymagane pola i ich typy. Dostarczając informacje o polach, pomożesz innym programistom korzystać z Twojego API bez problemu.
- Automatyczne generowanie dokumentacji API jest możliwe dzięki użyciu Pydantic. Gdy definiujesz modele, FastAPI tworzy dokumentację na podstawie tych struktur.
To wszystko sprawia, że praca z danymi w FastAPI staje się prostsza i bardziej przejrzysta, co prowadzi nas do kolejnego kroku – tworzenia endpointów do predykcji!
Tworzenie endpointów do predykcji
Przechodzimy teraz do tworzenia endpointów do predykcji. Endpoint do predykcji to kluczowy element API.
- Stwórz nową trasę w aplikacji. Możesz użyć dekoratora, aby zdefiniować adres URL. Dla predykcji ustalimy go na “/predict”.
- Ustal metodę dla endpointu. W tym przypadku będzie to POST, ponieważ będziemy wysyłać dane do analizy.
- Przyjmij określoną strukturę zapytania. Musisz zdefiniować cztery parametry float, które będą potrzebne do predykcji.
- Zbuduj funkcję, która wykona predykcję modelu ML. Ta funkcja powinna przyjmować dane wejściowe i zwracać wynik.
- Wynik zwróci jako słownik. Użyj klucza “class_index” dla indeksu klasy oraz “class_name” dla nazwy klasy.
- Dodaj możliwość ponownego trenowania modelu przez inny endpoint. Może to być np. ścieżka zmieniająca parametr test_size.
- Utwórz też uproszczony endpoint GET na “/”, który zwróci komunikat „Witaj w aplikacji FastAPI!” ze statusem 200 OK.
- Dla większej funkcjonalności możesz również dodać endpoint GET “/items/{item_id}”. Ten przyjmuje item_id i zwraca opis przedmiotu.
Endpointy są ważnym aspektem, gdy korzystasz z webowych frameworków takich jak Flask czy FastAPI w projektach związanych z uczeniem maszynowym!
Automatyczna dokumentacja API
FastAPI automatycznie tworzy dokumentację API. Jest ona zgodna z OpenAPI i JSON Schema. Możesz ją znaleźć pod adresem http://localhost:8000/docs. Dzięki temu, każdy użytkownik może łatwo sprawdzić, jak działa API.
Interaktywna dokumentacja pozwala na testowanie metod GET i POST.
Adnotacje typów w kodzie są używane do generacji dokumentacji. To oznacza, że możesz zobaczyć i zrozumieć, jakie dane możesz wysłać i otrzymać. Klikając „Try it out” i „Execute”, możesz przetestować różne funkcje API bezpośrednio w interfejsie.
To świetne dla programistów frontendowych i integratorów. Ułatwia to korzystanie z API i jego eksplorację.
Automatyczna dokumentacja sprawia, że praca z API staje się prostsza. Nie musisz pisać długich instrukcji ani szukać różnych informacji. Wszystko jest w jednym miejscu, co oszczędza czas i energię.
To naprawdę przydatne w świecie aplikacji webowych i uczenia maszynowego.
Porównanie Flask i FastAPI
Flask i FastAPI to dwa różne narzędzia do budowania API. Oba mają swoje mocne strony, ale wybór zależy od Twoich potrzeb i umiejętności. Flask jest prostszy, a FastAPI jest szybszy.
Co wybierzesz?
Łatwość użycia i konfiguracji
Ty szybko zrozumiesz, co znaczy łatwość użycia i konfiguracji.
| Aspekt | Flask | FastAPI |
|---|---|---|
| Start | Masz prosty start. Idealny dla nowicjuszy Pythona. Duża społeczność i zasoby. Nauczysz się WSGI jako podstawy. | Start jest prosty po poznaniu podstaw. Osoby znające Flask uczą się szybciej. Wspiera ASGI. |
| Konfiguracja | Konfigurujesz ręcznie. Elastyczny i surowy. Łatwo zobaczyć każdy krok. | Konfiguracja automatyzuje wiele rzeczy. Wymaga większej dyscypliny programisty. Używasz Pydantic do walidacji. |
| Walidacja i dokumentacja | Robisz walidację samodzielnie. Potrzebne dodatkowe biblioteki. | Walidacja automatyczna. Dokumentacja generuje się sama, dzięki temu oszczędzasz czas. |
| Wydajność | Działa dobrze dla małych projektów. Do większych potrzebujesz optymalizacji. | Zapewnia lepszą wydajność przy wzroście złożoności projektu. Szybsze odpowiedzi w wielu przypadkach. |
| Skalowanie | Skalujesz zewnętrznymi narzędziami, na przykład Gunicorn lub uWSGI. | Skalujesz z ASGI serwerami, na przykład uvicorn. Nowe funkcje Pythona wdrażane szybko. |
| Modele ML | Wczytasz scikit-learn, TensorFlow lub PyTorch ręcznie. Masz pełną kontrolę nad ładowaniem. | Wczytujesz te same biblioteki, z korzyścią z Pydantic i asynchroniczności. Integracja działa sprawnie. |
| Debug i narzędzia | Masz szeroką gamę tutoriali i przykładów. Społeczność istnieje od dawna. | Masz rosnące wsparcie i szybki rozwój funkcji. Społeczność rośnie prężnie od 2018/2019. |
| Testowanie | Testujesz za pomocą cURL, Postman i piszesz testy automatyczne. | Testujesz identycznie, plus korzyści z type hints w testach. |
| Rekomendacja | Jeśli zaczynasz, poznaj podstawy Flask i WSGI. To da ci szeroką wiedzę. | Jeśli projekt rośnie, wybierz FastAPI. Otrzymasz szybkie korzyści i automatyczne funkcje. |
Wydajność i szybkość odpowiedzi
FastAPI zapewnia dużą wydajność. Może obsługiwać wiele równoczesnych żądań. To sprawia, że odpowiedzi są szybsze. W dużych projektach, takich jak mikroserwisy, jest szczególnie pomocny. Model asynchroniczny ASGI pozwala lepiej wykorzystać zasoby.
Flask, choć prostszy w użyciu, działa synchronicznie. W dużym ruchu jego wydajność może być mniejsza. Może pojawić się opóźnienie, chyba że uruchomisz wiele instancji. FastAPI jest jednym z najszybszych frameworków dla dużej liczby zapytań na sekundę. Widać więc, że wybór frameworka ma wpływ na wydajność i szybkość odpowiedzi w twojej aplikacji webowej.
Przydatne funkcjonalności: walidacja danych, routing, dokumentacja
Płynnie przechodząc od wydajności FastAPI, przyjrzyjmy się jego przydatnym funkcjonalnościom. Walidacja danych jest jednym z największych atutów. Gdy przesyłasz dane, FastAPI sprawdza je automatycznie. Jeśli coś jest nie tak, dostaniesz odpowiedź 422. To zapobiega błędom.
Routing to kolejny mocny punkt. FastAPI pozwala tworzyć różne ścieżki dla różnych żądań. Dzięki temu możesz łatwo zarządzać ścieżkami API. Dokumentacja generuje się sama, co jest super wygodne. Zyskujesz dostępność pod adresami Swagger i ReDoc. To dużo ułatwia korzystanie z API i jego zrozumienie.
Przykładowe aplikacje z Flask i FastAPI
Aplikacje z Flask i FastAPI są naprawdę interesujące. Możesz stworzyć prostą aplikację do przewidywania wyników sportowych albo zaawansowany system rekomendacji filmów, jak Netflix.
Kod źródłowy aplikacji w Flask
Tworzenie aplikacji w Flask jest proste. Możesz szybko rozwijać swoje pomysły.
- Zainstaluj Flask. Możesz to zrobić za pomocą polecenia „pip install Flask”. Będzie to wymagało także Pythona.
- Utwórz plik o nazwie „app.py”. To będzie główny plik Twojej aplikacji.
- Zaimportuj Flask w swoim pliku. Użyj: „from flask import Flask”.
- Stwórz instancję aplikacji. Napisz: „app = Flask(name)”.
- Zdefiniuj swój pierwszy endpoint. Użyj dekoratora „@app.route(‘/’)” i funkcji „def hello(): return ‘Hello, World!’”.
- Uruchom serwer API za pomocą komendy „if name == ‘main‘: app.run(debug=True)”.
- Wejdź na stronę http://127.0.0.1:5000 w przeglądarce, aby zobaczyć efekt.
- Dodaj nowe endpointy, aby obsługiwać różne żądania GET i POST.
- Rozważ użycie WSGI w produkcji dla lepszej wydajności.
Flask jest elastycznym mikroframeworkiem webowym, idealnym do tworzenia prostych aplikacji internetowych i paneli administracyjnych. Teraz jesteś gotowy na dalsze eksperymenty!
Kod źródłowy aplikacji w FastAPI
Aplikacja w FastAPI jest łatwa do stworzenia. Poniżej znajdziesz kod źródłowy.
- Importuj potrzebne biblioteki, takie jak FastAPI i Pydantic. Zainstaluj je wcześniej, jeśli ich nie masz.
- Stwórz instancję FastAPI. Użyj
app = FastAPI()do tego celu. - Zdefiniuj model danych przy użyciu Pydantic. Model ten pomoże w walidacji danych wejściowych.
- Utwórz endpoint z użyciem dekoratora
@app.post("/predict"). Ten endpoint będzie obsługiwał żądania POST dla twojego modelu uczenia maszynowego. - W funkcji tego endpointa pobierz dane wejściowe i wykonaj predykcję przy pomocy modelu ML.
- Zwróć wynik predykcji jako odpowiedź API w formacie JSON. To sprawi, że klienci API będą mogli łatwo odczytać wynik.
- Dodaj dokumentację automatyczną, używając swagger UI, co ułatwi korzystanie z twojego API przez innych programistów.
- Uruchom serwer za pomocą
uvicorn, wpisującuvicorn main:app --reloadw terminalu.
Tworzenie API w FastAPI daje ci dużą elastyczność oraz wydajność dzięki asynchronicznym operacjom, co czyni go świetnym wyborem do pracy z aplikacjami webowymi i systemami uczenia maszynowego!
Jak testować API?
Testowanie API to świetny sposób, by upewnić się, że wszystko działa jak należy. Możesz używać narzędzi takich jak CURL lub Postman, by wysyłać żądania i sprawdzać odpowiedzi (to jak magia!).
Testowanie za pomocą CURL
CURL to narzędzie, które pozwala na wysyłanie żądań do API. Dzięki niemu, możesz łatwo sprawdzić, jak działa Twoje API.
- Zainstaluj CURL. Możesz go pobrać z jego strony internetowej lub użyć menedżera pakietów swojego systemu.
- Otwórz terminal lub wiersz poleceń. Tam wpiszesz komendy CURL.
- Wysyłaj zapytania GET do swojego API. Możesz użyć adresu URL, by uzyskać dane z endpointu.
- Użyj metody POST do wysyłania danych do API. To pozwoli ci na dodawanie nowych informacji do modelu uczenia maszynowego.
- Sprawdź odpowiedzi API po każdym zapytaniu. Na przykład, jeśli widzisz kod 200, wszystko działa dobrze.
- Testuj różne endpointy, takie jak „/dodaj//”. Przykład wywołania może wyglądać tak:
curl http://localhost:8000/dodaj/5/10. - Pamiętaj o metodach PUT i DELETE dla aktualizacji i usuwania danych.
- Skorzystaj z CURL dla automatycznych testów w skryptach oraz aplikacjach internetowych.
- Możesz korzystać z dokumentacji FastAPI, aby znaleźć przykłady zapytań CURL dla różnych endpointów.
CURL to świetny sposób na interakcję z Twoim API!
Testowanie za pomocą Postman
Testowanie API to ważny krok. Ułatwia sprawdzanie, czy wszystko działa jak należy. Postman to świetne narzędzie do tego celu.
- Zainstaluj Postman na swoim komputerze. Możesz pobrać go z oficjalnej strony. Instalacja jest prosta i zajmuje chwilę.
- Otwórz aplikację Postman po zakończeniu instalacji. Zapoznaj się z interfejsem, jest przyjazny dla użytkownika.
- Stwórz nowy request (żądanie). Kliknij “New” i wybierz “Request”. Nazwij go według swojego uznania.
- Wybierz typ żądania HTTP. Możesz użyć GET lub POST, w zależności od tego, co chcesz przetestować.
- Wprowadź URL swojego API w odpowiednim polu. To adres, pod którym działa twoje API.
- Jeśli używasz POST, dodaj dane do body (treści) żądania. Możesz wysłać dane w formacie JSON; to prosty sposób na przesłanie informacji.
- Sprawdź nagłówki (headers) żądania; czasami możesz potrzebować dodać dodatkowe informacje, takie jak typ treści.
- Kliknij przycisk “Send”, aby wysłać żądanie do serwera API. Postman pokaże ci odpowiedź w dolnej części ekranu.
- Przeanalizuj odpowiedź serwera; znajdziesz tam status kodu i wszelkie zwrócone dane.
- Powtarzaj proces dla różnych endpointów API i różnych typów danych.
Postman pomoże również w testowaniu modeli uczenia maszynowego w twoim API. Dzięki niemu szybko poznasz wszystkie funkcje swojej aplikacji webowej!
Pisanie testów automatycznych
Pisanie testów automatycznych to ważny krok w tworzeniu API. Pomaga upewnić się, że wszystko działa jak trzeba i eliminuje błędy.
- Wybierz odpowiednią bibliotekę do testowania. Możesz użyć
pytestlubunittest. To popularne narzędzia w Pythonie, które pomagają w pisaniu testów. - Przygotuj swój model uczenia maszynowego. Upewnij się, że model jest gotowy i można go załadować podczas testowania.
- Stwórz plik testowy. Nadaj mu nazwę mówiącą o tym, co będziesz testować, na przykład
test_api.py. - Zdefiniuj funkcję testową. Funkcje powinny zaczynać się od słowa “test”, aby framework je rozpoznał.
- Użyj biblioteki
requests, aby wysyłać żądania do swojego API. Sprawdź, czy odpowiedzi są takie jak oczekiwano. - Testuj metody GET i POST w swoim API. To pozwoli ci sprawdzić różne przypadki użycia.
- Dodaj asercje do swoich testów. Użyj ich, by porównać otrzymane odpowiedzi z oczekiwanymi wynikami.
- Uruchom swoje testy automatyczne przy pomocy polecenia
pytest. Zobaczysz wyniki wszystkich przeprowadzonych testów. - Zautomatyzuj uruchamianie testów przy każdej zmianie kodu, korzystając z CI/CD (Continuous Integration/Continuous Deployment).
- Sprawdzaj dokumentację API generowaną przez FastAPI właściwie z wykorzystaniem Pydantic BaseModel do walidacji danych wejściowych.
Dzięki tym krokom twoje API będzie bardziej niezawodne i łatwiejsze w utrzymaniu! Teraz przejdźmy do ostatniego tematu – podsumowania oraz rekomendacji…
Podsumowanie i rekomendacje
Stworzyłeś API do obsługi modeli uczenia maszynowego. Użyłeś Flask lub FastAPI. Oba narzędzia mają swoje plusy i minusy. Flask jest prosty i szybki dla prototypów, a FastAPI jest wydajny i nowoczesny.
Dzięki temu możesz łatwo integrować modele ML w swoich aplikacjach. Tworzenie endpointów, walidacja danych i automatyczna dokumentacja to kluczowe funkcje. Pamiętaj, że wybór frameworka zależy od Twoich potrzeb.
Inwestycja czasu w naukę przyniesie owoce. Nie bój się eksperymentować!
Często Zadawane Pytania
1. Co to jest API do obsługi modeli uczenie maszynowe?
API (application programming interface) to warstwa, która łączy modele uczenie maszynowe z aplikacje webowe i aplikacje internetowe. Dzięki niemu klienty mogą wysłać dane, a otrzymać przewidywania. Najczęściej buduje się je z użyciem frameworki webowe.
2. Które frameworki webowe warto rozważyć, Flask czy FastAPI?
Ja wybieram FastAPI, bo wspiera asynchronous programming i działa dobrze przy web applications o dużym ruchu. Flask jest prosty i łatwy do nauki. (Czasem żartuję, “just join it”, gdy ktoś chce szybko zacząć.)
3. Jak zadbać o serializacja danych i wstrzykiwanie zależności?
Używaj prostych formatów, jak JSON, do serializacja danych. Stosuj wstrzykiwanie zależności, by łatwiej testować i zmieniać moduły. Rób benchmarki, by mierzyć wydajność i znaleźć wąskie gardła.
4. Jak testować i wdrażać takie API w praktyce, na przykład w firmie typu uber?
Testuj lokalnie, potem w środowisku testowym, a na końcu wykonaj benchmarki w chmurze. W systemach jak uber (firma przewozowa) liczy się szybkość i stabilność. Monitoruj web applications i reaguj na błędy, to daje spokój w produkcji.
Referencje
- https://levelup.gitconnected.com/fastapi-vs-flask-a-gen-ai-developers-guide-to-building-apis-daca89afe7b9 (2026-03-13)
- https://www.statworx.com/en/content-hub/blog/how-to-build-a-machine-learning-api-with-python-and-flask (2020-07-29)
- https://medium.com/data-science/how-to-build-and-deploy-a-machine-learning-model-with-fastapi-64c505213857
- https://medium.com/launchai/machine-learning-engineering-part-1-how-to-create-a-rest-api-from-a-custom-algorithm-using-2d6e3b368e0a
- https://auth0.com/blog/developing-restful-apis-with-python-and-flask/
- https://medium.com/@herman.daniel/serve-ml-model-with-flask-rest-api-f4dda21c488a
- https://fastapi.tiangolo.com/
- https://grigorkh.medium.com/serving-ml-models-with-fastapi-a-production-ready-api-in-minutes-b5f4839a33a9
- https://medium.com/codenx/fastapi-pydantic-d809e046007f
- https://miroslawmamczur.pl/jak-serwowac-modele-ml-za-pomoca-fastapi/ (2023-12-13)
- https://www.contentful.com/blog/fastapi-vs-flask/ (2025-06-12)
- https://dokodu.it/blog/python/web/flask-vs-fastapi?srsltid=AfmBOorCPzphf0PlMKS-BdkdasSvgJ5WvwxLTeyH9qrOCEZTzpI-B90n
- https://dokodu.it/blog/python/web/flask-vs-fastapi?srsltid=AfmBOopNRQVrKsP950m5Fz6grPUAG6CkhkorcoAfPCHCBMlhLSeGjGNZ
- https://mattermost.com/blog/how-to-build-a-basic-api-with-python-flask/ (2022-01-26)
- https://learning.postman.com/docs/getting-started/quick-start
