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.