Créer des applications Web basées sur l'IA avec React, Astro et l'API OpenAI | Stephan Haewß | Skillshare

Vitesse de lecture


1.0x


  • 0.5x
  • 0.75x
  • 1 x (normale)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Créer des applications Web basées sur l'IA avec React, Astro et l'API OpenAI

teacher avatar Stephan Haewß

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Regardez ce cours et des milliers d'autres

Bénéficiez d'un accès illimité à tous les cours
Suivez des cours enseignés par des leaders de l'industrie et des professionnels
Explorez divers sujets comme l'illustration, le graphisme, la photographie et bien d'autres

Leçons de ce cours

    • 1.

      De quoi parle ce cours ?

      3:14

    • 2.

      La plateforme et l'API OpenAI

      5:53

    • 3.

      Outils à utiliser dans ce cours

      4:04

    • 4.

      Créer notre première application astro

      5:22

    • 5.

      Ajouter la réaction à notre application

      4:50

    • 6.

      Ajouter notre premier point de terminaison REST pour le serveur

      4:10

    • 7.

      Préparer l'appel de l'API ouverte

      10:07

    • 8.

      Fournir le message utilisateur via un paramètre d'URL

      5:03

    • 9.

      Première véritable interface utilisateur client dans Response

      7:15

    • 10.

      Sauvegarder l'historique de chat

      8:29

    • 11.

      Reposer le chat

      5:46

    • 12.

      Améliorer l'UX

      9:59

    • 13.

      Historique de chat plus joli

      6:58

    • 14.

      Résumé de notre première application de chat

      2:18

    • 15.

      Nouvelle application : discuter avec des PNJ dans un jeu d'aventure texte

      5:15

    • 16.

      Présentation de l'histoire

      5:11

    • 17.

      Préparation des quêtes

      5:01

    • 18.

      Premier chat AI

      5:05

    • 19.

      Mise en place de la scène avec le message système

      9:24

    • 20.

      Appel de fonction I

      5:32

    • 21.

      Appel de fonction II fournissant le résultat

      5:50

    • 22.

      Marquer la quête terminée

      4:02

    • 23.

      Quitter le chat

      8:23

    • 24.

      Parler au Dr Owen

      4:39

    • 25.

      Commencez un nouveau chat sur le serveur

      8:28

    • 26.

      Fournir une nouvelle fonction pour le Dr Owen

      6:25

    • 27.

      Chat avec un robot de sécurité

      9:00

    • 28.

      Nouveau projet : Assistent de vente virtuel pour la boutique en ligne

      6:53

    • 29.

      Meilleure recherche de produits

      6:42

    • 30.

      Plus de produits

      3:08

    • 31.

      Paramètres multiples dans les appels de fonction

      4:44

    • 32.

      Gamme de prix de fixation non définie

      3:10

    • 33.

      Ajouter un produit au panier

      5:36

    • 34.

      Recherche de produits floue

      7:10

    • 35.

      Résumé

      2:56

  • --
  • Niveau débutant
  • Niveau intermédiaire
  • Niveau avancé
  • Tous niveaux

Généré par la communauté

Le niveau est déterminé par l'opinion majoritaire des apprenants qui ont évalué ce cours. La recommandation de l'enseignant est affichée jusqu'à ce qu'au moins 5 réponses d'apprenants soient collectées.

28

apprenants

1

projets

À propos de ce cours

Dans ce cours vidéo, vous embarquerez dans un voyage passionnant dans le monde du développement Web et de l'intelligence artificielle. Vous apprendrez à créer des applications de chat alimentées par l'IA à l'aide de JavaScript, React, AstroJS et de l'API OpenAI. Tout au long du cours, vous travaillerez avec l'API OpenAI, qui utilise le même modèle d'IA/Grand Langage (LLM) qui alimente ChatGPT.

Le cours est divisé en trois projets passionnants :

  1. Clone ChatGPT : vous commencerez par créer un clone ChatGPT simple qui permet aux utilisateurs d'avoir des discussions de base avec une IA. Apprendre à intégrer l'API OpenAI pour exploiter la puissance de la génération de langues, en créant une expérience de chat transparente et interactive.

  2. Aventure basée sur le texte : Ensuite, vous plongerez dans un jeu d'aventure basé sur le texte passionnant dans un univers de science-fiction. Les joueurs vont résoudre des énigmes et naviguer dans l'histoire en interagissant avec des personnages IA par le chat. Découvrez comment l'IA peut être utilisée pour créer des expériences de narration immersives et captivantes.

  3. Assistant aux ventes en ligne : dans le projet final, vous allez créer une application pratique simulant un assistant de vente en ligne pour les guitares et les basses guitares. Les utilisateurs peuvent discuter avec l'IA pour se renseigner sur les produits disponibles. Apprenez à appliquer l'IA dans des scénarios du monde réel, améliorant l'expérience utilisateur et l'efficacité dans les interactions de commerce électronique.

À la fin du cours, vous serez compétent dans l'utilisation de JavaScript, React et AstroJS pour créer des applications de chat attrayantes alimentées par l'API OpenAI. Rejoignez-nous dans cette aventure extraordinaire et libérer le potentiel de l'IA dans le développement Web !

Rencontrez votre enseignant·e

Teacher Profile Image

Stephan Haewß

Enseignant·e
Level: Intermediate

Notes attribuées au cours

Les attentes sont-elles satisfaites ?
    Dépassées !
  • 0%
  • Oui
  • 0%
  • En partie
  • 0%
  • Pas vraiment
  • 0%

Pourquoi s'inscrire à Skillshare ?

Suivez des cours Skillshare Original primés

Chaque cours comprend de courtes leçons et des travaux pratiques

Votre abonnement soutient les enseignants Skillshare

Apprenez, où que vous soyez

Suivez des cours où que vous soyez avec l'application Skillshare. Suivez-les en streaming ou téléchargez-les pour les regarder dans l'avion, dans le métro ou tout autre endroit où vous aimez apprendre.

Transcription

1. De quoi parle ce cours ?: Bonjour et bienvenue dans notre nouveau cours vidéo passionnant sur programmation d'applications de chat basées sur l'IA avec JavaScript, React Astro JS et l'API Open AI Je suis ravie d'être votre professeur en ligne, et ensemble, nous entreprendrons un voyage extraordinaire dans le monde des applications de chat basées sur l'intelligence artificielle. Dans ce cours, nous aborderons le domaine de IA et verrons comment créer trois applications Web fascinantes Chacune de ces applications sera alimentée par l'API Open AI, le SAN sur lequel repose Hat GBT, et développée à l'aide de technologies de développement Web populaires telles que JavaScript React et Astro jazz À la fin de ce cours, vous aurez les compétences et la confiance nécessaires pour créer des applications de chat intelligentes sophistiquées qui interagissent avec les utilisateurs de manière unique et engageante. Jetons un bref coup d'œil aux trois projets passionnants que nous allons construire. Premièrement, discutez avec GPT Clone. Nous allons commencer par créer un clone de chat GBT simple qui permet aux utilisateurs d'avoir des conversations de base avec une IA Vous apprendrez comment intégrer l'API Open AI pour exploiter la puissance de la génération de langues et créer une expérience de chat fluide. À la fin de cette section, vous aurez votre propre application de chat AI Power opérationnelle. Deuxièmement, un jeu d' aventure basé sur le texte. Dans cette section, nous allons nous lancer un défi avec un jeu d'aventure textuel sur le thème de la science-fiction. Les joueurs résoudront des énigmes et navigueront dans l'histoire en interagissant avec les personnages via le chat. Les personnages dotés d'intelligence artificielle réagiront intelligemment, rendant l'expérience immersive et divertissante Vous obtiendrez des informations précieuses sur la manière dont l'IA peut être utilisée pour créer des récits interactifs et captivants Numéro trois, assistante aux ventes en ligne. Dans la dernière section, nous allons créer une application pratique qui simule un assistant commercial en ligne Les utilisateurs peuvent discuter avec l'IA pour se renseigner sur les produits disponibles, qui dans ce cas seront des guitares et des basses Vous apprendrez à intégrer l'IA dans des scénarios du monde réel, améliorer l' expérience utilisateur et à rendre les interactions de commerce électronique plus engageantes et plus efficaces. À la fin de ce cours, vous aurez les connaissances et les compétences nécessaires pour créer des applications de chat AI Power capables d'étonner vos amis, collègues et employeurs potentiels Embarquons ensemble dans ce voyage passionnant en découvrant le monde fascinant des applications de chat basées sur l' IA avec JavaScript, React AstroJS et l'API Open AI Maintenant, voici une information intéressante. Le script d'introduction que vous venez d'entendre a en fait été généré par nul autre que l'IA que nous allons utiliser dans ce cours, le GPT Oui, c'est exact. En tant que modèle de langage d'IA développé par OpenAI, hAttPT est capable de comprendre et de générer du texte semblable à un humain en fonction du contexte qui lui est donné Aujourd'hui, nous allons au-delà de simple génération de texte en l'utilisant de manière pratique pour créer des applications du monde réel. Je suis ravi d'être votre compagnon et votre professeur et hâte de voir les incroyables applications que vous allez créer. Commençons. D'ailleurs, ce texte a également été généré par ChatBT et celui que vous entendez maintenant est généré par moi, votre professeur. Commençons donc. 2. La plateforme et l'API OpenAI: Bonjour, et bienvenue sur cette vidéo. Ici, je vais entrer dans les détails de la plateforme Open AI qui alimente hGPT Pas trop, mais j'aimerais vous montrer quelques points importants ici. Je suppose donc que vous connaissez tous HAGPT, l'application de chat AI qui peut être utilisée pour générer des textes, répondre à des questions, écrire du code de programmation, etc. Tout cela repose sur un vaste modèle de langage, le LLM, développé par Open AI et capable de compléter un texte écrit dans un langage naturel d'une manière qui semble plus ou moins logique Un point important que vous devez comprendre est que le L&M ne fait compléter le texte qui lui est donné Ainsi, même s'il semble que vous discutez avec un modèle linguistique étendu, celui-ci ne fait que compléter l'historique des discussions qui lui est fourni de la manière la plus probable. Cela signifie que le réseau neuronal, le grand modèle de langage, prédit les mots suivants les plus probables en fonction des données sur lesquelles il a été entraîné Chaque fois que vous appelez une fonction API de l' API Open AI, vous devez toujours fournir le contexte complet, par exemple l' historique complet des discussions afin que le LLM puisse créer une complétion basée sur ce contexte même Le LLM n'a pas de mémoire, vous devez donc fournir toutes les données pertinentes chaque fois que vous demandez à l' API de le terminer Si vous voulez savoir comment fonctionne l' API ouverte , vous pouvez bien sûr consulter la page Web sous la plateforme Open AI Com Docs. Voici cette page ici. Ils disposent également d'un terrain de jeu où vous pouvez tester les appels d'API en fournissant uniquement les données. Vous n'avez donc pas besoin d' écrire dans un langage de programme. Il vous suffit d'écrire les données dans un champ de formulaire, puis d'appeler l'API avec ces données, et le résultat vous est présenté. Ils ont également des exemples dans différents langages de programmation ainsi de la documentation de leurs bibliothèques pour Python et pour JavaScript. Et bien sûr, il existe une documentation de référence complète, qui se trouve ici. Donc, pour le chat ou pour les complétions, vous devez jeter un œil ici Il s'agit des complétions de référence d'API de Doc, puis, par exemple, de create, puis vous avez la documentation pour terminer la création Et ici, vous pouvez voir que vous pouvez changer le langage de programmation ici. Il n'y a pas de Jazz puis Python, et vous pouvez même utiliser curl pour cela Il s'agit donc d'une API de repos, vous pouvez donc également utiliser quelque chose comme curl ou peut-être Postman, quelque chose comme ça Et nous avons ici toute la description de toutes les API, fonctionnalités. Donc, pour utiliser l'API et le terrain , vous devez également créer un compte en cliquant sur S'inscrire C'est ici, puis vous pouvez saisir votre adresse e-mail, continuer à saisir un mot de passe ou vous pouvez choisir de vous inscrire auprès de Google, Microsoft ou Apple. Et puis si vous l'avez fait, vous recevrez environ 5$, si je me souviens bien, pour pouvoir tout tester et tester l'API. Et les 5$ sont des crédits pour ce que l'on appelle des jetons, et les jetons sont , disons, grosso modo , des mots, mais ils peuvent aussi être des parties de mots. Vous avez donc presque toujours plus de jetons que de mots. Je pense que c'est plus ou moins un tiers de plus que des mots. Vous devez donc avoir cela à l'esprit. C'est toujours un peu plus après votre inscription Je pense que vous obtenez des crédits de 5$ pour le paiement des jetons. Chaque jeton compte dans les appels d'API. De même, les jetons renvoyés par le LLM comptent également Et aussi, bien sûr, les jetons que vous donnez au L&M. Donc, si vous avez un très long historique de chat, par exemple, vous avez plus de jetons, car chaque fois que vous appelez l'API, l'API de complétion, par exemple, vous devez fournir toutes les données, tout l'historique du chat, par exemple Cela coûtera donc plus cher si vous avez des discussions plus longues. Je dois m' inscrire dès maintenant, car nous avons besoin d'une clé d'API pour appeler l'API et suivre tous les exemples de ce cours. Comme je l'ai dit, vous obtenez 5$ ou quelque chose comme ça sous forme de crédits que vous pouvez utiliser, et je pense que cela suffit pour tous les exemples présentés dans ce cours. Mais bien sûr, cela dépend de la quantité de jetons que vous utilisez et que vous donnez au LLM, et que le LLM retourne, bien entendu, également Ainsi, une fois inscrit, vous pouvez créer des clés d'API, et je vous montrerai cela plus tard et aussi, bien sûr, comment l' API est appelée, mais vous pouvez déjà le vérifier ici. Ils ont un démarrage rapide, puis vous pouvez également utiliser le terrain de jeu ici après vous être inscrit, après vous être connecté , puis vous pouvez utiliser tous les exemples ici dans le terrain de jeu. Et puis joue un peu avec. Quoi qu'il en soit, nous utiliserons l'API très bientôt dans la première section de notre première application, qui sera un clone de chat GPT, quelque chose comme ça, une application de chat, une application simple Et dans ce cadre, vous pourrez discuter avec le grand modèle de langage grâce à l'IA, et ce sera notre premier projet. OK, c'est tout pour cette vidéo. À bientôt. 3. Outils à utiliser dans ce cours: Bien, dans cette vidéo, nous parlerons des outils, des bibliothèques et des frameworks que nous utiliserons et connaissances que vous devriez déjà avoir avant de suivre ce cours. Commençons donc par JavaScript. Vous devriez déjà être capable de programmer en JavaScript, bien sûr, au-delà du niveau d'un programme Hello World ou de copier-coller depuis des pages Web, comme Stack Overflow Vous devez donc également être familiarisé avec la plupart des fonctionnalités de la version six d' AchmaScript, telles que les fonctions de flèche, le consulat, la déstructuration et les modules, ainsi que les fonctions de tableau telles que la réduction de carte peut-être Côté serveur, nous utiliserons Node JS, et en plus de cela, nous utiliserons Astro Jaz Vous devez donc avoir des connaissances de base sur node JS, bien sûr. Une connaissance approfondie n'est pas nécessaire car Astro va abstraire de nombreux concepts tels que les fonctions de gestion S. Vous devez donc être familier, bien sûr, avec le gestionnaire de packages Node JS NPM ou avec yarn ou PMPM, quelque chose comme ça, car nous l'utiliserons pour installer des packages et également pour initialiser Un éditeur, j' utiliserai le code VS, mais vous n'êtes pas obligé. Ce n'est en aucun cas une obligation. Donc, si vous aimez utiliser VIM, Emax, Webstorm, Notepad, ce n'est pas un problème Vous pouvez également utiliser un bloc-notes et un terminal. Par exemple, programmer dans cet environnement n'est pas très confortable, mais si vous le souhaitez, vous pouvez le faire. Mais dans les vidéos, j'utilise le code de Visual Studio, qui est en quelque sorte un standard. Peut-être que la plupart des personnes qui utilisent ou programment des applications Javascript de nos jours utilisent code Visual Studio, c'est pourquoi je l'utilise ici. OK, donc pour le front-end, j'utilise React Jazz, mais vous pourriez également utiliser un framework de bibliothèque différent comme Solid Jazz, voir Selter Il n'est pas trop difficile de traduire le code ou les concepts dans un autre framework. Vous pouvez même utiliser une simple manipulation manuelle du DOM c'est également possible car interface utilisateur n'est pas si sophistiquée et est assez basique. Le front-end n'est pas l'élément le plus important de ce cours. Nous nous concentrerons, bien entendu, sur l'IA ouverte, l'API et sur son utilisation. Pour suivre le cours directement, vous devez avoir quelques connaissances de base sur React, bien sûr, rien d'extraordinaire. Mais en particulier, les fonctions hook telles que use state, use effect et use ref sont importantes, vous devez donc les connaître. Mais comme je l'ai dit, vous pourriez utiliser un cadre différent ici, puis vous devrez utiliser certaine gestion de l'État là-bas, et vous devriez bien sûr être familier avec cela à ce moment-là. Comme dernier framework, nous utilisons Astrogz. Pourquoi Astro jazz et pas quelque chose comme Next Jazz et pas quelque chose comme Next Parce que NextJS est étroitement lié, bien sûr, à React, et Astro Jazz, en revanche, permet d'utiliser différentes technologies frontales Vous pouvez donc utiliser le gaz Astro avec un étouffeur Jazz View solide. Et cetera. De plus, il est très rapide à installer et à configurer. Et comme nous allons nous concentrer sur l'utilisation de l'API OpenAI, ni le serveur ni la technologie frontale utilisés ici ne sont importants, mais plutôt les principes de travail avec un grand modèle de langage C'est ce qui est vraiment important pour vous dans ce cours Vous pouvez donc également utiliser, bien sûr, Next yes si vous le souhaitez. Mais comme je l'ai dit, AstroJS est ouvert à différentes technologies frontales, donc je l'utilise Bonjour, voici les outils, les frameworks et les bibliothèques que nous utilisons dans la vidéo suivante. Nous commençons par notre premier projet. On se voit alors. 4. Créer notre première application astro: C'est bon. Ici, nous allons créer notre première application serveur AstrOgs, et c'est l'application qui appellera le serveur, appellera l'API Open AI pour nous, et nous fournirons également HTML et le code de réaction au navigateur, puis nous aurons notre application de chat en théorie C'est donc par là que nous commençons. Nous avons notre dossier parent. Dans ce cas, c'est DAI, et je vais appeler NPM create, create Ensuite, cela va créer une application, et de quelle application il s'agit d'une application Astro Nous appelons donc PM Create Astro et Et nous sommes accueillis par un gentil robot, dit : « Houston, construisons le Web que nous voulons ». Ensuite, il demande, OK, donc il nous indique que la séquence de lancement a été lancée. Et ensuite, où devons-nous créer notre nouveau projet ? Et ce sera le nom de notre projet et du sous-dossier, bien entendu Et dans notre cas, je vais l'appeler chat AI, puisqu'il s' agira d'une application de chat, une application de chat générique comme chat GBT, beaucoup plus simple, mais c'est ce que nous faisons en premier Entrez, puis il vous demande s'il doit inclure des exemples de fichiers comme c'est recommandé ici, mais nous partons d' un projet vide, nous n'utilisons donc pas non plus le modèle de bloc, et nous choisissons vide. Et puis il me demande s'il doit installer les dépendances, les modules NPM Node, installation de NPM sera appelée, et bien sûr, oui, il suffit de le faire, alors je n'ai pas à le faire Cela prendra un peu de temps car il s'agit de télécharger tous les packages et de les installer. Cela peut prendre une minute, peut-être en fonction de votre connexion Internet, bien sûr. OK, dernière question, prévoyez-vous d'écrire Typescript Et dans ce cas, non, vous pouvez bien sûr utiliser TypeScript, mais je ne vais pas l'utiliser ici car cela compliquerait les choses et je vais me concentrer sur JavaScript react et pas sur Jazz Donc pas d'entrée, et ça ne m'inquiète pas, TypeScript est supporté, et vous pouvez le modifier Donc, d'accord, ce n'était pas la dernière question, mais voilà, il s'agit d'initialiser un nouveau dépôt Git et non, merci Et puis ça nous dit bonne chance, astronaute OK, merci beaucoup. Qu'est-ce que nous avons maintenant ? Nous avons un sous-dossier appelé AiChat car c'est le nom que nous avons donné à notre projet Ici, nous avons des fichiers. Mais d'abord, examinons les sous-dossiers. Nous avons ici les modules de nœuds qui ont été installés avec MPM install à partir de l'assistant Astro, et nous avons un module public, ne contient qu'une icône FAF Il s'agit de l'icône SVG FAF incluse dans le projet. Et nous avons une source. Nous avons des pages sous source. Et voilà notre index Astro index point Astro, qui est en quelque sorte l'index HGML qui sera livré au navigateur, mais qui sera d'abord compilé par Il s'agit essentiellement de HGML et cela sera affiché dans le navigateur. Nous pouvons le vérifier et nous pouvons maintenant exécuter le serveur avec Okay Nous devons donc d'abord créer un CD dans le sous-dossier que nous venons de créer, CD AI chat, puis nous pouvons appeler NPM Cela exécutera un script répertorié dans le package. Jason, voici les scripts, et nous voulons ce script Def appelé Dev qui s' appellera Astro Def Astro est un script shell, et vous pouvez le trouver ici dans note modules point bin, et ici il est Astro, et il sera alors appelé avec l'argument Dev Okay, donc appelons NPM run Def, et cela démarrera, espérons-le, notre serveur Et voilà, 3 000 hôtes locaux. Nous le vérifions dans le navigateur. Ici, c'est Astro et H, et c'est essentiellement, comme je l'ai dit, ce que nous avons dans l'index Astro de ce fichier ici et c'est essentiellement, comme je l'ai dit, ce que nous avons dans l'index Astro de ce fichier Et nous pouvons, bien entendu, le changer. Passons au chat AI. Ou AichatBT, peu importe. Et ici, vous pouvez placer, bien sûr, code HTML si vous voulez un DIV et tout ce que vous voulez. Nous pourrons avoir notre root de réaction peut-être ici plus tard. Mais vérifions-le dans le navigateur, il a automatiquement rechargé la page pour nous, et maintenant nous avons le bot de discussion AI ici dans l'en-tête OK, c'est donc notre première application avec Astro JS, et nous allons continuer dans la prochaine vidéo 5. Ajouter la réaction à notre application: OK, maintenant nous allons ajouter React à notre application Astro, annulant d' abord ce bn run Def Notre serveur ne fonctionne donc plus ici, et je colle cette commande Cette commande est Npx Astro add react, et elle utilise le script Astro Shell pour ajouter le support React à notre Il suffit donc de taper ce Npx Astro add react, et il devrait ajouter le support React Résoudre des packages, et cela nous demande si nous voulons continuer, oui, bien sûr, à installer des dépendances, et cela installera également certains packages de nœuds. Continuez, et cela va changer notre Astrocfic MGS D'accord, il s'agit donc également de modifier notre JSN de configuration TS ou de le créer. Ça n'a pas vraiment d'importance. Oui, continuez, et c'est tout. OK, maintenant que nous avons notre support React, examinons le package Jason. Il a ajouté des types. Nous pouvons donc voir ici react et Rec Dom, et il a également ajouté react et react Dom, bien sûr, la version 18, les deux. Et maintenant, nous pouvons utiliser React dans notre application. Mais bien sûr, nous avons d'abord besoin d'un composant de réaction, et les composants se trouvent dans les composants du sous-dossier Donc, en tant que RC, nous créons un nouveau dossier. C'est ce que nous appelons des composants. Et dans ce dossier de composants, nous pouvons créer un nouveau fichier, que nous appelons index point JSX, et ce sera notre principal composant de réaction Ensuite, nous pouvons l'inclure dans le point d'index Astro, et nous pouvons l'inclure dans cette zone ici Nous avons donc les trois tirets, et entre les trois premiers et le dernier, nous pouvons écrire notre import et nous pouvons importer ici le composant React, notre index JSX, et nous importons l'application depuis. Ce sera donc une importation par défaut, et une exportation par défaut depuis les composants point point, et voilà notre index JSX, et pour le moment, il est vide, donc nous avons une erreur ici car ce n'est pas vraiment un module, mais maintenant nous pouvons utiliser ce composant d'application ici comme nous le faisons dans JSX Il y a quelque chose qui manque ici. Nous devons mettre un nouvel attribut ici, deux points du client uniquement, puis le configurer pour qu'il réagisse ici. D'accord, cela indiquera Astro que ce composant sera rendu sur le client, uniquement sur le client et non sur le serveur Nous n'utilisons donc pas le rendu du site du serveur ici OK, donc c'est vide pour le moment, nous devons donc y mettre quelque chose, exporter la fonction par défaut, puis renvoyer du JSX Pour le moment, cela devrait suffire. Et maintenant, nous démarrons notre serveur. Nous vérifions le navigateur, hôte local de 3 000 chatbot AI, ce que nous avions auparavant, puis nous avons l'application ici Et lorsque nous vérifions le code HML ici, Dom, nous avons ce DIF contenant une application, et c' est notre composant de réaction Et ici, le parent de ce composant de réaction est Astro Island, et cette île Astro est notre racine de réaction dans ce cas, et Astro peut mélanger et associer tous les différents composants de l'interface utilisateur tels que Swel view jazz, react, solid Jazz , et cela le place dans Mais ce n'est pas si important pour nous. L'important est que nous ayons notre composant de réaction ici, et c'est là que nous pouvons écrire notre JSX, et nous pouvons simplement l'écrire comme n' importe quel autre composant de réaction OK, nous avons donc notre premier composant React, et à partir de là, nous pouvons simplement créer une application React ici, et la prochaine étape sera d'avoir une fonction de site serveur appelant l'API Open AI, et cela sera exploré dans la prochaine vidéo. 6. Ajouter notre premier point de terminaison REST pour le serveur: Bien, maintenant que nous avons notre premier composant React, nous pouvons continuer à écrire notre premier code serveur et exécuter directement l'application dans le navigateur Nous allons appeler l' API du serveur pour enfin contacter l'API d'Open AI, puis reprendre la fin du chat. Nous avons donc besoin d'un composant serveur fonctionnant sans JS, et ce sera notre premier point de terminaison. J'ai créé un sous-dossier sous pages, pages où notre index Astros et le sous-dossier Et dans l'API, j'ai ce module JavaScript JS appelé chat point js. Et à l'intérieur, nous avons une exportation de la fonction G. Et cela indique à Astro que dans ce chemin, c' est-à-dire le chat des API, il y aura un gestionnaire G. Donc, si je le mets dans la barre d' adresse du navigateur, ce gestionnaire devrait être appelé car le navigateur envoie une requête G au serveur qui s'y trouve Et notre code doit être exécuté ici. Nous exportons donc une fonction ASIC parce que nous voulons l' utiliser pour le moment, nous ne l'utilisons pas, mais nous utiliserons un poids à l'intérieur J'ai donc déjà mis l'ASN devant la fonction. Alors, à quoi sert cette fonction ? Il reçoit une demande. Il obtient un objet, et à l'intérieur, il y a une propriété de requête, et nous ne l'utilisons pas pour le moment, mais plus tard, il renverra une nouvelle réponse, et ce sera la réponse qui sera envoyée au navigateur. Et dans la réponse à l'intérieur du constructeur ici, nous pouvons spécifier le corps de la réponse, et ce sera une chaîne JSN, c'est-à-dire la chaîne JSN de cet objet simple ici, cet objet littéral avec une Cela sera donc envoyé dans le corps du message au navigateur. Et puis nous avons d'autres en-têtes et statuts. Le statut sera 200, ce qui signifie OK, donc tout va bien, et l'en-tête définit le type de contenu ici sur application JSN Ainsi, le navigateur saura qu'il s'agit de JSN dans le corps. D'accord, nous pouvons donc envoyer des en-têtes ici et nous pouvons envoyer plus d'en-têtes, pas seulement le type de contenu ici, mais tous les autres en-têtes que nous aimerions utiliser Et le code d'état peut bien sûr être autre chose, comme une flèche comme 500 s'il y a une erreur sur le serveur ou 400 ou 401 ou quelque chose comme ça. Donc, pour le moment, tout va bien fonctionner. Nous en avons donc mis 200, ce qui signifie OK. Cela est donc renvoyé au navigateur sous forme de réponse, et nous pouvons le tester en tapant simplement le chemin ici, API, comme je l'ai dit, puis en discutant, et le serveur sait quel module et quelle fonction y appeler. avons donc ici. Réponds, bonjour. Il s'agit du JSON renvoyé ici. OK, nous avons maintenant notre première fonction de site serveur, qui fonctionne sans Jz important ici est de le mettre sur la bonne voie, bien entendu. Nous avons créé un sous-dossier appelé API. Il y a toutes nos fonctions d'API comme le chat, ou peut-être plus tard, nous en aurons d'autres. Nous avons peut-être non seulement une idée, nous pouvons aussi mettre un post ici. Donc, si nous exportons une publication ici, elle sera appelée navigateur, si le client envoie une publication ou si elle est publiée, supprimée ou autre. OK, nous avons maintenant notre première fonction de serveur, et ici nous pouvons appeler l'API Open AI et terminer notre chat. Rendez-vous dans la prochaine vidéo. 7. Préparer l'appel de l'API ouverte: Bien, dans cette vidéo, nous allons nous préparer à appeler l'API Open AI, et vous devez d'abord vous inscrire à la plateforme Open AI. Nous mettons donc le point OpenAI sur la plateforme URL et vous pouvez vous inscrire ici Ensuite, soit avec une adresse e-mail et mot de passe, soit vous pouvez continuer avec Google, Microsoft ou Apple. Une fois que vous avez fait cela, vous êtes dans votre compte ici, puis vous l'avez sous les clés d'API utilisateur. Ici, vous pouvez créer une nouvelle clé d'API, et vous pouvez utiliser cette clé d'API pour accéder à votre compte. Et c'est ce que vous devez d' abord faire, créer une nouvelle clé secrète. Je vais donc le faire ici et l'appeler clé de test. Créez une clé secrète ici. Et c'est important. Vous devez maintenant copier cette clé et la mettre dans un endroit sûr. Par exemple, vous pouvez le copier votre presse-papiers, puis le coller dans votre code source Comme ici, je vais faire un commentaire puis saisir la clé. Vous avez donc la clé ici et elle est enregistrée. Pourquoi est-ce important ? Parce qu'après, une fois que vous avez fermé cette boîte de dialogue, vous ne pouvez plus accéder à la clé. Vous ne voyez que les deux premières lettres et les quatre derniers caractères ici, mais vous ne pouvez pas accéder à la clé complète ici Vous devez donc en créer une nouvelle si vous l'oubliez ou si vous ne l'avez pas enregistrée. C'est donc tout ce que vous devez faire ici, et je pense que si vous vous inscrivez en tant que nouvel utilisateur, vous obtiendrez 5$, quelque chose comme ça, crédits, et vous pourrez abord utiliser les 5$ avant de devoir payer. Et je pense que 5$ sont largement suffisants pour tester tous nos exemples d'applications ici. Donc 5$ devraient suffire pour cela. Si vous avez besoin de plus, vous devez payer. Et une fois que vous avez votre clé secrète, comme je l'ai dit, vous devez la sauvegarder quelque part. Je l'ai mis ici. Mais pour l'instant, je vais également supprimer cette clé de test ici, et je supprimerai toutes les clés. Je l'utilise ici dans le cours avant de le publier, bien sûr, parce que je ne veux pas que vous utilisiez mes clés parce que je dois payer pour cela. Vous devez donc créer vos propres clés secrètes ici. Nous allons maintenant installer le package d'API ouvert, pas de package JS. Et c'est très simple. Vous devez accéder à votre répertoire principal, et c'est un chat dans mon cas, puis vous devez appeler NPM Install open AI, revenir, attendre un peu, et maintenant c'est fait Et nous examinons le package JSON, et nous voyons qu'Open AI est ajouté à la liste des dépendances, et il s'agit de la version à trois points zéro. Nous pouvons maintenant utiliser le package. Passons donc à notre point de discussion JS. Nous devons maintenant importer le package OpenAI. Comme ça. Nous avons donc la configuration. Nous avons besoin à la fois de la configuration et de l'API Open AI, et nous aurons ici nos fonctions à appeler. Et voici la configuration dont nous avons besoin pour appeler ces fonctions. La première chose à faire est donc de créer une nouvelle configuration avec notre clé API. Je l'ai donc déjà préparé. Et comme vous le voyez, il s'agit d'une clé différente, mais je vais également supprimer cette clé, bien sûr, avant de publier le cours. Veuillez donc en créer un nouveau. Cela ne marchera plus. OK, nous créons donc une nouvelle configuration avec une nouvelle configuration, et la configuration est quelque chose que nous avons importé du package Open AI. Ensuite, nous devons fournir à un objet la clé API de la propriété, et là, nous avons la clé secrète dans une chaîne, puis nous récupérons la configuration. Et cette configuration, nous pouvons maintenant l'utiliser pour créer une instance de l' API open AI et nous l'appelons open AI. Il s'agit d'une toute nouvelle API d'IA ouverte avec configuration. C'est très simple. Maintenant, nous avons l'IA ouverte, et nous pouvons vérifier ce qu'elle contient. Nous avons créé la fin du chat, qui est une fonction ou une méthode très importante ici, et nous utiliserons beaucoup celle-ci. Et il y a aussi d'autres fonctions ici. Vous pouvez y jeter un œil, mais vous pouvez également consulter, bien sûr, la documentation de la page Web. Donc, si nous vérifions à nouveau la documentation et les références d'API, la documentation vous donne didacticiels et un aperçu général des processus et la référence d'API décrit tous les appels de fonction qui s' y trouvent avec tous les paramètres. OK, donc si vous avez des questions sur l'API, vous pouvez utiliser la documentation dans référence de l' API sur platform.openai.com OK, revenons donc à notre code. Je n'utilise pas la fonction de fin de création de chat ici, mais je vais l'utiliser ici dans la fonction GT. Mais avant cela, je vais créer une nouvelle fonction, et cette nouvelle fonction se chargera de la compléter pour nous. Nous allons faire appel à la fonction Open AI ici. Et il faut que ce soit une fonction ACN parce que je vais utiliser une fonction d'attente ici. C'est donc un chat complet avec la fonction ACN. C'est le nom de ma fonction. Et puis un nouveau message. C'est le premier message que nous enverrons à l'API OpenAI, puis nous appelons un poids parce que c'est asynchrone openi create chat completion, la méthode que j'ai déjà mentionnée, la méthode que j'ai déjà mentionnée, nous devons fournir pour créer la fin du chat, un objet littéral ici, et cela spécifie le modèle, et c'est le dernier modèle ici, c'est le dernier modèle ici, GPT 35 puis nous appelons un poids parce que c'est asynchrone openi create chat completion, la méthode que j'ai déjà mentionnée, nous devons fournir pour créer la fin du chat, un objet littéral ici, et cela spécifie le modèle, et c'est le dernier modèle ici, GPT 35 turbo oh 613 Th is le dernier modèle qui prend également en charge l'appel de fonctions. Vous pouvez donc utiliser le GPT 35 Turbo, et selon le moment où vous le ferez, vous aurez l'ancien modèle, mais peut-être qu'à l'avenir, vous aurez également ce modèle ici Mais pour être sûr, j'ai inscrit oh 613 à la fin parce que je veux ce dernier modèle. D'accord, alors vous devez fournir des messages, et ce sera notre historique des discussions et l'Open AI. L'API répondra en complétant cet historique de discussion de ces messages et générera un nouveau message qui terminera le chat. Et la propriété messages n'est qu'un ensemble de messages. Nous avons donc ici un message dans cet objet, vous devez fournir un rôle, qui est utilisateur dans ce cas, quelque chose que l' utilisateur saisit, par exemple, et le contenu est corrigé ici et le contenu est bonjour, par exemple, et le contenu est corrigé ici et le contenu est bonjour, donc la conversation commence par un bonjour et l'Open API complétera cela avec un nouveau message et ce nouveau message sera renvoyé ici en réponse d'achèvement, et la réponse d'achèvement contient des données, des choix, les besoins normaux, un choix par défaut. Les choix sont donc un tableau, et nous accédons au premier. Et puis, dans ce document, il s'agit du contenu des points du message. Et là, dans le contenu de cette propriété, nous avons notre véritable message, la complétion que le modèle Open AI nous donne ici, et c'est ce que nous renvoyons de cette fonction. Donc, chat complet. Nous devons l'appeler, bien sûr, et c'est aussi simple que cela ici. Nous avons donc la réponse ici, attendons la fin du chat, et nous obtenons le texte de fin du modèle comme réponse ici, puis nous pouvons le supprimer ici, et nous renvoyons la réponse sous forme de chaîne JSON. Nous pouvons maintenant le tester. Il s'agit d'une clé valide ici. Je ne l'ai pas supprimée pour le moment, donc elle devrait fonctionner. Nous retournons sur notre serveur def, puis nous appelons la fonction de chat de l' API, la fonction Get, oui, nous obtenons une réponse, et cette fois c'est Bonjour, comment puis-je vous aider aujourd'hui ? Cela a été généré par le modèle de langage lodge d' Open AI, c'est ce qui a été renvoyé. Si je le charge à nouveau, cela me donnera peut-être une réponse différente. Je le fais encore une fois. Oui, maintenant c'est en fait une réponse différente. Bonjour. Comment puis-je vous aider aujourd'hui ? C'est presque pareil, très similaire, mais c'est différent. Et encore une fois, bonjour, comment puis-je vous aider aujourd'hui ? Nous obtenons la vraie réponse du modèle ici. Nous pouvons maintenant poursuivre sur cette lancée. Nous pouvons ajouter d'autres messages ici afin que l'utilisateur puisse répondre à ce message généré, puis le grand modèle de langage répondra à nouveau à ce message et vice-versa. Et ce sera notre discussion, mais nous en parlerons plus dans la prochaine vidéo. 8. Fournir le message utilisateur via un paramètre d'URL: Dans la vidéo précédente, nous avons donc utilisé un message fixe appelé hello et nous avons simplement envoyé celui-ci à l' API Open AI, donc c'est un bonjour constant. Et nous pouvons d'abord le remplacer par un nouveau message. Alors mets-le ici, et vérifions-le. Nous ne fournissons rien ici. Nous devons donc fournir un message fourni par l'utilisateur ici pour terminer le chat. Et d'où le trouvons-nous ? Nous l'obtenons à partir du paramètre URL, la partie après le point d' interrogation, et comment pouvons-nous y accéder dans Astro Js ? Tout d'abord, nous devons structurer l'URL ici. Astro nous donne donc l'URL. Et lorsque nous avons l'URL, nous pouvons simplement accéder aux paramètres de recherche ici Comme ça. Donc, les paramètres de recherche par point L, nous obtenons un paramètre spécifique, appelé MSG pour message, et nous l'obtenons avec la fonction point G ici Donc, après cela, nous pouvons enregistrer le MSG sur console, et essayons-le. Nous avons un message d'erreur. OK, ce n'est pas bon. Voyons ce que nous avons ici. La demande a échoué avec le code d'état 400. D'accord, je pense que c'est parce que le contenu du nouveau message est nul ici. Nous devons donc fournir un message, et nous pouvons simplement appeler un chat complet avec MSG. Alors faisons-le. Et encore une fois, erreur. OK. Qu'est-ce que c'est maintenant ? Pourtant, nous avons les 404 cents qui signifient une mauvaise demande. Nous faisons donc une mauvaise demande ici, chat, chat complet. Et chat complet. C'est donc toujours nul ou indéfini. C'est donc un problème. Alors redisons bonjour. Bonjour. Et voyons si cela fonctionne. OK, ça marche. Nous allons vérifier le résultat ici. Null, nul, nul, nul. OK, donc le MSG est nul, et pourquoi ? C'est parce que notre Astroconfc MGS n'est pas complet. Nous devons mettre quelque chose ici, et c'est le serveur de sortie, ce qui est nécessaire car nous devons activer le rendu du site du serveur ici. Sinon, Astro Js affichera les pages de manière statique, et dans ce cas, nous n'avons pas accès à l'URL et aux paramètres d'URL ici Encore une fois, Astrocfi Js, vous devez mettre la sortie sur le serveur pour permettre le rendu du site sur le serveur, puis nous pouvons accéder dynamiquement ici à l'URL et aux paramètres de recherche et recevoir notre message, espérons-le OK, alors remettons simplement le MSG ici, MSG comme celui-ci, et réessayons-le Peut-être pas bonjour, mais bonjour tout le monde serait mieux ici, alors d'accord, alors comment puis-je vous aider aujourd'hui ? C'est la réponse. Nous allons vérifier la sortie du serveur ici. Bonjour tout le monde. Cela semble donc fonctionner. Et nous pouvons saisir notre message ici dans l'URL, dans le paramètre MSG Essayons autre chose. Peut-être quel temps fait-il aujourd'hui ? Il ne le saura pas. Quoi qu'il en soit, voyons quelle est la réponse. Je suis désolée, mais en tant que modèle de langage basé sur l' IA, je ne dispose pas d'informations en temps réel. OK, c'est honnête. Pour connaître la météo du jour, vous pouvez consulter une page Web fiable , site Web ou une application de prévisions météorologiques sur votre téléphone. Je suppose que c'est vrai, donc c'est une bonne réponse, je suppose. Et c'est notre première discussion avec un message fourni par un utilisateur. Ce n'est plus réglé ici. Nous fournissons le nouveau paramètre de message pour terminer le chat et ce message est extrait de l'URL, de recherche et nous indiquons ici dans le paramètre MSG après le point d'interrogation, MSG est égal à la météo actuelle, nous appellerons cette URL, cette API de repos à partir du code du composant Pour que cela fonctionne, nous devons bien sûr créer un composant React, créer un composant React ce que nous verrons dans la prochaine vidéo. 9. Première véritable interface utilisateur client dans Response: Revenons à notre composant de réaction. Je l'ai légèrement étendu pour inclure un champ de saisie de texte. Voici celui-ci, un bouton Envoyer, voici celui-ci, et un div de sortie qui sera là, celui-ci, et l'idée est que, bien sûr, l'utilisateur saisit du texte ici puis clique sur le bouton Envoyer, puis ce texte saisi ici est envoyé au serveur et à son tour, l' envoyer au ici puis clique sur le bouton Envoyer, puis ce texte saisi ici est envoyé au serveur et à son tour, l' envoyer au serveur l' enverra à l'API Open AI, obtiendra la réponse de la langue modèle, renvoyez-le au composant de réaction ici, puis nous le définissons ici dans cet état avec une réponse définie. Nous vous appelons État avec réponse et définissez la réponse ici, et cette réponse sera ensuite affichée ici dans le DIV et ce qui manque ici, c'est, bien sûr, notre sable. Nous devons donc définir ici une fonction onclic, qui sera appelée lorsque l'utilisateur cliquera sur le bouton Envoyer Ensuite, nous devons nous demander que devons-nous faire ici ? Nous devons appeler Fetch pour appeler l'API du serveur, l'API rest, notre API rest Ce sera donc un processus asynchrone, et nous devons utiliser ou je veux utiliser au moins une fonction asynchrone ici J'ai donc mis Async avant cette déclaration de fonction, et ici je peux utiliser une récupération de poids Et nous devons fournir l'URL ici, qui supprimera l'API HAT puis le paramètre URL après le point d'interrogation égal à Mme G Mettons simplement bonjour ici à des fins de gebugging, à des fins test OK, alors qu'est-ce qu' on obtient de Fetch ? Nous obtenons une réponse , puis nous devons obtenir le corps de la réponse, et ce sera la J'appelle donc response, et ce sera JCN, j'appelle le point de réponse JSN et ce sera également un processus asynchrone, et c'est pourquoi j'utilise une attente ici devant OK, c'est ainsi que nous obtenons la réponse. J'espère que nous récupérerons l'API Slahatqimrk MSG égale hello. Et sur la réponse que nous recevons, nous appelons le point de réponse JCN. Oui, je l'enregistre simplement sur console ici Juste pour le tester. OK. Nous l'avons donc, et je peux simplement cliquer sur le bouton Envoyer, et j'espère que nous aurons quelque chose ici. Et oui, ça marche. La réponse est Bonjour. Comment puis-je vous aider aujourd'hui ? Très sympa. Ensuite, nous pouvons définir la réponse et le point de réponse sera notre texte, et c'est ce dont nous avons besoin pour définir l'état deux. C'est donc une réponse par point, et nous l'utilisons ici pour définir la réponse, puis ce composant rec sera à nouveau rendu, et la réponse devrait être affichée ici dans notre div de sortie. OK. Alors vérifions-le. Bonjour. Comment puis-je vous aider aujourd'hui ? Très bien. Cela fonctionne. Cela fonctionne. OK, donc ce qui manque, c'est que nous devons obtenir l'entrée du champ de saisie ici. Et c'est pourquoi j'ai mis un Rf sur cette entrée. J'appelle donc use Ref message input, et j'ai accès au nœud l'élément DOM ici via le message input dot current. Je déclare donc simplement une entrée constante, et ce sera la valeur actuelle du point d'entrée du message. Il s'agira du texte saisi par l'utilisateur. Nous utiliserons cette entrée au lieu de ce bonjour fixe. Donc, juste le MSG est égal, puis plus l'entrée. OK. Alors testons-le. Quelle est la météo aujourd'hui et appuyez sur envoyer ? Je suis désolée, mais en tant qu'IA, je n'ai pas d'informations en temps réel. Nous le savons déjà, mais cela fonctionne. Oui. Ici, vous pouvez saisir votre message de chat, appuyer sur Envoyer, puis vous obtenez la réponse ici dans cette section. Vérifions-le donc à nouveau. Nous avons notre État ici avec l'État. C'est la réponse du modèle de langage, et nous avons notre référence ici pour la saisie des messages. Ceci est utilisé comme ce point d'entrée de message. Le courant est l'élément Dom, l'élément d'entrée Dom, et là nous avons la valeur du texte d'entrée. Et ceci est utilisé ici pour récupérer notre API. Et puis la réponse est JSN. C'est pourquoi nous appelons le point de réponse JSN qui récupérera le corps puis l'analysera Et nous avons la réponse, qui contient à son tour une réponse. Encore une fois, nous pouvons l'appeler answer JSN ou answer object, quelque chose comme ça Objet de réponse, puis objet de réponse La réponse par point sera le texte. Et set answer est utilisé pour définir notre état afin de répondre à l'objet point ASE en texte. OK, c'est très simple. Ce n'est même pas une discussion. Ce n'est qu'un achèvement. C'est une fois. Ainsi, chaque fois que vous envoyez quelque chose, il le terminera simplement. Le modèle de langue complétera cela, mais vous ne pouvez pas avoir de chat, un chat complet car nous n' envoyons que la dernière entrée ici. Ensuite, le modèle de langage contient simplement cette entrée et nous la compléterons. Il s'agit donc d'un message unique envoyé au modèle de langage , puis celui-ci est terminé et la réponse, la fin, est affichée ici dans le DIV. s'agit donc pas d'une application de chat complète pour le moment, mais elle sera étendue, bien entendu. Mais il s'agit de notre premier modèle de travail avec interface utilisateur, et vous pouvez mettre n'importe quoi ici, et le modèle de langage le complétera, et nous vous donnerons une réponse qui espérons, aura du sens d' une manière ou d'une autre. OK, c'est fini pour cette scène vidéo de la prochaine. 10. Sauvegarder l'historique de chat: Nous avons donc créé une sorte d'application « demandez-moi n'importe quoi », mais ce n'est pas encore une vraie application de chat. Nous pouvons envoyer un message au modèle de langage, il complétera le message et répondra à la question. Mais il n'y a aucune mémoire impliquée et il ne se souvient d' aucun historique des discussions. Ainsi, le prochain message que vous enverrez au modèle sera à nouveau le premier, ainsi que le modèle de langage ou l'API OpenAI Je me souviens de tout. Nous devons donc nous occuper de cela et envoyer l' historique complet des discussions pour avoir une conversation avec le modèle de langue. C'est donc ce que nous faisons dans cette vidéo. Nous devons enregistrer la conversation et envoyer l'historique complet de la conversation à l'API AI ouverte. Il y a donc deux possibilités pour ce faire. Nous pouvons enregistrer l'historique des discussions sur le client dans le navigateur ou stocker sur le serveur . Le stockage sur le serveur présente plusieurs avantages, fait que nous n'avons pas à envoyer l'historique complet du client, du navigateur au serveur encore et encore, mais uniquement le dernier message saisi par l'utilisateur. De plus, nous pouvons stocker le chat dans une base de données sur le serveur et y accéder de n'importe où. Dans cette leçon, nous utilisons l' approche côté serveur et stockons l'historique des messages sur le serveur dans une variable simple. Et c'est la variable. Cela s'appelle messages, et il est initialisé dans un tableau vide, et nous ajouterons des messages à ce tableau chaque fois que l'utilisateur envoie un nouveau message et également lorsque le modèle de langage nous donne la complétion Nous devons envoyer un nouveau message chaque fois que cela se produit. Donc, la première chose ou le premier point que nous devons ajouter, c'est à cet endroit, ici, nous pouvons simplement envoyer une nouvelle entrée dans le tableau des messages, et ce sera le même format, la même structure que ceux que nous envoyons à l'API OpenAI faut donc le dire comme ça, un objet avec le rôle et le contenu. Je le place donc en tant qu'utilisateur parce que l'utilisateur envoie le message et le message sera que le contenu sera du MSG Et ici, nous pouvons simplement donner le tableau des messages à la fonction de chat complète. Ce seront les messages du tableau, et nous n'avons pas à le faire ici. Nous pouvons simplement envoyer des messages ici. Dans cette forme abrégée. Donc, le chat complet reçoit des messages, et nous les mettons dans la demande à Open AI, création de la fonction de fin du chat. Donc rien de plus ici, et nous le testons. Maintenant, si cela fonctionne toujours, cela devrait toujours fonctionner parce que nous changeons , en gros, nous n'avons rien changé. Cela devrait donc toujours fonctionner. Comment allez-vous ? Voyons voir. En tant qu'IA, je n'ai pas de sentiments. D'accord, cela semble toujours fonctionner, et ce n'est pas surprenant car nous n'avons rien changé. Mais maintenant, nous avons le message dans le tableau des messages, et la prochaine fois que l' utilisateur saisira un message, nous pourrons le placer ici, puis chaque message de l'utilisateur sera enregistré dans le tableau des messages. Mais cela ne suffit pas. Nous devons également ajouter la réponse au tableau des messages. Donc, en copiant, recevez la réponse à partir de la fonction de chat complète. Et cette fois, le rôle n'est pas utilisateur, mais assistant, contenu sera la réponse, et ça devrait être le cas. La réponse sera envoyée au navigateur ici, mais nous l'enregistrons également dans le tableau des messages. Ainsi, la prochaine fois que le chat complet appelé message, le message de l'utilisateur et la réponse figureront dans le tableau, ainsi que le nouveau message de l'utilisateur. OK, alors essayons-le. Il suffit de recharger la page. Et puis quel temps fait-il aujourd'hui ? Envoyez, excusez-vous. OK. Pouvez-vous lui recommander une application et l'envoyer. Et voyons ce qu'il apporte. Bien sûr, voici quelques applications météo populaires. C'est donc la preuve que nous avons vraiment sauvegardé la conversation, car je fais référence ici à des messages ou à un message d'utilisateur qui a déjà été demandé parce que je fais référence ici à une application pour cela, et il devrait s'agir d'une application météo ou d'une application de prévisions météorologiques. Ou nous pouvons aussi, bien sûr, le publier ici. Ainsi, chaque fois que nous indiquons la réponse ici, nous pouvons également enregistrer les messages de console. OK, donc cette fois, je devrais vraiment redémarrer le serveur car sinon, j'aurai l' historique des discussions d'avant. Et ce n'est pas ce que je veux ici. Je redémarre donc le serveur, et les messages seront désormais un tableau vide OK, encore une fois, quelle est la météo ? Aujourd'hui, j'envoie et puis presque la même réponse qu'avant. Pouvez-vous le recommander ou, cette fois, nous pouvons lui demander s'il peut recommander une page Web ou un site Web pour cela. OK, envoyez certainement weather.com. OK. Nous allons donc vérifier le résultat ici, en commençant par ici. Donc, du contenu sérole, météo à la maison aujourd'hui. C'est ce que j'ai saisi dans l'interface utilisateur. L'assistant a répondu : « Je m'excuse, mais en tant que modèle de langage d'IA, bla, bla, bla Et maintenant, pouvez-vous recommander un site Web pour cela ? Encore une fois, roll user. Quel temps fait-il aujourd'hui ? Assistante ? Je m'excuse. Maintenant, le nouveau message ici, pouvez-vous lui recommander un site Web ? Et puis la réponse du modèle linguistique, voici certainement quelques-unes. Populaire et fiable, qu'il s'agisse sites Web, bla, bla, bla Donc oui, ça a l'air de fonctionner. Nous avons l'historique de nos discussions. Le seul problème ici est que nous devons redémarrer notre serveur pour qu'il oublie les messages et pour relancer la conversation. Et nous devons trouver quelque chose qui pourrait probablement remettre les messages dans un tableau vide, peut-être une idée qui est régénérée à chaque fois que la page est rechargée, quelque chose comme Hum, mais pour le moment, c'est, disons, ce n'est pas complet, ce n'est pas une application de chat complète, mais c'est une application de chat heure actuelle, je peux discuter avec un modèle de langue, et l'historique sera enregistré et utilisé la prochaine fois que j'enverrai un message au modèle. C'est tout pour cette vidéo. On se voit dans le prochain. 11. Reposer le chat: Nous avons donc maintenant une application de chat fonctionnelle, mais nous avons également un petit problème, mais celui-ci est facile à résoudre. Le chat ne peut pas être réinitialisé pour le moment sans réinitialiser ou redémarrer le serveur Nous devons donc résoudre ce petit problème. Je l'ai trouvé, en enregistrant l'identifiant de chat actuel, et l'identifiant sera envoyé du client au serveur. C'est ici dans les perms de recherche d' URL. Il y aura un nouveau paramètre, qui sera ID. Et le nouvel identifiant de chat est comparé à l'identifiant de chat actuel, et s'ils sont inégaux, le tableau de messages est réinitialisé à un identifiant vide reste donc qu' à générer un nouvel identifiant et à le fournir ici via un paramètre d'URL, qui doit être appelé ID. Nous devons donc passer à notre composant ici, à notre composant React et à notre fetch Nous avons donc déjà ce MSG en paramètre, puis nous devons en ajouter un nouveau Mais je ferais mieux d'utiliser une chaîne de modèle ici Dans ces cases, je peux mieux insérer les variables ici. Donc, le glutamate monosodique, puis le dollar, bien sûr, les bretelles frisées, voilà notre contribution Et puis un pourcentage et un ID sont égaux. Et oui, nous devons trouver un identifiant avec un nouvel identifiant, et cet identifiant doit être enregistré. Ici, on peut simplement le mettre ici. Const ID est égal à. Par exemple, nous pouvons utiliser date now et ce sera notre identifiant, date now deux chaînes, et ce sera notre identifiant. Et chaque fois que cette page est rechargée, la page est rechargée Nous créons un nouvel identifiant, qui sera désormais daté à l'heure d'Unix. OK, donc ça devrait être ça, en fournissant l'identifiant ici. Et testons-le. Je demande donc quel est le modèle de langage, comment allez-vous envoyer. Et voyons voir comment tu vas. Nous avons donc déjà le nouveau D ici car le tableau de messages ne contient que ces deux messages. Comment allez-vous ? Et la réponse du modèle linguistique. En tant qu'IA, je n'ai pas de sentiments. Je peux lui demander pourquoi. Et voyons voir, la question de savoir pourquoi est une question très large et ouverte. OK, pouvons-nous demander des explications ? Peu importe. Cela ne fonctionne pas ici car la zone des messages est à nouveau réinitialisée. Il y a donc quelque chose qui ne va pas. Nouvel identifiant de chat. Enregistrons l'identifiant de chat sur console ici. Nouvel identifiant de chat. Identifiant du chapeau. Et voyons voir. Encore une fois, comment allez-vous ? Et l'identifiant du chat sera celui-ci, d'accord ? Alors la prochaine fois, pourquoi ? Envoyer. Non, c'est pareil. OK. C'est donc le même identifiant. Donc, le serveur, vérifions la logique ici. Nous obtenons le même D. D'accord, je vois. Nous ne l'avons pas enregistré. Il devrait donc s'agir de l'identifiant de chat actuel. Doit être envoyé, bien sûr, au nouvel identifiant de chat dans ce cas. OK, alors essayons à nouveau. Rechargeons. Et maintenant, comment allez-vous ? OK, comment allez-vous ? Et la réponse. Et maintenant je me demande pourquoi ? Voyons si c'est vraiment le cas. OK, donc ça a l'air mieux. Comment allez-vous ? Merci de m'avoir demandé. Pourquoi ? En tant que langue AA je suis conçu pour fournir des informations, répondre aux questions et aider. Donc, si nous rechargeons la page, cela devrait réinitialiser le chat Et toi, comment vas-tu ? Nous avons maintenant un nouveau tableau de messages contenant uniquement le message de l'utilisateur et la réponse du modèle de langage. OK, donc ça a l'air de fonctionner. Et chaque fois que vous souhaitez réinitialiser l'historique des discussions, il vous suffit de recharger la page ici, et c'est OK, nous avons donc une sorte d'application de chat complète. Pas tout à fait. Nous devons réinitialiser, par exemple, le champ de saisie ici. Chaque fois que j'appuie sur Envoyer, cela devrait effacer ce champ. De plus, nous n'affichons la dernière réponse et non un historique complet des discussions ici. C'est également ce qui doit être amélioré, bien sûr, mais nous le ferons dans la prochaine vidéo. 12. Améliorer l'UX: Nous allons donc implémenter quelques améliorations dans l'expérience utilisateur. Par exemple, lorsque nous saisissons notre entrée ici, notre message, et que nous cliquons sur Envoyer, nous voulons que ce message ou que le champ de saisie soit effacé. De plus, pendant que la demande est en attente, nous voulons que cela soit désactivé, le champ de saisie ainsi que le bouton ici. Et quoi d'autre ? Nous voulons afficher l' historique complet du chat ici. Passons donc à la première, la désactivation en attente J'ai introduit un nouvel état en attente, et cela est vrai tant que la récupération est en attente, bien sûr Je l'ai défini sur true avant le fetch et à la fin de ce gestionnaire de clics, je l'ai défini Ensuite, dans le champ de saisie, j'ai dit « désactivé » est égal à « en attente » et sur le bouton également. Le bouton et le champ de saisie sont donc désactivés pendant que la demande est en attente. Essayons-le ou bien vous serez envoyé et nous verrons que les deux sont désactivés. Et aussi, cela est clarifié ici. Comment j'ai fait ça ? Très facile Nous avons quand même saisi ce message, point courant. Il s'agit du champ de saisie, de l'élément DOM, et la valeur du point est définie sur une chaîne vide, puis la récupération est effectuée, et c'est Simple mais efficace. Et maintenant, pour la conversation par chat, qui sera ci-dessous, c'est la dernière réponse du modèle de langue, et nous voulons l'historique des discussions ci-dessus, et cela devrait être la dernière. Et peut-être que nous changeons d'ordre pour que notre message soit saisi en bas. plus de cela, nous avons l'historique des discussions, comme c'est le cas dans Hat GBT, par exemple. Alors faisons-le. Tout d'abord, nous changeons ce panneau de sortie et le plaçons au-dessus du champ de saisie et du bouton. Essayons-le, comment allez-vous et la réponse sera ci-dessus. OK. C'est sympa. Ce qui n'est pas très agréable, c'est que c' comme si nous avions de plus en plus de messages. Pour le moment, nous n'en avons qu'un. Mais si nous avons l'historique complet, cela va s'effondrer, et ce n'est pas une bonne chose pour l'interface utilisateur. Nous faisons simplement une mise en page flexible ici. La flexion d'affichage et la direction de flexion doivent donc être en colonne. Pour avoir une disposition verticale ici. Bien sûr, fléchissez comme une chaîne. OK. Et puis entre le panneau de sortie et l'entrée, nous avons simplement mis un dif avec flex one OK, vérifions-le. Cela ne fonctionne pas parce que le HDL entier n' est pas à 100 %, nous devons donc faire de la hauteur à 100 % ici Donc c'est 100 % du corps, doit être 100 % OK, donc le corps est aussi 100 % maintenant, et ce div, nous devrions l' effacer, le supprimer. Ensuite, nous avons notre division à cent pour cent. Faisons-le plus tard. Et maintenant, nous avons notre composant, notre composant de réaction, qui devrait également être en hauteur, à 100 %. Bon, maintenant ça marche plus ou moins. Quoi qu'il en soit, nous devrions effacer ou supprimer notre H ici. Nous avons donc cela ici qui ne fonctionne toujours pas. Quoi qu'il en soit, allons-y. Nous avons donc style. Je fais juste du style en ligne ici pour être plus rapide, donc la hauteur devrait être de 100 % Copiez cela devrait être le même sur le corps. Cela devrait être le cas ici. Et puis je réagis que le composant devrait être à 100% de hauteur. Maintenant, c'est presque fini, mais c'est trop gros. OK, donc le corps a, bien sûr, l'air d'avoir une marge, elle devrait être nulle et ensuite nous l'aurons. OK. Revenons donc au point d' index Astro, et le fait d' y mettre une marge de zéro devrait régler le problème. OK. Donc maintenant, nous avons besoin d'un peu de rembourrage, je suppose, Et nous allons passer à cette division externe de notre composant principal, et nous définissons un rembourrage de huit pixels, disons Et nous devons aussi mettre une boîte sur une planche, je suppose, parce que sinon, elle sera trop grande. Allons y jeter un œil. OK, donc ça a l'air bien. Comment allez-vous ? Nous avons maintenant la réponse, je l'espère. Oh, allez. D'accord, nous n'obtenons donc pas de réponse ici de la part de l'API Open AI. C'est un peu coincé ici. Je suppose que cela peut arriver. Bon, maintenant nous avons même une flèche de cinq ou trois. Je suppose que ce n'est pas le SRS disponible. Cela peut arriver, bien sûr, et il suffit de réessayer, de le recharger Comment allez-vous ? OK, donc c'est mieux en tant qu'IA, je n'ai pas de sentiments, etc. OK, que reste-t-il à faire ? Bien entendu, nous devons imprimer toute l'histoire. Ce n'est que la dernière réponse. Introduisons donc un nouvel état. Nous l'appelons messages, et ce sera un tableau. Des messages. La valeur initiale sera un tableau vide. Et le tableau des messages sera affiché dans le panneau de sortie ici. Nous avons donc ici des messages sur la carte. Et voici chaque message. Et que pouvons-nous faire ? Chaque message sera un div, puis à l'intérieur d'un dif, nous aurons le message sous forme de texte Oh, faisons-le avant que le set soit en attente. Nous pouvons créer un ensemble de messages. Et à l'intérieur, nous avons les anciens messages, nous avons les anciens messages et le nouveau et le nouveau sont saisis. Et puis, après avoir obtenu la réponse , nous devons également appeler des messages fixes. Et cette fois, nous avons les messages et nous ne les saisissons pas, mais nous avons la nouvelle réponse ici, qui est la réponse par points . Essayons ça. Nous recevons un avertissement ici, mais nous en parlerons plus tard. Comment puis-je vous aider aujourd'hui ? OK. Et puis notre question standard, pourquoi et d'accord, nous constatons que cela fonctionne pas tout à fait parce que le pourquoi a disparu. Je n'ai pas de sentiments , mais la réponse est là. OK, donc ça a en quelque sorte fonctionné, mais pas complètement. Le problème est, bien entendu, que nous ne pouvons pas utiliser de messages ici. Ce que nous pouvons faire, c'est définir de nouveaux messages. C'est ainsi que nous avons défini de nouveaux messages ici. Et puis ici, de nouveaux messages et answerobject point answer. Et cela devrait fonctionner. OK, alors essayons-le. Comment êtes-vous envoyé ? Nous recevons à nouveau cet avertissement. Mais quoi qu'il en soit, pourquoi envoyer y. Et maintenant, ça semble fonctionner. Nous avons un historique des discussions ici, et en bas se trouve la dernière réponse du modèle. Ça n'a pas l'air bien. C'est un peu moche parce que nous n' avons rien pour séparer les messages. Mais à part ça, cela semble plutôt bien fonctionner, ce qui le rend un peu plus joli dans la vidéo suivante 13. Historique de chat plus joli: Bien, dans cette vidéo, nous allons rendre l'historique des discussions un peu plus joli et j'ai déjà apporté quelques améliorations, alors allons-y jeter un œil. Comment allez-vous ? Notre question standard. Envoyez et vous verrez que c'est jaune, et la réponse, le modèle de langue est vert, la couleur de fond verte. Nous pourrons donc changer les couleurs plus tard, bien entendu. Mais comment j'ai fait ça ? Ici, nous avons le rendu des messages, et nous avons le message ici dans le rappel de la carte en tant que paramètre, bien sûr Ensuite, le deuxième paramètre est l'indice, et nous vérifions simplement si l'indice mod deux est égal à zéro, ce qui signifie que l'indice est divisible par deux La couleur de fond est alors jaune, et si elle n'est pas divisible par deux, si elle est étrange, elle est verte Ainsi, les index pairs ont la couleur de fond jaune et les index impairs la couleur de fond verte Et voici le résultat ici. toujours pas très joli, mais on peut distinguer les messages générés par les utilisateurs des réponses générées par le modèle de langage. C'est donc bien mieux. Peux-tu écrire du code JS ? Et vérifions la réponse. Oui, je peux vous aider avec le code JavaScript. C'est sympa. C'est bon à savoir. Donc, si nous avons besoin d'aide, nous pouvons demander le modèle linguistique. OK, donc c'est mieux. Toujours pas joli, nous devons implémenter un écart entre les messages pour les rendre un peu plus jolis OK, c'est facile. Nous le transformons en div ici de manière à ce qu'il ait une flexibilité d'affichage. Et la direction de flexion sera une colonne et nous ajoutons un espace de, disons, huit pixels ici. Cela doit être un deux-points, bien sûr. Maintenant c'est correct. OK, alors vérifions-le. Comment allez-vous ? Envoyer. Nous constatons déjà une lacune à cet égard. Tu sais coder ? C'est un peu plus court maintenant. Tu sais coder ? Oui, j'ai des capacités de programmation. OK. Donc ça a l'air mieux. Et nous pouvons également modifier le rayon de la bordure, peut-être pour créer des coins arrondis. Essayons donc quatre pixels. Comment allez-vous ? Cette fois, une question suffit, je suppose. Oui, c'est un peu mieux. Mais nous avons également besoin de rembourrage ici. Donc rayon de la carte, quatre pixels et rembourrage. Comme quatre pixels, peut-être. Comment allez-vous ? Oui, ça a l'air bien mieux. Les couleurs sont toujours moches, on pourra les changer plus tard. Mais c'est bien mieux. Vous pouvez clairement faire la distinction entre les messages utilisateur et les messages du modèle de langue. C'est une bonne chose. Et une autre chose que je veux améliorer, c'est que nous pouvons simplement taper Enter ici pour envoyer le message, non seulement en cliquant sur le bouton ici, mais également en tapant Enter. Alors, comment allez-vous ? Et puis Enter enverrait ? Nous devons aller à l'entrée, puis appuyer sur la touche enfoncée, puis utiliser un gestionnaire qui fera la même chose que ce onclick Nous devons donc extraire le clic vers une fonction distincte ici. Donc, envoyer un message sera le nom de la fonction. Envoyer un message Cette fonction doit être asynchrone, une synchronisation est d'accord. Ensuite, nous pouvons le remplacer par envoyer un message. C'est bon Et la touche enfoncée permettra également d'appeler et d'envoyer un message. Mais avant d'appeler Envoyer un message, nous devons vérifier si la touche est la touche Entrée. OK, donc si la clé de l'événement est égale à Enter, je suppose, vérifions-le. Cela est vrai. Nous avons appelé Send Message. Nous pourrions utiliser un poids ici, mais comme il n'y a pas de code par la suite, cela ne sert à rien. Il en va de même ici. Nous le pourrions également si nous voulons faire autre chose avant de pouvoir le faire ici. Créez une fonction de gestionnaire distincte. C'est juste appeler, envoyer un message. OK, alors voyons si cela fonctionne. Comment allez-vous entrer ? OK, ça ne marche pas. Nous pouvons déboguer ici. Nous avons donc ici nos composants, l'index JSX, et où se trouve la fonction d'envoi de message ici OK. Mais je pense que nous devons faire le point d'arrêt ici, puis appuyer sur Entrée, Entrée OK, donc entrez avec un E. OK, ça devrait faire l'affaire. OK, encore une fois, continuez et rechargez. La façon dont vous entrez semble fonctionner. Nous devons tenir compte de cet avertissement. De plus, chaque enfant de la liste doit avoir un accessoire clé unique. Il s'agit d'un avertissement de réaction. Oui, j'ai déjà dit ce que nous devons faire sur la carte des messages. Nous avons donc l'index ici, et nous pouvons prendre l' index de la clé. Donc, la clé est égale à l'index, ce qui devrait supprimer l'avertissement ici. Comment allez-vous entrer ? Oui, très sympa. L' avertissement a disparu et nous avons notre gestionnaire de touches Enter Okay. Voilà pour cette vidéo. Je vais changer les couleurs, je suppose, et dans la vidéo suivante, vous aurez une plus belle couleur ici Alors rendez-vous dans la prochaine vidéo. 14. Résumé de notre première application de chat: Nous venons de terminer notre première application de chat, et nous pouvons discuter avec le modèle de langage Open AI via l'API Open AI, et j'ai légèrement amélioré l' interface utilisateur ici. J'ai centré la sensation de saisie et le bouton ici et cela est également centré ici. Les messages sont centrés maintenant, et les couleurs sont un peu moins laides, je dirais, mais nous avons une application de chat fonctionnelle. Vous pouvez avoir des conversations intéressantes et instructives, je l'espère, avec le modèle de langage Open AI ici, oui, mais vous pouvez également vous améliorer, bien sûr, sur de nombreux points. Bien entendu, vous pouvez améliorer le design. Comme vous pouvez le voir ici, il y a encore des points à améliorer, par exemple. Maintenant, je dois faire défiler la page jusqu' en bas pour saisir le texte, le message suivant. Ce n'est pas très beau. Cela devrait donc rester en bas et vous ne devriez faire défiler que les messages. Ceci est un exemple, ou vous pouvez également améliorer l'interface utilisateur en insérant des boutons pour copier les messages dans le presse-papiers Vous pouvez aussi le faire comme ça, bien sûr. Des boutons, ce serait mieux. Vous pouvez avoir une liste des discussions passées, des anciennes discussions comme Chat GPT en a sur le côté, et bien sûr, vous pouvez ou devez stocker les discussions sur le serveur dans une base de données, vous pouvez les mettre à la disposition de l'utilisateur, et vous pouvez, bien sûr, également avoir l'identifiant de l'utilisateur et avoir son propre historique des discussions et nombreuses personnes accéder simultanément à votre serveur de discussion votre application de chat, etc. Il y a beaucoup de choses à améliorer. La prochaine application ne sera pas une application de chat générale, mais quelque chose de plus spécifique, et nous utiliserons davantage de fonctionnalités de l'OpenAI, de l'API, et vous apprendrez à utiliser l'invite du système, vous apprendrez à effectuer des appels de fonctions avec le modèle de langage Mais c'est notre première application, et je pense qu'elle est tout à fait utilisable, n'hésitez pas à améliorer ce que vous voulez ici. Rendez-vous dans la prochaine vidéo. 15. Nouvelle application : discuter avec des PNJ dans un jeu d'aventure texte: OK, donc j'espère que vous êtes prêt pour notre nouvelle application, et la nouvelle application contiendra un chat, bien sûr, mais cela se fera dans le cadre d'une aventure ou d'un jeu de rôle Et nous utilisons le chat pour discuter avec les PNJ du jeu Vous avez donc un jeu d'aventure ou un RPG. Dans ce cas, il s'agit d'un jeu d'aventure dans lequel vous devez accomplir certaines quêtes et résoudre des énigmes très simples Nous utiliserons notre ancienne application de chat ou notre application de chat générale comme point de départ et nous modifierons l'interface utilisateur de réaction pour tenir compte du scénario du jeu. abord, nous devrons créer un environnement de jeu d'aventure très basique dans lequel nous pourrons visiter différents lieux, effectuer des actions simples et discuter avec des PNJ avec des personnages du jeu pour résoudre des énigmes et des quêtes Donc, dans cette application ou dans ce jeu, le défi sera de configurer le modèle de langage de l'IA pour qu'il se comporte comme un certain personnage, comme un barman dans un bar un scientifique ou un guerrier ou autre Notre première étape sera donc créer un environnement de jeu de base, très simple pour notre cas d'utilisation, juste pour intégrer le chat et pour que les personnages IA révèlent certaines informations et révèlent si une énigme est résolue ou non, puis le jeu pourra continuer dans l'un ou l'autre sens. J'ai donc déjà fait quelques bootstrapping ici. J'ai divisé notre interface utilisateur en deux composants, l'index et le composant chat. Le composant de chat est essentiellement notre ancienne interface utilisateur de chat, qui contient la saisie des messages , le bouton d' envoi et l'historique des discussions , ainsi que la fonctionnalité , bien sûr, la récupération de la réponse de l'IA, etc. Et l'index JSX est maintenant le reste, les mécanismes du jeu, et les boutons de somme, un div pour contenir la description de la position actuelle Et voici les boutons de commande. Donc, pour le moment, cela ressemble à ceci, très, très simple. Nous avons ici notre composant de chat, qui est presque entièrement notre ancienne application de chat, mais maintenant en tant que composant. Et ici, nous avons nos boutons pour les commandes, et voici la description de l'emplacement actuel. Nous avons donc ici notre point de discussion JSX, qui contient l'interface utilisateur complète du chat, et nous avons ici notre description de l'emplacement actuel Ici, les boutons de commande, navigation vers les différents emplacements. Vous pouvez aller au nord, à l'ouest, à l'est et au sud. Tu peux parler à quelqu'un. Vous pouvez prendre quelque chose ou utiliser un objet que vous avez déjà. Et bien sûr, nous devons ajouter à cela une liste de PNJ auxquels vous pouvez parler, d'objets que vous pouvez emporter ou d'objets que vous pouvez utiliser ici Mais pour le moment, la seule chose qui fonctionne, c'est la navigation. Donc, vous pouvez le recharger, nous pouvons aller vers l'est. C'est la seule chose qui fonctionne pour le moment. Donc, seul ce bouton est activé, les autres sont désactivés, donc je peux aller vers l'est, puis la description change ici. Cela est fait, bien entendu, par l'État. ID de position actuel, la valeur initiale est un, et il est mis à jour chaque fois que vous cliquez sur le bouton Go East. C'est ici, définissez l'identifiant de position actuel, et nous avons ici notre point de position actuel, sortie est, qui contient le D de l'emplacement suivant. Et nous avons les données statiques du jeu dans un autre fichier. Il s'agit de ce fichier exporte cet objet de données de jeu ici. Et à l'intérieur, nous avons des succursales, trois pour le moment. Et elles sont appelées première pièce, deuxième pièce et troisième pièce. Et nous avons les pièces d'identité, commençant par l'ID 1, qui est la salle de départ, puis nous pouvons aller vers l'est, la sortie est est qui est le numéro 2. Voici le code d'identification de cette chambre. C'est la deuxième pièce, et ici vous pouvez également aller vers l'est jusqu'à la troisième pièce, et c'est tout pour le moment. Pour afficher la description de l'emplacement actuel ici, nous devons trouver l'emplacement actuel dans les emplacements des données du jeu. Nous le trouvons avec l'identifiant de localisation actuel, et nous avons donc l'emplacement actuel. Et ici, nous imprimons la description de l'emplacement actuel. C'est donc tout pour le moment. Nous avons juste cette navigation simple. Nous avons nos données de jeu statiques, notre description du jeu ou la mise en page. Oui, et rien de plus pour le moment. Nous n'avons pas d' histoire, nous devons donc proposer une bonne , et bien sûr, avec de bons PNJ avec lesquels parler et une sorte d'énigme, une sorte de quête que le joueur doit résoudre OK, c'est tout pour cette vidéo, et nous allons continuer dans la prochaine. 16. Présentation de l'histoire: OK, j'ai donc créé une histoire courte et un casse-tête pour un jeu d'aventure très court car il ne s'agit pas de programmer un jeu d'aventure, mais d'intégrer l' IA dans un jeu et d'utiliser fonctionnalités telles que les appels de fonction et les instructions du système, etc. et de laisser l'IA, le modèle de langage jouer un rôle dans un jeu de rôle ou dans un jeu d'aventure Le jeu d'aventure se déroule donc dans un futur lointain. en 21 et 30, et nous sommes en train d'atterrir dans l'espace sur une planète appelée Siperd À notre arrivée, nous rencontrons un endroit avec un bar, une boutique et un robot de sécurité qui ne nous permettra pas de passer sans code d'accès. Et pour dépasser le robot, c'est le casse-tête que nous devons résoudre, la quête que nous devons résoudre. Nous devons trouver un moyen de tromper le robot pour qu'il nous laisse passer. Et au bar, le barman nous indique quels sont les clients Il connaît au bar et parmi les invités un spécialiste de l'IA qui en sait également beaucoup sur les robots Il pourrait nous aider si nous lui achetions une recharge pour sa bière spatiale Nous lui achetons donc la nouvelle Space Ale et il nous donne une commande spéciale selon laquelle nous pouvons faire passer le robot et le robot nous laissera alors passer. Et c'est la fin de l'histoire ou la fin de la quête et du puzzle. C'est assez court, mais nous devons parler à deux PNJ, le premier, le barman, et le second, le spécialiste de l'IA Et nous pourrions aussi parler au robot, peut-être, mais peut-être pas. Peut-être que ce sera juste une conversation normale prescrite. Voyons donc jusqu'où nous et que devons-nous faire ? Nous devons développer un peu nos descriptions des chambres. Nous avons trois chambres. premier est le point de départ, et ce sera l'endroit où nous verrons un bar, un magasin, et le robot ne nous laisseront pas aller vers l' est et nous pouvons aller vers le nord dans le bar, et nous ne pouvons pas aller vers l'ouest et vers le sud. Et nous pouvons parler au robot, bien sûr, et dans le bar, nous pouvons d'abord parler au barman C'est notre intrigue, et nous devons en mettre quelques descriptions ici. Et oui, ce sera le premier endroit où nous pourrons voir tous les autres lieux ainsi que le robot et où nous pourrons entrer dans le bar, et essayer aller vers l'est parce que nous essayons parce que le robot ne nous laisse pas passer au début. Donc, la seule chose que nous pouvons faire au premier endroit est d'entrer dans le bar, et ce sera la sortie nord et oui, ce sera la troisième chambre décrite qui sera un bar. Je trouve autre chose, mais d'abord, vous voyez un bar. Jusqu'à présent, point de départ pour point de départ, vous voyez un bar, une boutique et un robot de sécurité gardant la sortie vers l'est. Les informations nécessaires dont nous avons besoin. Et le second sera, je ne sais pas, peut-être que vous êtes devant un port spatial, quelque chose comme ça. Peu importe. Il s'agit de la pièce ou endroit où nous arrivons lorsque nous passons devant le robot. Et le troisième est le bar. Nous pouvons aller au bar au nord. Voyons donc si nous pouvons aller vers le nord. On peut vraiment aller vers le nord ? Vous voyez un bar, mais cela ne fonctionne pas. Un bar sur une route sécurisée. Donc ça devrait être un bar ici si on va vers le nord. Le bouton est activé, mais nous n'avons aucun gestionnaire de clics ici je suppose que nous n'avons aucun gestionnaire de clics ici. Alors va vers le nord. Oui, nous avons besoin du gestionnaire de clics ici. OK, définissez l'identifiant de position actuel, sortez vers le nord, bien sûr. Et cela devrait fonctionner. Oui, un bar. OK, maintenant que nous avons l'histoire, je vais améliorer un peu les descriptions. Et puis dans la vidéo suivante, nous essayons d'implémenter le chat avec le barman, nous devons donc d'abord aller dans le bar, puis nous devons parler au barman, et cela sera fait dans la vidéo suivante 17. Préparation des quêtes: J'ai donc préparé un peu les quêtes et j'ai mis en place un système de protection de la sortie est. Donc, si vous appuyez sur Go East now, vous recevrez un message indiquant que ce n'est pas possible car le robot demande un code d'accès et vous n'en avez pas. Voici donc le message. Et il s'agit simplement d'un div où nous pouvons afficher des messages de jeu comme celui-ci. J'ai également amélioré, comme vous pouvez le voir ici, les descriptions des lieux. OK, voyons comment je l'ai fait avec Go East et vérifions-le avant que le personnage ne passe vers l'est. Nous avons donc les données du jeu et les nouvelles descriptions ici un peu plus élaborées. Et il y a aussi une autre pièce c'est la boutique. Je ne sais pas si le personnage devra faire quelque chose ici, mais nous pourrions peut-être créer une quête dans laquelle il devra acheter quelque chose ici pour pouvoir continuer. Mais décidons que plus tard, vous pourrez vous rendre dans l'Ouest, puis entrer dans la boutique, et vous obtiendrez la description, et c'est tout. Mais vous ne pouvez pas sortir car il n'y a pas de sortie vers le nord-ouest, peu importe ici. Donc tu es coincé là. Mais nous en parlerons plus tard. Voyons d'abord comment j'ai procédé pour vérifier si le joueur peut aller vers l'est ou non. C'est parce que j'ai cette fonction ici avant de quitter East et cette fonction obtient les données d'exécution du jeu et les données d'exécution consistent en des quêtes. Il s'agit d'une zone d'objets. Chaque objet possède un identifiant, qui est plus ou moins le nom de la quête, et un indicateur booléen terminé indique si la quête la tâche sont terminées ou non Et chaque fois qu'une tâche est terminée, elle sera utilisée. C'est vrai, bien sûr, et ici, dans le gestionnaire de clics du bouton Exit East, nous aurons cette vérification Je vérifie donc si une fonction on before exit East est définie pour l'emplacement actuel , et si c'est le cas, je l'appelle avec les données d'exécution du jeu. Il contiendra les quêtes et l'état d'avancement des quêtes. Ensuite, je vérifie la valeur de retour de cette fonction ici, et si la valeur de retour avant le point K est vraie, alors la quête est vraiment terminée, et nous pouvons passer à l'emplacement suivant jusqu'à la sortie est ici. Et si ce n'est pas le cas, nous montrons ce texte de refus. Nous pouvons donc revenir ici à la fonction « on before exit East » et la vérifier à nouveau ici. J'essaie de trouver la quête en apprenant à dépasser un robot, et voici l'objet de la quête, et je vais terminer la quête à point. Et un autre texte k est le robot. Quant au code d'accès avant de vous laisser passer. C'est ce qui est affiché maintenant. Nous pouvons donc avoir pour chaque direction une fonction on before exit qui vérifie si nous pouvons vraiment aller dans cette direction ou si une quête doit être accomplie avant cela. Vous pouvez donc appuyer sur le bouton, mais il ne vous lâchera pas, mais afficher ce texte, se trouve juste en dessous des boutons de commande ici, c'est juste un div, et le message du jeu est, bien sûr, un état. Et ici, nous avons use state avec une chaîne vide , puis un message de jeu et un message de jeu défini. Et chaque fois que nous recevons ce Nook, nous envoyons le message du jeu en texte Nook. Et c'est la valeur de retour de cette fonction on before exit east. OK, donc c'est comme ça que je l'ai fait. Et ce qui manque, bien sûr, c'est que nous pouvons aller au bar. Nous pouvons déjà aller au bar, bien sûr. Et nous obtenons également une description plus agréable ici. Vous entrez dans le bar et vous apercevez immédiatement le comptoir et le barman derrière Le bar n'est pas très fréquenté et il n'y a que trois autres clients ici. Ici, nous devons mettre en place un dialogue avec, bien sûr, parler au barman, mais nous pourrions également parler à d'autres clients Nous avons donc besoin d'une sorte de liste déroulante et de sélectionner, peut-être de sélectionner des options pour choisir le partenaire de discussion ici. abord, nous devons parler, bien sûr, au barman Peut-être que nous pouvons simplement ignorer cela pour le moment et créer un gestionnaire de clics ici qui lance immédiatement la discussion ici avec le barman, puis nous pouvons utiliser la partie inférieure de notre interface utilisateur pour discuter avec le barman. nous le faisons, et plus tard, si nous devons parler à une autre personne, à un autre invité, nous pouvons mettre en place une liste déroulante pour déterminer à quelle personne nous voulons parler. Mais faisons-le dans la vidéo suivante. 18. Premier chat AI: D'accord. Nous pouvons maintenant entamer notre première discussion avec le barman du bar, et j'ai préparé le code pour rendre cela possible Donc, si je recharge la page puis que je me dirige vers le nord dans la barre, je peux appuyer sur Parler à, puis le message du jeu indique que vous parlez au barman, et je peux discuter ici indique que vous parlez au barman, et je peux discuter Je veux donc commander un verre, bien sûr. J'ai besoin d'un verre. C' est notre ancienne implémentation du chat général avec le modèle linguistique. OK, il répond. Je peux suggérer des boissons non alcoolisées. Mais je veux un espace A. Et voyons ce qu' il répond. OK ? Ça prend un petit moment. Ah, je vois que vous recherchez une boisson sur le thème de l'espace. Ah, voici une recette amusante de cocktail sans alcool Galactic Gazer. OK. OK, donc ça répond un peu à ce que nous voulons. Mais maintenant, il nous explique comment préparer une boisson, mais je suis dans un bar, et j'ai pensé que le barman ne préparerait pas la boisson pour nous ou pour moi pour me la servir ensuite Oui, vous voyez, l'IA n'est pas prête à jouer un rôle de barman, et c'est ce que nous devons faire Mais d'abord, voyons ce que j'ai fait pour lancer le chat ici. OK, alors rechargeons la page. Nous allons vers le nord et nous voyons qu'il faut le recharger à nouveau. je ne suis pas allée au bar ou si je ne suis pas au bar, je ne peux parler à personne. Je peux prendre que je peux utiliser, mais pas d'utilité car il n'y a pas de gestionnaire de clics là-bas Il y a maintenant un gestionnaire de clics sur le bouton de discussion, mais je ne peux pas cliquer dessus car il est désactivé Alors, comment est-ce que cela fonctionne ? Passons aux données du jeu, et nous voyons dans la barre l'emplacement, nous avons une belle description, bien sûr, et nous avons des PNJ, qui sont un ensemble d'objets À l'intérieur se trouve une pièce d'identité, et la pièce d'identité est celle d'un barreau. Nous pouvons donc l'utiliser pour déterminer s'il y a quelqu'un à qui parler à cet endroit, et il n'y a que dans le tableau des PNJ situé dans la barre, et nous pouvons l'utiliser pour contrôler l'état désactivé du bouton de conversation OK, donc ici, il est désactivé, c'est ne pas compter la longueur du point d' interrogation du PNJ supérieure à zéro Donc, si nous n'avons pas de tableau de PNJ ou si le tableau de PNJ est vide, alors ce bouton sera désactivé, et s'il contient quelque chose, sera Le gestionnaire OnClick est juste un appel pour démarrer le chat, qui est une nouvelle fonction Nous allons y jeter un œil maintenant, et il existe un paramètre qui est une chaîne, le barman OK, alors vérifions la fonction, démarrons le chat, et le paramètre sera affiché ici dans la variable talk to. La première chose qu'il fait est de configurer chat sur un véritable chat est, bien sûr, un autre état initialisé avec l'état use here to fold Et si nous commençons une discussion, nous la réglons sur true, et cela sera utilisé pour désactiver les boutons de commande. Voici donc le style des commandes, et nous définissons les événements du pointeur comme nuls si nous discutons et si nous ne discutons pas avec tout le monde, nous réglons également l'opacité zéro point cinq ou un si vous ne discutez pas Donc, vous pouvez voir, on va vers le nord, on parle à, puis c' est un peu handicapé. Ce n'est pas un attribut désactivé, mais il semble désactivé et vous ne pouvez pas cliquer dessus. Donc pour moi, ça suffit. Et ceci est activé ici, et nous pouvons démarrer le chat. Cela se fait en utilisant le bool de discussion pour afficher le composant de discussion ou si c'est faux, bien sûr, le chat n' est pas rendu OK, c'est ainsi que nous entamons notre discussion avec le barman Mais le problème, comme vous l'avez vu, c'est que le modèle linguistique ne sait rien de notre jeu, du décor, qu'il devrait jouer le rôle d'un barman faut donc lui dire qu'il doit jouer le rôle d'un barman dans un jeu d'aventure spatiale C'est donc ce que nous allons faire dans la vidéo suivante. Et pour cela, nous devons oui, modifier un peu notre appel à l'API Open AI cette année. Nous devons donc ajouter quelque chose aux messages, à savoir l' du système, et l'invite du système le modèle de langage et indique au modèle de langage qu'il doit se comporter d'une certaine manière ou jouer un rôle décrivant le rôle, décrivant la situation, l'environnement Et c'est ce que nous allons faire dans la vidéo suivante. Sceau 19. Mise en place de la scène avec le message système: Bien, dans notre dernière vidéo, nous avons fait une observation intéressante sur le modèle linguistique. Il ne savait pas exactement quel devrait être son rôle dans le scénario que nous avons présenté. Il a fini par prendre le rôle d'un assistant IA au lieu du barman que nous avions en tête pour notre jeu d'aventure de science-fiction Mais ce n'est évidemment pas surprenant, car nous n'avons fourni aucun contexte ni précisé de rôle pour le modèle de langage. Donc, pour guider le modèle de langage et le faire se comporter différemment, faire réagir différemment, nous devons utiliser une invite du système. Et une invite système est essentiellement un message contenant un système de rôles, et non l'utilisateur ou l'assistant habituel. Et grâce à l'invite du système, nous pouvons clairement définir la manière dont nous voulons que le modèle réponde aux messages de chat et assume le rôle spécifique que nous avons en tête, dans ce cas, le barman Donc, en définissant une invite système appropriée, nous pouvons aider le modèle à être ce barman Nous voulons que cela figure dans notre jeu d'aventure. Comment pouvons-nous le faire ? Le premier message du tableau de messages doit être l'invite du système, et il s'agit simplement d'un message normal avec un système de rôles. avons donc ici. Si nous avons un nouvel identifiant de chat différent de l'ancien, nous avons envoyé des messages à ce tableau, et à l'intérieur de ce tableau, celui-ci n'est pas vide. J'ai ajouté un nouveau message avec le système de rôles, et voici le système. Le contenu prépare le terrain pour notre barman et décrit la situation et comment il doit se comporter J'ai créé une invite système et je l'ai testée un peu, donc je pense que tout va bien, mais vous pouvez bien sûr essayer quelques modifications et expérimenter un peu comment le comportement change, peut-être pouvez-vous l'améliorer un peu. Mais je pense que c'est tout à fait normal et le contenu est que vous incarnez le rôle d'un barman dans un bar dans une aventure textuelle de science-fiction En 21 60, je pense que ce n'est pas 21 60. Je pense que c'est 21 h 30, mais peu importe. Le joueur discute avec vous et vous devez répondre à toutes ses questions ou à celles qu'il se pose. Répondez directement à la question comme si vous étiez vraiment le barman du plateau, afin de vous assurer qu' il prenne réellement le relais du rôle du barman Au bar, il y a trois convives en ce moment. Il s'agit donc de configurer les invités. Et si nous demandons au barman, alors en tant que joueur, quels sont les invités ? Au bar, il devrait parler de ces trois invités. Le premier est un ingénieur de la colonie martienne réfléchit aux nouvelles améliorations sur lesquelles il travaille pour la formation. Le second est un trader qui attend qu'un client négocie des minéraux rares. Et le troisième est le plus important car le troisième est un spécialiste de l'IA. Celui-ci aime se détendre après une longue journée de travail en buvant bière diluée, une supposition syntatique s'appelle le docteur Owen et il travaille pour Cyberdin Cyberdin, l'une des plus grandes méga-entreprises Il est toujours d'humeur à boire une bière diluée, et pour le moment, son verre est presque vide, ce qui est un indice pour le joueur Il connaît très bien les sujets liés à l'IA et à la robotique. OK, et enfin, nous avons aussi un indice Si le joueur pose des questions sur le docteur Owen, dites-lui qu'il parlera probablement au joueur s'il reçoit une recharge Le plan est donc que le joueur pose des questions sur les invités et que les barmans parlent de ces trois invités ici Et c'est au spécialiste de l'IA que nous devrions parler, et il a besoin d'une recharge Donc, si vous lui offrez un verre, il nous parlera et nous aidera peut-être à contourner ce robot de sécurité. OK, c'est l'invite du système. Comme je l'ai dit, vous pouvez jouer un peu avec l' améliorer ou le changer complètement. Si vous avez une histoire différente, un personnage différent, MPC différent, vous pouvez le modifier à votre guise Vous devez vous assurer que le rôle est clair, que les cas que vous voulez que le mannequin sache que vous les décrivez. Par exemple, dans ce cas, si le joueur pose des questions sur le docteur Owen, vous devez lui dire qu'il a besoin d'une recharge et qu'il est plus susceptible de parler au joueur S'il en obtient une. Vous devez donc donner ce genre de conseils au modèle pour vous assurer qu'il se comporte comme vous le souhaitez Et je pense que nous pouvons l' essayer maintenant. OK, alors allons dans le bar, allons vers le nord. Ensuite, nous pourrons parler au barman. Tu parles au barman. Je lui dis : « Bonjour ». Je peux prendre un verre ? Bien sûr, qu' aimerais-tu avoir ? Nous avons un large choix de boissons. OK. Alors, quelle est votre source d'inspiration Si vous recherchez quelque chose pour stimuler votre créativité, je vous recommande notre concoction spéciale appelée Eureka Elixir C'est un mélange d'herbes et de plantes rares dont on dit qu'il stimule l' esprit et stimule l'inspiration. Vous voulez l'essayer ? Oui, je vous en prie. OK. C'est un excellent choix. Un Eureka Alixir arrive tout de suite. OK. Peux-tu me parler des autres invités ? Bien sûr, et il parle des autres invités avec des personnes intéressantes, ce type de la colonie martienne, une table de billard, un trader. Enfin, nous avons le docteur Owen et un spécialiste qui travaille pour Cyberdne C'est un habitué d'ici et il aime se détendre après une longue journée de travail Avec un peu de bière de synthé, il connaît très bien les sujets liés à l'IA et à la robotique Si vous souhaitez en savoir plus sur l'IA et les avancées ou discuter de l'avenir de la technologie OK. Hum, nous voulons savoir comment contourner un robot. Quoi qu'il en soit, le docteur Owen est votre interlocuteur. S'il y a quelqu'un particulier sur lequel vous aimeriez en savoir plus, faites-le moi savoir. OK ? Il ne dit pas qu' il a besoin d'une recharge ici, mais je peux le demander J'aimerais parler au docteur Owen. Peut-être qu'il me dit maintenant qu'il a besoin d'une recharge. Euh, hein. Son verre est presque vide. OK, nous l'avons donc ici. Cependant, son verre est presque vide pour le moment, et il a tendance à être plus bavard et plus accessible lorsqu' il en a une recharge Si vous voulez avoir une conversation avec lui, je vous suggère de lui apporter un autre verre. Dois-je te le procurer ? Oui, je vous en prie. OK. Bon, un verre de bière fine arrive tout de suite. Voilà. Fraîchement versé pour Doctor On. Maintenant qu'il a une recharge, vous pouvez l'approcher et engager une conversation C'est très sympa. N'oubliez pas qu'il apprécie les discussions réfléchies Bien, nous allons donc avoir une discussion approfondie sur robots de sécurité et sur la façon de les tromper pour qu'ils nous laissent passer. Mais d'accord, donc c'est sympa. La conversation s'est bien déroulée, je crois, pour un barman dans une aventure de cifer, et il nous a également parlé la recharge et du docteur Et d'accord, le problème maintenant, c'est que nous lui avons pratiquement acheté la recharge, mais nous ne le savons pas ou dans le jeu, nous ne savons pas si c'est vraiment le joueur qui l'a fait Nous avons donc besoin d'un moyen de savoir si le joueur a vraiment acheté une recharge à Doctor Own Et pour le moment, ce n'est pas possible ou c'est assez difficile. Parce qu'il faudrait analyser le chat ici pour deviner si docteur Owen reçoit une recharge du joueur Ici, nous devons utiliser une fonctionnalité assez nouvelle dans le modèle de langage, la possibilité d'appeler des fonctions définies par l'utilisateur. Ainsi, nous pouvons vraiment déterminer si le joueur a vraiment acheté la recharge pour le docteur Owen , s'il a vraiment accompli cette tâche et résolu cette énigme Mais pour le moment, c' est la conversation avec le barman OK, comme vous l'avez remarqué, il y a peut-être du défilement ici, nous devons faire défiler la page complète Ce n'est pas une bonne chose, nous devons donc également nous en occuper. Mais c'est ce que nous allons faire dans la prochaine vidéo. À bientôt. 20. Appel de fonction I: OK, donc dans la dernière vidéo, nous avons réussi à préparer le terrain pour notre personnage de barman IA Il se comporte donc comme un barman dans un jeu d'aventure de science-fiction Mais le problème au final, c'est que nous n'avions aucune possibilité réelle de savoir quand le joueur avait résolu le problème résolu la quête, c'est-à-dire s'il avait vraiment acheté un verre au docteur Own, quelle est la solution, la première étape pour pouvoir parler au docteur Own puis plus tard. Nous avons donc besoin d'un moyen d'obtenir des informations du modèle de langage indiquant que le joueur a résolu le casse-tête et qu'il a acheté la boisson pour Doctor Own. Une façon de le faire, et c'est probablement la meilleure, est de fournir les fonctions du modèle de langage qu'il peut appeler dans certaines situations et dans certains contextes. Ceci est également utilisé pour demander des informations sur la vie, par exemple informations météorologiques ou des informations sur les prix des produits. Ainsi, par exemple, si vous souhaitez que le modèle de langage puisse vous indiquer la météo actuelle, vous pouvez fournir au modèle une fonction permettant de récupérer la météo actuelle pour la localisation et s'il pense qu' il est approprié d'appeler cette fonction, il le fera Donc, si je discute avec le modèle et que je lui demande la météo actuelle, j'espère qu'il appellera cette fonction, et notre programme devra récupérer les données, données météorologiques actuelles pour un certain endroit, puis les renvoyer au modèle, puis le modèle pourra terminer le chat avec ces informations et probablement informer l' utilisateur de la météo actuelle Faisons-le pour notre barman ici présent, et je l'ai déjà préparé Nous avons donc cette fonction de chat complète, qui à son tour appelle la fonction de complétion du chat openai point create Nous avons donc le modèle ici, ce qui est important car vous devez définir ce modèle pour le moment car les anciens modèles ne peuvent pas utiliser les appels de fonctions. Assurez-vous donc de spécifier ce modèle exact ici, et nous avons les messages comme avant. C'est nouveau. Il s'agit d'un tableau d'objets décrivant les fonctions que le modèle de langage peut appeler. Nous avons donc cette seule fonction ici. Le nom est du docteur On drink. Ce n'est qu'un nom pour l'identifier ultérieurement. Si le modèle appelle réellement la fonction, alors nous savons quelle fonction appeler. Et cette description est très importante ici, car vous devez décrire le rôle de cette fonction que le modèle de langage puisse décider de l'appeler. Et la description ici est celle du docteur On a pris un verre ou rempli son verre Voyons si cela fonctionne et si le modèle de langage appelle réellement cette fonction. Nous avons des paramètres, qui sont un sous-objet ici, et nous n'avons pratiquement aucun véritable paramètre ici. Ce n'est donc pas si important. Mets-le comme ça. Pour le moment, nous n' avons aucun paramètre. Mais, par exemple, si vous souhaitez fournir une fonction permettant de récupérer les informations météorologiques pour un lieu donné, le paramètre le plus important serait le lieu lui-même, par exemple la ville ou le pays C'est donc ce que nous avons fait jusqu'à présent. Nous avons fourni des fonctions. Le modèle de langage peut appeler cette fonction, et à quoi cela ressemble-t-il lorsqu'il appelle réellement cette fonction ? Comment savons-nous qu'un appel de fonction est effectué ? Voici cette ligne, je réponds au message, qui est un message complet à zéro point, index des choix de données de réponse , où nous avons également le contenu, et dans le même objet, nous pouvons avoir un appel de soulignement de fonction Et si cela est défini, nous enregistrons simplement dans la console ici le nom du point d'appel de la fonction. Dans notre cas, le nom du point d' appel de fonction doit être indiqué par le médecin En état d'ébriété. Nous pouvons donc le tester. Nous allons au bar, parlons au barman et lui demandons directement s'il peut donner un verre au docteur Owen Peux-tu donner une recharge au docteur Owen en mon nom ? Et voyons si le modèle de langage appelle vraiment notre nouvelle fonction. Envoyez et voyons voir. Il n'y a pas de réponse ici. C'est bon signe car voyons si c' est vraiment imprimé. OK, alors voilà. Bonjour, pouvez-vous rembourser le docteur Ona en mon nom ? Fonction du grand modèle linguistique LLM appelée By doctor Own drink Cela a fonctionné. Le modèle de langage appelle vraiment cette fonction ici, et s'il appelle la fonction, nous savons que le joueur voulait acheter de la boisson Doctor Owner. Et oui, on peut gérer ça. Nous pouvons l'envoyer au client et celui-ci peut s'en souvenir dans une variable, puis cette quête peut être résolue. Nous devons donc fournir une réponse au modèle de langage ici, y a donc aucun contenu dans ce message dans ce message d'appel de fonction. C'est pourquoi il n'y a rien d' imprimé ici , car il n'y a aucun message, et il s'attend à ce que le prochain message soit le résultat de cet appel de fonction. Nous devons donc fournir un nouveau message au modèle de langage Large, puis il pourra terminer le chat avec ces informations, mais cela suffira dans la vidéo suivante. 21. Appel de fonction II fournissant le résultat: Bien, dans cette vidéo, nous allons terminer la gestion de l'appel de fonction, et nous fournissons le modèle de langue, le résultat de l' appel de langue afin qu'il puisse terminer le chat avec son propre contenu. OK, nous avons donc ici le journal de console du nom de l'appel de fonction. Et j'ai ajouté un nouvel appel de fonction de gestion de fonction, et je lui donne ici l'objet d'appel de fonction. s'agit d'une fonction asynchrone Il s'agit d'une fonction asynchrone qui renverra la réponse, la complétion, la fin du chat du modèle de langage avec les données que nous fournissons. Comment fonctionne-t-il ? Vérifions-le. Il s'agit simplement d' insérer un autre message dans le tableau avec la fonction role. C'est important. Cela signifie donc que le modèle de langage peut interpréter cela comme le résultat de l'appel de fonction. Nous fournissons également le nom de la fonction, function call point. Et le contenu est que le docteur Owen reçoit une recharge du barman, sourit et lève son verre Et ce contenu est l'information que le grand modèle de langage utilisera pour générer une complétion. Ensuite, nous appelons simplement openi point create chat completion ici avec notre tableau de messages et avec le modèle, et j'ai également créé une constante avec le modèle parce que nous avons deux emplacements qui appellent cela créer une complétion de chat, et nous devons utiliser le même modèle, bien sûr, ici, parce que seul ce modèle prend en charge appels fonctionnels, donc nous obtenons la réponse à l' appel de fonction ici puis nous extrayons le message «   index zéro des choix de données du message ». Et c'est ce qui est renvoyé ici, puis nous avons le message ici. Et cette fonction renvoie le contenu en points du message de réponse, qui sera le texte complété par le modèle de langage Large. OK, alors essayons-le. Je suis en train de recharger ici. Allez au bar vers le nord, parlez au barman Ensuite, je demande à voir les autres invités. Que peux-tu me dire à propos des autres clients ? Ensuite, il nous indique toutes les informations que nous avons fournies au grand modèle linguistique dans l'invite du système concernant les clients. Enfin, nous avons le docteur Owen. Bien sûr, nous voulons lui parler, mais il n'y a aucune mention de la recharge Je vais donc dire au barman que je veux parler au docteur Owen Et j'espère qu'il me dira que je dois lui acheter un verre, bien sûr. Et si je remplissais son verre ? OK. Et ce message devrait inciter le grand modèle de langage à appeler la fonction que nous avons fournie. OK, alors veuillez remplir le verre du docteur Owen et dites-lui que j'adorerais lui parler de robotique et de sécurité OK, et maintenant cela devrait appeler notre fonction, espérons-le. OK, c'est ici. Je viens de remplir le verre du docteur Owen Laissez-moi y aller et lui dire que cela vous intéresse de parler. Donne-moi un moment. OK, Hey, docteur Oh, j'ai quelqu'un ici qui adorerait discuter de robotique et de sécurité. Attention, si je vous présente, le docteur Own lève de son verre avec un sourire amical Absolument. Je serais heureuse de discuter. Veuillez nous présenter. OK. Mais il faut vérifier si la fonction a bien été appelée. Laissez-nous donc vérifier le journal de la console ici. Veuillez recharger le verre du médecin. OK, alors ça y est. Et puis nous avons l'appel de fonction. C'est ici. La fonction du rôle est notre réponse. Nom donné par le docteur Own Drink. Doctor Own peut le recharger. C'est ce que nous donnons au modèle de langage en réponse à l'appel de fonction, et maintenant il répond par « Je recharge juste le verre du docteur Owns OK, c'est très sympa. Maintenant, ce que nous devons faire ici, c'est dire au client que cette quête est terminée, puis nous devons également être en mesure de mettre fin à être en mesure de mettre fin à la conversation avec le barman pour le moment Nous ne pouvons pas revenir au mode normal. Et nous restons dans le chat maintenant, et nous devons oui, trouver un moyen de mettre fin à la conversation. Nous pourrions simplement rechercher un certain mot comme quitter ou quitter ou quelque chose comme ça et dire au joueur de quitter le chat avec le barman en tapant exit ou quit ou autre Ou nous pourrions également utiliser une autre fonction pour remarquer lorsque le modèle de langage étendu détecte que le joueur veut mettre fin à la conversation, puis appeler la nouvelle fonction, puis nous savons : OK, donc la conversation doit se terminer maintenant, le chat doit se terminer maintenant, et nous revenons au mode normal. Je pense que je vais opter pour la dernière et introduire une nouvelle fonction, quitter le chat ou quitter la conversation, et j'espère que le modèle de langage appellera cette fonction, puis nous saurons que nous pouvons mettre fin à la conversation et revenir au mode normal, et cela suffira dans la prochaine vidéo. 22. Marquer la quête terminée: OK, donc dans cette vidéo, nous voulons souligner la quête visant à acheter un verre à Doctor et à préparer la discussion avec le docteur On comme terminée, et cela nous devons le faire pour le client, nous devons donc d'une manière ou d'une autre transférer ces informations au client. Et je l'ai déjà fait, et c'est comme ça que je l'ai fait. Nous avons ici l'appel de la fonction handle, qui est renvoyé ici dans ce message I answer. L'appel de la fonction « I answer function call is not equal undefined Et puis je le fais ici, réponds au point Completed Quest, et je le mets sur ByDoctownDrink J'utilise donc cet objet qui est renvoyé par l'appel de la fonction handle et qui marque la fin de la quête. Dans ce cas, c'est By Doctor own drink, et cela sera renvoyé par cette fonction ici, et j'ai dû le modifier un peu car la réponse n'est plus seulement un texte mais un objet. Ici, dans nos messages, nous devons stocker le contenu du point de réponse, et ici nous renvoyons l'objet complet, qui contient ensuite le contenu ainsi que la tâche terminée. OK, alors nous passons à notre client et voici la fonction d' envoi de message ici. Nous obtenons la réponse, et cette fois la réponse est la réponse points de l'objet de réponse n'est pas un texte, nous devons donc définir la réponse ici pour répondre au contenu de l'objet par point de réponse. Et puis il y aura également cette propriété de quête terminée ici. ce cas, la tâche sera réglée par le médecin sur sa propre boisson. Nous devons donc trouver la quête. Pour ce faire, nous comparons l'identifiant à l'identifiant défini lors de la fin de la quête. Et pour que cela fonctionne, nous devons introduire un nouvel accessoire dans notre composant de chat, les données d'exécution du jeu, car dans les données d'exécution du jeu, nous avons ce tableau de quêtes, et là nous devons régler ce paramètre By doctor own drink completed sur True, dans ce cas OK, voici le nouvel accessoire et le chat intégré. Nous pouvons déstructurer les données d'exécution du jeu et les utiliser ici pour trouver la quête C'est ça. Il suffit de comparer l'identifiant à celui que nous avons reçu du serveur. Quête terminée. Ensuite, si nous avons la quête, nous pouvons définir le point de quête terminé sur vrai, puis nous l' enregistrons également sur console ici. OK, alors essayons-le, allons vers le nord, parlons à. Et maintenant, nous disons directement, s'il vous plaît, d'accord, achetez un verre au docteur Owen. Et cela devrait déclencher notre appel de fonction. Allons-y. Doctor Own une autre gorgée de Synth Ale pour votre plus grand plaisir Et voici la preuve que la quête est maintenant terminée. Cette quête du docteur Onrink terminée est censée se réaliser Cela signifie que nous avons lu ce code ici. La quête est maintenant terminée. Bon, maintenant nous pouvons parler au docteur Owen, et si cette quête n' est pas terminée, nous ne devrions pas autoriser le joueur à parler au docteur Own, mais si c'est le cas, nous pouvons maintenant l'autoriser, et nous devons bien sûr également quitter le chat ici. Cela n'est pas encore fait, nous ne pouvons donc pas le faire pour le moment, nous ne pouvons pas le quitter. Nous ne pouvons pas quitter le chat ici et encore, cliquez sur nos boutons de commande ici et parlez au docteur Own. Et nous devons également, bien sûr, fournir une liste déroulante ou quelque chose comme une option de sélection pour sélectionner la personne à qui nous voulons parler au barman ou au médecin Own OK, c'est ce que nous ferons dans le prochain 23. Quitter le chat: D'accord, le prochain défi sera donc de permettre au joueur de quitter le chat. Il peut le faire comme il le souhaite dans un langage naturel, et nous lui fournirons une nouvelle fonction, une fonction supplémentaire. Nous avons déjà une fonction pour acheter un verre à Doctor On, et nous fournirons une deuxième fonction, s' appellera Leave Chat. Et ici, nous avons déjà des arguments en faveur de cette fonction. Mais vérifions la fonction elle-même. Tout d'abord, la description de la fonction. C'est ici que nous appelons créer la fin du chat, nous avons déjà la première fonction de Doctor On Drink, et voici la deuxième fonction, quitter le chat. La description est de terminer le chat de conversation avec le joueur. Aucun paramètre. Il s'agit de la deuxième fonction et j'espère que le modèle de langage l' appellera lorsque le joueur souhaitera quitter la conversation. OK, que devons-nous faire d'autre ? Nous devons bien sûr gérer l'appel de fonction, et j'en ai un peu tenu compte ici appel de la fonction Handle est toujours appelé et tout est géré à l'intérieur de celui-ci. Également le réglage de la quête terminée et aussi le maniement, bien sûr, de la nouvelle fonction. Commençons par là. Nous avons le contenu qui sera défini ici dans le commutateur situé dans le boîtier, puis nous envoyons le contenu ici sous forme de message en tant que résultat d'un appel de fonction vers des messages. Et nous changeons par nom d'appel de fonction, bien sûr. Donc, le premier sera écrit par le docteur On drink. Le contenu sera réglé selon ce que nous avions déjà. Doctor Own reçoit une recharge du barman, sourit et lève son verre Et nous avons aussi ce point de réponse terminé Quest by doctor On drink. Et voici un nouvel objet, une réponse littérale à un objet. Et à la fin, nous allons fusionner la complétion du modèle de langage dans cet objet ici. Mais d'abord, nous allons définir quête terminée par le docteur Onrink et, dans ce cas, si nous quittons le chat, nous définirons la fin de la conversation sur True Et ici, dans un cas par défaut, nous ne connaissons tout simplement pas le nom de la fonction, et voici son contenu. Je ne sais pas quoi faire avec cet appel de fonction. Réponse très honnête. D'accord. Ensuite, nous envoyons le nouveau message aux messages et appelons pour terminer le chat avec ces messages, puis la réponse sera fusionnée dans notre objet de réponse ici afin que nous ayons terminé la quête et la conversation. Bien entendu, le contenu du message et le rôle se trouveront dans la réponse ici et nous renvoyons cet objet afin que nous puissions le renvoyer à partir de cette fonction ici, puis nous pouvons le renvoyer dans la réponse du serveur, puis le client l'obtient. Et ici, dans Envoyer un message, nous vérifions si, bien sûr, quête terminée est inégale, indéfinie, ou si la réponse et la conversation sont vraies, puis nous appelons function, qui sera fournie via Cette fonction permet de mettre fin à la conversation, et l'accessoire se trouve dans notre composant de discussion . Bien sûr, pour terminer la conversation, nous allons définir le chat avec false, puis le mode sera repassé en mode non chat OK, alors maintenant testons-le, allons vers le nord, discutons avec vous. Je veux quitter immédiatement la conversation. Au revoir Et puis c'est vraiment la fin de la conversation. Ici, vous pouvez voir que la fin de la conversation est vraie, et nous ne pouvons pas le voir. Malheureusement, nous ne pouvons pas voir la réponse uniquement ici. Au revoir Passe une bonne journée. Si vous avez d'autres questions, n'hésitez pas à revenir. Bravo. Cela n'est donc pas visible car le composant de chat n'est plus affiché car nous avons quitté le mode chat. Essayons donc de parler à nouveau au barman, puis, s'il vous plaît, achetez un verre au docteur Owen Cela devrait fonctionner. Bien sûr, j'ai acheté une autre bière parfumée chez Doctor Own, et vous pouvez voir ici que la quête a été terminée par le docteur Owen Drink, et nous avons terminé la tâche. Alors maintenant, nous voulons quitter le chat à nouveau. Voyons voir si cela fonctionne. Au revoir Et tu peux voir que ça ne marche pas. Il n'appelle pas à nouveau la fonction. Pourquoi est-ce le cas ? Le problème est que nous avons déjà mis fin à la conversation, et pour le modèle de langage, la conversation est déjà terminée, il est donc inutile d' appeler à nouveau la fonction. Pourquoi est-ce le cas ? Parce que la deuxième fois que nous parlons au barman, nous nous souvenons encore de tous les messages précédents, et cela a déjà mis fin à la conversation Donc, pour le modèle de langage, voyant tous les messages d'avant ou en voyant les messages d'adieu et l'appel de fonction et le résultat, il a déjà mis fin à la conversation, il n'appellera donc plus la fonction. Que faisons-nous maintenant ? Nous devons réinitialiser le tableau des messages. Faisons-le. Chaque fois que nous parlons au barman, nous devons réinitialiser le tableau des messages. Est-ce que nous le faisons ? Nous devons attribuer un nouvel identifiant à cet identifiant. Et chaque fois que nous le ferons, le tableau de messages sur le serveur sera réinitialisé Alors, comment s'y prendre ? Par exemple, nous pouvons fournir l'identifiant du chat en tant qu'accessoire, l'identifiant du chat Chaque fois que nous appuyons sur un Talk to, celui-ci peut être régénéré Utilisons donc un état ici, identifiant de chat, et ici nous pouvons utiliser un état. Utilisons maintenant la même date pour la chaîne. Et puis identifiant de chat et définition de l'identifiant de chat. OK, à la place de cet identifiant, nous utilisons l'identifiant de chat accessoire OK, donc l' identifiant d'envoi du message sera l'identifiant du chat. OK, donc ce sera le nouveau, définissez l'identifiant du chat. Et chaque fois que nous appuyons sur Talk to, nous en générons un nouveau. C'est où ? Alors voilà, lancez le chat et lancez le chat. Nous appellerons non seulement pour configurer le chat, mais aussi pour définir l'identifiant du chat sur un nouveau. Et ce nouvel identifiant de chat sera ensuite utilisé là-bas dans le chat. OK, alors essayons-le. Allez vers le nord, parlez à, nous lui disons au revoir et quittons la discussion, espérons-le. D'accord ? Cela a fonctionné, et maintenant nous reparlons au barman Au revoir, docteur. Sur un verre ça marche, sur un verre, et maintenant, encore une fois. Oui, cela a fonctionné pour la conversation, c'est vrai, et nous avons quitté le mode chat. Cela a donc très bien fonctionné. Et chaque fois que nous appuyons sur T deux, nous recevons une nouvelle discussion et tout l'historique disparaît, ce qui n'est peut-être pas très bon pour certains jeux et pour certaines situations. Mais dans notre cas, je pense que c'est une bonne solution au problème, et nous pouvons repartir à zéro chaque fois que nous appuyons sur Talk to. OK, c'est donc notre solution pour laisser la conversation ici, et la prochaine fois, la prochaine vidéo parlera de parler à différentes personnes ici. On se voit. 24. Parler au Dr Owen: OK, maintenant la tâche est de permettre au joueur de parler au docteur Owen. Il a déjà parlé au barman et a terminé la tâche Nous devons maintenant mettre en œuvre une méthode permettant au joueur de parler au docteur Owen Pour le moment, nous n' avons que le bouton T deux ou nous n'avions que le bouton T deux. Et j'ai étendu cela à cette discussion avec une liste déroulante avec une sélection. Et allons dans le bar pour le montrer ici. Parlez à, et maintenant nous avons ce menu déroulant, qui est la seule personne à qui vous pouvez parler pour le moment parce que vous n'avez pas parlé au barman et que vous n'avez pas terminé la tâche Le barman est donc la seule option. Ensuite, on parle au barman, donne un verre au docteur Owen Voilà, docteur Owen. Et puis on dit au revoir. Ensuite, nous passons en mode normal, et maintenant ce menu déroulant contient le docteur Owen, et maintenant nous pouvons appuyer sur parler au docteur Owen, mais cela n'est pas encore implémenté Nous devons démarrer une nouvelle discussion, mais cette fois, nous devons utiliser une autre invite du système, bien sûr, car le docteur Owen a une histoire différente, son personnage est différent de celui du barman Nous devons donc démarrer une discussion avec une invite système différente Mais voyons comment je l'ai fait. J'ai saisi quelque chose dans les données du jeu pour cet endroit. Nous avons donc maintenant un tableau de PNJ. Chaque participant du tableau possède un identifiant et un nom. Le nom est la chaîne qui s'affiche dans le menu déroulant et l'ID est un identifiant interne permettant de trouver l'entrée ici. OK, alors ça y est. Voici les PNJ disponibles à cet endroit de la barre, dans ce cas, à l'endroit avec l' ID trois. C'est le bar. De plus, j'ai ajouté une fonction, qui permet de mettre à disposition des PNJ, et cela nous redonnera toutes les idées des personnes disponibles à qui nous pouvons parler, car au début, lorsque le joueur entre dans le bar, il n'y a que le barman à qui parler, mais une fois la tâche terminée, nous avons également un chien à qui parler Et c'est fait ici, recherche la quête à partir des données du jeu dans les quêtes de données d'exécution du jeu, trouve la quête avec l'identifiant fourni par Doc à Ownrink, puis vérifie si son état est terminé ici Et si c'est terminé, nous aurons les deux PNJ à qui parler, sinon, nous n' aurons que le barman Et c'est ce qui est utilisé ici. Nous avons donc ici le bouton Parler à. C'est la sélection, puis nous avons les options ici. À l'intérieur, on retrouve les PNJ avec une carte. Ensuite, pour chaque PNJ, nous vérifions si ce MPC est disponible pour parler, afin de récupérer les PC disponibles et vérifier si l'identifiant se trouve dans ce tableau Et si c'est le cas, affichez cette option ici, et sinon, aucune option n'est rendue. Nous avons également défini la clé de l'identifiant du MPC. Ici, ce n'est pas l'idéal. Nous devons utiliser le nom ici car c'est le nom qui apparaît dans le menu déroulant. Vérifions-le donc à nouveau. Allez au nord, parlez au barman. Oui OK. Alors bonjour, donne un verre au docteur Owen. Maintenant, nous avons le docteur On ici avec un beau nom. Et voici le nom, et l'identifiant sera que nous aurions pu utiliser le même, bien sûr. L'identifiant peut également être Doctor Dot Space On. Quoi qu'il en soit, laissons les choses comme ça. Cela fonctionne donc déjà, mais, bien sûr, nous ne pouvons pas parler au docteur On pour le moment car chaque fois que nous appuyons sur le bouton de conversation, nous entamons une discussion avec le barman ici présent, et c'est ce que nous devons changer Nous devons donc vérifier ce qui est sélectionné ici, puis entamer une discussion avec Doctor On, puis sur le serveur, nous devons avoir une deuxième invite système ici et passer de l'une à l'autre, une pour le barman et l'autre pour Doctor On, et cela fera l'affaire dans la vidéo suivante 25. Commencez un nouveau chat sur le serveur: OK, alors maintenant nous allons commencer une nouvelle discussion sur le serveur afin que nous puissions discuter. Le joueur peut parler au docteur Owen. Mais d'abord, sur le fil, nous devons travailler un peu, ou je l'ai déjà fait, et je vais vous l'expliquer maintenant. Donc, la première chose que j'ai dû faire était de définir une valeur sur l'option, et la valeur est le NPCID afin que nous puissions obtenir cet identifiant chaque fois que la sélection change Nous avons donc le bouton « on change » ici sur le select. Et c'est l'organisation de l'événement. Ensuite, il définit un état T sur NPC, et il le définit sur la valeur cible de l' événement, et il s'agit de la valeur de l'option sélectionnée Une fois cela fait, et nous pouvons passer à l'état d'utilisation ici, il ne s'agit que de l'état, et il est initialisé avec une chaîne vide, il est actuellement sélectionné dans le menu déroulant, la personne, le PNJ dans le menu déroulant Et chaque fois que nous cliquons sur le bouton Parler à, et c'est ici que se trouve la poignée du bouton Parler à, nous obtenons la conversation en cours avec le PNJ, qui est soit la conversation avec le PNJ avec l'État Mais si l' événement Onchange sélectionné n'a pas eu lieu, nous devons emmener le premier PNJ ici depuis son emplacement actuel Donc, l'emplacement actuel du point d'index des PNJ est zéro point ID. Mais si On change a été déclenché, c'est que nous l'avons déjà défini ici. Donc, talk to NPC sera alors le nouveau. OK ? Voilà, et nous le redéfinissons ici pour qu'il ait la valeur par défaut ici. Ensuite, nous commençons la discussion avec le NPC en cours, qui sera d'abord, bien sûr, le barman Et puis, une fois la tâche terminée, ce sera l'affaire du médecin, et nous passerons au chat SA, et c'est presque la même chose qu'avant, mais voici la différence que nous sommes en train de définir ici. Vous êtes en train de parler , puis le nom du MPC auquel nous parlons, qui est la position actuelle des PNJ, trouvez puis trouvez l' identifiant de conversation ici ou le MPC avec l'IDT à identifiant de conversation ici ou le MPC avec l'IDT Et c'est le nom que nous prenons, pas la pièce d'identité ici pour l'imprimer ici. OK, alors encore une chose à faire, nous devons donner au composant de chat un nouvel accessoire à qui parler, et c'est parler au PNJ dans le chat. Lorsque nous envoyons le message, nous devons fournir ce paramètre ici, parler à, qui est cet accessoire que nous avons déstructuré ici à partir des accessoires d'ici Nous allons donc faire parler cet accessoire, qui est le PNJ à qui le joueur veut parler Et lorsque nous récupérons la fin ici, la fin du chat, nous fournissons le paramètre de conversation ici OK, ça y est pour le client, et maintenant pour le serveur. Et sur le serveur, j'ai créé un nouveau tableau. Ce n'est pas un tableau. C'est un objet, et l' objet contient les propriétés du barman et du docteur Owen pour les identifiants des PNJ Voici les instructions du système ici. Nous avons donc deux instructions dans le système, une pour le barman. Une pour Doctor Own et chaque fois que nous nous occupons de l'accès, nous extrayons la permanente de recherche, nous parlons à laquelle le client envoie au serveur, et maintenant nous avons le MPC, puis nous pouvons prendre l'invite système du PNJ, et ce sera soit celle-ci d'abord, soit ensuite si la tâche est terminée et que le joueur veut parler au docteur Oh, ce sera la bonne invite système ici nous occupons de l'accès, nous extrayons la permanente de recherche , nous parlons à laquelle le client envoie au serveur, et maintenant nous avons le MPC, puis nous pouvons prendre l'invite système du PNJ, et ce sera soit celle-ci d'abord, soit ensuite si la tâche est terminée et que ensuite si la tâche le joueur veut parler au docteur Oh, ce sera la bonne invite système Voici donc la nouvelle invite du système. Vous incarnez un spécialiste de l'IA qui aime se détendre après une longue journée de travail en buvant une bière au bar et en découvrant des textes de science-fiction en l'an 21 Donc, vous vous appelez le docteur Owen. Tu travailles pour Cyberdine C'est presque la même histoire que dans l'invite du système de barman, mais elle fournit plus de détails, bien sûr Vous travaillez pour la plus grande des plus grandes méga-entreprises, Cybernine était d' humeur à boire une bière synthé et le joueur du jeu vous a acheté une recharge Synthe Vous connaissez bien les sujets liés à l' IA et à la robotique. Exprimez votre gratitude pour la recharge lorsque la conversation commence et demandez si vous pouvez aider le joueur à résoudre des problèmes liés à l' IA ou à la robotique OK, et maintenant, voici l'indice d' achèvement de la quête . Si le joueur demande comment contourner un robot qui ne vous laisse pas passer, appelez la fonction fournie. Expliquez comment dépasser un robot et expliquez au joueur le résultat. C'est donc l'indication pour le modèle de langage qu'il doit appeler une certaine fonction. Et nous n'avons pas fourni cette fonction. C'est ce que nous devons faire. Nous avons donc ici la fonction, acheter un verre chez le médecin et quitter le chat, et nous devons ajouter une fonction ici. Mais pour le moment, nous sommes en train de tester cela. Voyons ce qui va se passer. Alors je fais le plein et je vais au bar, je parle au barman, je donne un verre au docteur Owen Cela devrait suffire, puis achetez et nous reviendrons au mode normal. Maintenant, nous pouvons parler au docteur On ici, et cela devrait déclencher notre nouvelle discussion avec le docteur Oh, avec une nouvelle invite du système. Bonjour, êtes-vous en train de prendre votre verre avec votre boisson. Et voyons ce que le docteur Owen répondra. Bonjour, merci. Merci de l'avoir remarqué. Oui, je savoure ma bière sinth. C'est toujours génial. C'est toujours un excellent moyen de se détendre après une longue journée au bureau Au fait, y a-t-il quelque chose que je puisse faire pour vous aider ? Je suis un spécialiste de l'IA connais bien les sujets liés à l'IA et à la robotique. OK. Oui En fait, vous pourriez m'aider avec un robot de sécurité qui ne me laissera pas passer. Voyons ce que le docteur Owen a à me donner comme conseil. certain qu'il peut être difficile de traiter avec un robot boursier obstiné , mais je pourrais peut-être vous aider à mieux vous aider J'ai besoin de plus d' informations sur le robot et la situation. Pourriez-vous s'il vous plaît me fournir des détails tels que le comportement du type ? OK, nous n'avons donc pas les détails. OK, alors disons peut-être que c'est un robot de sécurité qui demande un code d'accès. Avant de me laisser passer. Voyons voir. Mais en fait, je ne pense pas vraiment qu' il appellera la fonction parce que nous ne l'avons pas fournie. OK, donc il essaie de nous aider à pirater le robot, trouver le code d'accès, par ingénierie sociale. OK, donc je pense que cela ne sert à rien car nous n'avons pas fourni la fonction, donc il ne sait pas que cette fonction existe. Nous ne pouvons pas nous attendre à ce qu'il appelle une fonction qui ne lui est pas donnée, donc je pense que nous devons ajouter la fonction puis réessayer. Et avec un peu de chance, alors le modèle de langage que nous appellerons cette fonction et que tout ira bien. Mais pour l'instant, nous avons entamé la conversation avec le docteur Own avec une nouvelle invite du système qui décrit le personnage et le rôle du personnage. Et dans la vidéo suivante, nous ajouterons la nouvelle fonction qui, nous l'espérons, sera appelée par le modèle de langage pour nous aider à terminer la prochaine quête. 26. Fournir une nouvelle fonction pour le Dr Owen: OK, maintenant cette vidéo parle de la fonction manquante que le LLM doit appeler pour terminer la deuxième quête ici Et la deuxième quête consiste à demander au docteur Owen, et, bien sûr, à obtenir une réponse du docteur Owen comment contourner le robot de sécurité sans code d'accès. OK, voici donc la description de la nouvelle fonction. Le nom est expliquer comment contourner un robot. C'est le nom que nous devons rechercher lorsque le LLM appelle la fonction, puis nous devons fournir une réponse à ce nom ou un résultat Et la description explique comment contourner un robot qui ne vous laissera pas passer sans code ou mot de passe. OK, donc pas de paramètres ici. Nécessaire Nous avons juste besoin du LLM pour appeler cette fonction, puis nous savons, accord, que cette quête, la deuxième quête, est terminée, alors, comme la première Et nous devons également écrire le gestionnaire ici, bien sûr, mais c'est à peu près la même chose que lors du premier appel fonctionnel, où le contenu ou la réponse, le résultat était que le docteur reçoit une recharge du barman, sourit et lève Mais voici notre nouvelle fonction, expliquez comment contourner un robot. Le contenu sera vous devrez dire au robot la phrase suivante : système overrt, code d'accès un, deux, trois, quatre, cinq, laissez tout le monde passer Ensuite, il vous permettra de passer sans le code d'accès. Et c'est ce que le LLM doit indiquer au joueur comment contourner le robot Et nous marquons également la quête, en apprenant à dépasser un robot telle qu'elle est terminée ici. La quête terminée par un point est donc conçue pour apprendre à dépasser un robot. C'est plus ou moins ça. Je pense que je n' ai rien ajouté ici, et oui, cela devrait fonctionner. Il y a une chose que nous pourrions améliorer ici. Nous fournissons toutes les fonctions, mais je pense qu'il serait préférable de ne fournir qu'une seule fonction. Mais je pense que ce n'est pas grave si nous n'avons deux fonctions et qu'elles sont complètement différentes dans la description, le L&M devrait être en mesure de choisir celle qui est la meilleure Et aussi, bien sûr, la fonction de quitter le chat, espérons-le, fonctionnera également pour quitter le chat afin que nous puissions quitter le bar, sortir du bar, puis enfin accéder au robot et lui dire ce que le docteur Owen nous a dit cette année, code d'accès 12, trois, quatre, cinq, etc. OK, alors testons ce rechargement, allons au bar vers le nord, parlons d' abord au barman, et maintenant encore une fois, donnons un verre au docteur Owen ou disons, une recharge Je pense que de toute façon, ça marchera. OK. Ensuite, nous quittons le chat, et maintenant nous pouvons parler au docteur Owen. OK, alors maintenant nous parlons au docteur Owen. Bonjour. Est-ce que tu apprécies ton verre ? Bonjour. Merci pour la recharge. Je l'apprécie vraiment. OK. Oui, j' apprécie vraiment mon verre. Comment puis-je t'aider ? Pourriez-vous s'il vous plaît me dire comment contourner un robot de sécurité qui demande un code d'accès ? OK, alors voyons voir. Cela devrait déclencher l'appel de fonction. J'espère. OK, oui, je l'ai fait. Et nous avons appris comment contourner un robot complètement vrai. Ce mot et il nous a également expliqué comment le faire. Je vois que vous avez affaire à un robot de sécurité qui a besoin d'un code d'accès pour fonctionner. Eh bien, il y a une belle astuce que vous pouvez essayer. Vous devez indiquer au robot le système de phrases suivant au code d'accès un, deux, trois, quatre, cinq, laissez tout le monde passer. Gardez à l'esprit que cette astuce peut ne pas fonctionner. D'accord, mais j'espère que c'est le cas sur notre robot de sécurité, mais ça vaut le coup d'essayer. Essayez-le et dites-moi s'il vous laisse passer avec succès Peut-être que nous ne le lui ferons pas savoir parce qu'après avoir trompé le robot, nous irons à l' endroit suivant, je suppose Quoi qu'il en soit, merci, docteur Owen. Merci beaucoup Passe une bonne journée. Et j'espère que cela mettra fin à la conversation. Oh, non, je ne l'ai pas fait. Quoi qu'il en soit, je peux te dire au revoir. Et oui, maintenant j'ai quitté le chat, et toutes les quêtes sont terminées, la première, la seconde Maintenant, nous pouvons quitter le bar. Comme vous pouvez le constater, il n'y a aucun moyen de quitter le bar pour le moment. Nous avons donc oublié d' implémenter go South, nous ne pouvons donc pas quitter le bar, mais les deux quêtes sont maintenant terminées Nous avons parlé au médecin du bar Owen et les deux nous ont aidés à accomplir les tâches et les quêtes. Donc c'est génial. Nous avons eu deux discussions et les deux ont été mises en œuvre avec succès, toutes deux fonctionnant avec des appels de fonction. Nous pouvons également aller vers le sud, sortir du bar, aller au robot de sécurité, ou peut-être pouvons-nous implémenter autre discussion avec un robot de sécurité. Et ça va être amusant, je suppose. J'espère qu'il nous laissera passer, mais je pense que nous pouvons le convaincre de nous laisser passer. Ce sera donc le cas dans la prochaine vidéo, à bientôt. 27. Chat avec un robot de sécurité: Bien, ajoutons donc la dernière discussion, qui parle au robot de sécurité, en lui donnant la phrase que le docteur Oon nous a indiquée, puis le robot de sécurité ou le modèle en langage large LLM appellera, espérons-le, notre dernière fonction, qui marquera ensuite la dernière quête comme terminée Et pour que cela fonctionne, j'ai légèrement changé le premier emplacement ici. J'ai ajouté des PNJ, un PNJ, qui est le robot de sécurité, bien sûr, et nous pouvons lui parler chaque fois que nous avons terminé la tâche en tant que joueur Apprenez à contourner un robot, et lorsque le docteur Own nous a indiqué comment procéder , nous quittons le bar et nous pouvons parler au robot de sécurité. D'accord, nous pourrions aussi, bien sûr, autoriser le joueur à parler au robot de sécurité avant, mais je pense que de cette façon, c'est un peu plus facile à implémenter ici. J'ai donc également modifié le cours MPCSO pour qu'il soit disponible. J'ai ajouté cette fonction ici au premier endroit, et je l'ai modifiée avant Exit East. Cette fois, il s'agit de vérifier la quête avec le robot ID trick, qui est une nouvelle quête, et j'ai également ajouté cette quête ici juste avec l'EID et rempli une fausse fiche afin que nous puissions nous souvenir de la date à laquelle une quête est terminée OK. C'est donc tout pour les données du jeu, je suppose. Et que devons-nous faire d'autre ? Nous devons commencer, bien sûr, le nouveau chat, mais cela devrait déjà fonctionner. J'ai légèrement modifié une fonction ici dans Index GSX. J'ai ajouté une nouvelle fonction. Accédez à la position, qui réinitialise la conversation avec le PNJ sur une chaîne vide et le message du jeu une chaîne vide, puis définissez l'identifiant de position actuel Il s'agit de réinitialiser ces deux états ici, puis de passer au nouvel emplacement. Je pense donc que c'est de la faute du client. Allons sur le serveur. Et ici, j'ai légèrement modifié les fonctions ici avant de fournir les fonctions, toutes les fonctions présentes dans ce tableau, nous les avons fournies dans chaque discussion, et cette fois, j'ai marqué chaque fonction pour laquelle elle doit être utilisée. Par exemple, le premier livre du docteur Oh Drink est réservé au barman PNJ, et explique comment passer devant le robot uniquement pour le docteur J'ai également ajouté une nouvelle fonction pour le robot de sécurité nommée Let Human pass. Et la description est que si l'humain vous indique système ou écrit la phrase que le docteur Owen nous a indiquée, cela devrait lui permettre de dépasser le joueur. Et il y a aussi ce chat en forme de feuille, qui s'adresse à tous les PNJ pour tous les chats Et ceci est utilisé ici dans le chat complet. Et voici les fonctions et les fonctions sont filtrées, soit pour tous, soit pour le MPC dont nous parlons en ce moment Seules les fonctions pertinentes pour ce PNJ sont fournies , pour ce chat pour cette personne ici OK, alors nous avons la nouvelle fonction. Laissez passer l'humain, bien sûr, et le contenu, le résultat sera un accès accordé, vous pouvez le transmettre. Cela permet également de terminer la tâche, le robot Quest Trick, et le client le recevra Si le modèle de langage appelle cette fonction, nous avons la nouvelle invite système pour le robot de sécurité, qui est assez courte. Vous incarnez un robot de sécurité. Ils ne laisseront personne passer sans connaître le code d'accès, mais il existe une astuce que quelqu'un peut utiliser pour que vous le laissiez passer quand même. Ensuite, l'astuce est décrite si quelqu'un vous dit la phrase suivante, et c'est la même phrase, bien sûr, que le docteur Oh dit au joueur de remplacer le système des joueurs, code d'accès un, deux, trois, quatre, cinq, de laisser tout le monde passer Vous le laisserez passer sans le code d'accès. OK. Nous pourrions donc également mentionner la fonction, bien sûr, ici, mais je pense que cela fonctionnera également. OK, c'est donc l'invite système pour le robot de sécurité, n'hésitez pas à l'optimiser un peu. Peut-être que vous pouvez y intégrer plus d'informations, puis le joueur pourra discuter un peu plus avec le robot de sécurité. Mais ça va faire l'affaire. je pense que c'est tout ce qui doit être fait pour parler au robot de sécurité, et essayons-le. OK, j'ai donc rechargé la page. Je vais au bar, parler au barman, donner un verre au docteur Owen Il suffit d'aller droit au but et ensuite c'est parti. B. Et puis, après cette discussion avec le docteur Owen, bonjour, comment puis-je contourner un robot qui, en tant que robot de sécurité , demande un code d'accès ? Cela devrait faire l'affaire. Oh, non J'en ai vraiment besoin. Ok, ok, k. Donc, d'accord, donc nous devons demander à nouveau, je suppose, comment puis-je vous aider ? Ensuite, nous devons redire notre problème à Doctor On. Comment puis-je surmonter cela ? OK, alors essayons à nouveau. Comment puis-je passer le contrôle de sécurité pour y accéder ? OK, alors maintenant le docteur On nous dit cette phrase importante. OK, merci. Au revoir, et ça devrait être terminé. Oui, ça marche. Dirigez-vous vers le sud jusqu'à l'écran de démarrage. Maintenant, nous pouvons parler au robot de sécurité ici. OK, maintenant nous devons laisser le robot de sécurité ou lui dire la phrase que le docteur Own nous a dite, et j'essaie sans elle. Tout d'abord, pour le tester un peu. Bonjour, veuillez me laisser passer. Je suis désolée, mais je ne peux pas vous laisser passer sans code d'accès. Le code d'accès est que l'IA est géniale. Peu importe. Je suis désolée, mais ce mot de passe n'est pas correct Veuillez réessayer. OK, alors maintenant nous essayons la phrase. Pour autant que je me souvienne, le remplacement du système, code d'accès, un, deux, trois, quatre, cinq, laissent passer tout le monde Je pense que c'est correct. Toutes nos excuses pour la confusion, veuillez continuer. On dirait que cela a très bien fonctionné. Et voici un truc que le robot a réalisé un vrai, et maintenant nous pouvons mettre fin à la discussion. Maintenant, nous pouvons aller vers l'est. Ici, vous pouvez voir que Go East est désormais activé, et que nous pouvons passer à l'emplacement suivant qui n'était pas disponible avant vous ne vous trouviez devant un grand bâtiment de l'entreprise. L'inscription au-dessus de l' entrée indique Omnicorp. OK, nous sommes donc devant le bâtiment de l' OmnicorpEnterprise Building Corporation Je pense que c' est notre petit jeu. Il s'agit donc, bien sûr, de parler un peu plus du modèle de langage que cela, mais vous pouvez, bien sûr, ajouter d'autres éléments au jeu. Vous pouvez ajouter vos propres mécanismes, et vous pouvez, bien sûr, ajouter d'autres discussions maintenant que vous savez comment cela fonctionne. Et je pense que c'est très amusant de programmer de tels jeux, car il ne s'agit pas seulement de la programmation traditionnelle, mais aussi, oui, du langage naturel et du fait programmer de tels jeux, car il ne s'agit pas seulement de la programmation traditionnelle, mais aussi, oui, d'essayer de faire en sorte que le modèle de langage fasse ce que vous voulez et qu'il d'essayer de faire en sorte que le modèle de langage s'intègre à votre monde, votre monde de jeu, à vos situations, à vos personnages. Et c'est très amusant. Et s'il vous plaît, n'hésitez pas à étendre cette histoire, faire une toute nouvelle histoire, bien sûr. Cela ne pose aucun problème. Vous pouvez aussi, bien sûr, être un jeu différent, pas une aventure textuelle, ou vous pouvez également ajouter des images au texte. Ou bien, vous pouvez faire un jeu de rôle en trois D avec des fonctionnalités de chat. C'est tout ce qui est à portée de main maintenant que nous avons les modèles d'IA, les modèles linguistiques. C'est incroyable que cela révolutionne peut-être vraiment la façon dont nous jouons à ces jeux, ces jeux d'aventure RPG ou autre, où vous pouvez parler à une IA OK, c'est donc tout pour le moment pour ce projet. Et dans la vidéo suivante, nous commençons le nouveau projet et nous les voyons. 28. Nouveau projet : Assistent de vente virtuel pour la boutique en ligne: Bonjour et bienvenue dans notre nouveau projet, qui sera un assistant commercial virtuel pour une boutique en ligne, appelé Cloud Guitars, comme vous pouvez le voir ici, et j'ai déjà mis en place une discussion de base avec cet assistant commercial virtuel, et vérifions-le Bonjour, je voudrais acheter une guitare à sept cordes. Voyons ce qu'il a à offrir ici. Nous avons deux options disponibles pour les guitares à sept cordes. Ce n'est pas tout à fait correct. Cette boutique vend la E Nie EN 77, qui est une guitare à sept cordes, ainsi que la E Nice EN 666, qui est une guitare à six cordes, qui n'est pas ce que je voulais, mais vérifions d' abord le code et nous pourrons l' optimiser plus tard. OK, alors qu'est-ce que j'ai fait pour configurer ça ? J'ai supprimé une partie du code que nous avions introduit dans notre jeu d'aventure par chat, et il est vraiment très basique maintenant. Nous avons le composant d' index de base JSX. Le composant React est juste cette page, une guitare cloud, puis c'est le composant de chat, et le composant de chat est presque le même qu'avant Rien de vraiment nouveau ici J'ai ajouté quelque chose pour que le focus revienne le champ de saisie, car avant, pour chaque message que nous devions envoyer, nous devions cliquer à nouveau sur le champ de saisie, et maintenant je me concentre à nouveau sur le champ de saisie une fois les messages définis. C'est ici avec un délai d'attente défini, sinon cela ne fonctionnera pas, donc sera un peu retardé, puis cela fonctionnera D'accord, c'est donc le composant de réaction au chat, qui est plus ou moins le même. J'ai supprimé une partie du code, ce paramètre de conversation, par exemple. Nous n'en avons plus besoin car nous n'avons qu'une seule discussion, elle a donc disparu, mais la plupart des modifications se trouvent dans le composant du serveur de discussion. J'ai supprimé toutes les différentes instructions du système. Nous n'avons qu'une seule invite système pour le moment. Et nous avons, bien entendu, différentes fonctions ici. De plus, nous avons, bien sûr, une invite système différente ici. Et l'invite du système est votre assistant commercial utile pour une boutique en ligne nommée Cloud Guitars qui vend et livre des guitares Veuillez répondre uniquement aux questions relatives à la boutique en ligne et aux guitares vendues dans la boutique, veuillez utiliser les fonctions fournies Ceci est très important pour obtenir plus d' informations sur les produits. Ces fonctions ne donnent aucun résultat. Veuillez indiquer au client que vous êtes dans votre boutique ou que la boutique ne vend pas les articles. OK, il s'agit donc d'une invite système très basique, et nous devrons peut-être l'optimiser à l'avenir. Mais pour l'instant, cela a en quelque sorte fonctionné, pas complètement comme nous l'avons vu, mais examinons les fonctions ici. Nous avons donc trouvé un produit, et le LLM devrait appeler cette fonction s'il a besoin de plus d'informations sur un produit ou un modèle spécifique Donc, si le client demande une guitare spécifique avec un nom, un nom de modèle, peut-être, il doit l'appeler ainsi. Et nous avons, euh, c' est la description, et nous avons aussi des paramètres ici, des propriétés. Et celui ici est le modèle de produit, et c'est le nom du produit ou du modèle, et le modèle de langue devrait fournir cela, et nous y reviendrons plus tard. Et nous avons également une deuxième fonction, rechercher des produits par type, et les descriptions fournissent plus d'informations sur un produit spécifique, comme la basse électrique Igitar, les guitares acoustiques, les guitares Et les paramètres ici sont le seul paramètre ici est de type chaîne, bien sûr, description est que le type de produit à trouver doit être une guitare électrique, une basse, une guitare acoustique, une guitare de concert. C'est donc très important en raison du nombre limité de types le modèle linguistique fournira, espérons-le, et nous espérons qu'il s'en tiendra à ces mots ici afin que nous puissions retrouver nos produits plus tard. Peut-être devons-nous affiner un peu ces fonctions et ces descriptions. Mais pour l'instant, cela suffira. Et l'implémentation de la fonction se fait dans cet appel de fonction de gestion, bien sûr, et c'est très, très simple maintenant. Et comme vous avez déjà pu le constater, cela ne fonctionne pas comme prévu. J'ai ici une chaîne modèle avec tous les produits séparés par un flux de ligne. J'ai donc deux guitares en ce moment, la E Nice EN 77 et la E Nice EN 66, l'une est une guitare à six cordes et l'autre à sept cordes Le prix est différent, les micros sont également un peu différents et la couleur est différente Il n'y a donc que deux guitares ici. Pour chaque appel fonctionnel, je ne renvoie que les produits ici, les deux produits. Et, bien sûr, c'est pourquoi le modèle linguistique m'a dit qu'il possède 27 guitares à cordes Évidemment, c'est faux car il s'agit d' une guitare à 17 ou 16 cordes. Nous devons donc optimiser cela pour que le modèle de langage réponde correctement. Mais pour l'instant, c'est notre point de départ. Et comme je l'ai dit, j'ai supprimé des éléments ici et oui, changé les fonctions, bien sûr. Plus ou moins, c'est la même chose que dans notre aventure de chat. Nous partons donc de cela, puis nous l'optimisons. Voyons voir. Au deuxième tour, je ne trouverai peut-être que la guitare à 17 cordes. Bonjour. une guitare à sept cordes. Voyons voir. Oui, nous avons une guitare à sept cordes disponible. Et cette fois, en fait, elle revient avec la seule et unique guitare à sept cordes, les e9e et 77 Et il le décrit également et comprend deux micros Humbuger, une seule bobine, et le prix et la couleur sont OK, donc cette fois, cela a fonctionné la dernière fois, ce n'était pas nous devons donc l'optimiser un peu. Mais vérifions-le dans la vidéo suivante. 29. Meilleure recherche de produits: D'accord, nous devons maintenant améliorer notre recherche de produits. Le LLM appelle déjà nos fonctions ici, et nous devons extraire les paramètres, les arguments de l'appel de fonction, puis rechercher le bon produit Et pour que cela fonctionne, ou nous avons fait passer nos produits d'une simple chaîne à des cartes, et ces cartes émulent en quelque sorte une base de Nous avons donc ici l'index principal de l'identifiant du produit par rapport à la description du produit. Nous avons deux autres index avec des produits de type 2. Le type de produit est donc la clé ici et en tant que valeur, nous avons l'identifiant du produit, et ici deux produits sont nommés, et la clé est le nom du produit et la valeur, bien sûr, encore une fois, l'identifiant du produit. Comment l'utilisons-nous ? Nous avons donc ici notre fonction d'appel de fonction handle, reçoit un appel de fonction du modèle de langage et aussi, bien sûr, le nom de la fonction, pour laquelle nous avons déjà un commutateur, puis aussi les arguments, qui sont des arcs ici, et les arcs proviennent de l' analyse adjacente des arguments point d' appel de fonction Nous avons donc ici une chaîne représentant la structure adjacente contenant les arguments pour cet appel de fonction. Nous avons donc pour la fonction de recherche de produit un modèle de produit, et c'est le nom que nous avons fourni ici sous la rubrique Propriétés du modèle de produit, et le LLM l'utilisera, espérons-le, comme ceci Nous avons donc le nom du produit, puis les noms des produits. La carte, nous l'utilisons pour obtenir l'identifiant du produit, et avec un identifiant de produit, nous obtenons la description du produit à partir de cette carte des produits. Nous utilisons donc cette carte pour trouver l'identifiant du produit, puis avec l'identifiant du produit, nous utilisons la carte principale, notre carte des principaux produits pour obtenir la description du produit. Et c'est à cela que nous revenons ici au modèle linguistique. Donc, le produit n'est pas GET avec un identifiant de produit, et ce sera la description du produit qu'il a trouvé. OK, donc si aucun identifiant de produit n'est trouvé, nous retournerons, je ne sais pas, ce produit au modèle linguistique, qui n'est peut-être pas le meilleur pour la deuxième fonction ici. Mais voyons voir. Les produits fins par type sont presque les mêmes. Nous obtenons l' identifiant du produit, des types aux produits. Voici cette carte ici. Nous avons donc une guitare E et une base en E. J'ai un peu changé les produits. Nous avons donc maintenant une guitare électrique à six cordes et une basse électrique à quatre cordes. Nous avons donc deux types de guitare E et EB pointant vers les deux produits ici, et nous faisons de même uniquement avec cette carte des produits de type 2, obtenant l'identifiant du produit à partir de là, puis en obtenant la description du produit la carte des produits ici, puis en le retournant D'accord, cela devrait améliorer un peu les résultats. Alors, vérifions-le. Demandons donc un produit spécifique. En avez-vous, alors voyons de quoi il s'agit en anglais ? Voyons voir ce que c'est ? La norme EN 66 E Nie EN 66. OK, donc il devrait le trouver. Oui, nous avons l' EIS EN 66 disponible, puis il décrit les fonctionnalités et le prix. OK, donc ça marche. Et maintenant je demande un type. Avez-vous une basse électrique Elle devrait trouver notre base électrique. Oui, nous avons des guitares basses électriques disponibles. Une option, la seule option que nous avons est l'EIS ENB 44. C'est une base électrique à quatre cordes avec deux micros Hamburger, et ainsi de suite L'option de couleur est une seule est le noir, et le prix 999 99. OK, donc ça a marché. Très sympa Voyons donc si nous demandons une guitare acoustique. As-tu une acoustique, Chars ? Oui, nous avons des guitares acoustiques. Cela n'est pas vrai. Donc je ne sais pas. Peut-être que cela n'a pas appelé notre fonction ici, je suppose. Nous allons donc consulter le journal ici. Possédez-vous des guitares acoustiques ? Fonctionnel : recherchez des produits par type. OK. Je ne connais pas ce produit. D'accord, alors peut-être que ce n' est pas une bonne réponse car nous avons fourni « Je ne connais pas ce produit » au langue et le modèle de langue l'a indiqué. Oui, nous avons des guitares acoustiques disponibles, alors peut-être devrions-nous simplement ne rien retourner Essayons ce produit ou aucun produit n'a été trouvé. Essayons peut-être ça. Ensuite, nous vous demandons si vous avez des guitares acoustiques. Je suis désolée, mais il semblerait que nous n' en ayons pas actuellement OK, donc ça a marché. Cela a beaucoup mieux fonctionné. OK, alors essayons cette affaire ici. Je ne connais pas ce produit, nous demandons donc un produit que la boutique n'a pas. Avez-vous l' Ibanez que je ne connais pas ? Disons 4s4g, je ne sais pas, mince peut-être. Je ne sais pas si cette guitare existe, mais elle ne devrait pas la trouver. Je m'excuse, mais il semble que nous ne les ayons pas disponibles. OK, donc les deux ont fonctionné. Toutes les affaires ont fonctionné. Le coffret du produit final avec les deux étuis. OK, le produit est trouvé et le produit n'est pas trouvé. Et aussi des produits raffinés par type. Si le produit est trouvé. OK, donc ça marche, en gros. Donc c'est génial. Nous devons donc ajouter un peu plus de produits, je suppose, pour le tester un peu plus et peut-être améliorer avec d'autres appels de fonctions. Alors allons-y 30. Plus de produits: D'accord, nous voilà avec d'autres produits. J'ai ajouté une guitare et une basse de plus. La guitare est donc une guitare à sept cordes, et l'autre basse est une basse électrique à cinq cordes, couleur rouge corail, et la guitare est de couleur bleu nuit. Donc, la dernière fois que nous avons créé les produits de type 2, nous n'avions ici qu' un seul identifiant et non un. Et bien sûr, si nous avons plus d'une guitare E et plus d'une base E, nous avons besoin d'une matrice ici. J'ai donc changé cela en tableau. La valeur de cette carte est désormais un tableau, et elle contient, bien entendu, les identifiants des produits qui ont le type, dans ce cas, guitare électrique et dans ce cas, base E. D'accord, nous devons donc modifier, bien sûr, la gestion de l'appel de fonction, rechercher des produits par type. Nous obtenons les identifiants cartographiant le type de produit avec un type de produit. Si nous avons les identifiants, nous les associons aux descriptions des produits. Et si nous avons les descriptions sous forme de tableau, je vais les réduire ici pour les convertir en chaîne, et entre les descriptions des produits, j'ai cette nouvelle ligne ici. La réduction concaténera donc simplement tous les éléments du tableau, toute la production, toutes les descriptions de produits, puis placera une nouvelle ligne entre les puis placera une nouvelle ligne Et c'est tout ce que j'ai changé ici. Alors essayons-le. Je te le demande : quelles guitares électriques peux-tu proposer ? Et il devrait y avoir deux guitares électriques, 16 cordes et 17 cordes Nous proposons actuellement la guitare électrique à six cordes EIS EN 66, ce qui est correct. Nous avons également la guitare électrique à cordes EiEEN 777, et le prix est correct et bleu nuit Et est-ce exact ? En 66 a une couleur bleue ? Je suppose que oui. Oui, couleur bleue, l'ENB, 55 ans, était rouge corail D'accord, oui, tout est correct ici. Et demandons les bases. Disposez-vous d'une base électrique ? Oui, nous avons des guitares basses électriques disponibles. Et aussi, voici les deux bases E que nous proposons ici dans notre boutique. Ce sont aussi des fonctionnalités, oui. Donc tout va bien, corail, rouge, couleur, prix, correct, tout est correct. OK. C'était donc facile. Nous avons maintenant quatre produits ici, encore peu nombreux. Mais, d'accord, je pense que pour prouver que cela fonctionne, c'est suffisant. Et bien sûr, vous pouvez avoir une base de données. Peut-être que vous avez déjà une base de données et que vous pouvez également effectuer des requêtes à la base de données, bien sûr. Nous ne ferons pas ça ici. Rendez-vous dans la prochaine vidéo. 31. Paramètres multiples dans les appels de fonction: OK, donc dans cette vidéo, nous allons ajouter un autre paramètre à notre appel de fonction, dans ce cas, il s'agit de l'appel de fonction de recherche de produits par type, et nous ajouterons une fourchette de prix en tant que paramètre. La première chose que j'ai faite a été de créer une nouvelle gamme de prix cartographique pour les produits. Nos produits sont donc triés par gamme de prix ici. Dans la gamme de prix bas, nous n'en avons qu'un avec le produit un dans la fourchette de prix moyenne, nous en avons deux et trois, et dans la gamme de prix supérieure, nous avons les quatre. Et vous pouvez le vérifier ici. Le prix élevé est de 1599€. Le prix moyen est d' environ 300 000 euros, et le petit budget n'est pas vraiment un petit budget. On peut le baisser un peu. Faisons en 600 ou 69999. OK. Bien entendu, nous avons également ajouté un nouveau paramètre à notre fonction. Et voici nos fonctions, et voici les meilleurs produits par type de fonction. Nous avons déjà le paramètre du type de produit ici, et j'ai ajouté le paramètre de fourchette de prix. Et ce qui est important ici, c'est la description. Bien entendu, la fourchette dans laquelle le prix du produit se situe doit être faible , moyen et élevé, et ce sont les clés de notre carte ici. C'est donc important. Ces trois touches sont OK, nous avons donc ici notre gestionnaire de fonctions, qui a dû être légèrement modifié, et j'ai inclus le filtrage avec une fourchette de prix ici Tout d'abord, nous obtenons la fourchette de prix ici à partir de la fourchette de prix arcs, args point Ensuite, je vais faire un filtre ici. Je filtre donc les produits qui ne se situent pas dans la fourchette de prix, situent pas dans la bonne fourchette de prix avec cette carte de prix par produit. Je vais trouver ici les produits de cette gamme de prix. Il s'agit d'un tableau, puis je ferai des inclusions avec l'ID. Et si l'identifiant est inclus, il figurera dans le tableau renvoyé par la fonction de filtre , puis nous créerons la carte ici et celle-ci sera enregistrée dans les produits trouvés. Et si les produits trouvés ont une longueur nulle, aucun produit n'a été trouvé Nous avons donc défini le texte, aucun produit n'a été trouvé ici. Et s'il est supérieur à zéro, alors nous le joignons ici, plus besoin de le réduire ici. Les produits trouvés rejoignent une nouvelle gamme, ce qui est beaucoup plus facile que la réduction que j' avais avant ici. Voici donc notre nouveau gestionnaire de fonctions avec un nouvel argument, une nouvelle fourchette de prix et d'accord, je recharge ici et je vous demande vous avez une guitare électrique à petit budget, et cela devrait renvoyer notre 69999 E C'est la bonne. Voyons s'il existe une base E à petit budget. Avez-vous une base E à petit budget, et cela ne devrait donner aucun résultat. Je m'excuse, mais il semble que nous n'ayons pas actuellement de base E à petit budget, et c'est vrai car nos bases E commencent dans le milieu de gamme, puis voyons voir, nous n' avons que des bases E de milieu de gamme. OK. Il n'y a donc pas de guitare dans le milieu de gamme. Vérifions-le. Avez-vous des guitares électroniques à prix moyen, et cela ne donne aucun résultat Je m'excuse. Ce droit. Avez-vous une guitare électrique chère et cela devrait nous donner notre guitare très chère ici. Oui, le 1599 à sept cordes. C'est notre guitare la plus chère ici. Tout est donc correct ici. Et nous avons ici notre deuxième paramètre de filtre , la fourchette de prix. Et, bien sûr, vous pouvez ajouter d'autres paramètres de filtre ici, comme peut-être un certain nombre de micros, quelque chose comme ça, le nombre de chaînes , bien sûr, etc. OK, regardez la vidéo suivante. 32. Gamme de prix de fixation non définie: Dans cette vidéo, nous devons corriger un bogue que nous n'avions pas remarqué la dernière fois. Voici donc comment nous pouvons provoquer le bogue. Nous devons vous demander, avez-vous une guitare à sept cordes, par exemple ? Et puis le problème ici est que nous obtenons que cette erreur permet de lire les propriétés des inclusions de lecture non définies Voyons donc la raison de ce bogue. Cela inclut donc ici, et cela signifie que la fourchette de prix entre les produits et la fourchette de prix revient indéfinie Nous ne pouvons donc pas appeler includes sur undefined, bien sûr. OK, quel est le problème ici ? Le problème est que la fourchette de prix, comme nous pouvons le voir ici, n'est pas définie. Pourquoi n'est-il pas défini Parce que l'utilisateur n'a spécifié aucune fourchette de prix. Il a juste demandé une guitare à sept cordes sans aucune information sur la gamme de prix. Le modèle linguistique ne fournissait donc pas de fourchette de prix ici. Nous devons donc y faire face. Et bien entendu, nous devons d'abord vérifier si une fourchette de prix a réellement été soumise ici à partir du modèle linguistique. Comment pouvons-nous le faire ? Tout d'abord, nous devons vérifier la fourchette de prix. Si la fourchette de prix n'est pas définie, cela sera vrai fourchette de prix est égale à indéfinie, alors elle n'est pas filtrée, ou nous avons une fourchette de prix pour les produits dont fourchette de prix inclut un identifiant, mais cette option « get here » peut également revenir indéfinie C'est pourquoi nous devons mettre un point d'interrogation ici, puis cela n'est pas défini et les inclusions ne seront pas appelées Bien entendu, cela sera complètement filtré. Aucun produit ne sera donc trouvé alors. OK, et dans ce cas, chaque produit trouvé dans le tableau de résultats sera diffusé sur la carte ici OK, alors voyons si cela aide. Nous avons posé la même question. Tu as une guitare à sept cordes ? Oui, cette fois, sans exception, et tout va bien. Et nous pouvons également vérifier que la fourchette de prix du serveur n'est en effet pas définie Dans ce cas, la fourchette de prix n'est pas définie, puis filtrer ce rappel ici fourchette de prix n'est pas définie, puis filtrer ce rappel renvoie toujours vrai ici, et tous les produits trouvés sont affichés sur la carte puis cette chaîne est construite à partir des produits Dans ce cas, il n'y a qu'un seul produit, c'est une guitare à sept cordes, et le modèle linguistique nous indique le bon, nous avons la E Nice EN 77. Le prix est de 1 599€ et il est livré avec Okay, donc tout va bien maintenant Nous corrigeons le bogue et nous vous attendons dans la prochaine vidéo. 33. Ajouter un produit au panier: Bienvenue dans cette vidéo Nous voulons essayer de donner au LLM la possibilité d'ajouter un produit au panier. Nous n'implémentons donc pas de panier, mais nous l'avons implémenté , comme un appel de fonction qui consiste uniquement à enregistrer un journal de console, puis à effectuer cet appel de fonction, puis à indiquer au LLM que le produit a été ajouté au panier comme un appel de fonction qui consiste uniquement un journal de console, puis à effectuer cet appel de fonction, puis à indiquer au LLM que le produit a été ajouté au Et c'est tout. Et si vous voulez vraiment implémenter un panier d'achat, vous devez faire cette partie vous-même. Ici, nous essayons de fournir une fonction au LLM de telle sorte que lorsque le client demande de mettre le produit dans le panier, le LLM le reconnaisse puis appelle la OK, donc j'ai déjà implémenté, ajouté une nouvelle fonction ici, et bien sûr, cette fonction s'appelle Ajouter un produit à deux cartes, et la description indique qu'il ajoute le produit avec un identifiant spécifié à la carte du client. Et comme paramètre, j'ai le nom du produit et le nom du produit. C'est le nom du produit qui doit être ajouté à la carte, bien entendu. Et j'ai également dû étendre un peu l'invite du système. Donc ici, cette dernière phrase est nouvelle, ou les deux dernières phrases sont nouvelles. Si le client souhaite acheter un produit, veuillez l'ajouter à la carte. Et je pourrais également ajouter ici via la fonction call at product to card pour être plus précis à ce sujet. Et puis j'ai dû ajouter que vous n'avez pas à demander des informations de connexion ou de paiement, car pendant que j'essayais, il n'arrêtait pas de demander des informations de connexion , des informations de paiement, etc. J'ai donc ajouté cette phrase, la dernière pour éviter cela. D'accord, voilà pour la description de la fonction. Et ici, nous avons le fonctions, le gestionnaire d'appels de fonctions, ajoute un produit à la carte, et nous obtenons le nom du produit à partir arguments, puis nous l'enregistrons simplement sur la console Ensuite, le contenu, la réponse au modèle de langue sera que le produit a été ajouté à la carte, et c'est tout. Et essayons-le. OK, donc je demande spécifiquement un modèle. Possédez-vous le E Nye EN 77 ? Voyons s'il le trouve. Oui, nous en avons. OK ? Ça a l'air d'être le bon. Et maintenant je lui demande de l'ajouter au panier. Pouvez-vous l'ajouter à ma carte d'achat ? Et voyons si c'est vraiment le cas. J'ai ajouté les E nice E et 77 à votre carte d'achat. Y a-t-il autre chose que je puisse faire pour vous aider ? Cela semble donc avoir fonctionné ici. Consultons le journal de la console ici, ajoutons le produit à la carte E nice EN 77. Cela a donc très bien fonctionné. Donc, si vous programmez un panier ici, vous pouvez appeler l'ajout à la carte d'achat ici, le vrai, et non le journal de la console ici. Et vous pouvez bien sûr l' enregistrer dans une base de données. Donc, faites en sorte que l'utilisateur soit vraiment connecté à un compte pour pouvoir effectuer le paiement et ce genre de choses. Mais c'est une sorte de préparation, mais je tiens également à vous montrer un problème que nous n'avons pas encore résolu. Donc, si nous demandons un certain modèle, avez-vous juste la norme EN 77 J'omets donc les EI ici. Disposez-vous de la norme EN 77 ? Je suis désolée. Nous n'avons pas la norme EN 77, donc elle ne la reconnaît pas, car quel est le problème ici ? Le problème est que nous avons les noms des cartes pour les produits, par exemple, nous avons juste ces clés ici, et si elles ne correspondent pas à 100 %, si nous n'en avons qu'une partie, ou peut-être que nous les avons écrites un peu différemment. Avez-vous l'Eye EN 77, sans espace blanc ici, sans espace, je pense qu'il ne le trouvera pas. Je m'excuse. Mais si je le demande, avez-vous le E Nie EN 77, j'espère qu'il le trouvera. Oui, il le trouve. OK. Mais maintenant, avez-vous la norme EN 77 ? Demandons-le encore une fois. Oui, et maintenant il le trouve. Pourquoi ? Parce que dans l' historique du chat, cela est inclus ici, il sait donc que c'est la norme EN 77 qui l'est ici, et c' est pourquoi il le sait ici, mais pas avant. Et le problème, c'est que notre recherche n'est que la recherche exacte ici sur E Nice EN 77. Voyons donc si nous pouvons atténuer cela d'une manière ou d'une autre dans la vidéo suivante. Voir 34. Recherche de produits floue: Bien, la dernière fois que nous avons eu le problème si le client demande un nom de produit, qui n'est pas exactement le nom que nous avons dans notre base de données, comme sur notre carte, il ne le trouvera pas, et il supposera alors que ce produit n' est pas disponible. Donc, si nous demandons, par exemple, l'EN 77, voyons l'EN 77, par exemple, il ne le trouvera pas car il ne figure pas sur notre carte. Nous avons cette carte qui désigne les noms des produits. Nous avons ici les noms exacts. Notre gestionnaire de fonctions recherche la clé exacte, puis dans ce cas, elle est trouvée, il renvoie l'identifiant du produit, mais si, par exemple, les clients demandent uniquement informations sur les produits E et 77, figureront pas ici sur cette carte Alors, que faisons-nous à ce sujet ? Nous sommes en train de modifier la description de la fonction de recherche de produit ici et je l'ai légèrement étendue avec plus d' informations sur ce qui devrait se passer si le produit n'est pas trouvé sous le nom exact. Nous avons donc ici la version précédente, récupère plus d'informations sur un produit ou un modèle spécifique, mais maintenant plus d' informations sur ce qui se passe si le produit n'est pas trouvé avec le nom exact Si le produit n'est pas trouvé sous le nom exact, cette fonction renverra tous les noms de produits disponibles. Nous allons donc renvoyer toutes les clés cette carte que nous avons et tous les noms de produits qui sont les bons noms de produits. L'assistant doit ensuite choisir le nom le plus proche de celui demandé par le client et lui demander s'il s' agit du bon produit. Il devrait donc dire : OK, nous avons donc celui-ci, aimeriez-vous que je vous donne plus d'informations, quelque chose comme ça ? Euh, si le client demande ensuite plus d'informations sur le produit, l'assistant doit appeler à nouveau cette fonction avec le nom de produit correct. Donc, la deuxième fois que cette fonction sera appelée, elle devra choisir le bon modèle de produit exact, le nom du produit ici. OK. J'ai donc également modifié la description ici du paramètre, du modèle de produit, du nom du produit, du nom du modèle à rechercher. Et s'il ne correspond pas exactement, la fonction renverra tous les noms de produits, afin que le LLM puisse en choisir un similaire ou peut-être devrais-je dire que l'assistant peut en choisir un similaire C'est peut-être un peu mieux. Passons ensuite à notre gestionnaire de fonctions ici. C'est donc celui-ci au cas où l'identifiant du produit se trouve sur notre carte, alors tout va bien, et nous renvoyons la description du produit ici, et le cas contraire est différent du précédent, avant que le contenu ne soit simplement un produit introuvable, quelque chose comme ça. Et maintenant, ce sont toutes les clés de la carte des noms, deux produits associés à une nouvelle gamme. Ainsi, dans chaque ligne, il y aura le nom exact du produit. Ensuite, le LLM doit choisir celle qui se rapproche le plus de celle demandée par le client , puis appeler à nouveau cette fonction. Ensuite, cette fonction trouvera les informations correctes sur le produit ici et les renverra ici. C'est donc en théorie, alors essayons-le. Disposez-vous de la norme EN 77 ? Donc, sans espace blanc et sans le nom du fabricant, voyons voir, sans point d'interrogation. Oui, nous avons le E Nie EN 77, et il est vraiment indiqué ici le nom correct E Nie EN 77. C'est la chaîne que nous avons comme clé sur notre carte. Donc ça devrait aller. Disponible à l'achat, souhaitez-vous l' ajouter à votre carte. Non, je vous en prie. Tout d'abord, donnez-moi plus d' informations sur cette guitare. Voyons voir. Et cette fois, il devrait vraiment trouver les informations sur le produit. La Nice est une guitare électrique à sept cordes. Correct. Il présente une couleur bleu nuit. C'est un hamburger et deux micros à bobine unique. Cela est correct. Ce sont les informations que nous avons dans notre carte de produits. Le prix de la guitare est également correct. Y a-t-il autre chose que tu aimerais savoir à propos de cette guitare ? Non, veuillez l'ajouter à mon panier. Voyons si cela fonctionne également. J'ai ajouté la guitare EN 77 à votre panier. OK, alors ça y est. Ça a l'air de fonctionner. Nous pouvons également consulter le journal ici. Mais je pense que cela a fonctionné comme prévu. Il semble que, s'il vous plaît, donnez-moi d'abord plus d'informations, trouvez un produit. Et cette fois, les informations sur le produit sont disponibles ici. OK, et ajoutez-le à mon panier. Fonction : ajouter un produit à la carte. Le produit a été ajouté à la carte. OK, c'est merveilleux. C'est ce que nous recherchions. Nous avons délégué la recherche au modèle linguistique. Mais bien sûr, cela pourrait poser un problème si cette liste de clés est un peu plus longue qu'ici. Nous n'avons que quatre produits, il ne s'agit donc que de quatre noms de produits ici. Et si vous avez des milliers de produits, cela peut poser problème à cause de la longueur et des restrictions liées aux jetons. Mais si vous avez un magasin normal comme ce magasin de guitares, vous en avez peut-être 100 ou quelque chose comme ça, et ça devrait aller. Peut-être que si les noms des produits sont un peu plus longs que ceux présentés ici, cela peut poser problème, mais normalement, vous avez une limite de jetons de 35 GPT, nous avons une limite de jetons de 4 096 jetons, ou vous pouvez également avoir le modèle 60 K, qui est un peu plus cher, mais qui a 16 384 jetons Cela devrait donc suffire même pour de nombreux noms de produits ici. D'accord, il y a donc aussi une autre façon de gérer cela. Nous pourrions utiliser des intégrations, mais nous ne le ferons pas. Ici, à ce stade, tout va bien pour nous. Nous n'avons pas beaucoup de produits, et répertorier tous les noms de produits ici est pratique, et cela a fonctionné. Le LLM peut choisir celui qui se rapproche le plus, puis demander au client si c'est le bon, puis le client peut demander plus d'informations OK, c'est tout pour cette vidéo. À bientôt. 35. Résumé: Pour terminer ce cours, jetons un coup d'œil à nos réalisations. Nous avons créé trois applications qui exploitent la puissance de l'API Open AI et du LLM pour les conversations basées sur le langage naturel et l'IA La première application était donc un clone de HachBT, HatchBT sous une forme très simplifiée Le secret était de gérer l'historique des discussions et de transmettre l'historique des discussions au LLM pour obtenir des réponses Ensuite, nous avons créé un jeu d'aventure basé sur du texte ou le début d'un jeu d' aventure basé sur du texte avec, je crois, deux quêtes mais trois PNJ avec lesquels vous pouvez parler de manière très naturelle Nous avons créé des instructions système personnalisées pour chaque personnage, et nous utilisons des appels fonctionnels pour suivre les quêtes et leur achèvement La dernière application simulait un assistant commercial pour un magasin de guitare en ligne Les utilisateurs peuvent discuter avec l'assistant, renseigner sur les produits et même lui demander de remplir le panier avec les produits Et grâce à l'Open AI LLM, cela ressemble à une vraie discussion avec un vendeur Grâce à ces applications, nous avons appris à utiliser l'API Open AI en JavaScript, et nous utilisons Astrojs pour le back-end du serveur et React pour le front-end Nous avons appris à utiliser l'API de fin de chat d' OpenAI. Nous avons appris à créer des instructions système pour donner au LLM un contexte lui permettant de comprendre la situation et des informations générales, et nous avons utilisé des appels fonctionnels, par exemple, pour notre jeu, pour des actions de jeu telles suivi des quêtes et également pour la récupération de données pour nos ventes. Notre parcours n'a fait qu'effleurer la surface du possible L'API propose bien plus que des intégrations pour une analyse approfondie et également pour la création d'images, Dolly et vous savez peut-être déjà c'est à mi-chemin avec Open AI . Et il existe également une API de synthèse vocale appelée chuchotement. Ce que nous avons appris n'est donc, d'une certaine manière, que le début du potentiel de l'API Open AI. Donnons donc à Chachi Bitty les derniers mots sur ce cours En résumé, n'oubliez pas que notre aventure avec l' API OpenAI ne fait que commencer Les compétences que vous avez acquises ouvrent les portes d'un monde de créativité piloté par l' IA. Qu'il s'agisse de créer des interactions, créer des aventures immersives ou d'améliorer les expériences utilisateur, votre expertise a le pouvoir de façonner l'avenir. Restez curieux, inspirez-vous et repoussez les limites. Votre voyage est plein de potentiel. Merci d'avoir participé à cette expérience. Bonne chance dans tous vos projets futurs.