Implémentation de ChatGPT avec PubNub Webhooks dans Django
Published: 2024-03-20 12:05:42

Dans le paysage numérique en constante expansion d'aujourd'hui, nous devons constamment rechercher de nouvelles mises à jour et des micro-ajustements afin de tendre vers la perfection numérique. Avec de telles avancées, un fossé qui a toujours dû être comblé est la nécessité d'offrir aux utilisateurs de meilleures expériences dans leurs conversations via les [chatbots](https://www.pubnub.com/blog/building-a-chatbot-with-openai-gpt3-and-pubnub/). L'objectif est de concevoir des interactions intelligentes entre les entreprises et les individus afin que l'utilisateur se sente satisfait et émotionnellement lié au produit ou à la marque. Les chatbots sont donc apparus comme un moyen polyvalent de réduire l'écart entre le monde numérique et le monde réel et de transformer la façon dont nous communiquons en ligne avec les applications web, les appareils Android et Apple, et les navigateurs web.

Les chatbots répondent à la demande croissante de communication et d'assistance en temps réel que tout utilisateur attend. Il est facile pour les entreprises de perdre des clients potentiels et des prospects sans un chatbot puissant, car il existe de nombreuses options parmi lesquelles ils peuvent choisir. L'augmentation des attentes est donc à l'origine de l'escalade de la bataille de l'adaptation, les chatbots étant incorporés dans les produits numériques pour faciliter la vie des utilisateurs et rendre leur expérience satisfaisante.

Imaginez : vous avez commandé des produits d'épicerie dont vous aviez besoin de toute urgence, mais la commande est retardée. Vous ouvrez l'application web et ne voyez aucun mouvement dans votre système de suivi. Vous avez besoin d'une mise à jour. Voici deux scénarios possibles :

**Premier scénario :** Vous composez le numéro du service clientèle et vous attendez car les lignes sont occupées. Votre frustration augmente.

**Deuxième scénario :** Vous avez la possibilité d'utiliser le [chat en direct](https://www.pubnub.com/solutions/chat/) et vous êtes aidé presque immédiatement. Vous êtes informé que le livreur est en route et qu'il arrivera chez vous dans quelques minutes. Vous avez également la possibilité d'entrer en contact avec un représentant en ligne si vous souhaitez obtenir des informations détaillées.

_Quelle expérience préférez-vous ?_

Tous les utilisateurs s'attendent à un certain niveau de commodité dans leurs activités en ligne. Qu'il s'agisse d'achats, de demandes de renseignements, d'éducation, de jeux, etc., le partage instantané d'informations et la résolution des questions sont l'un des principaux éléments déclencheurs d'une expérience et d'une interaction en ligne positives et donc nécessaires.

L'importance croissante des chatbots
------------------------------------

Un récent rapport de recherche de Grand View Research, Inc. suggère que la taille du marché des chatbots va augmenter de manière significative dans les années à venir et atteindra environ 27,3 milliards USD d'ici 2030. [27,3 milliards de dollars d'ici à 2030](https://www.grandviewresearch.com/press-release/global-chatbot-market). Cela correspondra à un taux de croissance annuel moyen (CAGR) de 23,3 % entre l'année en cours et 2030. Un taux de croissance pour le moins étonnant ! Cette projection souligne le rôle essentiel que les chatbots joueront dans la construction de l'avenir de la communication numérique en continuant à combler le fossé entre la technologie et les utilisateurs.

Les méthodes de communication traditionnelles peinent à fournir une assistance immédiate et réactive, alors que les chatbots intelligents, alimentés par des technologies telles que Django, PubNub webhooks et le modèle de langage ChatGPT, excellent à engager les utilisateurs dans des interactions significatives.

Les entreprises bénéficient des chatbots intelligents de différentes manières. Ils automatisent les taux de réponse, fournissent un support client rapide aux questions prévisibles et, lorsque des problèmes complexes surviennent, le chatbot peut transférer la conversation à un représentant humain, tout en assurant le confort de l'utilisateur. Outre l'assistance, les chatbots stimulent les ventes, génèrent des prospects et préservent la réputation en ligne des marques. L'automatisation offerte par les chatbots permet également de réduire les coûts pour les entreprises et de rationaliser les processus. Le commerce électronique en bénéficie tout particulièrement [en améliorant l'expérience des clients](https://www.pubnub.com/blog/4-ways-ecommerce-chatbots-enrich-customer-experiences/) avec des suggestions d'achat, des recommandations personnalisées, des inscriptions répétées basées sur l'historique et la fréquence, et bien d'autres choses encore.

La conception de chatbots intelligents est une tâche complexe. Elle nécessite de l'innovation et une compréhension du comportement humain en ligne. Des frameworks puissants comme Django, des plateformes de messagerie en temps réel comme PubNub, et des modèles de langage IA sophistiqués comme ChatGPT, peuvent travailler ensemble pour concevoir une stratégie complète afin de générer des expériences utilisateur réactives et dynamiques, avec du contexte, du sens et de la stimulation.

### Le framework Django et les webhooks PubNub

Le framework Django est [l'un des meilleurs frameworks Python](https://www.browserstack.com/guide/top-python-web-development-frameworks)Il constitue une base pour le développement de logiciels de chatbot. Il fournit également la logique essentielle dans le cadre qui permet une communication et un engagement continus. Les développeurs ont la possibilité de créer des applications immersives où des fonctionnalités complexes peuvent également être intégrées dans la boîte à outils pour fournir un écosystème riche. Django rationalise le processus de développement grâce à une approche organisée et plus systématisée de la création d'applications web qui peuvent être facilement maintenues. Cela peut être principalement attribué à ses puissantes fonctionnalités, telles que le routage d'URL intégré, les mécanismes de sécurité robustes et l'architecture Modèle-Vue-Contrôleur (MVC).

Les webhooks de PubNub, cependant, amènent le niveau d'interaction à un niveau supérieur en servant de conduit entre votre backend Django et la structure de messagerie de PubNub. Les webhooks de PubNub sont capables de répondre aux messages des utilisateurs en temps réel car leur fonctionnalité est immédiatement déclenchée à la réception d'un message. Il devient capable de répondre aux questions, de suggérer des recommandations, d'aider les utilisateurs et d'engager le dialogue sans aucun retard visible. Cette rapidité des réponses conduit à un flux de conversations qui, même si elles sont automatisées en amont, semblent naturelles pour n'importe quel utilisateur. Nous discuterons en profondeur de la façon dont [construire un chatbot avec PubNub et ChatGPT / OpenAI](https://www.pubnub.com/blog/build-a-chatbot-with-pubnub-and-chatgpt-openai/) donne aux développeurs un avantage dans la création de chatbots engageants pilotés par l'IA.

L'intelligence d'un chatbot se mesure à sa capacité à récupérer l'historique et à prendre des références sur les interactions passées, créant ainsi un écosystème de conversations significatives et cohérentes. [La fonction fetch\_messages de PubNub](https://www.pubnub.com/docs/chat/sdks/messages/message-history) de PubNub permet aux chatbots de déduire le contexte de chaque interaction en récupérant l'historique des conversations. Cette fonctionnalité permet des conversations personnalisées et cohérentes qui donnent aux utilisateurs le sentiment d'être valorisés et compris.

La fonctionnalité [ChatGPT](https://www.pubnub.com/integrations/openai/) de PubNub améliorera encore l'expérience des utilisateurs. ChatGPT est un modèle linguistique d'apprentissage automatique basé sur l'IA qui utilise un algorithme d'apprentissage profond pour générer des réponses en comprenant le contexte des requêtes. L'intégration de ChatGPT avec le cadre en temps réel de PubNub garantit une réactivité rapide et maintient un flux naturel de conversations.

Django et PubNub excellent tous deux dans la gestion des charges de trafic élevées tout en accommodant un pourcentage croissant d'utilisateurs. La collaboration entre le cadre de Django et l'infrastructure de PubNub permet la personnalisation, la compréhension du langage spécifique à un domaine et la génération de réponses précises. Des mises à jour régulières et des modifications dans les réponses de ChatGPT permettent aux chatbots d'acquérir une compréhension du langage spécifique au domaine et de répondre aux préférences de l'utilisateur avec une précision évidente.

Intégration des webhooks PubNub dans un tutoriel Django
-------------------------------------------------------

Nous allons maintenant vous fournir un modèle pour intégrer les webhooks PubNub dans votre application Django.

### Mise en place de l'environnement

Avant de plonger dans l'exécution technique, assurons-nous que l'environnement de développement est correctement configuré.

**Installez les dépendances nécessaires :** La première étape consiste à installer les logiciels et bibliothèques essentiels. Python et Django sont obligatoires pour le backend, ainsi que tous les paquets ou plugins supplémentaires requis pour le projet concerné. La création d'un environnement virtuel facilite la gestion des dépendances. PubNub est multiplateforme et prend en charge d'autres SDK, de Java à React, et des API REST à JavaScript / Node.js, mais ce tutoriel utilisera Python.

**Créez un projet Django :** Une fois que tous les paquets requis sont installés, créez un nouveau projet Django. Celui-ci deviendra la base de votre application de chatbot.

**Obtenir les clés API :** Les clés API seront importantes pour interagir avec des services périphériques tels que PubNub et ChatGPT. Inscrivez-vous et créez des comptes sur ces plateformes pour obtenir les clés nécessaires à l'authentification de vos requêtes.

### Créer un point de terminaison Django webhook

Définissez un endpoint webhook qui recevra les événements PubNub dans votre projet Django. Ce point de terminaison doit être configuré pour gérer les requêtes HTTP POST et traiter la charge utile de l'événement entrant.

### Configurer les webhooks PubNub

Dans votre compte PubNub, configurez les paramètres du webhook pour envoyer les événements pertinents à l'URL de votre webhook Django. Spécifiez les événements que vous souhaitez capturer, tels que la publication de nouveaux messages sur un canal.

### Traitement des événements entrants

Dans la vue de votre point de terminaison Django webhook, extrayez les informations nécessaires de la charge utile de l'événement reçu. Cela inclut l'analyse du contenu du message, des métadonnées associées et de tout contexte supplémentaire requis pour le traitement avec 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,
            )
```

### Mise en œuvre de conversations contextuelles

PubNub fournit une fonctionnalité puissante appelée fetch\_messages qui vous permet de récupérer l'historique des conversations pour un canal spécifique. Cette fonctionnalité joue un rôle essentiel dans la création d'interactions plus significatives et engageantes, en mettant en évidence la capacité du chatbot à se souvenir de l'historique et à personnaliser les conversations en se référant à des communications antérieures.

L'historique des conversations joue un rôle crucial dans la création d'interactions plus significatives et plus engageantes. Il met en évidence les prouesses du chatbot en matière de mémorisation de l'histoire, renforçant ainsi son sens de la mémoire. En outre, il est capable de personnaliser les conversations en se référant à des communications antérieures. Cette approche dynamique donne à l'utilisateur l'impression d'avoir une conversation naturelle.

Cette étape est une partie importante du processus de mise en œuvre pour maintenir une communication significative dans l'environnement du chatbot.

Voici un tutoriel Python sur la façon dont vous pouvez mettre en œuvre des conversations contextuelles en utilisant 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
```

### Utiliser ChatGPT pour la génération de réponses

Transmettez le contenu du message extrait au modèle ChatGPT pour la génération de réponses. Tirez parti de la puissance de ChatGPT pour générer des réponses cohérentes et adaptées au contexte en fonction des données fournies.

```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)
```

### Envoyer la réponse via PubNub

Une fois la réponse générée, utilisez PubNub pour renvoyer la réponse aux canaux ou aux destinataires souhaités, en garantissant une livraison en temps réel.

```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
```

Développement web : Une fois la réponse reçue, vous voudrez créer du HTML / CSS frontal pour analyser le JSON renvoyé par votre appel d'abonnement PubNub.

### Fournir des invites spécifiques à un domaine

La personnalisation des conversations à l'aide d'invites spécifiques à un domaine améliore les capacités du chatbot. Avec l'aide de ChatGPT, nous pouvons élaborer des stratégies de réponse à l'aide d'invites spécifiques à un domaine. Cela permet également de réduire la dépendance aux messages générés par les utilisateurs. Le tutoriel ci-dessous peut vous aider dans votre processus d'intégration d'invites basées sur le domaine et dans l'exécution ultérieure de ChatGPT :

#### Prédire l'invite

Au lieu d'envoyer des messages d'utilisateurs directement à ChatGPT, établissez le contexte en ajoutant des messages-guides spécifiques à un domaine, conduisant à des réponses alignées sur les résultats souhaités. Cela permet d'acquérir une connaissance approfondie du ChatGPT pour structurer des réponses basées sur des messages-guides spécifiques à un domaine et fournir des réponses ciblées. Voyons quelques exemples :

-   Pour un chatbot de réservation de table de dîner : "Hôtesse : \[Message de l'utilisateur\]"
    
-   Dans un scénario d'assistance à la clientèle : "Agent d'assistance : \[Message de l'utilisateur\]".
    
-   Pour un assistant de réservation d'hôtel : "Expert en hôtellerie : \[Message de l'utilisateur\]".
    

#### Génération de réponses personnalisées

En incluant une invite basée sur un domaine, vous serez en mesure de diriger ChatGPT pour générer des réponses qui sont parfaitement alignées avec le résultat souhaité. Cette méthode crée un écosystème cohérent qui permet une communication immersive et permet au chatbot de fournir des solutions personnalisées.

Voici quelques exemples :

-   Un chatbot de conseil en assurance pourrait faire précéder ses messages de la mention "Conseiller en assurance : \[Message de l'utilisateur\]" pour que les réponses aux messages restent pertinentes par rapport aux demandes liées à l'assurance.
    
-   Un chatbot coach en nutrition peut utiliser "Coach : \[Message de l'utilisateur\]" pour offrir des conseils et des plans diététiques personnalisés.
    

#### Variation des messages-guides et expérimentation

L'utilisation d'invites spécifiques à un domaine permet non seulement d'établir un contexte, mais aussi d'apprendre et d'expérimenter. Vous pouvez réitérer les requêtes avec des invites variées afin d'optimiser les réponses de ChatGPT. Voici une façon d'expérimenter :

-   Modifiez le ton : Dans un cadre formel, utilisez "Bonjour, je suis ici pour vous aider : \[Message de l'utilisateur\]", tandis que pour un ton informel, vous pouvez utiliser "Bonjour ! Parlons-en : \[Message de l'utilisateur\]".
    
-   Mettez l'accent sur l'expertise : Pour un chatbot de consultation médicale, en fonction de l'urgence à laquelle le secteur répond, vous pouvez lancer des messages-guides avec "Docteur : \[Message de l'utilisateur\]" pour souligner l'autorité des réponses.
    

L'intégration d'invites basées sur le domaine permet à votre chatbot d'interagir avec les utilisateurs de manière efficace et de fournir une assistance ciblée qui est naturelle en tant qu'expérience.

Conclusion
----------

La combinaison de Django, des webhooks PubNub et du ChatGPT d'OpenAI offre une boîte à outils inégalée pour créer des applications de chatbot intelligentes et totalement interactives. Les développeurs peuvent combler le fossé entre le monde numérique et le monde réel, en renforçant la dépendance à l'égard de l'automatisation de la communication.

Django apporte avec lui un cadre d'application web robuste qui peut constituer une base solide pour des expériences de chatbot évolutives, multifonctionnelles et significatives. Parallèlement, la capacité de réponse en temps réel de PubNub garantit que les conversations restent fluides et conduisent à une continuité qui offre une expérience naturelle et authentique aux utilisateurs. De plus, ChatGPT permet des réponses contextuelles qui font que les utilisateurs se sentent profondément compris.

Avec l'implémentation complète du potentiel de Django, la réactivité en temps réel de PubNub et l'utilisation de l'expertise linguistique de ChatGPT, les développeurs peuvent fournir des résultats étonnants sous la forme d'applications de chatbot uniques et innovantes. Ces interfaces numériques rationaliseront les interactions, qu'il s'agisse d'assistance, de soutien ou de suggestions. Ces trois éléments combinés redéfinissent la manière dont les utilisateurs interagissent avec les chatbots conversationnels pilotés par l'IA.

Vous pouvez découvrir plus en détail les diverses façons dont les [capacités en temps réel](https://www.pubnub.com/solutions/data-streaming/) de PubNub sont connectées et son importance dans l'augmentation de l'évolutivité des applications.

#### Sommaire

[L'importance croissante des chatbotsLe](#h-0)[framework Django et les webhooks de](#h-1)[PubNubTutoriel sur l'intégration des webhooks de](#h-2)[PubNub](#h-1)[dans DjangoMise en place](#h-2) de l'[environnementCréation d'](#h-3)[un point de terminaison de webhook DjangoConfiguration des](#h-4)[webhooks de PubNubTraitement des](#h-5)[événements entrantsMise en place de](#h-6)[conversations contextuellesUtilisation de](#h-7)[ChatGPT pour la génération de réponsesEnvoi de réponses](#h-8)[via PubNubFourniture d'](#h-9)[invites spécifiques au domainePréparation de l'](#h-10)[inviteGénération de réponses](#h-12)[personnaliséesVariation et](#h-13)[expérimentation](#h-14)[des invitesConclusion](#h-13)

Comment PubNub peut-il vous aider ?
===================================

Cet article a été publié à l'origine sur [PubNub.com](https://www.pubnub.com/blog/implementing-chatgpt-with-pubnub-in-django/)

Notre plateforme aide les développeurs à construire, fournir et gérer l'interactivité en temps réel pour les applications web, les applications mobiles et les appareils IoT.

La base de notre plateforme est le réseau de messagerie en temps réel le plus grand et le plus évolutif de l'industrie. Avec plus de 15 points de présence dans le monde, 800 millions d'utilisateurs actifs mensuels et une fiabilité de 99,999 %, vous n'aurez jamais à vous soucier des pannes, des limites de concurrence ou des problèmes de latence causés par les pics de trafic.

Découvrez PubNub
----------------

Découvrez le [Live Tour](https://www.pubnub.com/tour/introduction/) pour comprendre les concepts essentiels de chaque application alimentée par PubNub en moins de 5 minutes.

S'installer
-----------

Créez un [compte PubNub](https://admin.pubnub.com/signup/) pour un accès immédiat et gratuit aux clés PubNub.

Commencer
---------

La [documentation PubNub](https://www.pubnub.com/docs) vous permettra de démarrer, quel que soit votre cas d'utilisation ou votre [SDK](https://www.pubnub.com/docs).