Implementacja ChatGPT z PubNub Webhooks w Django
Published: 2024-03-20 11:43:42

W dzisiejszym, stale rozwijającym się cyfrowym krajobrazie, musimy nieustannie gonić za nowymi aktualizacjami i mikrodopasowaniami, aby dążyć do cyfrowej perfekcji. Przy takim postępie, jedną z luk, która zawsze wymagała wypełnienia, jest potrzeba zapewnienia użytkownikom lepszych doświadczeń w rozmowach za pośrednictwem [chatbotów](https://www.pubnub.com/blog/building-a-chatbot-with-openai-gpt3-and-pubnub/). Celem było zaprojektowanie inteligentnych interakcji między firmami a osobami fizycznymi, tak aby użytkownik czuł się usatysfakcjonowany i emocjonalnie związany z produktem lub marką. Chatboty stały się więc wszechstronnym sposobem na zminimalizowanie luki między światem cyfrowym a rzeczywistym i przekształcenie sposobu, w jaki komunikujemy się online za pomocą aplikacji internetowych, urządzeń z systemem Android i Apple oraz przeglądarek internetowych.

Chatboty zaspokajają rosnące zapotrzebowanie na komunikację w czasie rzeczywistym i wsparcie, którego oczekuje każdy użytkownik. Firmom łatwo jest stracić potencjalnych klientów i potencjalnych klientów bez potężnego chatbota, ponieważ istnieje wiele opcji do wyboru. Wzrost oczekiwań napędza zatem eskalację walki o adaptację, ponieważ chatboty są włączane do produktów cyfrowych, aby zapewnić wygodę użytkownikom i sprawić, by ich doświadczenia były satysfakcjonujące.

Wyobraź sobie: zamówiłeś pilnie potrzebne artykuły spożywcze, ale zamówienie jest opóźnione. Otwierasz aplikację internetową i nie widzisz żadnego ruchu w systemie śledzenia. Musisz uzyskać aktualizację. Oto dwa możliwe scenariusze:

**Pierwszy scenariusz:** Wybierasz numer obsługi klienta i czekasz, ponieważ linie są zajęte. Twoja frustracja rośnie.

**Drugi scenariusz:** Masz opcję [czatu](https://www.pubnub.com/solutions/chat/) na żywo i otrzymujesz pomoc niemal natychmiast. Otrzymujesz informację, że kierowca dostawy jest w drodze i dotrze do Ciebie w ciągu kilku minut. Masz również możliwość połączenia się z przedstawicielem online, jeśli chcesz uzyskać szczegółowe informacje.

_Które doświadczenie wolisz?_

Wszyscy użytkownicy oczekują pewnego poziomu wygody w swoich działaniach online. Niezależnie od tego, czy chodzi o zakupy, zapytania, edukację, gry itp.; natychmiastowe udostępnianie informacji i rozwiązywanie zapytań jest jednym z największych czynników generujących pozytywne doświadczenia i interakcje online, a zatem jest niezbędne.

Rosnące znaczenie chatbotów
---------------------------

Niedawny raport badawczy Grand View Research, Inc. sugeruje, że wielkość rynku chatbotów znacznie wzrośnie w nadchodzących latach i osiągnie około 27,3 mld USD do 2030 roku. [27,3 mld USD do 2030 roku](https://www.grandviewresearch.com/press-release/global-chatbot-market). Będzie to oznaczać CAGR na poziomie 23,3% od bieżącego roku do 2030. Co najmniej zdumiewające tempo wzrostu! Prognoza ta podkreśla kluczową rolę, jaką chatboty będą odgrywać w budowaniu przyszłości komunikacji cyfrowej, ponieważ nadal wypełniają lukę między technologią a użytkownikami.

Tradycyjne metody komunikacji mają trudności z zapewnieniem natychmiastowego i responsywnego wsparcia, podczas gdy inteligentne chatboty, zasilane technologią obejmującą Django, webhooki PubNub i model językowy ChatGPT, doskonale angażują użytkowników w znaczące interakcje.

Firmy czerpią korzyści z inteligentnych chatbotów na różne sposoby. Automatyzują one wskaźniki odpowiedzi, zapewniają szybką obsługę klienta w przypadku przewidywalnych zapytań, a gdy pojawiają się złożone kwestie, chatbot może przekierować rozmowę do ludzkiego przedstawiciela, zapewniając jednocześnie komfort użytkownika. Oprócz świadczenia wsparcia, chatboty napędzają również sprzedaż, generują leady i dbają o reputację marek w sieci. Automatyzacja oferowana przez chatboty obniża również koszty dla firm i usprawnia procesy. Jest to szczególnie korzystne dla handlu elektronicznego poprzez [poprawiając doświadczenia klientów](https://www.pubnub.com/blog/4-ways-ecommerce-chatbots-enrich-customer-experiences/) dzięki sugestiom zakupowym, spersonalizowanym rekomendacjom, powtarzaniu ofert w oparciu o historię i częstotliwość i wiele więcej.

Projektowanie inteligentnych chatbotów to złożone zadanie. Wymaga innowacji i zrozumienia ludzkich zachowań online. Potężne frameworki, takie jak Django, platformy do przesyłania wiadomości w czasie rzeczywistym, takie jak PubNub, i zaawansowane modele językowe AI, takie jak ChatGPT, mogą współpracować w celu zaprojektowania kompleksowej strategii generowania responsywnych i dynamicznych doświadczeń użytkowników; wraz z kontekstem, znaczeniem i stymulacją.

### Framework Django i webhooki PubNub

Framework Django jest [jednym z najlepszych frameworków Pythona](https://www.browserstack.com/guide/top-python-web-development-frameworks)tworząc podstawę dla rozwoju oprogramowania chatbota. Zapewnia również podstawową logikę w ramach frameworka, która umożliwia ciągłą komunikację i zaangażowanie. Programiści mają możliwość tworzenia wciągających aplikacji, w których złożone funkcje mogą być również zintegrowane z zestawem narzędzi, aby zapewnić bogaty ekosystem. Django usprawnia proces rozwoju dzięki zorganizowanemu i bardziej usystematyzowanemu podejściu do tworzenia aplikacji internetowych, które można łatwo utrzymać. Można to głównie przypisać jego potężnym funkcjom, takim jak wbudowany routing URL, solidne mechanizmy bezpieczeństwa i architektura Model-View-Controller (MVC).

Webhooki PubNub przenoszą jednak poziom interakcji na wyższy poziom, służąc jako kanał łączący backend Django ze strukturą komunikatów PubNub. Webhooki PubNub są w stanie odpowiadać na wiadomości użytkowników w czasie rzeczywistym, ponieważ ich funkcjonalność jest uruchamiana natychmiast po otrzymaniu wiadomości. Staje się zdolny do odpowiadania na zapytania, sugerowania rekomendacji, pomagania użytkownikom i angażowania się w dialog bez żadnego zauważalnego opóźnienia. To szybkie dostarczanie odpowiedzi prowadzi do przepływu konwersacji, które mimo że są zautomatyzowane na zapleczu, wydają się naturalne dla każdego użytkownika. Omówimy szczegółowo, w jaki sposób [budowanie chatbota z PubNub i ChatGPT / OpenAI](https://www.pubnub.com/blog/build-a-chatbot-with-pubnub-and-chatgpt-openai/) daje programistom przewagę w tworzeniu angażujących chatbotów opartych na sztucznej inteligencji.

Inteligencja chatbota jest mierzona w jego zdolności do pobierania historii i pobierania referencji z poprzednich interakcji, a tym samym tworzenia ekosystemu znaczących i spójnych rozmów. [PubNub's fetch\_messages](https://www.pubnub.com/docs/chat/sdks/messages/message-history) pozwala chatbotom wywnioskować kontekst każdej interakcji poprzez pobranie historii czatu. Ta funkcja umożliwia spersonalizowane, spójne rozmowy, które sprawiają, że użytkownicy czują się docenieni i zrozumiani.

PubNub's [ChatGPT](https://www.pubnub.com/integrations/openai/) jeszcze bardziej poprawi wrażenia użytkowników. ChatGPT to model językowy oparty na sztucznej inteligencji, który wykorzystuje algorytm głębokiego uczenia się do generowania odpowiedzi poprzez zrozumienie kontekstu zapytań. Integracja ChatGPT z frameworkiem czasu rzeczywistego PubNub zapewnia szybką reakcję i utrzymuje naturalny przepływ konwersacji.

Zarówno Django, jak i PubNub doskonale radzą sobie z dużym obciążeniem, jednocześnie obsługując rosnący odsetek użytkowników. Współpraca frameworka Django i infrastruktury PubNub umożliwia personalizację, zrozumienie języka specyficznego dla domeny i precyzyjne generowanie odpowiedzi. Regularne aktualizacje i modyfikacje odpowiedzi ChatGPT pozwalają chatbotom zrozumieć język specyficzny dla domeny i precyzyjnie spełniać preferencje użytkowników.

Integracja webhooków PubNub w samouczku Django
----------------------------------------------

Udostępnimy teraz szablon do integracji webhooków PubNub z aplikacją Django.

### Konfiguracja środowiska

Zanim zagłębimy się w techniczne wykonanie, upewnijmy się, że środowisko deweloperskie jest dokładnie skonfigurowane.

**Zainstaluj wymagane zależności:** Pierwszym krokiem jest zainstalowanie niezbędnego oprogramowania i bibliotek. Python i Django są obowiązkowe dla backendu, a także wszelkie dodatkowe pakiety lub wtyczki wymagane dla danego projektu. Tworzenie wirtualnego środowiska pomaga zarządzać zależnościami. PubNub jest wieloplatformowy, obsługuje inne SDK od Java do React i REST API do JavaScript / Node.js, ale ten samouczek będzie używał Pythona.

**Utwórz projekt Django:** Po zainstalowaniu wszystkich wymaganych pakietów, utwórz nowy projekt Django. Stanie się on podstawową bazą dla twojej aplikacji chatbota.

**Uzyskaj klucze API:** Klucze API będą ważne do interakcji z usługami peryferyjnymi, takimi jak PubNub i ChatGPT. Zarejestruj się i utwórz konta na tych platformach, aby uzyskać niezbędne klucze wymagane do uwierzytelniania żądań.

### Stwórz punkt końcowy webhooka Django

Zdefiniuj webhook endpoint, który będzie odbierał zdarzenia PubNub w twoim projekcie Django. Ten punkt końcowy powinien być skonfigurowany do obsługi żądań HTTP POST i przetwarzania przychodzącego ładunku zdarzeń.

### Skonfiguruj webhooki PubNub

Na swoim koncie PubNub skonfiguruj ustawienia webhooka, by wysyłać odpowiednie zdarzenia do adresu URL punktu końcowego webhooka Django. Określ zdarzenia, które chcesz przechwytywać, takie jak nowe wiadomości publikowane na kanale.

### Przetwarzanie przychodzących zdarzeń

W widoku punktu końcowego webhooka Django wyodrębnij niezbędne informacje z otrzymanego ładunku zdarzenia. Obejmuje to analizowanie treści wiadomości, wszelkich powiązanych metadanych i dodatkowego kontekstu wymaganego do przetwarzania za pomocą ChatGPT.

```js
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status

      
 class PubNubOpenAIView(APIView):


def post(self, request):
        try:
            payload = request.data
            question = payload["event"]["eventPayload"]["message"]
            sender = payload["event"]["senderId"]
            channel = payload["event"]["channel"]

            pubnub_history = get_pubnub_history(channel)
            history_messages = [message.message for message in history.result.channels[channel]]  
            openai_response = get_openai_response(message, history_messages)
            pubnub_response = publish_message(
                channel, openai_response
            )

            if pubnub_response.status.status_code == status.HTTP_200_OK:
                return Response({"status": "success"}, status=status.HTTP_200_OK)
            else:
                return Response(
                    data={"error": "Error while sending back to pubnub"},
                    status=pubnub_response,
                )

        except Exception as pubnub_open_ai_error:
            return Response(
                {"message": pubnub_open_ai_error.args[0]},
                status=status.HTTP_400_BAD_REQUEST,
            )
```

### Wdrażanie konwersacji kontekstowych

PubNub zapewnia potężną funkcję o nazwie fetch\_messages, która umożliwia pobieranie historii czatu dla określonego kanału. Funkcja ta odgrywa kluczową rolę w tworzeniu bardziej znaczących i angażujących interakcji, pokazując zdolność chatbota do zapamiętywania historii i personalizowania rozmów poprzez odwoływanie się do poprzedniej komunikacji.

Historia czatu odgrywa kluczową rolę w tworzeniu bardziej znaczących i angażujących interakcji. Pokazuje ona zdolności chatbota do zapamiętywania historii, wzmacniając w ten sposób jego poczucie pamięci. Dodatkowo, jest on w stanie spersonalizować konwersacje, odwołując się do wcześniejszej komunikacji. To dynamiczne podejście prowadzi do postrzegania naturalnej konwersacji po stronie użytkownika.

Ten krok jest ważną częścią procesu wdrażania w celu utrzymania znaczącej komunikacji w całym środowisku chatbota.

Oto samouczek Pythona na temat tego, jak zaimplementować konwersacje kontekstowe za pomocą fetch\_messages.

```js
from pubnub.pnconfiguration import PNConfiguration
from pubnub.pubnub import PubNub


pnconfig = PNConfiguration()

pnconfig.subscribe_key = os.environ["PUBNUB_SUBSCRIBE_KEY"]
pnconfig.publish_key = os.environ["PUBNUB_PUBLISH_KEY"]
pubnub = PubNub(pnconfig)
history_count = 5         
    
 def get_pubnub_history(channel):
    envelope = pubnub.fetch_messages() \
        .channels([channel]) \
        .count(int(history_count)) \
        .include_meta(True) \
        .sync()
    return envelope
```

### Wykorzystanie ChatGPT do generowania odpowiedzi

Przekaż wyodrębnioną treść wiadomości do modelu ChatGPT w celu wygenerowania odpowiedzi. Wykorzystaj moc ChatGPT do generowania spójnych i kontekstowo odpowiednich odpowiedzi na podstawie danych wejściowych.

```js
import openai


def get_openai_response(message: str, history: list):
 """
 This function connects to the OpenAI API and fetches a response for the given user request.
 """
 try:
     messages = []
     messages.extend(history) # adding previous context
     messages.append({"role": "system", "content": message})
     response = openai.ChatCompletion.create(
         model="gpt-3.5-turbo", messages=messages
     )
     return response["choices"][0].message.content

 except Exception as e:
     raise Exception(e)
```

### Wysyłanie odpowiedzi przez PubNub

Po wygenerowaniu odpowiedzi użyj PubNub, aby wysłać odpowiedź z powrotem do żądanych kanałów lub odbiorców, zapewniając dostarczanie w czasie rzeczywistym.

```js
from pubnub.pnconfiguration import PNConfiguration
from pubnub.pubnub import PubNub


pnconfig = PNConfiguration()

pnconfig.subscribe_key = os.environ["PUBNUB_SUBSCRIBE_KEY"]
pnconfig.publish_key = os.environ["PUBNUB_PUBLISH_KEY"]
pubnub = PubNub(pnconfig)
         
            
 def publish_message(channel, message):
    """
        This function is used to send a message to PubNub.
        channel: Channel name where the message needs to be sent
        message: message that is to be sent back to user
    """
    response = pubnub.publish().\
        channel(channel).\
        message(message).\
        meta({'from': 'chatbot'}).\
        sync()
    return response
```

Tworzenie stron internetowych: Po otrzymaniu odpowiedzi będziesz chciał utworzyć frontend HTML / CSS, aby przeanalizować JSON zwrócony przez wywołanie subskrypcji PubNub.

### Dostarczanie podpowiedzi specyficznych dla domeny

Personalizacja konwersacji za pomocą podpowiedzi specyficznych dla domeny zwiększa możliwości chatbota. Z pomocą ChatGPT możemy strategizować odpowiedzi za pomocą podpowiedzi specyficznych dla domeny. Zmniejsza to również zależność od wiadomości generowanych przez użytkowników. Poniższy samouczek może pomóc w procesie integracji podpowiedzi opartych na domenie i późniejszym wykonaniu ChatGPT:

#### Prepend the Prompt

Zamiast wysyłać wiadomości od użytkowników bezpośrednio do ChatGPT, ustal kontekst, dodając podpowiedzi specyficzne dla domeny, prowadzące do odpowiedzi dostosowanych do pożądanych wyników. Pomaga to zbudować głębokie zrozumienie ChatGPT w celu strukturyzowania odpowiedzi w oparciu o podpowiedzi specyficzne dla domeny i dostarczania ukierunkowanych odpowiedzi. Spójrzmy na kilka przykładów:

-   Dla chatbota rezerwującego stolik na kolację: "Hostessa: \[Wiadomość użytkownika\]".
    
-   W scenariuszu obsługi klienta: "Agent wsparcia: \[Wiadomość użytkownika\]".
    
-   Dla asystenta rezerwacji hotelowej: "Ekspert hotelowy: \[Wiadomość użytkownika\]".
    

#### Generowanie niestandardowych odpowiedzi

Włączając monit oparty na domenie, będziesz mógł skierować ChatGPT do generowania odpowiedzi, które są idealnie dopasowane do pożądanego wyniku. Ta metoda tworzy spójny ekosystem, który umożliwia wciągającą komunikację i pozwala chatbotowi dostarczać spersonalizowane rozwiązania.

Oto kilka przykładów:

-   Chatbot zajmujący się doradztwem ubezpieczeniowym może poprzedzać wiadomości słowami "Doradca ubezpieczeniowy: \[Wiadomość użytkownika\]", aby odpowiedzi na wiadomości były adekwatne do zapytań związanych z ubezpieczeniem.
    
-   Chatbot trenera żywieniowego może używać "Trener: \[Wiadomość użytkownika\]", aby zaoferować spersonalizowane porady i plany żywieniowe.
    

#### Różnorodność podpowiedzi i eksperymentowanie

Korzystanie z podpowiedzi specyficznych dla domeny nie tylko ustanawia kontekst, ale także umożliwia naukę i eksperymentowanie. Możesz powtarzać zapytania z różnymi podpowiedziami, aby zoptymalizować odpowiedzi ChatGPT. Oto sposób na eksperymentowanie:

-   Dostosuj ton: W przypadku formalnego ustawienia użyj "Pozdrowienia, jestem tutaj, aby ci pomóc: \[Wiadomość użytkownika\]", podczas gdy dla nieformalnego tonu można użyć "Hej tam! Porozmawiajmy: \[Wiadomość użytkownika\]".
    
-   Podkreśl wiedzę specjalistyczną: W przypadku chatbota do konsultacji medycznych, zgodnie z nagłym przypadkiem, w którym działa branża, możesz zainicjować monity za pomocą "Lekarz: \[Wiadomość użytkownika\]", aby podkreślić autorytet odpowiedzi.
    

Integracja podpowiedzi opartych na domenie pozwala chatbotowi na efektywną interakcję z użytkownikami i zapewnienie ukierunkowanego wsparcia, które jest naturalne jako doświadczenie.

Podsumowanie
------------

Połączenie Django, webhooków PubNub i ChatGPT OpenAI oferuje niezrównany zestaw narzędzi do tworzenia inteligentnych, w pełni interaktywnych aplikacji chatbot. Deweloperzy mogą wypełnić lukę między światem cyfrowym i rzeczywistym, wzmacniając zależność od automatyzacji komunikacji.

Django wnosi ze sobą solidny framework aplikacji internetowych, który może stanowić solidną podstawę dla wielofunkcyjnych, skalowalnych i znaczących doświadczeń chatbotów. Tymczasem zdolność PubNub do reagowania w czasie rzeczywistym zapewnia, że rozmowy pozostają płynne i prowadzą do ciągłości, która zapewnia użytkownikom naturalne i autentyczne wrażenia. Dodatkowo ChatGPT umożliwia odpowiedzi kontekstowe, które sprawiają, że użytkownicy czują się głęboko zrozumiani.

Dzięki pełnej implementacji potencjału Django, responsywności PubNub w czasie rzeczywistym i wykorzystaniu wiedzy językowej ChatGPT, deweloperzy mogą dostarczać niesamowite rezultaty w postaci unikalnych i innowacyjnych aplikacji chatbot. Te cyfrowe interfejsy usprawnią interakcje, niezależnie od tego, czy chodzi o pomoc, udzielanie wsparcia, czy sugerowanie podpowiedzi. Wszystkie trzy razem zmieniają sposób, w jaki użytkownik wchodzi w interakcję z chatbotami opartymi na sztucznej inteligencji.

Możesz dowiedzieć się więcej o różnych sposobach łączenia [możliwości](https://www.pubnub.com/solutions/data-streaming/) PubNub w [czasie rzeczywistym](https://www.pubnub.com/solutions/data-streaming/) i jego znaczeniu w zwiększaniu skalowalności aplikacji.

#### Spis treści

[Rosnące znaczenie](#h-0)[chatbotówFramework Django i](#h-1)[webhooki](#h-5)[](#h-1)[PubNubIntegracja webhooków PubNub w samouczku DjangoUstawianie](#h-2)[środowiskaTworzenie](#h-3)[punktu końcowego webhooka DjangoKonfiguracja](#h-4)[webhooków PubNubPrzetwarzanie](#h-5)[zdarzeń przychodzącychWdrażanie](#h-6)[konwersacji kontekstowychUżycie](#h-7)[ChatGPT do generowania odpowiedziWysyłanie](#h-8)[odpowiedzi przez PubNubZapewnianie](#h-9)[podpowiedzi specyficznych dla domenyPrzygotowywanie](#h-10)[podpowiedziNiestandardowe](#h-11)[generowanie](#h-12)[odpowiedziWarianty](#h-13)[podpowiedzi](#h-12)[i](#h-13)[eksperymentowanieWnioski](#h-14)

Jak PubNub może ci pomóc?
=========================

Ten artykuł został pierwotnie opublikowany na [PubNub.com](https://www.pubnub.com/blog/implementing-chatgpt-with-pubnub-in-django/)

Nasza platforma pomaga programistom tworzyć, dostarczać i zarządzać interaktywnością w czasie rzeczywistym dla aplikacji internetowych, aplikacji mobilnych i urządzeń IoT.

Fundamentem naszej platformy jest największa w branży i najbardziej skalowalna sieć przesyłania wiadomości w czasie rzeczywistym. Dzięki ponad 15 punktom obecności na całym świecie obsługującym 800 milionów aktywnych użytkowników miesięcznie i niezawodności na poziomie 99,999%, nigdy nie będziesz musiał martwić się o przestoje, limity współbieżności lub jakiekolwiek opóźnienia spowodowane skokami ruchu.

Poznaj PubNub
-------------

Sprawdź [Live Tour](https://www.pubnub.com/tour/introduction/), aby zrozumieć podstawowe koncepcje każdej aplikacji opartej na PubNub w mniej niż 5 minut.

Rozpocznij konfigurację
-----------------------

Załóż [konto](https://admin.pubnub.com/signup/) PubNub, aby uzyskać natychmiastowy i bezpłatny dostęp do kluczy PubNub.

Rozpocznij
----------

[Dokumenty](https://www.pubnub.com/docs) PubNub pozwolą Ci rozpocząć pracę, niezależnie od przypadku użycia lub [zestawu SDK](https://www.pubnub.com/docs).