# Zajęcia 4 ## Aplikacje REST - Fastapi Jako zadanie pierwsze proszę przerobić wszystkie przykłady z https://fastapi.tiangolo.com/tutorial/ z działow od "First Steps" do "Request Body" odpalając każdy przykład na komputerze. Następnie proszę użyć modelu KNN z wczorajszych zajęc i wystawić w REST API oraz uruchomić serwis, który będzie serwował odpowiedzi dla zadanych parametrów wejśćiowych. Następnie osobno korzystając z : - curl - pythonowej bibliteki requests ( https://pypi.org/project/requests/ ) proszę wysłać zapytanie do serwisu proszę zadać pytanie do serwisu REST. Powinni państwo dostać predykcję modelu. ## Testowanie w pythonie - Pytest Przeczytaj https://docs.pytest.org/en/7.4.x/getting-started.html odpalając przykłady na komputerze. Pobierz dane w następujący sposób: ` import pandas as pd` ` url = 'https://raw.githubusercontent.com/bigmlcom/python/master/data/spam.csv'` ` data = pd.read_csv(url, sep='\t')` Podziel dane na train i test oraz wytrenuj model TF IDF + regresja logistyczna. Nastepnie stwórz funkcję `predict_text_category(text: str)`, która przyjmuje tekst oraz zwraca string 'spam' lub 'ham'. Jeżeli funkcja nie otrzyma stringa, a inny typ danych, funkcja ma zwracać None. Napisz kilka testów sprawdzających czy dana funkcja faktycznie dla stringów zwraca string, który zawiera się w zbiorze {'spam','ham'}, a dla innych typów None. ## Testowanie REST API Przeczytaj https://fastapi.tiangolo.com/tutorial/testing/ odpalając przykłady na komputerze Osadź model z poprzedniego zadania w REST API i napisz testy REST API. ## Przetestowanie maszyny Skorzystaj z instrukcji "Dostęp do kontenera wdrożeniowego ... " zawartej w tym katalogu. Wystarczy uruchomić konsolę i zalogować się na root bez dalszych kroków. Następnie na maszynie umieść plik `fastapi_examples/simple.py` (np. korzystając z git). Następnie zainstaluj środowisko (albo bezpośrednio pip albo miniconda- odradzam używanie anacondy na tym serwerze gdyż ma tylko 1GB RAM) Uruchom przykład: `python -m uvicorn main:app --host 0.0.0.0` Sprawdź czy `curl "ppw-MYLOGIN.vm.wmi.amu.edu.pl:8000"` zmieniająć MYLOGIN na login użytkownika zwraca poprawny wynik. Uwaga: Adres jest dostępny tylko w sieci wydziałowej WMI (albo za VPN). ## Własny projekt Jeżeli wykonałeś/aś wszystkie zadania, pracuj nad projektem zaliczeniownym.