- AI Fresh Automate & Innovate
- Posts
- 🦾 Uwolnij Moc AI: Budowanie asystenta AI z funkcjami strumieniowania przy użyciu Pythona, Streamlit i FastAPI
🦾 Uwolnij Moc AI: Budowanie asystenta AI z funkcjami strumieniowania przy użyciu Pythona, Streamlit i FastAPI
Streamlit na polowaniu razem z FastAPI
Wprowadzenie
W tym poradniku nauczysz się, jak stworzyć asystenta czatu AI, wykorzystując Streamlit jako frontend i FastAPI jako backend. Asystent będzie posiadał funkcję krótkotrwałej pamięci, umożliwiając użytkownikom zadawanie pytań i otrzymywanie odpowiedzi od AI w czasie rzeczywistym (strumieniowo).
W tym przewodniku omówimy następujące tematy:
Konfiguracja środowiska
Budowanie frontendu
Tworzenie backendu
Integracja frontendu z backendem
Obsługa strumieniowych odpowiedzi
Może to wyglądać na skomplikowane, ale obiecuję, że jest łatwiejsze, niż się wydaje. Zaczynajmy!
Wprowadzimy następujące tematy:
Pobierz pełny kod źródłowy!
Zachęcam do pobrania kodu źródłowego, dostępnego na dole tego artykułu lub klikając TUTAJ. Dostępny jest wyłącznie dla zalogowanych użytkowników.
Będę wdzięczny za rejestrację – to dla mnie sygnał, że to, co robię, ma sens i jest wartościowe dla was.
Konfiguracja środowiska
Zanim zaczniemy kodować, skonfigurujmy nasze środowisko. Upewnij się, że masz zainstalowany Python, a następnie zainstaluj niezbędne pakiety:

Następnie utwórz plik .env w głównym katalogu projektu, aby przechowywać zmienne środowiskowe, takie jak klucz API OpenAI.

Budowa frontendu
Nasz frontend zostanie zbudowany za pomocą Streamlit, frameworka, który pozwala tworzyć aplikacje internetowe za pomocą minimalnego kodu.
Krok 1: Importowanie bibliotek i ładowanie zmiennych środowiskowych

Wyjaśnienie:
Importujemy niezbędne biblioteki:
streamlitdo tworzenia interfejsu webowego,requestsdo wysyłania zapytań HTTP,dotenvdo ładowania zmiennych środowiskowych orazjsondo obsługi danych w formacie JSON.Ładujemy zmienne środowiskowe z pliku
.env.
Krok 2: Konfiguracja strony Streamlit i tytułu

Wyjaśnienie:
Konfigurujemy stronę Streamlit, ustawiając tytuł i ikonę strony.
Wyświetlamy tytuł aplikacji webowej na "AI_Fresh Assistant".
Krok 3: Definicja funkcji do pobierania odpowiedzi z backendu

Wyjaśnienie:
Definiujemy funkcję
get_response, która przyjmuje zapytanie użytkownika i historię czatu jako argumenty.Wysyłamy zapytanie POST do serwera backendowego z zapytaniem użytkownika i historią czatu.
Jeśli odpowiedź ma status 200 (OK), strumieniowo przetwarzamy odpowiedź i zwracamy każdą linię osobno.
Jeśli serwer zwróci błąd, zwracamy kod statusu błędu.
Krok 4: Inicjalizacja historii czatu w stanie sesji

Wyjaśnienie:
Inicjalizujemy historię czatu w stanie sesji, jeśli jeszcze nie istnieje.
st.session_stateprzechowuje dane, które trwają przez całą sesję użytkownika.
Krok 5: Wyświetlanie historii czatu

Wyjaśnienie:
Iterujemy przez historię czatu i wyświetlamy każdą wiadomość w zależności od tego, czy została wysłana przez AI, czy użytkownika.
st.chat_messageumożliwia tworzenie wiadomości w stylu czatu.
Krok 6: Obsługa wprowadzania użytkownika i wyświetlanie odpowiedzi

Wyjaśnienie:
Pobieramy wprowadzenie użytkownika i dodajemy je do historii czatu.
Wyświetlamy wiadomość użytkownika w czacie.
Wysyłamy wiadomość użytkownika do backendu i strumieniowo wyświetlamy odpowiedź AI, aktualizując historię czatu.
Tworzenie backendu
Nasz backend zostanie zaimplementowany za pomocą FastAPI, nowoczesnego, szybkiego frameworka do tworzenia API.
Krok 1: Importowanie bibliotek i ładowanie zmiennych środowiskowych

Wyjaśnienie:
Importujemy niezbędne biblioteki:
osdo zmiennych środowiskowych,jsondo obsługi danych JSON,FastAPIdo tworzenia serwera webowego,StreamingResponsedo strumieniowego przesyłania odpowiedzi,pydanticdo walidacji danych orazOpenAIdo interakcji z API OpenAI.Ładujemy zmienne środowiskowe z pliku
.env.
Krok 2: Inicjalizacja aplikacji FastAPI

Wyjaśnienie:
Inicjalizujemy aplikację FastAPI, co pozwala nam na tworzenie endpointów do obsługi zapytań HTTP.
Krok 3: Definicja modeli zapytania i odpowiedzi

Wyjaśnienie:
Definiujemy modele Pydantic do walidacji danych. QuestionRequest zawiera pytanie użytkownika i historię czatu, a AnswerResponse zawiera odpowiedź AI.

Na frontendzie używamy zmiennych chat_history i question, które przesyłają pytanie wraz z całą historią rozmowy do API. Historia rozmowy jest przechowywana po stronie frontendu.
Krok 4: Inicjalizacja klienta OpenAI

Wyjaśnienie:
Inicjalizujemy klienta OpenAI za pomocą klucza API ze zmiennych środowiskowych. Klient ten pozwala nam na interakcję z API OpenAI.
Krok 5: Definicja endpointu do zadawania pytań

Wyjaśnienie:
Definiujemy endpoint
/ask/, który akceptuje zapytanie POST z pytaniem użytkownika i historią czatu.Tworzymy kontekst dla asystenta AI z określonymi zasadami i historią czatu.
Używamy API OpenAI do uzyskania odpowiedzi od asystenta AI.
Strumieniowo przesyłamy odpowiedź do frontend, jeśli strumieniowanie jest włączone, w przeciwnym razie zwracamy pełną odpowiedź.
Jeżeli chcesz sprawdzić, jak działa czat bez streamingu, to zmień streaming z
TruenaFalse
Integracja frontendu z backendem
Krok 1: Uruchomienie serwera FastAPI
Uruchom serwer FastAPI za pomocą następującego polecenia:

Wyjaśnienie:
To polecenie uruchamia serwer FastAPI i włącza automatyczne przeładowywanie dla środowiska deweloperskiego.
Krok 2: Uruchomienie aplikacji Streamlit
Uruchom aplikację Streamlit za pomocą następującego polecenia:

Wyjaśnienie:
To polecenie uruchamia aplikację Streamlit, która otworzy się automatycznie w przeglądarce
Podsumowanie
W tym tutorialu nauczyliśmy się, jak stworzyć asystenta czatu AI za pomocą Streamlit na frontendzie i FastAPI na backendzie, implementując funkcję zapamiętywania rozmowy oraz funkcję streamowania odpowiedzi, która ulepsza doświadczenia użytkownika. Omówiliśmy konfigurację środowiska, budowanie frontendu, tworzenie backendu oraz integrację obu komponentów. Postępując zgodnie z tymi krokami, możesz stworzyć potężnego asystenta AI, który może obsługiwać zapytania użytkowników i dostarczać inteligentne odpowiedzi.
Reply