Erstelle KI-basierte Web-Apps mit React, Astro und der OpenAI-API | Stephan Haewß | Skillshare

Playback-Geschwindigkeit


1.0x


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

Erstelle KI-basierte Web-Apps mit React, Astro und der OpenAI-API

teacher avatar Stephan Haewß

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Einheiten dieses Kurses

    • 1.

      Worum geht es in diesem Kurs?

      3:14

    • 2.

      Die OpenAI-Plattform und -API

      5:53

    • 3.

      Tools zur Verwendung in diesem Kurs

      4:04

    • 4.

      So erstellen Sie unsere erste Astro-App

      5:22

    • 5.

      Hinzufügen von Reaktionen auf unsere App

      4:50

    • 6.

      Hinzufügen unseres ersten Server-REST-Endpunkts

      4:10

    • 7.

      Vorbereiten des Aufrufs der offenen KI-API

      10:07

    • 8.

      Bereitstellung der Nutzernachricht über URL-Param

      5:03

    • 9.

      Erste echte Kunden-UI in response

      7:15

    • 10.

      Speichern des Chat-Verlaufs

      8:29

    • 11.

      Rest-Chat

      5:46

    • 12.

      Verbesserung der UX

      9:59

    • 13.

      Hübscher Chat-Verlauf

      6:58

    • 14.

      Zusammenfassung unserer ersten Chat-App

      2:18

    • 15.

      Neue App: Chatte mit NPCs in einem Text-Adventure-Spiel

      5:15

    • 16.

      Einführung der Geschichte

      5:11

    • 17.

      Vorbereitung der Quests

      5:01

    • 18.

      Erster Ai-Chat

      5:05

    • 19.

      Einrichten der Bühne mit der Systembotschaft

      9:24

    • 20.

      Funktions-Calling I

      5:32

    • 21.

      Funktions-Calling II für das Ergebnis

      5:50

    • 22.

      Quest als abgeschlossen markieren

      4:02

    • 23.

      Verlassen des Chats

      8:23

    • 24.

      Sprich mit Dr. Owen

      4:39

    • 25.

      Neuen Chat auf dem Server starten

      8:28

    • 26.

      Bereitstellung einer neuen Funktion für Dr. Owen

      6:25

    • 27.

      Chatten mit Sicherheitsroboter

      9:00

    • 28.

      Neues Projekt: Virtueller Verkaufsassistent für Online-Shop

      6:53

    • 29.

      Bessere Produktsuche

      6:42

    • 30.

      Mehr Produkte

      3:08

    • 31.

      Mehrere Parameter in Funktionsaufrufen

      4:44

    • 32.

      Festsetzung der Preisspanne nicht definiert

      3:10

    • 33.

      Produkt zum Warenkorb hinzufügen

      5:36

    • 34.

      Fuzzy-Produktsuche

      7:10

    • 35.

      Zusammenfassung

      2:56

  • --
  • Anfänger-Niveau
  • Fortgeschrittenes Niveau
  • Fortgeschrittenes Niveau
  • Jedes Niveau

Von der Community generiert

Das Niveau wird anhand der mehrheitlichen Meinung der Teilnehmer:innen bestimmt, die diesen Kurs bewertet haben. Bis das Feedback von mindestens 5 Teilnehmer:innen eingegangen ist, wird die Empfehlung der Kursleiter:innen angezeigt.

28

Teilnehmer:innen

1

Projekte

Über diesen Kurs

In diesem Videokurs begibst du dich auf eine spannende Reise in die Welt der Web-Entwicklung und künstlichen Intelligenz. Du lernst, wie du KI-gestützte Chat-Anwendungen mit JavaScript, React, AstroJS und der OpenAI-API erstellst. Während des Kurses arbeitest du mit der OpenAI API, die dasselbe KI/Large Language Model (LLM) verwendet, das ChatGPT unterstützt.

Der Kurs ist in drei spannende Projekte unterteilt:

  1. ChatGPT Clone: Du entwickelst zunächst einen einfachen ChatGPT-Klon, der es Nutzern ermöglicht, grundlegende Unterhaltungen mit einer KI zu führen. Lerne, die OpenAI-API zu integrieren, um die Macht der Spracherzeugung zu nutzen und ein nahtloses und interaktives Chatterlebnis zu schaffen.

  2. Textbasiertes Abenteuer: Als nächstes tauchst du in ein spannendes textbasiertes Abenteuerspiel in einem Sci-Fi-Universum ein. Spieler lösen Rätsel und navigieren durch die Geschichte, indem sie mit KI-Charakteren im Chat interagieren. Entdecke wie KI verwendet werden kann, um immersive und fesselnde Storytelling-Erfahrungen zu schaffen.

  3. Online-Verkaufsassistent: Im Abschlussprojekt erstellst du eine praktische Anwendung, die einen Online-Verkaufsassistenten für Gitarren und Bassgitarren simuliert. Nutzer können mit der KI chatten, um sich nach verfügbaren Produkten zu erkundigen. Erfahren Sie, wie Sie KI in realen Szenarien anwenden und die Effizienz in E-Commerce-Interaktionen verbessern.

Am Ende des Kurses bist du in der Verwendung von JavaScript, React und AstroJS zur Erstellung fesselnder Chat-Anwendungen basierend auf der OpenAI API. Begleite uns auf diesem außergewöhnlichen Abenteuer und erschliesse das Potenzial der KI in der Webentwicklung!

Triff deine:n Kursleiter:in

Teacher Profile Image

Stephan Haewß

Kursleiter:in
Level: Intermediate

Kursbewertung

Erwartungen erfüllt?
    Voll und ganz!
  • 0%
  • Ja
  • 0%
  • Teils teils
  • 0%
  • Eher nicht
  • 0%

Warum lohnt sich eine Mitgliedschaft bei Skillshare?

Nimm an prämierten Skillshare Original-Kursen teil

Jeder Kurs setzt sich aus kurzen Einheiten und praktischen Übungsprojekten zusammen

Mit deiner Mitgliedschaft unterstützt du die Kursleiter:innen auf Skillshare

Lerne von überall aus

Ob auf dem Weg zur Arbeit, zur Uni oder im Flieger - streame oder lade Kurse herunter mit der Skillshare-App und lerne, wo auch immer du möchtest.

Transkripte

1. Worum geht es in diesem Kurs?: Hallo und willkommen zu unserem aufregenden neuen Videokurs zur Programmierung von KI-Chat-Apps mit JavaScript, React, Astro JS und der Open AI API Ich freue mich sehr, Ihr Online-Lehrer zu sein, und gemeinsam werden wir uns auf eine außergewöhnliche Reise in die Welt der Chat-Anwendungen mit künstlicher Intelligenz begeben Chat-Anwendungen mit künstlicher Intelligenz In diesem Kurs werden wir in das Reich der KI eintauchen und untersuchen, wie man drei faszinierende Webanwendungen erstellt Jede dieser Apps wird von der Open AI API, dem SAN, das diesen GBT unterstützt , unterstützt und mit den beliebten Webentwicklungstechnologien wie JavaScript React und Astro Jazz erstellt wie JavaScript React und Am Ende dieses Kurses verfügen Sie über die Fähigkeiten und das Selbstvertrauen, um anspruchsvolle KI-Chat-Anwendungen zu entwickeln anspruchsvolle KI-Chat-Anwendungen , die auf einzigartige und ansprechende Weise mit Benutzern interagieren Werfen wir einen kurzen Blick auf die drei spannenden Projekte, die wir entwickeln werden. Nummer eins: Chat GPT Clone. Wir beginnen damit, einen einfachen Chat-GBT-Klon zu erstellen, der es Benutzern ermöglicht, grundlegende Konversationen mit einer KI zu Sie erfahren, wie Sie die Open AI-API integrieren, um die Möglichkeiten der Sprachgenerierung zu nutzen die Möglichkeiten der Sprachgenerierung und ein nahtloses Chat-Erlebnis zu schaffen Am Ende dieses Abschnitts haben Sie Ihre eigene AI Power-Chat-Anwendung betriebsbereit. Zweitens, textbasiertes Abenteuerspiel. In diesem Abschnitt werden wir uns mit einem textbasierten Abenteuerspiel zum Thema Science-Fiction herausfordern mit einem textbasierten Abenteuerspiel zum Thema Science-Fiction Die Spieler lösen Rätsel und navigieren durch die Geschichte, indem sie im Chat mit den Charakteren interagieren Chat mit den Charakteren KI-Charaktere reagieren intelligent machen das Erlebnis fesselnd und Sie erhalten wertvolle Einblicke, wie KI eingesetzt werden kann interaktives und fesselndes Storytelling zu kreieren Nummer drei, Online-Verkaufsassistent. Im letzten Abschnitt werden wir eine praktische Anwendung erstellen, die einen Online-Verkaufsassistenten simuliert Benutzer können mit der KI chatten , um sich nach verfügbaren Produkten zu erkundigen. In diesem Fall handelt es sich um Gitarren und Bassgitarren Sie werden lernen , KI in reale Szenarien zu integrieren , Benutzererfahrung zu verbessern und E-Commerce-Interaktionen ansprechender und effizienter zu E-Commerce-Interaktionen ansprechender und effizienter Am Ende dieses Kurses verfügen Sie über das Wissen und die Fähigkeiten, um AI Power-Chat-Anwendungen zu erstellen, mit um AI Power-Chat-Anwendungen zu erstellen denen Sie Ihre Freunde, Kollegen und potenziellen Arbeitgeber in Erstaunen versetzen können , Kollegen und potenziellen Arbeitgeber Begeben wir uns gemeinsam auf diese spannende Reise , während wir die faszinierende Welt der KI-Chat-Anwendungen mit JavaScript, React, AstroJS und der Open AI API entdecken KI-Chat-Anwendungen mit JavaScript, React, AstroJS und der Nun, hier ist ein interessanter Leckerbissen . Das Einführungsskript, das Sie gerade gehört haben, wurde tatsächlich von niemand anderem als der KI generiert, von niemand anderem als der KI generiert die wir in diesem Kurs verwenden werden, nämlich GPT. Ja, das stimmt. Als von OpenAI entwickeltes KI-Sprachmodell ist HattPT in der Lage, menschenähnlichen Text auf der Grundlage des gegebenen Kontextes zu verstehen und zu generieren auf der Grundlage des Und jetzt gehen wir über das bloße Generieren von Text hinaus , indem ihn bei der Entwicklung realer Anwendungen praktisch einsetzen Ich freue mich, Ihr Begleiter und Kursleiter zu sein und kann es kaum erwarten, die unglaublichen Anwendungen zu sehen Sie entwickeln werden. Lass uns anfangen. Übrigens, dieser Text wurde auch von ChatBT generiert und der, den Sie jetzt hören, wurde von mir, Ihrem Lehrer, generiert . Also lass uns anfangen 2. Die OpenAI-Plattform und -API: Hallo und willkommen zu diesem Video. Hier gehe ich ein wenig auf die Details der Open AI-Plattform ein , die HGPt unterstützt Nicht zu viel, aber ein paar wichtige Dinge möchte ich dir hier zeigen Ich nehme an, Sie alle kennen HAGPT, die KI-Chat-Anwendung Texte generiert, Fragen beantwortet, Programmiercode geschrieben werden können und so weiter Und das alles basiert auf einem großen Sprachmodell, LLM, das Open AI entwickelt hat und das in der Lage ist, einen in natürlicher Sprache geschriebenen Text auf eine Weise zu vervollständigen natürlicher Sprache geschriebenen Text auf eine Weise , die mehr oder weniger sinnvoll erscheint Ein wichtiger Punkt, den Sie verstehen müssen, ist, dass L&M lediglich den Text vervollständigt , der ihm gegeben wird Selbst wenn es den Anschein hat, dass Sie mit dem großen Sprachmodell chatten, vervollständigt es nur den Chatverlauf, der ihm zur Verfügung gestellt wird, und zwar auf eine Weise, die am wahrscheinlichsten erscheint Das neuronale Netzwerk, das große Sprachmodell, sagt anhand der Daten, auf denen es trainiert wurde, die wahrscheinlichsten folgenden Wörter voraus wahrscheinlichsten folgenden Wörter anhand der Daten, auf denen es trainiert wurde, die Wann immer Sie eine API-Funktion der Open AI, API aufrufen, müssen Sie immer den vollständigen Kontext angeben, z. B. den vollständigen Chat-Verlauf, damit das LLM auf der Grundlage genau dieses Kontextes eine Vervollständigung erstellen kann Das LLM hat kein Gedächtnis, daher müssen Sie jedes Mal, wenn Sie die API um eine Vervollständigung bitten, alle relevanten Daten angeben wenn Sie die API um eine Vervollständigung bitten Wenn Sie wissen möchten, wie die offene API funktioniert, können Sie natürlich auf der Webseite unter der Plattform Open AI Com Docs nachschauen Das ist diese Seite hier. Sie haben auch einen Spielplatz , auf dem Sie die API-Aufrufe testen können , indem Sie nur die Daten angeben. Dann müssen Sie also in keiner Programmsprache schreiben. Sie schreiben einfach die Daten in ein Formularfeld und rufen dann die API mit diesen Daten auf, und das Ergebnis wird Ihnen präsentiert. Sie haben auch Beispiele in verschiedenen Programmiersprachen und auch eine Dokumentation ihrer Bibliotheken für Python und für JavaScript. Und natürlich gibt es eine vollständige Referenzdokumentation, die Sie hier finden. Für den Chat oder für die Vervollständigungen müssen Sie also hier nachschauen. Dies sind die API-Referenzvervollständigungen von Doc, und dann, zum Beispiel, erstellen, und dann haben Sie die Dokumentation für die Fertigstellung der Erstellung Und hier können Sie sehen, dass Sie die Programmiersprache hier ändern können die Programmiersprache hier ändern No Jazz ist hier und dann Python, und dann kannst du sogar Curl dafür verwenden Das ist also eine Rest-API, also kannst du auch so etwas wie Curl oder vielleicht Postman verwenden etwas wie Curl oder vielleicht , so Und hier haben wir die gesamte Beschreibung aller APIs Um die API und den Playground nutzen zu können, müssen Sie also auch ein Konto erstellen, indem Sie auf Anmelden klicken Das ist also hier, und dann kannst du deine E-Mail-Adresse eingeben, weiter ein Passwort oder dich bei Google, Microsoft oder Apple anmelden Und wenn Sie das dann tun, bekommen Sie, glaube ich, etwa 5$, wenn ich mich richtig erinnere, um alles testen zu können und die API testen zu können Und die 5$ sind Credits für sogenannte Tokens, und Tokens sind, sagen wir, grob gesagt, Tokens sind Wörter, aber sie können auch Teile von Wörtern sein Man hat also fast immer mehr Tokens als Wörter. Ich glaube, es ist mehr oder weniger ein Drittel mehr als Worte. Also musst du das im Hinterkopf haben. Es ist immer ein bisschen mehr, nachdem du dich angemeldet hast. Ich denke, du bekommst 5$ Credits, wenn du für die Tokens bezahlst Jedes Token zählt bei den API-Aufrufen. Also zählen auch die Token, die vom LLM zurückgegeben werden Und natürlich auch die Tokens, die du dem L&M gibst. Wenn du also zum Beispiel eine sehr lange Chat-Historie hast, dann hast du natürlich mehr Tokens, denn jedes Mal, wenn du die API aufrufst, zum Beispiel die Completion-API , musst du alle Daten angeben, den gesamten Verlauf des Chats Es wird also teurer, wenn ihr längere Chats habt. sollten uns jetzt anmelden, da wir einen API-Schlüssel benötigen , um die API aufzurufen und allen Beispielen in diesem Kurs zu folgen. Wie gesagt, du bekommst die 5$ oder so etwas als Credits, das du verwenden kannst, und ich denke, das ist genug für alle Beispiele hier in diesem Kurs Aber das hängt natürlich von der Anzahl der Tokens ab, die du verwendest, die du dem LLM gibst, und dass LLM natürlich auch zurückkehrt Nachdem du dich also angemeldet hast, kannst du API-Schlüssel erstellen, und das werde ich dir später zeigen und natürlich auch, wie die API aufgerufen wird, aber du kannst es schon hier überprüfen Sie haben einen Schnellstart, und dann kannst du den Playground auch hier benutzen, nachdem du dich angemeldet hast, nachdem du dich angemeldet hast, dann kannst du alle Beispiele hier im Playground verwenden. Und dann spiel ein bisschen damit. Aber wie dem auch sei, wir werden die API sehr bald im ersten Abschnitt hier in unserer ersten Anwendung verwenden , bei der es sich um einen Chat-GPT-Klon handeln wird, etwa so, eine Chat-Anwendung, eine einfache Und damit werdet ihr in der Lage sein, mit dem großen Sprachmodell mit der KI zu chatten, und das wird unser erstes Projekt sein Okay, das ist es für dieses Video. Wir sehen uns im nächsten. 3. Tools zur Verwendung in diesem Kurs: Okay, in diesem Video werden wir über die Tools, Bibliotheken und Frameworks sprechen, die wir verwenden werden und welche Kenntnisse Sie bereits haben sollten, bevor Sie an diesem Kurs teilnehmen. Fangen wir also mit JavaScript an. Du solltest natürlich schon in der Lage sein, in JavaScript zu programmieren, das über das Niveau eines Hello World-Programms hinausgeht, oder das Kopieren und Einfügen von Webseiten wie Stack Overflow Sie sollten also auch mit den meisten Funktionen der AchmaScript-Sechs-Version wie Pfeilfunktionen, Konsulat, Destrukturierung und Modulen vertraut sein mit den meisten Funktionen der AchmaScript-Sechs-Version wie Pfeilfunktionen, Konsulat, Destrukturierung und Modulen vertraut AchmaScript-Sechs-Version wie Pfeilfunktionen, Konsulat, , und vielleicht auch mit Array-Funktionen wie der Serverseite werden wir Node JS verwenden, und darüber hinaus werden wir Astro Jaz verwenden Sie sollten also natürlich einige Grundkenntnisse in Node JS haben Node JS Tiefgehende Kenntnisse sind nicht erforderlich, da Astro viele Konzepte wie S-Handler-Funktionen abstrahiert wie S-Handler-Funktionen Sie sollten also natürlich mit dem Node JS-Paketmanager NPM oder mit Garn oder PMPM, so etwas in der Art, vertraut mit dem Node JS-Paketmanager NPM oder mit Garn oder PMPM, so etwas in der Art, sein, weil wir ihn zur Installation von Paketen und auch zur Initialisierung unseres Projekts verwenden werden Installation von Paketen und auch zur Initialisierung unseres Projekts Als Editor werde ich VS-Code verwenden, aber das müssen Sie nicht Das ist in keiner Weise eine Voraussetzung. Wenn Sie also VIM, Emax, Webstorm, Notepad verwenden möchten , ist auch das kein Sie können auch einen Notizblock und ein Terminal verwenden. Es ist zum Beispiel nicht so bequem, in dieser Umgebung zu programmieren, aber wenn Sie möchten, können Sie Aber in den Videos verwende ich Visual Studio-Code, was quasi ein Standard ist. Vielleicht verwenden die meisten Leute, die heutzutage Javascript-Anwendungen verwenden oder programmieren heutzutage Javascript-Anwendungen verwenden , Visual Studio-Code, deshalb verwende ich ihn hier. Okay, für das Frontend verwende ich React Jazz, aber Sie könnten auch ein anderes Bibliotheksframework wie Solid Jazz verwenden ein anderes Bibliotheksframework wie , siehe Selter Es ist nicht allzu schwierig , den Code oder die Konzepte in ein anderes Framework zu übersetzen Code oder die Konzepte in ein anderes Framework zu Sie könnten sogar eine einfache manuelle Dom-Manipulation verwenden das ist auch möglich, weil die Benutzeroberfläche nicht so ausgefallen und ziemlich einfach ist. Das Frontend ist nicht das Wichtigste in diesem Kurs. Wir werden uns natürlich auf die offene KI, die API und deren Verwendung konzentrieren auf die offene KI, die API . Um dem Kurs direkt folgen zu können, solltest du einige Grundkenntnisse von React haben , natürlich nichts Besonderes. Aber vor allem die Hook-Funktionen wie use state, use effect und use ref sind irgendwie wichtig, also solltest du mit ihnen vertraut sein. Aber wie gesagt, Sie könnten hier ein anderes Framework verwenden, und dann müssen Sie dort ein gewisses Maß an Zustandsverwaltung verwenden, und damit sollten Sie dann natürlich vertraut sein. Als letztes Framework verwenden wir Astrogz, warum Astro Jazz und nicht so etwas wie Weil NextJS natürlich irgendwie eng mit React verbunden ist und Astro Jazz im Gegensatz dazu die Verwendung verschiedener Frontend-Technologien ermöglicht Sie könnten also Astro-Gas mit solidem Jazz-View-Swelter verwenden. Und so weiter. Außerdem ist es sehr schnell einzurichten und zu konfigurieren Und da wir uns auf die Verwendung der OpenAI-API konzentrieren werden, weder der Server noch die hier verwendete Frontend-Technologie so wichtig, sondern die Prinzipien der Arbeit mit einem großen Sprachmodell. Das ist es, was Ihnen in diesem Kurs wirklich wichtig ist Sie könnten also natürlich auch Next yes verwenden , wenn Sie möchten Aber wie gesagt, AstroJS ist offen für verschiedene Frontend-Technologien, also verwende ich es hier. Hey, das sind die Tools, Frameworks und Bibliotheken, die wir hier im nächsten Video verwenden Wir beginnen mit unserem ersten Projekt. Wir sehen uns dann. 4. So erstellen Sie unsere erste Astro-App: Ordnung. Hier werden wir unsere erste AstroGS-Server-App erstellen, und das ist die App, die den Server aufruft, die Open AI-API für uns aufruft, und wir werden auch HTML und den React-Code an den Browser senden, und dann bekommen wir theoretisch unsere Chat-Anwendung Hier fangen wir also an. Wir haben unseren übergeordneten Ordner. In diesem Fall ist es DAI, und ich werde NPM create, create aufrufen Und dann wird das eine App erstellen und welche App es ist eine Astro-App, also rufen wir PM Create Astro also rufen wir PM Create Astro Und wir werden von einem netten Roboter begrüßt, sagt: Houston, lass uns das Web bauen, das Dann fragt es: Okay, also teilt es uns mit, dass die Startsequenz eingeleitet wurde Und wo sollen wir dann unser neues Projekt erstellen? Und das wird natürlich der Name unseres Projekts und des Unterordners Und in unserem Fall nenne ich es KI-Chat, da dies eine Chat-Anwendung sein wird, eine generische Chat-Anwendung wie Chat GBT, viel einfacher ist, aber das machen wir zuerst Geben Sie also ein und dann wird gefragt, ob es Beispieldateien enthalten soll, wie es hier empfohlen wird, aber wir beginnen mit einem leeren Projekt, also verwenden wir auch nicht die Blockvorlage und wählen leer Und dann fragt es mich, ob es die Abhängigkeiten installieren soll, die NPM Node-Module, NPM install wird aufgerufen, und natürlich, ja, mach es einfach, dann muss ich es nicht tun Das wird ein bisschen dauern , weil es alle Pakete herunterlädt und installiert Dies kann natürlich eine Minute dauern , abhängig von Ihrer Internetverbindung. Okay, die letzte Frage hier: Haben Sie vor, Typescript zu schreiben Und in diesem Fall nein, Sie können natürlich TypeScript verwenden, aber ich werde es hier nicht verwenden, weil es die Dinge komplizierter macht und ich werde mich hier auf JavaScript React und nicht auf Jazz konzentrieren JavaScript React und nicht auf Jazz Also nein eingeben, und es sagt mir keine Sorgen, TypeScript wird unterstützt und Sie können es später Also, okay, es war nicht die letzte Frage, aber hier ist es, ein neues Git-Repository zu initialisieren und nein, danke Und dann heißt es uns: Viel Glück da draußen, Astronaut Okay, vielen Dank. Was haben wir jetzt? Wir haben einen Unterordner namens AiChat , weil wir unserem Projekt diesen Namen gegeben haben Hier haben wir Dateien. Aber zuerst überprüfen wir die Unterordner. Hier haben wir die Knotenmodule, die mit MPM install aus dem Astro-Assistenten installiert wurden , und wir haben public, und das enthält nur ein Dies ist das SVG-FAF-Symbol, das im Projekt enthalten ist. Und wir haben eine Quelle. Wir haben Seiten im Quelltext. Und da haben wir unseren Index Astro Index Dot Astro, das ist quasi der Index HGML, der an den Browser geliefert wird, der aber zuerst von Astro Gs kompiliert wird Im Grunde ist das HGML und das wird im Browser angezeigt Wir können es auschecken und wir können den Server jetzt mit Okay ausführen , also müssen wir zuerst eine CD in den Unterordner, den wir gerade erstellt haben, CD AI-Chat machen eine CD in den Unterordner, den wir gerade erstellt haben, , und dann können wir NPM Run aufrufen Dadurch wird ein Skript ausgeführt, das im Paket aufgeführt ist. Jason, hier haben wir die Skripte, und wir wollen dieses Skript Def namens Dev Astro Def aufrufen Astro ist ein Shell-Skript, und Sie finden es hier in den Notizmodulen Punkt bin, und hier ist es Astro, und das wird dann mit dem Argument Dev aufgerufen Okay, also rufen wir NPM run Def auf, und das und Und hier ist er, lokaler Host 3.000. Wir überprüfen es im Browser. Hier ist es Astro und H one hier, und das ist im Wesentlichen, wie gesagt, das, was wir im Index Astro in dieser Datei hier haben im Index Astro in dieser Datei Und das können wir natürlich ändern. Lass es uns auf KI-Chat umstellen. Oder AIChatBT, was auch immer. Und hier kannst du natürlich etwas HTML platzieren, wenn du ein DIV willst und was auch immer du willst Wir können unseren React-Root vielleicht später hier haben. Aber lassen Sie uns den Browser überprüfen und er hat die Seite automatisch für uns neu geladen, und jetzt haben wir den KI-Chat-Bot hier in der Kopfzeile Okay, das ist also unsere erste Anwendung mit Astro JS, und wir werden im nächsten Video weitermachen 5. Hinzufügen von Reaktionen auf unsere App: Okay, jetzt werden wir React zu unserer Astro-App hinzufügen und zuerst das Ganze stornieren und Def hier ausführen. Unser Server läuft hier also nicht mehr und ich füge diesen Befehl ein. Dieser Befehl heißt Npx Astro add react und verwendet das Astro Shell-Skript, und verwendet das Astro Shell-Skript um unserer Astro-App React-Unterstützung hinzuzufügen Geben Sie also einfach dieses Npx Astro Add React ein und es sollte die React-Unterstützung hinzufügen und es Beim Auflösen von Paketen werden wir gefragt, ob wir mit der Installation von Abhängigkeiten fortfahren wollen , und dadurch werden auch einige Node-Pakete installiert Fahren Sie fort, und es wird unser Astrocfic MGS ändern Okay, es ändert also auch unsere TS-Konfigurations-JSN oder erstellt sie. Ist nicht wirklich wichtig Ja, mach weiter und das war's. Okay, jetzt haben wir unseren React-Support, schauen wir uns das Paket Jason an. Es wurden Typen hinzugefügt. Wir können hier also React und Rec Dom sehen, und es wurden auch React und React Dom hinzugefügt, natürlich Version 18, beide. Und jetzt können wir React in unserer App verwenden. Aber zuerst benötigen wir natürlich eine React-Komponente, und die Komponenten befinden sich in den Unterordner-Komponenten Also ein RC, wir erstellen einen neuen Ordner. Und wir nennen es Komponenten. Und in diesem Komponentenordner können wir eine neue Datei erstellen, wir nennen sie Index Dot JSX, und das wird unsere Hauptkomponente für Reaktionen sein Dann können wir das in den Indexpunkt Astro aufnehmen, und wir können es hier in diesen Bereich aufnehmen Wir haben also die drei Bindestriche, und zwischen den ersten drei Bindestrichen und dem letzten können wir unseren Import schreiben und wir können hier die React-Komponente importieren , unseren Index JSX, und wir importieren die App von, also wird es ein Standardimport und ein Standardexport von Punktpunktkomponenten sein , und da haben wir unseren Index JSX, und im Moment ist er leer, also bekommen wir hier eine Fehlermeldung weil es nicht wirklich ein Modul ist, aber jetzt können wir diese App-Komponente hier verwenden , wie wir es in JSX tun. Hier fehlt etwas. Wir müssen hier ein neues Attribut einfügen, nur den Doppelpunkt für den Client, und dann müssen wir es so einstellen, dass es hier reagiert. Okay, und dadurch wird Astro mitgeteilt , dass diese Komponente auf dem Client gerendert wird, nur auf dem Client und nicht auf dem Server, also verwenden wir hier kein Server-Site-Rendering. Okay, das ist im Moment leer, also müssen wir etwas eingeben, Standardfunktion exportieren und dann etwas JSX zurückgeben Für den Moment sollte das genügen. Und jetzt starten wir unseren Server. Wir überprüfen den Browser, hosten vor Ort 3.000 KI-Chatbots , das, was wir vorher hatten, und dann haben wir hier eine App. Und wenn wir das HTML hier überprüfen, Dom, haben wir dieses DIF mit App drin, und das ist unsere Reaktionskomponente Und das übergeordnete Element dieser Reaktionskomponente ist Astro Island, und diese Astro-Insel ist in diesem Fall unsere Reaktionswurzel, und Astro kann alle verschiedenen UI-Komponenten wie Swel View Jazz, React, Solid Jazz mischen und anpassen , , und es platziert es Aber das ist für uns nicht so wichtig. Wichtig ist, dass wir hier unsere React-Komponente haben, und hier können wir unser JSX schreiben, und wir können es einfach wie jede andere React-Komponente schreiben Okay, wir haben also unsere erste React-Komponente, und von dort aus können wir hier einfach eine React-App erstellen, und der nächste Schritt wird darin bestehen, eine Server-Site-Funktion einzurichten, die die Open AI-API aufruft, und das wird im nächsten Video untersucht 6. Hinzufügen unseres ersten Server-REST-Endpunkts: Okay, jetzt, wo wir unsere erste React-Komponente haben, können wir mit dem Schreiben unseres ersten Servercodes und der direkten Ausführung der Anwendung im Browser fortfahren unseres ersten Servercodes und . Wir rufen die Server-API auf, um schließlich die API von Open AI zu kontaktieren und dann den Chat wieder abzuschließen. Wir brauchen also eine Serverkomponente, die ohne JS läuft, und das wird unser erster Endpunkt sein. Ich habe einen Unterordner unter Seiten erstellt, Seiten, in denen unser Index Astros und der Unterordner Und in der API habe ich dieses JS-JavaScript-Modul namens chat dot js Und darin haben wir einen Export der Funktion G. Und das sagt Astro, dass es in diesem Pfad, also dem API-Chat, einen G-Handler geben wird Wenn ich das also in die Adressleiste des Browsers einfüge, sollte dieser Handler aufgerufen werden, weil der Browser dort eine G-Anfrage an den Server stellt Und unser Code sollte hier ausgeführt werden. Wir exportieren also eine ASIC-Funktion weil wir sie im Moment verwenden wollen, wir verwenden sie nicht, aber wir werden eine Gewichtung darin verwenden Also habe ich die ASN bereits vor die Funktion gestellt. Also, was macht diese Funktion? Es erhält eine Anfrage. Es erhält ein Objekt, und darin befindet sich eine Anforderungseigenschaft, und wir verwenden sie im Moment nicht, aber später werden wir es tun und dann gibt sie eine neue Antwort zurück, und das ist die Antwort, die an den Browser gesendet wird . Und innerhalb der Antwort innerhalb des Konstruktors hier können wir den Hauptteil der Antwort angeben, und das wird eine JSN-Zeichenfolge sein, was bedeutet, dass dieses einfache Objekt hier, dieses Objektliteral mit einer Eigenschaftsantwort und der Zeichenfolge hello stringifiziert dieses Objektliteral mit wird. Das wird also im Hauptteil an den Browser gesendet. Und dann haben wir noch ein paar Header und Status. Der Status wird 200 sein, was okay bedeutet, also ist alles in Ordnung, und der Header legt den Inhaltstyp hier auf Anwendungs-JSN Der Browser wird also wissen, dass dies JSN im Körper ist. Okay, wir können hier Header senden und wir können mehr Header senden, nicht nur den Inhaltstyp hier, sondern alle anderen Header, die wir verwenden möchten Und der Statuscode kann natürlich etwas anderes sein, wie ein Pfeil wie 500, wenn es einen Fehler auf dem Server gibt , oder 400 oder 401 oder so ähnlich Im Moment wird also alles gut funktionieren. Also geben wir hier 200 an, was okay bedeutet. Das wird also als Antwort an den Browser zurückgegeben und wir können es testen, indem wir einfach den Pfad hier eingeben, API, wie gesagt, und dann chatten, und der Server weiß, welches Modul und welche Funktion er dort aufrufen muss. Also hier haben wir es. Antworte, hallo. Dies ist das JSON, das hier zurückgegeben wird. Okay, jetzt haben wir unsere erste Server-Site-Funktion, und diese läuft ohne Jz Wichtig dabei ist natürlich, dass wir es auf den richtigen Weg bringen Wir haben einen Unterordner namens API erstellt. Es gibt all unsere API-Funktionen wie Chat oder vielleicht haben wir später mehr solche Funktionen Wir haben vielleicht nicht nur einen Get, wir können hier auch einen Beitrag schreiben. Wenn wir also hier einen Beitrag exportieren, wird er als Browser bezeichnet, ob der Client einen Beitrag sendet oder ablegt oder löscht oder was auch immer. Okay, jetzt haben wir unsere erste Serverfunktion, und hier können wir die Open AI API aufrufen und unseren Chat abschließen. Wir sehen uns im nächsten Video. 7. Vorbereiten des Aufrufs der offenen KI-API: Okay, in diesem Video werden wir die Vorbereitungen für den Aufruf der Open AI API treffen, und zuerst müssen Sie sich bei der Plattform Open AI anmelden. Also fügen wir den URL-Plattformpunkt OpenAI ein und hier kannst du dich anmelden Und dann entweder mit einer E-Mail-Adresse und Passwort oder du kannst mit Google, Microsoft oder Apple weitermachen Google, Microsoft oder Apple Und sobald Sie dies getan haben, befinden Sie sich hier in Ihrem Konto, und dann haben Sie dies unter Benutzer-API-Schlüsseln. Und hier können Sie einen neuen API-Schlüssel erstellen und diesen API-Schlüssel verwenden, um auf Ihr Konto zuzugreifen. Und das müssen Sie zuerst tun, einen neuen geheimen Schlüssel erstellen. Also werde ich das hier machen und es Testschlüssel nennen. Erstellen Sie hier einen geheimen Schlüssel. Und das ist wichtig. Sie müssen diesen Schlüssel jetzt kopieren und an einem sicheren Ort aufbewahren. Sie können ihn beispielsweise in Ihre Zwischenablage kopieren und dann in Ihren Quellcode einfügen Wie hier werde ich einen Kommentar abgeben und dann den Schlüssel eingeben Also hier hast du den Schlüssel und er ist gespeichert. Warum ist das wichtig? Denn danach, wenn Sie diesen Dialog geschlossen haben, können Sie nicht mehr auf den Schlüssel zugreifen. Sie sehen hier nur die ersten beiden Buchstaben und die letzten vier Zeichen, aber Sie können hier nicht auf den vollständigen Schlüssel zugreifen Sie müssen also einen neuen erstellen, falls Sie ihn jemals vergessen oder nicht gespeichert haben. Das ist also alles, was Sie hier tun müssen, und ich denke, wenn Sie sich als neuer Benutzer anmelden, erhalten Sie 5$, so etwas, Credits, und Sie können die 5$ zuerst verwenden, bevor Sie bezahlen müssen Und ich denke, 5$ sind mehr als genug, um all unsere Beispiel-Apps hier zu testen Also sollten 5$ dafür reichen. Wenn du mehr brauchst, musst du dafür bezahlen. Und wenn Sie Ihren geheimen Schlüssel haben, müssen Sie ihn, wie gesagt, irgendwo speichern . Ich habe es hier hingelegt. Aber vorerst werde ich auch diesen Testschlüssel hier löschen, und ich werde alle Schlüssel löschen. Ich verwende hier im Kurs, bevor ich den Kurs veröffentliche , weil ich nicht möchte, dass du meine Schlüssel benutzt, weil ich dafür bezahlen muss. Sie müssen hier also Ihre eigenen geheimen Schlüssel erstellen. Jetzt werden wir das offene API-Paket installieren , kein JS-Paket. Und das ist sehr einfach. Sie müssen in Ihr Hauptverzeichnis gehen, und das ist in meinem Fall ein I-Chat, und dann müssen Sie NPM Install open AI aufrufen, zurückkehren, ein wenig warten, und jetzt ist es fertig Und wir schauen uns das Paket JSON an und wir sehen, dass Open AI zur Liste der Abhängigkeiten hinzugefügt wurde, und das ist die Version drei Punkt Null Jetzt können wir das Paket verwenden. Gehen wir also zu unserem Chat-Punkt JS. Jetzt müssen wir zuerst das OpenAI-Paket importieren. So wie das. Wir haben also eine Konfiguration. Wir benötigen sowohl die Konfiguration als auch die Open AI-API, und hier müssen wir unsere Funktionen aufrufen. Und hier haben wir die Konfiguration, die wir benötigen, um diese Funktionen aufzurufen. Als Erstes müssen wir also eine neue Konfiguration mit unserem API-Schlüssel erstellen . Also habe ich das schon vorbereitet. Und wie Sie sehen, ist das ein anderer Schlüssel, aber ich werde diesen Schlüssel natürlich auch löschen, bevor ich den Kurs veröffentliche. Also bitte erstelle einen neuen. Das wird nicht mehr funktionieren. Okay, wir erstellen also eine neue Konfiguration mit neuer Konfiguration, und die Konfiguration haben wir aus dem Open AI-Paket importiert. Dann müssen wir ein Objekt mit dem Eigenschaften-API-Schlüssel versorgen , und dort haben wir den geheimen Schlüssel in einer Zeichenfolge, und dann bekommen wir die Konfiguration zurück. Und diese Konfiguration können wir jetzt verwenden, um eine Instanz der offenen KI-API zu erstellen , und wir nennen sie Open AI. Es ist eine neue offene KI-API mit Konfiguration. Das ist sehr einfach. Und jetzt haben wir die offene KI, und wir können überprüfen, was da drin ist. Wir haben die Chat-Vervollständigung erstellt, was hier eine sehr wichtige Funktion oder Methode ist, und wir werden diese Methode häufig verwenden. Und hier gibt es auch andere Funktionen. Sie können einen Blick darauf werfen, aber Sie können natürlich auch in der Dokumentation auf der Webseite nachschauen . Wenn wir also nochmal nachschauen, Dokumentation und API-Referenz, die Dokumentation gibt euch Tutorials und einen allgemeinen Überblick über die Prozesse und die API-Referenz beschreibt dort alle Funktionsaufrufen mit allen Parametern. Okay, wenn Sie also jemals Fragen zur API haben, können Sie die Dokumentation in der API-Referenz auf platform.openai.com verwenden API-Referenz auf platform.openai.com Okay, also zurück zu unserem Code. Ich verwende hier nicht die Vervollständigung zum Erstellen von Chats, aber ich werde sie hier in der GT-Funktion verwenden. Aber vorher werde ich eine neue Funktion erstellen, und diese neue Funktion wird die Fertigstellung für uns erledigen. Wir werden hier den Aufruf der Open-AI-Funktion durchführen. Und es muss eine ACN-Funktion sein , weil ich hier eine Wait-Funktion verwenden werde. Es ist also ACN-Funktion, kompletter Chat. Das ist der Name meiner Funktion. Und dann eine neue Nachricht. Das ist die erste Nachricht, die wir an die OpenAI, API, senden werden , und dann rufen wir eine Gewichtung auf, weil es async ist openi create chat completion, die Methode, die ich bereits erwähnt habe, müssen wir für Create Chat Completion hier ein Objektliteral angeben, und das spezifiziert das Modell, und das ist das neueste Modell hier, ist das neueste Modell hier, GPT 35 und dann rufen wir eine Gewichtung auf, weil es async ist openi create chat completion, die Methode, die ich bereits erwähnt habe, müssen wir für Create Chat Completion hier ein Objektliteral angeben, und das spezifiziert das Modell, und das ist das neueste Modell hier, GPT 35 Turbo oh 613 Th ist das neueste Modell , das auch Funktionsaufrufen unterstützt. Sie können also GPT 35 Turbo verwenden, und je nachdem wann Sie es tun, werden Sie im Moment das alte Modell bekommen, aber vielleicht werden Sie dieses Modell in Zukunft auch hier bekommen Aber um sicher zu gehen, habe ich am Ende oh 613 eingegeben, weil ich dieses neueste Modell haben möchte Okay, dann musst du also Nachrichten bereitstellen, und das wird unser Chat-Verlauf und die Open AI sein API wird mit dem Abschluss des Chat-Verlaufs dieser Nachrichten antworten und eine neue Nachricht generieren, und eine neue Nachricht generieren der der Chat abgeschlossen wird. Und das Eigentum an Nachrichten besteht nur aus einer Reihe von Nachrichten. Hier haben wir also eine Nachricht in diesem Objekt, Sie müssen die Rolle angeben, in diesem Fall Benutzer, etwas, das der Benutzer zum Beispiel eingibt , und der Inhalt ist hier festgelegt und der Inhalt ist Hallo, also wird die Konversation mit einem Hallo gestartet und die Open API wird dies mit einer neuen Nachricht abschließen und diese neue Nachricht wird wurde in der Abschlussantwort hierher zurückgegeben, und die Abschlussantwort enthält Daten Auswahlmöglichkeiten. Normal benötigt standardmäßig eine Auswahl. Choices ist also ein Array, und wir greifen auf das erste zu. Und dann ist es der Inhalt der Nachricht mit dem Punkt. Und da, in diesem Eigenschaftsinhalt, haben wir unsere eigentliche Botschaft, die Vollendung, die uns das Open-AI-Modell hier bietet, und das ist es, was wir von dieser Funktion zurückgeben. Also kompletter Chat. Wir müssen es natürlich nennen, und das ist so einfach wie das hier. Also haben wir die Antwort hier, warten auf den kompletten Chat, und wir erhalten den Vervollständigungstext aus dem Modell als Antwort hier, und dann können wir das hier löschen, und wir geben die Antwort als JSON-Zeichenfolge zurück. Jetzt können wir es testen. Das ist hier ein gültiger Schlüssel. Ich habe es im Moment nicht gelöscht, also sollte es funktionieren und wir gehen wieder zu unserem Def-Server, und dann rufen wir die API-Chat-Funktion auf, die Get-Funktion, ja, wir bekommen eine Antwort, und diesmal ist es Hallo, wie kann ich dir heute weiterhelfen Dies wurde durch das Lodge-Sprachmodell von Open AI generiert das Lodge-Sprachmodell von und das ist es, was zurückgegeben wurde Ich lade es erneut, vielleicht gibt es mir eine andere Antwort. Ich mache es wieder. Ja, jetzt ist es tatsächlich eine andere Antwort. Hallo zusammen. Wie kann ich dir heute helfen? Es ist fast dasselbe, sehr ähnlich, aber es ist anders. Und nochmal, hallo, wie kann ich dir heute weiterhelfen? Die tatsächliche Antwort des Modells erhalten wir hier. Darauf können wir jetzt aufbauen. Wir können hier weitere Nachrichten hinzufügen, sodass der Benutzer auf diese generierte Nachricht antworten kann, und dann antwortet das große Sprachmodell erneut darauf und hin und her. Und das wird unser Chat sein, aber mehr im nächsten Video. 8. Bereitstellung der Nutzernachricht über URL-Param: Im vorherigen Video haben wir also eine feste Nachricht namens Hallo verwendet und diese einfach an die Open AI-API gesendet, das ist also ein ständiges Hallo Und zuerst können wir diese Nachricht durch eine neue Nachricht ersetzen. Also leg das hier rein und lass uns nachschauen. Wir bieten hier nichts an. Wir müssen hier also eine vom Benutzer bereitgestellte Nachricht angeben , um den Chat abzuschließen. Und woher bekommen wir es? Wir bekommen es aus dem URL-Parameter, dem Teil nach dem Fragezeichen, und wie können wir in Astro Js darauf zugreifen Zuerst müssen wir die URL hier strukturieren. Also gibt uns Astro die URL. Und wenn wir die URL haben, können wir hier einfach auf die Suchparameter zugreifen So wie das. Also L-Punkt-Suchparameter, und da erhalten wir einen bestimmten Parameter , der MSG für Message heißt, und das bekommen wir mit der Punkt-G-Funktion Danach können wir es mit MSG in der Konsole protokollieren und dann probieren wir es und dann probieren wir es Wir bekommen einen Fehler. Okay, das ist nicht gut. Lass uns nachschauen, was wir hier haben. Die Anfrage ist mit dem Statuscode 400 fehlgeschlagen. Okay, ich denke, das liegt daran, Inhalt der neuen Nachricht hier Null ist. Wir müssen also eine Nachricht bereitstellen, und wir können einfach den kompletten Chat mit MSG anrufen . Also lass uns das machen Und wieder ein Fehler. Okay. Was ist es jetzt? Trotzdem haben wir die 404 Hundred Means Bad Anfrage. Also machen wir hier eine schlechte Anfrage, Chat, Chat abschließen. Und kompletter Chat. Das ist also immer noch null oder undefiniert. Das ist also ein Problem. Also lass uns hier nochmal Hallo eintragen. Hallo. Und lass uns überprüfen, ob das funktioniert. Okay, das funktioniert. Lassen Sie uns die Ausgabe hier überprüfen. Null, Null, Null, Null. Okay, MSG ist also Null, und warum ist das so? Das liegt daran, dass unser Astroconfc MGS nicht vollständig ist. Wir müssen hier etwas einfügen, und das ist der Ausgabeserver, was notwendig ist, weil wir hier das Rendern der Serverseite aktivieren müssen Serverseite aktivieren müssen Andernfalls rendert Astro Js die Seiten statisch, und in diesem Fall haben wir hier keinen Zugriff auf URL- und URL-Parameter Also nochmal, Astrocfi Js, Sie müssen die Ausgabe auf den Server legen, um das Rendern der Serverseite zu ermöglichen, und dann können wir hier dynamisch auf die URL und die Suchparameter zugreifen und die Suchparameter Okay, also lass uns die MSG einfach wieder hier hinstellen, MSG wie diese, und versuchen wir Vielleicht nicht Hallo, aber Hello World wäre besser hier, also okay, wie kann ich dir heute weiterhelfen Das ist die Antwort. Lassen Sie uns hier die Serverausgabe überprüfen. Hallo Welt. Also das scheint zu funktionieren. Und wir können unsere Nachricht hier in die URL eingeben, im MSG-Parameter Lass uns etwas anderes versuchen. Vielleicht wie ist das Wetter heute? Es wird es nicht wissen. Aber lassen Sie uns trotzdem überprüfen, wie die Antwort lautet. Es tut mir leid, aber als KI-Sprachmodell habe ich keine Echtzeitinformationen. Okay, es ist ehrlich. Um das Wetter heute herauszufinden, können Sie eine zuverlässige Wetter-Webseite, Website oder eine Wettervorhersage-App auf Ihrem Telefon überprüfen , Website oder eine Wettervorhersage-App auf Ihrem Telefon Ich denke, das stimmt, also ist das eine gute Antwort, denke ich. Und das ist unser erster Chat mit einer vom Benutzer bereitgestellten Chat-Nachricht. Es ist hier nicht mehr behoben. Wir stellen den neuen Nachrichtenparameter bereit, um den Chat abzuschließen und diese Nachricht wird von der URL abgerufen, aus den Suchparametern und wir geben hier im MSG-Parameter nach dem Fragezeichen an, MSG entspricht dem Wetter heute, wir werden diese URL aufrufen, diese Rest-API aus dem Code der Damit das funktioniert, müssen wir natürlich eine React-Komponente erstellen, müssen wir natürlich eine React-Komponente erstellen und das wird im nächsten Video geschehen 9. Erste echte Kunden-UI in response: Kehren wir zu unserer Reaktionskomponente zurück. Ich habe es ein wenig um ein Eingabe-Textfeld erweitert . Das ist dieser, ein Senden-Button, ist dieser, und ein Ausgabe-Div, das hier sein wird, und die Idee ist, dass der Benutzer hier natürlich Text eingibt und dann auf die Schaltfläche Senden klickt, und dann wird dieser Text , der hier eingegeben wurde , an den Server gesendet und wiederum sendet er an den Server, sendet ihn an die Open AI API, erhält die Antwort von der Sprache model, schicke es hier zurück an die React-Komponente, und dann setzen wir es hier in diesen Zustand mit set answer. Wir nennen dich Status mit Antwort und setzen hier Antwort, und diese Antwort wird dann hier im DIV angezeigt und was hier fehlt ist natürlich unser Sand. Also müssen wir hier eine Onclic-Funktion definieren, die aufgerufen wird, wenn der Benutzer auf die Schaltfläche Senden klickt Und dann müssen wir, was müssen wir hier tun? Wir müssen Fetch aufrufen, um die Server-API, die Rest-API, unsere Rest-API aufzurufen die Rest-API, unsere Rest-API Das wird also ein asynchroner Prozess sein, und wir müssen hier mindestens eine asynchrone Funktion verwenden oder ich möchte Also setze ich Async vor diese Funktionsdeklaration, und hier kann ich einen Gewichtungsabruf verwenden Und wir müssen hier die URL angeben, was den API-Slash HAT dann den URL-Parameter nach dem Fragezeichen, dem Frau G entspricht Lassen Sie uns hier nur Hallo zu Debugging-Zwecken und zu Testzwecken hier einfügen und dann den URL-Parameter nach dem Fragezeichen, dem Frau G entspricht. Lassen Sie uns hier nur Hallo zu Debugging-Zwecken und zu Testzwecken hier einfügen. Okay, also was bekommen wir von Fetch? Wir erhalten eine Antwort und dann müssen wir den Hauptteil der Antwort bekommen, und das wird die Antwort sein Also rufe ich Antwort auf, und das wird JCN sein, ich nenne Antwort Punkt JSN und das wird auch ein asynchroner Prozess sein, und deshalb verwende ich hier eine Wartezeit Okay, so bekommen wir die Antwort. Hoffentlich holen wir die API ab. SlahatQimrk MSG entspricht Hallo. Und auf die Antwort, die wir erhalten, rufen wir die Antwort Punkt JCN auf. Ja, ich rufen wir die Antwort Punkt JCN auf. Ja protokolliere sie einfach hier in der Konsole. Nur um es zu testen. Okay. Also hier haben wir es, und ich kann einfach auf die Schaltfläche Senden klicken und hoffentlich bekommen wir hier etwas. Und ja, es funktioniert. Die Antwort ist Hallo. Wie kann ich Ihnen heute weiterhelfen? Sehr nett. Und dann können wir mit der Einstellung der Antwort fortfahren und die Antwort wird unser Text sein, und das ist es, was wir brauchen, um den Status zwei einzustellen. Es ist also Antwort mit Punkt Antwort, und das verwenden wir hier für Set Answer, und dann wird diese Rec-Komponente erneut gerendert, und die Antwort sollte hier in unserem Ausgabe-Div angezeigt werden . Okay. Also lass uns das überprüfen. Hallo. Wie kann ich Ihnen heute weiterhelfen? Sehr gut. Es funktioniert. Es funktioniert. Okay, was fehlt, ist, dass wir die Eingabe aus dem Eingabefeld hier abrufen müssen . Und deshalb habe ich auf diesen Eingang einen Rf gesetzt. Also rufe ich use Ref message input und erhalte hier über die Nachrichteneingabe Dot Current Zugriff auf den Knoten zum DOM-Element. Also deklariere ich einfach eine konstante Eingabe, und das wird der aktuelle Punktwert der Nachrichteneingabe sein. Dies wird der Text sein, der vom Benutzer eingegeben wurde. Wir werden diese Eingabe anstelle dieses festen Hello verwenden. Also ist nur MSG gleich und dann Plus-Eingabe. Okay. Also lass es uns testen. Wie ist das Wetter heute und drücke auf Senden Es tut mir leid, aber als KI habe ich keine Echtzeitinformationen. Das wissen wir schon, aber es funktioniert. Ja. Also hier kannst du deine Chat-Nachricht eingeben, auf Senden drücken und dann bekommst du die Antwort hier in diesem Div. Also lass es uns noch einmal überprüfen. Wir haben hier unseren Staat mit Staat. Dies ist die Antwort aus dem Sprachmodell, und wir haben hier unsere Referenz zur Nachrichteneingabe. Das wird so verwendet, als ob dieser Nachrichteneingabepunkt aktuell das Dom-Element ist, das Dom-Eingabeelement, und da haben wir den Wert des Eingabetextes. Und das wird hier verwendet , um unsere API abzurufen. Und dann ist die Antwort JSN. diesem Grund nennen wir den Antwortpunkt JSN , der den Text abruft und ihn dann analysiert Und wir haben eine Antwort, die wiederum eine Antwort enthält Auch hier können wir es Antwort-JSN oder Antwortobjekt nennen , so ähnlich Antwortobjekt und dann Antwortobjekt Punktantwort wird der Text sein Und set answer wird verwendet, um unseren Status so einzustellen , dass der Objektpunkt ASE auf Text antwortet. Okay, das ist sehr einfach. Es ist nicht einmal ein Chat. Es ist nur eine Vollendung. Es ist ein Mal. Also jedes Mal, wenn du etwas schickst, wird es das einfach vervollständigen. Das Sprachmodell wird dies vervollständigen, aber Sie können keinen Chat führen, keinen vollständigen Chat, weil wir hier nur die letzten Eingaben senden. Und dann hat das Sprachmodell nur diese Eingabe und wir werden sie vervollständigen. Es ist also nur eine einmalige Nachricht die an das Sprachmodell geht und dann ist das abgeschlossen und die Antwort, die Fertigstellung, wird hier im DIV ausgegeben. Das ist momentan also keine komplette Chat-Anwendung, aber das wird natürlich erweitert. Aber das ist unser erstes funktionierendes Modell mit UI, und Sie können alles hier platzieren, und das Sprachmodell wird es vervollständigen, und wir werden Ihnen eine Antwort geben, die hoffentlich auf die eine oder andere Weise Sinn macht. Okay, das ist es für diese Videoszene in der nächsten. 10. Speichern des Chat-Verlaufs: Also haben wir jetzt eine Art Ask Me Anything App erstellt, aber es ist noch keine richtige Chat-App. Wir können dem Sprachmodell eine Nachricht schicken, und es wird die Nachricht vervollständigen und die Frage beantworten. Aber es ist kein Speicher involviert, und es erinnert sich auch nicht an den Chatverlauf. Die nächste Nachricht, die Sie an das Modell senden, ist also wieder die erste Nachricht, und das Sprachmodell auch nicht die OpenAI-API Kann mich an alles erinnern. Also müssen wir uns darum kümmern, und wir müssen den kompletten Chat-Verlauf senden , um ein Gespräch mit dem Sprachmodell zu führen. Und genau das machen wir in diesem Video. Wir müssen die Konversation speichern und den kompletten Verlauf der Konversation an die offene KI-API senden den kompletten Verlauf der . Es gibt also zwei Möglichkeiten, dies zu tun. Wir können den Chat-Verlauf auf dem Client im Browser speichern oder wir können ihn auf dem Server speichern. Das Speichern auf dem Server hat mehrere Vorteile einen müssen wir nicht den gesamten Verlauf vom Client, vom Browser zum Server immer wieder senden den gesamten Verlauf vom Client, , sondern nur die letzte Nachricht, die der Benutzer eingegeben hat. Außerdem können wir den Chat in einer Datenbank auf dem Server speichern und von überall darauf zugreifen. In dieser Lektion verwenden wir also einen serverseitigen Ansatz und speichern den Nachrichtenverlauf auf dem Server in einer einfachen Variablen. Und das ist die Variable. Sie heißt Messages und wird mit einem leeren Array initialisiert. Wir werden Nachrichten zu diesem Array hinzufügen, Wir werden Nachrichten zu diesem Array hinzufügen wann immer der Benutzer eine neue Nachricht sendet und auch, wenn das Sprachmodell uns die Vervollständigung gibt Wann immer das passiert, müssen wir eine neue Nachricht senden. Das Erste oder der erste Punkt, an dem wir die Nachricht hinzufügen müssen , befindet sich an dieser Stelle hier Wir können einfach einen neuen Eintrag in das Nachrichten-Array verschieben, und das ist dasselbe Format, dieselbe Struktur, die wir an die OpenAI-API senden Also müssen wir es so formulieren, ein Objekt mit der Rolle und dem Inhalt Also gebe ich es als Rollenbenutzer an, weil der Benutzer die Nachricht sendet und die Nachricht dann lautet, dass der Inhalt MSG sein wird Und hier können wir einfach das Nachrichten-Array an die komplette Chat-Funktion übergeben Dies werden die Array-Nachrichten sein, und wir müssen es hier nicht tun. Wir können hier einfach Nachrichten bereitstellen. In dieser Kurzform. Der komplette Chat empfängt also Nachrichten, und wir stellen sie in der Anfrage an die Open AI, um eine Chat-Abschlussfunktion zu erstellen. Also nichts weiter hier, und wir testen es. Nun, wenn es immer noch funktioniert, sollte es immer noch funktionieren, weil wir uns ändern, im Grunde haben wir nichts geändert. Also sollte es immer noch funktionieren. Also, wie geht's dir? Lass uns sehen. Als KI habe ich keine Gefühle. Okay, es scheint immer noch zu funktionieren, und es ist nicht überraschend , weil wir nichts geändert haben. Aber jetzt haben wir die Nachricht im Nachrichten-Array, und wenn der Benutzer das nächste Mal eine Nachricht eingibt, können wir sie hierher übertragen, und dann wird jede Nachricht , jede Benutzernachricht, im Nachrichten-Array gespeichert. Aber das ist nicht genug. Wir müssen auch die Antwort zum Nachrichten-Array hinzufügen. also kopieren, erhalten Sie die Antwort aus der kompletten Chat-Funktion. Und die Rolle ist diesmal nicht der Benutzer, sondern der Assistent, der Inhalt wird die Antwort sein, und das sollte es auch sein. Antwort wird hier an den Browser gesendet, aber wir speichern die Antwort auch im Nachrichten-Array. Wenn also der komplette Chat das nächste Mal als Nachricht aufgerufen wird , befinden sich die Benutzernachricht und die Antwort im Array, und auch die neue Benutzernachricht wird dort sein. Okay, also lass es uns ausprobieren. Laden Sie die Seite einfach neu. Und wie ist dann das Wetter heute? Schicken Sie, entschuldigen Sie sich. Okay. Kannst du eine App dafür empfehlen und abschicken. Und mal sehen, was sie beantwortet. Sicherlich, hier sind ein paar beliebte Wetter-Apps. Das ist also der Beweis , dass wir die Konversation wirklich gespeichert haben, denn ich beziehe mich hier auf Nachrichten oder auf eine Benutzernachricht, die schon einmal gestellt wurde weil ich mich hier darauf beziehe, eine App dafür, und es sollte eine Wetter-App oder eine Wettervorhersage-App Oder wir können es natürlich auch hier ausgeben. Jedes Mal, wenn wir die Antwort hier veröffentlichen, können wir also auch Protokollnachrichten in der Konsole speichern. Okay, dieses Mal sollte ich den Server wirklich neu starten, weil ich sonst den Chatverlauf von früher habe. Und das ist nicht das , was ich hier will. Also starte ich den Server neu und Nachrichten werden jetzt ein leeres Array sein Okay, nochmal, wie ist das Wetter Heute, ich sende und dann fast die gleiche Antwort wie zuvor Kannst du es empfehlen oder wir können dieses Mal fragen, ob es eine Webseite oder Website dafür empfehlen kann . Okay, schicke auf jeden Fall weather.com. Okay. Lassen Sie uns also die Ausgabe hier überprüfen, von hier aus. Das Wetter in House ist heute also ruhig. Das habe ich in die Benutzeroberfläche eingegeben. Der Assistent antwortete, ich entschuldige mich, aber als KI-Sprachmodell, bla, bla, bla. Und können Sie jetzt eine Website dafür empfehlen? Nochmals, Roll User. Wie ist das Wetter heute? Assistentin? Ich entschuldige mich. Nun, die neue Nachricht hier, kannst du eine Website dafür empfehlen Und dann die Antwort des Sprachmodells, hier sind sicherlich einige. Beliebt und zuverlässig, egal ob wir Websites sind , bla, bla, bla. Also ja, es scheint zu funktionieren. Wir haben unseren Chat-Verlauf. Das einzige Problem dabei ist, dass wir unseren Server neu starten müssen, damit er die Nachrichten vergisst und die Konversation neu startet. Und wir müssen uns etwas einfallen lassen, um die Nachrichten dort wahrscheinlich auf ein leeres Array zurückzusetzen, vielleicht eine Idee, die jedes Mal neu generiert wird, wenn die Seite neu geladen wird, so etwas wie Ähm , aber im Moment ist das, sagen wir, es ist nicht vollständig, keine vollständige Chat-Anwendung, sondern es ist eine Chat-Anwendung Im Moment kann ich mit einem Sprachmodell chatten, und der Verlauf wird gespeichert und verwendet, wenn ich das nächste Mal eine Nachricht an das Modell sende. Das ist es für dieses Video. Wir sehen uns im nächsten. 11. Rest-Chat: Wir haben jetzt eine funktionierende Chat-Anwendung, aber wir haben auch hier ein kleines Problem, aber das ist einfach zu lösen Der Chat kann im Moment nicht zurückgesetzt werden, ohne den Server zurückzusetzen oder neu zu starten Also müssen wir dieses kleine Problem lösen. Ich habe mir das ausgedacht, die aktuelle Chat-ID gespeichert und die ID wird vom Client an den Server gesendet. Das ist hier in den URL-Suchberechtigungen. Es wird einen neuen Parameter geben, der ID sein wird. Und die neue Chat-ID wird mit der aktuellen Chat-ID verglichen , und wenn diese ungleich sind, wird das Nachrichten-Array auf ein leeres zurückgesetzt Was hier also noch getan werden muss, ist, eine neue ID zu generieren und sie hier über einen URL-Parameter bereitzustellen , der ID heißen muss Also müssen wir hier zu unserer Komponente, unserer React-Komponente und unserem Fetch übergehen React-Komponente und unserem Fetch Wir haben diese MSG also bereits als Parameter, und dann müssen wir diese neue hinzufügen Aber ich verwende hier besser eine Vorlagenzeichenfolge innerhalb dieser Backticks. Ich kann die Variablen hier besser einfügen Also MSG und dann Dollardollar, natürlich, geschweifte Klammern, da ist unser Input. Und dann sind ein Prozent und ID gleich. Und ja, wir müssen uns eine ID mit einer neuen ID ausdenken, und diese ID muss gespeichert werden Hier, wir können es einfach hier hinstellen. Const ID ist gleich. Zum Beispiel können wir jetzt date verwenden und das ist dann unsere ID, date now two string, und das wird unsere ID sein Und jedes Mal, wenn das neu geladen wird, wird die Seite neu Wir erstellen eine neue ID, deren Datum jetzt in Unix-Zeit sein wird Okay, das sollte es also sein, die ID hier anzugeben. Und lass es uns testen. Also frage ich nach dem Sprachmodell, wie geht es dir? Und lass uns sehen, wie es dir geht. Wir haben also schon das neue D hier , weil das Nachrichten-Array nur diese beiden Nachrichten enthält. Wie geht's dir? Und die Antwort des Sprachmodells. Als KI habe ich keine Gefühle. Ich kann es fragen, warum warum. Und mal sehen, die Frage nach dem Warum ist sehr weit gefasst und offen. Okay, können wir um eine Erklärung bitten? Was auch immer. Es funktioniert hier nicht , weil der Nachrichtenbereich wieder zurückgesetzt wurde. Also stimmt hier etwas nicht. Neue Chat-ID. Lassen Sie uns die Chat-ID hier in der Konsole protokollieren. Neue Chat-ID. Hut-ID. Und lass uns sehen. Und nochmal, wie geht's dir? Und die Chat-ID wird diese sein, okay? Und warum nächstes Mal? Senden. Nein, es ist dasselbe. Okay. Also ist es dieselbe ID. Also der Server, lassen Sie uns die Logik hier überprüfen. Wir bekommen das gleiche D. Okay, ich verstehe. Wir haben es nicht gespeichert. Es sollte also die aktuelle Chat-ID sein. Sollte in diesem Fall natürlich an eine neue Chat-ID gesendet werden. Okay, versuchen wir es noch einmal. Lass uns nachladen. Und wie geht's dir jetzt? Okay, wie geht's dir? Und die Antwort. Und jetzt frage ich, warum? Mal sehen, ob es wirklich so ist. Okay, das sieht also besser aus. Wie geht's dir? Danke für die Nachfrage. Warum? Als AA-Sprachschüler bin ich darauf ausgelegt, Informationen bereitzustellen, beantworten und zu helfen. Wenn wir also die Seite neu laden, sollte sie den Chat zurücksetzen Und wie geht's dir? Jetzt haben wir ein neues Nachrichtenarray das nur die Benutzernachricht und die Antwort des Sprachmodells enthält. Okay, das scheint also zu funktionieren. Und jedes Mal, wenn Sie den Chat-Verlauf zurücksetzen möchten, müssen Sie nur die Seite hier neu laden, und das war's Okay, wir haben also eine komplette Chat-Anwendung. Nicht ganz. Wir müssen hier zum Beispiel das Eingabefeld zurücksetzen. Jedes Mal, wenn ich auf Senden drücke, sollte das gelöscht werden, und außerdem zeigen wir hier nur die letzte Antwort und keinen vollständigen Chat-Verlauf an. Das muss natürlich auch verbessert werden, aber das werden wir im nächsten Video tun. 12. Verbesserung der UX: Also werden wir einige Verbesserungen in der UX implementieren. Wenn wir zum Beispiel hier unsere Eingabe, unsere Nachricht, und auf Senden klicken, möchten wir, dass diese Nachricht hier oder das Eingabefeld gelöscht wird. Und während die Anfrage noch aussteht, möchten wir, dass sie deaktiviert ist, das Eingabefeld als auch die Schaltfläche hier. Und was sonst? Wir wollen hier den kompletten Verlauf des Chats zeigen. Lassen Sie uns also den ersten Schritt machen: Deaktiviert, solange noch ausstehend, ich habe einen neuen Status „Ausstehend“ eingeführt, und das gilt natürlich auch, solange der Abruf noch aussteht Ich habe ihn vor dem Abrufen auf true gesetzt und am Ende dieses Click-Handlers habe ich ihn auf Falls gesetzt Dann habe ich im Eingabefeld gesagt, dass deaktiviert gleich ausstehend ist und auch auf der Schaltfläche Die Schaltfläche und das Eingabefeld sind also deaktiviert, solange die Anfrage noch aussteht Also lass es uns ausprobieren oder wirst du geschickt und wir sehen, dass beide deaktiviert sind. Und das ist auch hier geklärt. Wie habe ich das gemacht? Sehr einfach. Wir haben diese Nachrichteneingabe sowieso, Punkt aktuell. Dies ist das Eingabefeld, das DOM-Element, und der Punktwert wird auf eine leere Zeichenfolge gesetzt, und dann ist der Abruf abgeschlossen, und das ist Einfach aber effektiv. Und jetzt zur Chat-Konversation, die hier unten aufgeführt wird Dies ist die letzte Antwort des Sprachmodells, und wir wollen den Chat-Verlauf oben haben, und dies sollte die letzte sein. Und vielleicht ändern wir die Reihenfolge so, dass wir unsere Nachrichteneingabe unten haben. Darüber hinaus haben wir den Chat-Verlauf, wie er zum Beispiel in Chat GBT steht . Also lass uns das machen Zuerst schalten wir dieses Ausgabefeld und platzieren es über dem Eingabefeld und der Schaltfläche. Lass es uns ausprobieren, wie es dir geht und die Antwort wird oben sein. Okay. Das ist nett. Was nicht so nett ist, ist, dass es so ist als würde man je mehr Nachrichten wir haben, runtergehen. Im Moment haben wir nur eine. Aber wenn wir die gesamte Historie haben, wird das untergehen, und das ist nicht nett für UI. Wir machen hier einfach ein Flexbox-Layout. Display-Flex und Flex-Richtung müssen also eine Spalte sein. Um hier ein vertikales Layout zu haben. Natürlich, Flex als Zeichenfolge. Okay. Und dann haben wir zwischen dem Ausgangspanel und dem Eingang einfach ein Dif mit Flex One eingefügt Okay, schauen wir uns das an. Es funktioniert nicht, weil das gesamte HDL nicht 100% ist, also müssen wir hier 100% Höhe machen Also das ist 100% Körper, muss 100% sein Okay, also der Körper ist jetzt auch 100%, und dieses Div sollten wir löschen, das löschen Dann haben wir unser Div hundertprozentig. Lass es uns später machen. Und jetzt haben wir hier unsere Komponente, unsere Reaktionskomponente, die ebenfalls eine Höhe von 100% haben sollte. Okay, jetzt funktioniert es mehr oder weniger. Wie dem auch sei, wir sollten unsere H-Zone hier löschen oder löschen. Also wir haben das hier immer noch nicht funktioniert. Aber wie dem auch sei, lass es uns tun. Also hier haben wir Stil, ich mache hier nur den Inline-Stil, um schneller zu sein, also sollte das eine Höhe von 100% haben. Kopieren Sie, das sollte auf dem Hauptteil genauso sein. Sollte das hier ansprechen, sollte es auch hier sein. Und dann sollte die Reaktionskomponente eine Höhe von 100% haben. Jetzt ist es fast fertig, aber es ist zu groß. Okay, der Körper sieht natürlich so aus, als hätte er einen Rand, sollte Marge Null sein und dann haben wir ihn. Okay. Also zurück zum Indexpunkt Astro, und wenn Sie dort einen Rand von Null setzen, sollte das Problem behoben sein. Okay. Also, jetzt brauchen wir ein bisschen Polsterung, ich schätze, hier Und wir gehen zu diesem äußeren Bereich unserer Hauptkomponente und legen einen Abstand von, sagen wir, acht Pixeln fest Und ich schätze, wir müssen auch ein Box-Sizing-Board auf ein Feld legen , weil es sonst zu groß wird Schauen wir es uns an. Okay, das sieht also gut aus. Wie geht's dir? Ich hoffe, wir haben jetzt die Antwort. Oh, komm schon. Okay, wir bekommen hier also keine Antwort von der Open AI API. Es steckt hier irgendwie fest. Ich schätze, das kann passieren. Okay, jetzt haben wir sogar einen Pfeil fünf oh drei. Ich schätze, das ist SRS nicht verfügbar. Es kann natürlich passieren, und wir versuchen es einfach noch einmal, laden es neu Wie geht's dir? Okay, das ist besser als KI, ich habe keine Gefühle und so weiter. Okay, was bleibt noch zu tun? Wir müssen natürlich die gesamte Geschichte ausdrucken. Das ist nur die letzte Antwort. Lasst uns also einen neuen Staat einführen. Wir nennen es Nachrichten, und das wird ein Array sein. Nachrichten. Der Anfangswert wird ein leeres Array sein. Und das Nachrichten-Array wird hier im Ausgabebereich angezeigt. Also hier haben wir Nachrichten auf der Karte. Und hier haben wir jede Nachricht. Und was können wir tun? Jede Nachricht wird ein Div sein und dann in einem Dif haben wir die Nachricht als Text Oh, lass uns das machen, bevor das Set noch aussteht. Wir können eine Reihe von Nachrichten senden. Und drinnen haben wir die alten Nachrichten, wir haben die alten Nachrichten und die neue und die neue ist eingegeben. Und nachdem wir die Antwort erhalten haben, müssen wir hier auch festgelegte Nachrichten aufrufen. Und dieses Mal haben wir die Nachrichten und dann keine Eingabe, aber wir haben hier die neue Antwort, nämlich die Antwort auf das Objekt mit Punkt . Lass uns das versuchen. Wir bekommen hier eine Warnung, aber wir werden uns später darum kümmern , denn wie kann ich Ihnen heute helfen? Okay. Und dann unsere Standardfrage, warum und okay, wir sehen, dass es nicht ganz funktioniert, weil das Warum verschwunden ist. Ich habe keine Gefühle , aber die Antwort ist da. Okay, es hat also irgendwie funktioniert, aber nicht vollständig. Das Problem ist natürlich, dass wir hier keine Nachrichten verwenden können. Was wir also tun können, ist neue Nachrichten zu definieren. Aus diesem Grund setzen wir hier neue Nachrichten. Und dann hier drüben, neue Nachrichten und Antwortobjektantworten. Und das sollte funktionieren Okay, also lass es uns ausprobieren. Wie werden Sie gesendet? Wir bekommen diese Warnung wieder. Aber wie dem auch sei, warum schicken. Und jetzt scheint es zu funktionieren. Wir haben hier einen Chat-Verlauf, und unten die neueste Antwort des Modells. Es sieht nicht gut aus. Es ist ziemlich hässlich , weil wir nichts haben, um die Nachrichten zu trennen. Aber davon abgesehen scheint es ganz gut zu funktionieren wird im nächsten Video ein bisschen hübscher 13. Hübscher Chat-Verlauf: Okay, in diesem Video werden wir den Chat-Verlauf ein bisschen hübscher gestalten und ich habe hier bereits einige Verbesserungen vorgenommen, also schauen wir sie uns Wie geht's dir? Unsere Standardfrage. Senden Sie und Sie sehen, dass dies gelb ist und die Antwort das Sprachmodell grün ist, die Hintergrundfarbe grün. So können wir die Farben natürlich später ändern. Aber wie habe ich das gemacht? Hier haben wir das Rendern der Nachrichten, und wir haben die Nachricht hier im Map-Callback natürlich als Parameter Und dann ist der zweite Parameter der Index, und wir überprüfen einfach, ob Index Mod Zwei gleich Null ist, was bedeutet, dass der Index durch zwei teilbar ist Dann ist die Hintergrundfarbe gelb, und wenn sie nicht durch zwei teilbar ist, wenn sie ungerade ist, dann ist sie grün Also erhalten gerade Indizes die gelbe Hintergrundfarbe und ungerade Indizes die grüne Und das ist das Ergebnis hier. Immer noch nicht sehr hübsch, aber wir können zwischen benutzergenerierten Nachrichten und sprachmodellgenerierten Antworten unterscheiden . Das ist also viel besser. Kannst du JS-Code schreiben? Und lassen Sie uns die Antwort überprüfen. Ja, ich kann dir mit JavaScript-Code helfen. Das ist nett. Gut zu wissen. Wenn wir also Hilfe benötigen, können wir das Sprachmodell fragen. Okay, das ist also besser. Immer noch nicht hübsch, wir müssen eine Lücke zwischen den Nachrichten einrichten, um es ein bisschen hübscher zu machen Okay, das ist einfach. Wir stylen das hier auf Div, sodass es Display-Flex hat. Und die Flex-Richtung wird die Spalte sein und wir fügen hier eine Lücke von, sagen wir, acht Pixeln hinzu. Das muss natürlich ein Doppelpunkt sein. Jetzt ist es richtig. Okay, lass es uns überprüfen. Wie geht's dir? Senden. Wir sehen hier bereits eine Lücke. Kannst du programmieren? Jetzt etwas kürzer. Kannst du programmieren? Ja, ich habe Programmierkenntnisse. Okay. Also das sieht besser aus. Und wir können auch den Randradius ändern, vielleicht um runde Ecken zu machen. Ähm, versuchen wir es mit vier Pixeln. Wie geht's dir? Diesmal reicht wohl eine Frage. Ja, es ist ein bisschen besser. Aber dann brauchen wir hier auch Polsterung. Also Brettradius, vier Pixel und Polsterung. Vielleicht auch vier Pixel . Wie geht's dir? Ja, sieht viel besser aus. die Farben sind immer noch hässlich, wir können sie später ändern. Aber das ist viel besser. Sie können klar zwischen Benutzernachrichten und Sprachmodellnachrichten unterscheiden . Das ist gut. Und eine weitere Sache, die ich verbessern möchte , ist , dass wir hier einfach Enter eingeben können, um die Nachricht zu senden, nicht nur, indem wir hier auf die Schaltfläche klicken, sondern auch, indem wir Enter eingeben. Also, wie geht es dir? Und dann würde Enter senden? Wir müssen zur Eingabe gehen und dann die Taste runter drücken und dann hier einen Handler, und dann hier einen Handler der das Gleiche macht wie dieser Onclick Also müssen wir das On-Click hier in eine separate Funktion extrahieren On-Click hier in eine separate Funktion Also Nachricht senden wird der Name der Funktion sein. Nachricht senden. Diese Funktion sollte asynchron sein, eine Synchronisation Okay. Und dann können wir das durch Nachricht senden ersetzen. Das ist okay. Und wenn Sie die Taste gedrückt halten, wird auch Nachricht senden aufgerufen. Aber bevor wir Send Message aufrufen, müssen wir überprüfen, ob es sich bei der Taste um die Enter-Taste handelt. Okay, also wenn die Event-Taste gleich Enter ist, sollten wir das wohl überprüfen Das ist wahr. Wir haben Nachricht senden angerufen. Wir könnten hier ein Gewicht verwenden, aber da es danach keinen Code mehr gibt, nützt es nichts. Also das Gleiche hier. Wir könnten auch, wenn wir etwas anderes machen wollen bevor wir das hier tun können. Erstellen Sie eine separate Handler-Funktion. Das ist nur der Aufruf von Send Message. Okay, lass uns überprüfen , ob das funktioniert. Wie geht's dir Enter? Okay, es funktioniert nicht. Wir können hier debuggen. Also hier haben wir unsere Komponenten, Index JSX, und wo haben wir hier die Funktion Nachricht senden? Okay. Aber ich denke, wir müssen hier den Breakpoint setzen und dann Enter, Enter drücken Okay, geben Sie also mit einem E ein. Okay, das sollte funktionieren. Okay, nochmal, weitermachen und neu laden. Wie kommst du rein, scheint zu funktionieren. Wir müssen uns um diese Warnung kümmern . Außerdem sollte jedes Kind auf der Liste ein einzigartiges Schlüsselrequisit haben. Dies ist eine Reaktionswarnung. Ja, ich habe schon gesagt, was wir tun müssen, Messages Map. Also haben wir den Index hier, und wir können den Index für den Schlüssel nehmen. Schlüssel ist also gleich Index, und das sollte die Warnung hier beseitigen Wie kommst du rein. Ja, sehr nett. Die Warnung ist weg und wir haben unseren Enter-Tastenhandler okay. Das ist es also für dieses Video. Ich denke, ich werde die Farben ändern, und im nächsten Video hast du hier eine schönere Farbe. Wir sehen uns also im nächsten Video. 14. Zusammenfassung unserer ersten Chat-App: Wir haben gerade unsere erste Chat-Anwendung fertiggestellt und können über die Open AI-API mit dem Open AI-Sprachmodell chatten über die Open AI-API mit dem Open AI-Sprachmodell Ich habe die Benutzeroberfläche hier ein wenig verbessert. Ich habe das Eingabegefühl und die Schaltfläche hier zentriert und auch das ist hier zentriert. Die Nachrichten sind jetzt zentriert und die Farben sind etwas weniger hässlich, würde ich sagen, aber wir haben eine funktionierende Chat-Anwendung. Sie können hier nette und informative, ich hoffe, Gespräche mit dem Open-AI-Sprachmodell führen, ja, aber Sie können sich natürlich auch in vielen Punkten verbessern . Sie können das Design natürlich verbessern. Wie Sie hier sehen können, gibt es zum Beispiel noch einige Dinge zu verbessern. Jetzt muss ich hier nach unten scrollen , um den Text, die nächste Nachricht, einzugeben. Das ist nicht sehr nett. Das sollte also unten bleiben und du solltest nur die Nachrichten durchblättern. Dies ist ein Beispiel, oder Sie können die Benutzeroberfläche auch verbessern indem Sie Schaltflächen zum Kopieren der Nachrichten in die Zwischenablage einfügen Sie können es natürlich auch so machen. Knöpfe wären schöner. Sie können eine Liste von Chats vergangener Chats haben, von alten Chats, wie Chat GPT nebenbei hat, und natürlich können oder müssen Sie die Chats auf dem Server in einer Datenbank speichern, Sie können sie dem Benutzer zur Verfügung stellen, und Sie können natürlich auch den Benutzer anmelden und seinen eigenen Chat-Verlauf haben und viele Personen gleichzeitig auf Ihren Chat-Server zugreifen Ihre Chat-Anwendung und so weiter und so weiter. Es gibt viele Dinge, die verbessert werden müssen. nächste Anwendung wird keine allgemeine Chat-Anwendung sein, sondern etwas Spezifischeres, und wir werden mehr Funktionen der OpenAI-API nutzen, und Sie werden lernen, wie man die Systemaufforderung benutzt, Sie werden lernen, wie man Funktionsaufrufe mit dem Sprachmodell durchführt und Aber dies ist unsere erste Anwendung, und ich denke, sie ist ziemlich brauchbar. Sie können hier gerne alles verbessern, was Sie möchten. Wir sehen uns im nächsten Video. 15. Neue App: Chatte mit NPCs in einem Text-Adventure-Spiel: Okay, ich hoffe, du bist bereit für unsere neue App, und die neue App wird natürlich einen Chat enthalten, aber dieser wird Teil eines Abenteuers oder eines RPG-Spiels sein Und wir nutzen den Chat um mit den NPCs im Spiel zu chatten Du hast also ein Abenteuerspiel oder ein Rollenspiel. In diesem Fall handelt es sich um ein Abenteuerspiel, bei dem Sie bestimmte Aufgaben erfüllen und einige sehr einfache Rätsel lösen müssen bestimmte Aufgaben erfüllen und einige sehr einfache Rätsel lösen Wir werden unsere frühere Chat-Anwendung oder allgemeine Chat-Anwendung als Ausgangspunkt verwenden unsere frühere Chat-Anwendung oder allgemeine Chat-Anwendung als und die React-Benutzeroberfläche an das Spielszenario anpassen die React-Benutzeroberfläche an das Spielszenario Zunächst müssen wir eine sehr einfache Abenteuerspielumgebung einrichten, eine sehr einfache Abenteuerspielumgebung in der wir verschiedene Orte besuchen, einfache Aktionen ausführen und mit NPCs mit Charakteren im Spiel chatten können , NPCs mit Charakteren im um Rätsel und Quests zu lösen. In dieser App oder in diesem Spiel besteht die Herausforderung also darin, das KI-Sprachmodell so einzurichten, dass es sich wie ein bestimmter Charakter verhält, z. B. ein Barkeeper in einer Bar oder ein Wissenschaftler oder ein Krieger oder was Unser erster Schritt wird also eine grundlegende Spielumgebung zu schaffen, die für unseren Anwendungsfall sehr einfach sein wird, einfach den Chat darin zu integrieren und die KI-Charaktere bestimmte Informationen preisgeben zu lassen die KI-Charaktere bestimmte Informationen preisgeben und zu verraten ob ein Rätsel gelöst ist oder nicht, und dann kann das Spiel in die eine oder andere Richtung weitergehen. Also habe ich hier schon ein bisschen Bootstrapping gemacht. Ich habe unsere Benutzeroberfläche in zwei Komponenten aufgeteilt, den Index und die Chat-Komponente Die Chat-Komponente ist im Grunde unsere alte Chat-Benutzeroberfläche, die die Nachrichteneingabe, die Schaltfläche zum Senden und den Chat-Verlauf enthält Schaltfläche zum Senden und den Chat-Verlauf , und natürlich auch die Funktionalität , das Abrufen der KI-Antwort und so weiter Und der Index JSX ist jetzt der Rest, die Spielmechanik und die Summenschaltflächen, ein Div, das die Beschreibung des aktuellen Standorts enthält das die Beschreibung des aktuellen Und hier haben wir die Befehlstasten. Im Moment sieht es also so aus, sehr, sehr einfach. Hier haben wir unsere Chat-Komponente, die fast ausschließlich unsere alte Chat-Anwendung ist, jetzt aber als Komponente. Und hier haben wir unsere Schaltflächen für Befehle, und das ist die Beschreibung des aktuellen Standorts. Hier haben wir also unseren Chat-Punkt JSX, der die gesamte Chat-Benutzeroberfläche enthält, und hier haben wir unsere Beschreibung des aktuellen Standorts Hier die Befehlsschaltflächen, Navigation zu den verschiedenen Orten Sie können nach Norden, Westen, Osten, Süden gehen. Du kannst mit jemandem reden. Du kannst etwas nehmen oder du kannst einen Gegenstand benutzen, den du schon hast. Und natürlich müssen wir das um eine Liste von NPCs erweitern, mit denen du sprechen kannst, oder Gegenständen, die du mitnehmen kannst, oder Gegenstände in deiner Ventry , die du hier sprechen kannst, oder Gegenständen, die du mitnehmen kannst verwenden kannst Aber im Moment ist das Einzige, was irgendwie funktioniert, die Navigation Also kannst du das nachladen, wir können nach Osten gehen. Das ist das einzige, was im Moment funktioniert. Also ist nur diese Schaltfläche hier aktiviert, die anderen sind deaktiviert, also kann ich nach Osten gehen, und dann ändert sich die Beschreibung hier. Das ist natürlich staatlich geregelt. Aktuelle Standort-ID, der Anfangswert ist eins, und er wird aktualisiert, wenn auf die Schaltfläche Go East geklickt wird Das ist hier drüben, stelle die aktuelle Standort-ID ein, und hier haben wir unseren aktuellen Standort mit dem Punkt Exit East, der das D des nächsten Standorts enthält Und wir haben die statischen Spieldaten in einer anderen Datei. Das ist diese Datei und das exportiert dieses Spieldatenobjekt hierher. Und drinnen haben wir Standorte, momentan drei Standorte. Und diese heißen erster Raum, zweiter Raum und dritter Raum. Und wir haben die Ausweise, angefangen mit ID eins, das ist der Startraum, und dann können wir nach Osten gehen, Ausgang Ost ist zwei. Das ist die ID dieses Raums. Dies ist der zweite Raum, und hier können Sie auch nach Osten in den dritten Raum gehen, und das ist es im Moment. Um die Beschreibung des aktuellen Standorts hier wiederzugeben, müssen wir den aktuellen Standort innerhalb der Speicherorte der Spieldaten finden . Wir finden es mit der aktuellen Standort-ID, also haben wir den aktuellen Standort. Und hier drucken wir die Beschreibung des aktuellen Standorts aus. Das war's also für den Moment. Wir haben nur diese einfache Navigation. Wir haben unsere statischen Spieldaten, unsere Beschreibung des Spiels oder das Layout. Ja, und im Moment nichts weiter. Wir haben keine Geschichte, also müssen wir uns eine gute Geschichte einfallen lassen und natürlich gute NPCs, mit denen sie sprechen können, und irgendein Rätsel, irgendeine Art von Quest, die der Spieler lösen muss Okay, das war's für dieses Video und wir werden im nächsten weitermachen 16. Einführung der Geschichte: Okay, ich habe mir eine Kurzgeschichte ausgedacht und das Rätsel für ein Abenteuerspiel ist sehr kurz weil es hier nicht darum geht, ein Abenteuerspiel zu programmieren, sondern darum, KI in ein Spiel zu integrieren und Funktionen wie Funktionsaufrufen und Systemaufforderungen usw. zu nutzen Funktionen wie Funktionsaufrufen und die KI, das Sprachmodell , eine Rolle in einem Spiel, einem Rollenspiel oder in einem Abenteuerspiel spielen zu lassen das Sprachmodell , eine Rolle in einem Spiel, einem Rollenspiel oder in einem Abenteuerspiel spielen Das Abenteuerspiel spielt also in der fernen Zukunft. Es ist 21.30 Uhr und wir sind im Weltraum landen auf einem Planeten namens Siperd Als wir ankommen, stoßen wir auf einen Ort mit einer Bar, einem Geschäft und einem Sicherheitsroboter , der es uns nicht erlaubt, ohne einen Passcode vorbeizukommen Und um am Roboter vorbei zu kommen, müssen wir dieses Rätsel lösen, die Aufgabe, die wir lösen müssen. Wir müssen einen Weg finden, den Roboter so zu überlisten, dass er uns passieren lässt. Und in der Bar erzählt uns der Barkeeper, was die Gäste sind Er weiß in der Bar und unter den Gästen ist ein KI-Spezialist, der auch viel über Roboter weiß, und er könnte uns helfen, wenn wir ihm eine Nachfüllung für sein Space Ale kaufen ihm eine Nachfüllung für sein Space Also kaufen wir ihm das neue Space Ale und er gibt uns einen speziellen Befehl, dass wir den Roboter können und der Roboter wird uns dann passieren lassen Und das ist das Ende der Geschichte oder das Ende der Suche und des Rätsels. Es ist ziemlich kurz, aber wir müssen mit zwei NPCs sprechen, zuerst mit dem Barkeeper und der zweite mit dem KI-Spezialisten Und wir könnten vielleicht auch mit dem Roboter sprechen, aber vielleicht Vielleicht ist das nur eine normale Konversation , die vorgeschrieben ist. Mal sehen, wie weit wir kommen und was müssen wir tun? Wir müssen unsere Beschreibungen der Räume ein wenig erweitern . Wir haben drei Zimmer. Der erste ist der Startort, und das wird der Ort sein, an dem wir eine Bar, ein Geschäft sehen und der Roboter und der Roboter lässt uns nicht nach Osten gehen und wir können nach Norden in die Bar gehen, und wir können nicht nach Westen und dann nach Süden gehen. Und wir können natürlich mit dem Roboter sprechen, und wir können in der Bar zuerst mit dem Barkeeper sprechen Das ist unser Plan, und wir müssen hier einige Beschreibungen einfügen Und ja, das wird der erste Ort sein , an dem wir all die anderen Orte und den Roboter sehen können all die anderen Orte und wo wir in die Bar gehen können, und wir können versuchen, in den Osten zu gehen, weil wir es versuchen, weil der Roboter uns zuerst nicht passieren lässt. Das Einzige, was wir am ersten Ort tun können , ist in die Bar zu gehen, und das wird der Ausgang Nord sein und ja, das wird der dritte Raum sein, der beschrieben wird, wird eine Bar sein. Mir fällt etwas anderes ein, aber zuerst siehst du eine Bar. Bis jetzt, vom Startplatz bis zum Startort, siehst du eine Bar, ein Geschäft und einen Sicherheitsroboter, und einen Sicherheitsroboter der den Ausgang nach Osten bewacht Die notwendigen Informationen benötigen wir. Und die zweite wird sein, ich weiß nicht, vielleicht stehst du vor einem Weltraumhafen, so etwas. Es spielt keine Rolle. Dies ist der Raum oder Ort, zu dem wir gelangen, wenn wir am Roboter vorbeikommen. Und der dritte ist die Bar. Wir können nach Norden zur Bar gehen. Also lass uns nachschauen, ob wir nach Norden gehen können. Wir können wirklich nach Norden gehen? Wir sehen uns eine Bar an, aber das funktioniert nicht. Ein Barladen in einer Sicherheitsstraße. Also sollte das hier eine Bar sein, wenn wir nach Norden gehen. Die Schaltfläche ist aktiviert, aber glaube, wir haben hier keinen On-Click-Handler ich glaube, wir haben hier keinen On-Click-Handler. Also geh nach Norden. Ja, wir brauchen hier den On-Click-Handler. Okay, legen Sie die aktuelle Standort-ID verlassen Sie North, natürlich. Und das sollte funktionieren. Ja, eine Bar. Ja, jetzt, wo wir die Geschichte haben, werde ich die Beschreibungen hier ein wenig verbessern. Und dann versuchen wir im nächsten Video, den Chat für den Barkeeper zu implementieren, also müssen wir zuerst in die Bar gehen und dann müssen wir mit dem Barkeeper sprechen, und das wird im nächsten Video geschehen 17. Vorbereitung der Quests: Also habe ich mich hier ein bisschen auf die Quests vorbereitet hier ein bisschen auf die Quests und die Bewachung des Ostausgangs eingeführt Wenn du also jetzt auf Go East drückst, bekommst du eine Meldung , dass das nicht möglich ist weil der Roboter nach einem Passcode fragt und du keinen hast Also hier hast du die Nachricht. Und das ist einfach ein Div , in dem wir Spielnachrichten wie diese ausgeben können. Ich habe auch, wie Sie hier sehen können, die Beschreibungen der Standorte verbessert . Okay, schauen wir uns an, wie ich das mit Go East und dem Check gemacht habe , bevor der Charakter in den Osten wechseln kann. Also haben wir die Spieldaten und die neuen Beschreibungen hier etwas ausführlicher. Und es gibt noch einen anderen Raum das ist der Laden. Ich bin mir nicht ganz sicher, ob der Charakter, der Spieler hier etwas tun muss, aber wir könnten vielleicht eine Quest machen, dass er hier etwas kaufen muss, um weitermachen zu können. Aber lass uns entscheiden, dass du später im Moment in den Westen gehen und dann den Laden betreten kannst, bekommst du die Beschreibung und das ist alles. Aber du kannst nicht aussteigen , weil es hier keinen Ausgang nach Nordwesten gibt, was auch immer. Du steckst also dort fest. Aber damit werden wir uns später befassen. Lassen Sie uns zunächst überprüfen, wie ich überprüft habe ob der Spieler in den Osten gehen kann oder nicht. Das liegt daran, dass ich diese Funktion hier vor dem Verlassen von Ost aktiviert habe und diese Funktion Spiellaufzeitdaten abruft und die Laufzeitdaten aus Quests bestehen Dies ist ein Bereich von Objekten. Jedes Objekt hat eine ID, die mehr oder weniger dem Namen der Quest entspricht, und eine Bool-Flag , ob die Quest, die Aufgabe abgeschlossen ist oder nicht Und immer, wenn eine Aufgabe abgeschlossen ist, wird sie aktiviert. Stimmt natürlich, und hier im On-Click-Handler der Schaltfläche „Ost verlassen“ werden wir das überprüfen lassen. Also überprüfe ich, ob für den aktuellen Standort Funktion On before Exit East definiert ist, und falls ja, rufe ich sie mit den Laufzeitdaten des Spiels auf. Dies wird die Quests und den Abschlussstatus der Quests enthalten den Abschlussstatus der Quests Dann überprüfe ich hier den Rückgabewert dieser Funktion, und wenn der Rückgabewert vor dem Prüfpunkt K wahr ist, dann ist die Quest wirklich abgeschlossen, und wir können hier zum nächsten Ort zum Standort Exit East gehen zum Standort Exit East Und wenn nicht, zeigen wir diesen Noto-Text. Also können wir hier zur Funktion On before Exit East zurückkehren und sie hier noch einmal überprüfen Ich versuche, die Quest zu finden , indem ich lerne, wie man an einem Roboter vorbeikommt, und das ist das Questobjekt, und ich werde die Quest am Punkt abgeschlossen haben. Und ein weiterer K-Text ist der Roboter. Und was einen Passcode angeht, bevor wir Sie passieren lassen. Das wird jetzt angezeigt. Wir können also für jede Richtung eine On-Before-Exit-Funktion haben , die prüft, ob wir wirklich diese Richtung gehen können oder ob vorher eine Quest erfüllt werden muss. Du kannst also auf die Taste drücken, aber sie lässt dich nicht los, sondern zeigt stattdessen diesen Text an, und dieser Text befindet sich direkt unter den Befehlsschaltflächen hier, es ist nur ein Div, und die Spielnachricht ist natürlich ein Status. Und hier verwenden wir state mit einer leeren Zeichenfolge und dann game message und set game message. Und wann immer wir diesen Nook bekommen, setzen wir die Spielnachricht auf Nook-Text Und das ist der Rückgabewert dieser Funktion On Before Exit East Okay, also so habe ich es gemacht. Und was natürlich fehlt, ist, dass wir in die Bar gehen können. Wir können natürlich schon an die Bar gehen. Und wir bekommen hier auch eine schönere Beschreibung. Sie gehen in die Bar und sehen sofort die Theke und den Barkeeper dahinter Die Bar ist nicht sehr überfüllt und es sind nur drei weitere Gäste hier. Hier müssen wir natürlich das Gespräch mit dem Barkeeper umsetzen , aber wir könnten auch mit anderen Gästen sprechen Also brauchen wir eine Art Drop-down-Menü und wählen, vielleicht wählen wir hier Optionen aus, um den Chat-Partner auszuwählen Zuerst müssen wir natürlich mit dem Barkeeper sprechen natürlich mit dem Barkeeper Vielleicht können wir das vorerst einfach überspringen und hier einfach einen On-Click-Handler machen , der sofort den Chat hier mit dem Barkeeper startet, und dann können wir den unteren Teil unserer Benutzeroberfläche verwenden , um mit dem Barkeeper zu chatten. das tun wir, und wenn wir später mit einer anderen Person, einem anderen Gast, sprechen müssen, können wir hier ein Drop-down-Menü einrichten, können wir hier ein Drop-down-Menü um zu bestimmen, mit welcher Person wir sprechen möchten Aber lass uns das im nächsten Video machen. 18. Erster Ai-Chat: Ordnung. Jetzt können wir unseren ersten Chat mit dem Barkeeper in der Bar beginnen, und ich habe den Code vorbereitet, um das zu ermöglichen Wenn ich also die Seite neu lade und dann nach Norden in die Bar gehe, kann ich auf Sprechen mit drücken, kann ich auf Sprechen mit drücken, und dann heißt es in der Spielnachricht hier , dass du mit dem Barkeeper sprichst, und ich kann Also möchte ich natürlich einen Drink bestellen. Ich brauche einen Drink. Das ist unsere alte Implementierung des allgemeinen Chats mit dem Sprachmodell. Okay, es antwortet. Ich kann einige alkoholfreie Getränke vorschlagen. Aber ich möchte ein Leerzeichen A. Und mal sehen, was es beantwortet. Okay? Dauert ein bisschen. Ah, ich sehe, du suchst nach einem Getränk zum Thema Weltraum. Ah, hier ist ein lustiges Rezept für Galactic Gazer Mocktail. Okay. Okay, es beantwortet also irgendwie das, was wir wollen. Aber jetzt sagt es uns, wie man ein Getränk mixt, aber ich bin in einer Bar und ich dachte, der Barkeeper würde das Getränk nicht für uns oder für mich mixen und es mir dann servieren Ja, sehen Sie, die KI ist nicht darauf vorbereitet, eine Rolle als Barkeeper zu spielen, und genau das müssen wir tun Aber lassen Sie uns zuerst überprüfen, was ich getan habe , um den Chat hier zu initiieren Okay, also lass uns die Seite neu laden. Wir gehen nach Norden und schauen, lass es uns noch einmal neu laden. Ich war nicht in der Bar oder wenn ich nicht in der Bar bin, kann ich mit niemandem sprechen Ich kann nehmen, ich kann es benutzen, aber es nützt nichts, weil es dort keinen Click-Handler gibt. Es gibt jetzt einen Klick-Handler auf der Sprechmit-Schaltfläche, aber ich kann ihn nicht anklicken, weil er deaktiviert ist. Also, wie funktioniert das? Gehen wir zu den Spieldaten und wir sehen in der Leiste die Position, wir haben natürlich eine nette Beschreibung und wir haben NPCs , also eine Reihe von Objekten Darin befindet sich eine ID, und die ID ist Barkeeper Damit können wir feststellen, ob es an diesem Ort jemanden gibt, mit dem wir sprechen können, und es gibt nur in der Bar das Array des NPCs, und wir können damit kontrollieren, ob die Sprechtaste deaktiviert Okay, hier ist es deaktiviert, entspricht nicht der Zählung Standorts. Die Punktlänge des Fragezeichens des NPCs ist größer Das heißt, wenn wir kein NPC-Array haben oder wenn das NPC-Array leer ist, dann wird diese Schaltfläche deaktiviert, und wenn sie etwas enthält, dann wird sie dann Der onClick-Handler ist nur ein Aufruf Chat zu starten, was eine neue Funktion ist Wir schauen uns das jetzt an und es gibt einen Parameter, der eine Zeichenfolge ist, der Barkeeper Okay, lassen Sie uns die Funktion überprüfen, Chat starten und sie erhält den Parameter hier in der Variablen talk to Das erste, was sie tut, ist Chatten auf True zu setzen . Chatten ist natürlich ein anderer Zustand, mit use state here to folds initialisiert wurde Und wenn wir einen Chat starten, setzen wir ihn auf „true“, und das wird verwendet, um die Befehlsschaltflächen zu deaktivieren Das ist also hier im Befehlsstil, und wir setzen die Zeigerereignisse Keine“, wenn wir chatten, und wenn wir nicht mit allen chatten, setzen wir auch die Deckkraft auf Null Punkt fünf oder eins, wenn Sie nicht chatten Du kannst also sehen, wir gehen nach Norden, reden mit, dann ist das irgendwie deaktiviert Es ist kein deaktiviertes Attribut, aber es sieht deaktiviert aus und du kannst es nicht anklicken. Für mich ist das also genug. Und das hier ist aktiviert und wir können den Chat starten. Dies geschieht, indem das Chat-Bool , um die Chat-Komponente anzuzeigen, oder wenn es falsch ist, wird der Chat natürlich nicht gerendert Okay, so beginnen wir unseren Chat mit dem Barkeeper Aber das Problem ist, wie Sie gesehen haben, dass das Sprachmodell nichts über unser Spiel weiß, über das Setting, dass es die Rolle eines Barkeepers spielen sollte Also müssen wir ihm sagen , dass es die Rolle eines Barkeepers in einem Weltraumabenteuerspiel spielen soll die Rolle eines Barkeepers in einem Weltraumabenteuerspiel Das machen wir also im nächsten Video. Und dafür müssen wir ja, hier unseren Aufruf zur Open AI API in diesem Jahr ein wenig ändern . Also müssen wir den Nachrichten etwas hinzufügen, nämlich die Systemaufforderung, und die Systemaufforderung bereitet das und teilt dem Sprachmodell mit , dass es sich auf eine bestimmte Weise verhalten oder eine Rolle spielen soll , indem es die Rolle beschreibt, die Situation, die Umgebung Und genau das machen wir im nächsten Video. Siegel 19. Einrichten der Bühne mit der Systembotschaft: Okay, in unserem letzten Video haben wir eine interessante Beobachtung zum Sprachmodell gemacht . Es war nicht ganz sicher, welche Rolle es in dem von uns vorgestellten Szenario spielen sollte. Am Ende wurde standardmäßig die Rolle eines KI-Assistenten anstelle des Barkeepers übernommen, den wir für unser SciFi-Abenteuerspiel im Sinn hatten Aber das ist natürlich keine Überraschung, denn wir haben keinen Kontext angegeben oder eine Rolle für das Sprachmodell spezifiziert Um das Sprachmodell zu steuern und dafür zu sorgen, dass es sich anders verhält, dass es anders reagiert, müssen wir eine Systemaufforderung verwenden. Und eine Systemaufforderung ist im Grunde eine Nachricht mit einem Rollensystem, nicht der übliche Benutzer oder Assistent. Und mit der Systemaufforderung können wir klar definieren, wie das Model auf die Chat-Nachrichten reagieren soll , und die spezifische Rolle übernehmen soll, die wir uns vorstellen, in diesem Fall der Barkeeper Indem wir also eine richtige Systemaufforderung einrichten, können wir dem Model helfen, dieser Barkeeper zu sein Wir wollen, dass es in unserem Abenteuerspiel ist. Wie können wir das machen? Die erste Nachricht im Nachrichtenarray sollte die Systemaufforderung sein, und es ist nur eine normale Nachricht mit Rollensystem. Also hier haben wir es. Wenn wir eine neue Chat-ID haben, die sich von der alten unterscheidet, haben wir Nachrichten an dieses Array gesendet, und innerhalb dieses Arrays ist dieses nicht leer. Ich habe eine neue Nachricht mit dem Rollensystem hinzugefügt, und das ist das System. Der Inhalt bereitet die Bühne für unseren Barkeeper vor und beschreibt, wie die Situation ist und wie er sich verhalten sollte Ich habe mir eine Systemaufforderung ausgedacht und sie ein bisschen getestet, also denke ich, dass es ganz okay ist, aber Sie können natürlich einige Änderungen ausprobieren und ein bisschen experimentieren, wie sich das Verhalten ändert, vielleicht können Sie es ein bisschen verbessern Aber ich denke, das ist ganz okay und der Inhalt ist, dass du in einem Science-Fiction-Textabenteuer die Rolle eines Barkeepers in einer Bar , im Jahr 21 60 Ich glaube, im Jahr 21 60 ist es nicht 21 Ich glaube, es ist 21 30, aber das ist sowieso egal. Der Spieler chattet mit dir und du solltest alle Fragen oder Fragen beantworten , die er hat. Beantworten Sie die Frage in direkter Sprache als ob Sie wirklich der feste Barkeeper wären. Dadurch soll sichergestellt werden, dass er irgendwie die Rolle des Barkeepers übernimmt In der Bar sind im Moment drei Gäste. Das ist also die Vorbereitung der Gäste. Und wenn wir dann den Barkeeper als Spieler fragen , was sind die Gäste In der Bar sollte er hier über diese drei Gäste sprechen. Der erste ist ein Ingenieur aus der Mars-Kolonie, der über neue Verbesserungen nachdenkt, an denen er für die Formierung arbeitet. Der zweite ist ein Händler darauf wartet, dass ein Kunde mit seltenen Mineralien handelt. Und der dritte ist wichtig, weil der dritte ein KI-Spezialist ist. Dieser mag es, sich nach einem langen Arbeitstag zu entspannen , indem er etwas verdünntes Bier trinkt, syntaktisch raten Sein Name ist Doktor Owen und er arbeitet für Cyberdin Cyberdin, einen der größten Megakonzerne einen Er hat immer Lust auf etwas verdünntes Bier, und im Moment ist sein Glas fast leer, was für den Spieler ein Hinweis ist Er kennt sich gut mit Themen rund um KI und Okay, und zum Schluss haben wir noch diesen Hinweis, haben wir noch diesen Hinweis falls der Spieler nach Doktor Owen fragt. Sag ihm, dass er mit größerer Wahrscheinlichkeit mit dem Spieler sprechen wird , wenn er eine Nachfüllung bekommt Der Plan ist also, dass der Spieler nach den Gästen fragt und die Barkeeper diesen drei Gästen hier erzählen Und der KI-Spezialist ist derjenige, mit dem wir sprechen sollten, und er braucht Nachschub Also, wenn du ihm einen Drink kaufst, dann wird er mit uns reden und uns vielleicht helfen , an dem Sicherheitsroboter vorbei zu kommen Okay, das ist also die Systemaufforderung. Wie gesagt, du kannst ein bisschen damit spielen und es verbessern oder komplett ändern . Wenn du eine andere Geschichte und einen anderen Charakter, anderen MPC hast, dann kannst du es nach Belieben ändern Du solltest sicherstellen, dass die Rolle klar ist, dass die Fälle, von denen du möchtest, dass das Model weiß, dass du diese Fälle beschreibst, zum Beispiel diesen Fall hier. Wenn der Spieler nach Doktor Owen fragt, solltest du ihm sagen, dass er eine Nachfüllung braucht und er eher mit dem Spieler spricht Falls er einen bekommt. Also diese Art von Hinweisen sollten Sie dem Modell geben , um sicherzustellen, dass sich das Modell so verhält, wie Sie es möchten Und ich denke, wir können es jetzt ausprobieren. Okay, also lass uns in die Bar gehen, nach Norden gehen. Und dann können wir mit dem Barkeeper sprechen. Du sprichst mit dem Barkeeper. Ich sage ihm, Hallo Kann ich etwas trinken? Natürlich, was hättest du gerne? Wir haben eine große Auswahl an Getränken. Okay. Also, was haben Sie zur Inspiration? Wenn Sie nach etwas suchen , mit dem Sie Ihre Kreativität in Schwung bringen können, empfehle ich Ihnen unser spezielles Gebräu namens Eureka Elixir Es ist eine Mischung aus seltenen Kräutern und Pflanzen, von denen gesagt wird, dass sie den Geist anregen und Inspiration anregen Möchtest du es ausprobieren? Ja, bitte. Okay. Gute Wahl. Ein Eureka Alixir kommt gleich . Okay. Kannst du mir etwas über die anderen Gäste erzählen? Sicher, und er spricht mit einigen interessanten Personen über die anderen Gäste, diesem Typen aus der Marskolonie, Billardtisch, Händler. Okay, zu guter Letzt haben wir Doktor Owen und einen Spezialisten, der für Cyberden arbeitet Er ist Stammgast hier und entspannt sich gerne nach einem langen Arbeitstag Durch etwas Synth Ale kennt er sich mit Themen rund um KI und Robotik gut mit Themen rund um KI und Wenn Sie mehr über KI und Fortschritte erfahren oder eine Diskussion über die Zukunft der Okay. Ähm, wir wollen wissen, wie man an einem Roboter vorbeikommt. Aber wie dem auch sei, Doktor Owen ist Ihr Ansprechpartner. Wenn es jemanden gibt über den Sie mehr erfahren möchten, lassen Sie es mich einfach wissen. Okay? Er erwähnt hier nicht, dass er eine Nachfüllung braucht, aber ich kann fragen Ich würde gerne mit Doktor Owen sprechen . Vielleicht sagt er mir jetzt , dass er eine Nachfüllung braucht. Äh, huh. Sein Glas ist fast leer. Okay, hier haben wir es. Im Moment ist sein Glas jedoch fast leer und er neigt dazu, gesprächiger und aufgeschlossener zu sein , wenn er etwas nachfüllt Wenn Sie ein Gespräch mit ihm führen möchten, schlage ich vor, ihm noch ein Glas zu besorgen Soll ich das für dich holen? Ja, bitte. Okay. Also gut, ein Glas Thin Ale kommt gleich nach oben. Bitteschön. Frisch eingegossen für Doktor On. Jetzt, wo er Nachschub hat, können Sie sich an ihn wenden und ein Gespräch beginnen Das ist sehr nett. Denken Sie daran, dass er wohlüberlegte Diskussionen schätzt Okay, wir werden also eine gründliche Diskussion über Sicherheitsroboter führen und darüber, wie man sie dazu bringt, uns durchzulassen Sicherheitsroboter führen und darüber, wie man sie dazu bringt, uns durchzulassen Okay, das ist also nett. Das Gespräch war okay, glaube ich, für einen Barkeeper in einem Cifer Adventure, und er erzählte uns auch die Sache mit dem Refill und Doctor Und okay, das Problem ist jetzt wir ihm quasi die Nachfüllung gekauft haben, aber wir wissen nicht, ob das oder im Spiel, wir wissen nicht, ob der Spieler das wirklich Also müssen wir herausfinden, ob der Spieler Doctor Own wirklich eine Nachfüllung gekauft hat Und im Moment ist das nicht möglich oder es ist ziemlich schwierig Weil wir den Chat hier analysieren müssten , um zu erraten, ob Doktor Owen vom Spieler eine Nachfüllung bekommt Hier müssen wir Funktionen verwenden , die im Sprachmodell ziemlich neu sind, nämlich die Fähigkeit, benutzerdefinierte Funktionen aufzurufen Und damit können wir wirklich feststellen, ob der Spieler wirklich die Nachfüllung für Doktor Owen gekauft hat und ob er diese Aufgabe wirklich erledigt und dieses Rätsel gelöst Aber im Moment ist das das Gespräch mit dem Barkeeper Okay, wie du bemerkt hast, vielleicht wird hier gescrollt, wir müssen hier die komplette Seite durchblättern Das ist nicht gut, also müssen wir uns auch darum kümmern. Aber das werden wir im nächsten Video machen. Wir sehen uns dann. 20. Funktions-Calling I: Okay, im letzten Video haben wir erfolgreich die Bühne für unseren KI-Barkeeper-Charakter bereitet Es benimmt sich also wie ein Barkeeper in einem Science-Fiction-Abenteuerspiel Aber das Problem am Ende war, dass wir nicht wirklich wissen wann der Spieler das Problem gelöst hat, die Quest gelöst hat, also ob der Spieler Doktor Own wirklich einen Drink gekauft hat, was die Lösung ist, der erste Schritt, um dann Doktor Own sprechen zu können Wir brauchen also eine Möglichkeit, vom Sprachmodell Feedback zu bekommen , dass der Spieler das Rätsel gelöst hat und dass er das Getränk für Doctor Own gekauft hat. Eine Möglichkeit, dies zu tun, und wahrscheinlich ist dies die beste Methode, besteht darin, die Sprachmodellfunktionen bereitzustellen , die es in bestimmten Situationen und in bestimmten Kontexten aufrufen kann . Dies wird auch verwendet, um Lebensinformationen anzufordern , beispielsweise Wetterinformationen oder Preisinformationen für Produkte. Wenn Sie beispielsweise möchten, dass das Sprachmodell Ihnen das aktuelle Wetter mitteilen kann, können Sie dem Modell eine Funktion zur Verfügung stellen, mit der das aktuelle Wetter als Standort abgerufen werden aktuelle Wetter mitteilen kann, können Sie dem Modell eine Funktion zur Verfügung stellen, mit der das aktuelle Wetter als Standort abgerufen kann. Wenn das Modell der Meinung ist, dass es angemessen ist, diese Funktion aufzurufen, wird es dies tun Wenn ich also mit dem Model chatte und nach dem aktuellen Wetter frage, wird es hoffentlich diese Funktion aufrufen, und unser Programm muss die Daten abrufen, die aktuellen Wetterdaten für einen bestimmten Ort und sie dann dem Modell zurückgeben, und dann kann das Model den Chat mit diesen Informationen abschließen den Chat mit diesen Informationen und dem Benutzer wahrscheinlich das aktuelle Wetter mitteilen. Also lass uns das für unseren Barkeeper hier machen, und ich habe das schon vorbereitet Wir haben also diese komplette Chat-Funktion, die wiederum die Openai Dot Create Chat-Abschlussfunktion aufruft die Openai Dot Create Chat-Abschlussfunktion Wir haben hier also das Modell, was wichtig ist, weil Sie dieses Modell im Moment einstellen müssen , da ältere Modelle keine Funktionsaufrufen verwenden können Bitte achten Sie also darauf, dass Sie hier genau dieses Modell angeben, und wir haben die Meldungen wie zuvor. Ist neu. Es ist eine Reihe von Objekten die Funktionen beschreiben, die das Sprachmodell aufrufen kann. Wir haben hier also diese eine Funktion. Der Name ist von Doctor On Drink. Das ist nur ein Name , um ihn später zu identifizieren. Wenn das Modell die Funktion wirklich aufruft, dann wissen wir, welche Funktion aufgerufen werden muss. Und das ist hier eine sehr wichtige Beschreibung , denn Sie müssen beschreiben, was diese Funktion macht , damit das Sprachmodell entscheiden kann, sie aufzurufen. Und die Beschreibung hier ist von Doctor On a drink or fill sein Glas Mal sehen, ob das funktioniert und ob das Sprachmodell diese Funktion wirklich aufruft Wir haben Parameter, was hier ein Unterobjekt ist, und wir haben hier im Grunde keine echten Parameter. Das ist also nicht so wichtig. Leg das einfach so rein. Im Moment haben wir keine Parameter. Wenn Sie jedoch beispielsweise eine Funktion zum Abrufen der Wetterinformationen für einen bestimmten Ort bereitstellen möchten , der wichtigste Parameter der Standort selbst, z. B. die Stadt oder das Land Also das haben wir bisher gemacht. Wir haben Funktionen bereitgestellt. Das Sprachmodell kann diese Funktion aufrufen, und wie ist es, wenn es diese Funktion wirklich aufruft? Woher wissen wir, dass ein Funktionsaufruf erfolgt? Das ist diese Zeile, ich antworte Nachricht , also eine vollständige Antwort auf den Index der Datenauswahl Nullpunkt, in der wir auch den Inhalt haben, und im selben Objekt können wir einen Funktionsunterstrich aufrufen Und wenn das definiert ist, protokollieren wir hier einfach den Funktionsaufruf Punktname in der Konsole In unserem Fall sollte der Funktionsaufruf Punktname von Doctor On Drink sein. Damit wir es testen können. Wir gehen in die Bar, sprechen mit dem Barkeeper und fragen direkt, ob der Barkeeper Doktor Owen etwas zu trinken geben kann Können Sie Doktor Owen in meinem Namen eine Nachfüllung geben? Und lassen Sie uns sehen, ob das Sprachmodell wirklich unsere neu bereitgestellte Funktion aufruft Sende und lass uns sehen. Hier gibt es keine Antwort. Das ist ein gutes Zeichen , denn mal sehen, ob das wirklich ausgedruckt ist. Okay, hier ist es also. Hallo, können Sie Doktor Ona in meinem Namen eine Rückerstattung geben? LLM-Funktion für ein großes Sprachmodell namens By Doctor Own Drink Das hat funktioniert. Das Sprachmodell ruft diese Funktion hier wirklich auf, und wenn es die Funktion aufruft, wissen wir, dass der Spieler Doctor Owner Drink kaufen wollte. Und ja, wir können damit umgehen. Wir können es an den Kunden senden und der Kunde kann es sich in einer Variablen merken, und dann kann diese Quest gelöst werden. Wir müssen hier also eine Antwort auf das Sprachmodell geben , sodass diese Nachricht in dieser Funktionsaufrufnachricht keinen Inhalt enthält. Deshalb wird hier nichts ausgedruckt, weil es keine Nachricht gibt, und es wird erwartet, dass die nächste Nachricht das Ergebnis dieses Funktionsaufrufs sein wird . Wir müssen also eine neue Nachricht für das Large-Sprachmodell bereitstellen , und dann kann es den Chat mit diesen Informationen abschließen , aber das wird im nächsten Video reichen. 21. Funktions-Calling II für das Ergebnis: Okay, in diesem Video beenden wir die Bearbeitung des Funktionsaufrufs und stellen das Sprachmodell, das Ergebnis des Sprachaufrufs , zur Verfügung, sodass der Chat mit seinem eigenen Inhalt abgeschlossen werden kann . Okay, hier haben wir also das Konsolenprotokoll mit dem Namen des Funktionsaufrufs. Und ich habe einen neuen Funktionsaufruf hinzugefügt und gebe ihm hier das Funktionsaufrufobjekt. Dies ist eine asynchrone Funktion, und sie gibt die Antwort, den Abschluss und den Abschluss des Chats des Sprachmodells mit den von uns bereitgestellten Daten zurück des Chats des Sprachmodells mit . Wie funktioniert sie? Lass es uns überprüfen. Es schiebt nur eine weitere Nachricht in das Array mit Rollenfunktion. Das ist wichtig. Das heißt also, oder das Sprachmodell kann dies als Ergebnis des Funktionsaufrufs interpretieren. Wir geben auch den Namen der Funktion an, Funktionsaufruf Punkt. Und der Inhalt ist, dass Doktor Owen vom Barkeeper eine Nachfüllung bekommt, lächelt und Und dieser Inhalt ist die Information, die das große Sprachmodell verwenden wird, um eine Vervollständigung zu generieren Und dann rufen wir hier einfach openi dot create chat completion mit unserem Nachrichten-Array und mit dem Modell auf, und ich habe auch eine Konstante mit dem Modell erstellt, weil wir zwei Standorte haben, die das Create Chat Completion nennen , und wir müssen hier natürlich dasselbe Modell verwenden, weil nur dieses Modell Funktionsaufrufen unterstützt , also bekommen wir hier die Antwort auf den Funktionsaufruf und dann extrahieren wir den Nachrichtendatenauswahlindex Nullnachricht Und das ist es, was hier zurückgegeben wird, und dann haben wir die Nachricht hier. Und diese Funktion gibt den Punktinhalt der Antwortnachricht zurück Dies ist der Text, den das Large-Sprachmodell fertiggestellt hat. Okay, also lass es uns ausprobieren. Ich lade hier nach. Geh nach Norden in die Bar, sprich mit dem Barkeeper Und dann frage ich nach den anderen Gästen. Was kannst du mir über die anderen Gäste erzählen? Und dann teilt es uns alle Informationen über die Gäste mit, die wir dem großen Sprachmodell in der Systemaufforderung gegeben die wir dem großen Sprachmodell in haben. Und zu guter Letzt haben wir Doktor Owen. Natürlich wollen wir mit ihm sprechen, aber die Nachfüllung wird nicht erwähnt Also werde ich dem Barkeeper sagen, dass ich mit Doktor Owen sprechen möchte Und hoffentlich sagt er mir , dass ich ihm einen Drink spendieren muss, klar Wie wäre es, wenn ich sein Glas nachfülle? Okay. Und diese Nachricht sollte das große Sprachmodell veranlassen , die von uns bereitgestellte Funktion aufzurufen. Okay, füllen Sie bitte das Glas von Doktor Owen auf und sagen Sie ihm, dass ich gerne mit ihm über Robotik und Sicherheit sprechen würde gerne mit ihm über Robotik und Sicherheit sprechen Okay, und jetzt sollte es hoffentlich unsere Funktion aufrufen. Okay, hier ist es. Ich fülle gerade Doktor Owens Glas nach Ich gehe rüber und sage ihm, dass du an einem Gespräch interessiert bist. Gib mir einen Moment. Okay, hey, Doktor Oh, ich habe hier jemanden, der gerne über Robotik und Sicherheit plaudern würde . Okay, wenn ich Sie vorstelle, Doktor Own schaut mit einem freundlichen Lächeln aus seinem Glas Absolut. Ich werde mich freuen, mit Ihnen zu sprechen. Bitte stell uns vor. Okay. Aber wir müssen überprüfen, ob die Funktion wirklich aufgerufen wurde. Lassen Sie uns also hier das Konsolenprotokoll überprüfen. Bitte füllen Sie das Glas von Doctor Owns nach. Okay, das ist es also. Und dann haben wir den Funktionsaufruf. Hier ist er. Rollenfunktion ist unsere Antwort. Name von Doktor Own Drink. Doctor Own darf nachfüllen. Das geben wir dem Sprachmodell als Antwort auf den Funktionsaufruf, und jetzt antwortet es mit Ich fülle einfach das Glas von Doktor Owns Okay, das ist sehr nett. Und jetzt müssen wir irgendwie mitteilen dem Kunden irgendwie mitteilen, dass diese Quest abgeschlossen ist, und dann müssen wir auch Lage sein, das Gespräch mit dem Barkeeper im Moment zu beenden das Gespräch mit dem Barkeeper im Moment Wir können nicht zum normalen Modus zurückkehren. Und wir bleiben jetzt im Chat und müssen uns überlegen, wie wir das Gespräch beenden können. Wir könnten einfach nach bestimmten Wörtern wie Beenden oder Verlassen oder so suchen und dem Spieler sagen, dass du den Chat mit dem Barkeeper beenden kannst, indem du Exit oder Quit oder was auch immer eintippst Oder wir könnten auch eine andere Funktion verwenden, um zu erkennen, wenn das große Sprachmodell erkennt, dass Spieler die Konversation beenden möchte , und dann die neue Funktion aufrufen , und dann wissen wir, Okay, also muss die Konversation jetzt beendet werden, der Chat muss jetzt beendet werden und wir kehren zum normalen Modus zurück. Ich denke, ich werde mich für die letzte entscheiden und eine neue Funktion einführen, Chat verlassen oder die Konversation verlassen, und hoffentlich ruft das Sprachmodell diese Funktion auf, und dann wissen wir, dass wir die Konversation beenden und zum normalen Modus zurückkehren können , und das wird im nächsten Video funktionieren. 22. Quest als abgeschlossen markieren: Okay, also in diesem Video wollen wir die Quest, Doctor On ein Getränk zu kaufen und uns auf den Chat mit Doktor On vorzubereiten, als abgeschlossen markieren , und das müssen wir am Kunden machen, also müssen wir diese Information irgendwie an den Kunden weitergeben. Und ich habe das schon gemacht, und so habe ich es gemacht. Wir haben hier den Handle-Funktionsaufruf , der hier in dieser „Ich antworte“ -Nachricht zurückgegeben wird . Der Funktionsaufruf ist nicht gleich undefiniert Und dann mache ich das hier, beantworte die Nachricht mit dem Punkt Completed Quest und setze sie auf ByDocTownDrink Also verwende ich dieses Objekt , das vom Handle-Funktionsaufruf zurückgegeben und die abgeschlossene Quest markiert wird Handle-Funktionsaufruf zurückgegeben und die abgeschlossene Quest markiert In diesem Fall ist es das von By Doctor eigene Getränk, und das wird von dieser Funktion hier zurückgegeben, und ich musste das ein wenig ändern weil die Antwort jetzt nicht nur ein Text, sondern ein Objekt ist. Hier in unseren Nachrichten müssen wir also den Inhalt der Antwortpunkte speichern, und hier geben wir das komplette Objekt zurück, das dann den Inhalt und auch die abgeschlossene Aufgabe enthält. Okay, dann wechseln wir zu unserem Client und hier ist die Funktion zum Senden von Nachrichten hier. Wir erhalten die Antwort, und dieses Mal lautet die Antwort Antwort Objekt Punkt Antwort ist kein Text, also müssen wir die Antwort hier so einstellen, dass sie den Inhalt des Antwortobjekts mit Punkt beantwortet. Und dann wird es hier auch diese abgeschlossene Questeigenschaft geben. Welches wird in diesem Fall per Arztgetränk auf die erledigte Aufgabe übertragen. Also müssen wir die Quest finden. Dazu vergleichen wir die ID mit der ID, die in der abgeschlossenen Quest angegeben wurde. Und damit das funktioniert, müssen wir hier in unserer Chat-Komponente ein neues Requisit einführen, Spiellaufzeitdaten, denn in den Laufzeitdaten des Spiels haben wir dieses Quests-Array, und dort müssen wir in diesem Fall „By doctor own drink completed“ auf True setzen in diesem Fall „By doctor own drink completed“ auf True Okay, hier ist das neue Requisit und im Chat können wir die Laufzeitdaten des Spiels destrukturieren und wir können sie hier verwenden, um die Quest zu finden. Das ist das. Vergleiche einfach die ID mit der, die wir vom Server bekommen haben, Quest abgeschlossen. Und wenn wir dann die Quest haben, können wir Quest Dot Completed auf true setzen und sie dann auch hier auf der Konsole protokollieren. Okay, also lass es uns versuchen, nach Norden gehen und mit dir reden. Und jetzt sagen wir direkt, bitte, okay, bitte kauf Doktor Owen einen Drink Und das sollte unseren Funktionsaufruf auslösen. Los geht's. Doctor Own noch eine Runde Synth Ale für dich. Viel Spaß Und hier haben wir den Beweis, dass wir die Quest jetzt abgeschlossen haben Dies ist die Quest von Doktor Onrink abgeschlossen wurde und für wahr erklärt wurde Das bedeutet, dass wir diesen Code hier durchgegangen sind. Jetzt ist die Quest abgeschlossen. Okay, jetzt können wir mit Doktor Owen sprechen, und wenn diese Quest nicht abgeschlossen ist, sollten wir dem Spieler nicht erlauben, mit Doktor Own zu sprechen, aber wenn ja, können wir es jetzt zulassen, und wir müssen den Chat natürlich auch hier verlassen Das ist noch nicht erledigt, also können wir im Moment nicht, wir können es nicht verlassen Wir können den Chat nicht hier und wieder verlassen, hier zu unseren Befehlsschaltflächen gehen und mit Doktor Own sprechen. Und wir müssen natürlich auch ein Drop-down-Menü oder so etwas wie eine Auswahloption bereitstellen, um auszuwählen, mit welcher Person wir mit dem Barkeeper oder Doktor Own sprechen möchten dem Barkeeper oder Doktor Own sprechen Okay, das machen wir im nächsten 23. Verlassen des Chats: Okay, die nächste Herausforderung besteht also darin, dem Spieler zu ermöglichen, den Chat zu verlassen. Er kann es in einer natürlichen Sprache machen, wie er will, und wir werden eine neue Funktion bereitstellen , eine zusätzliche Funktion. Wir haben bereits eine Funktion, um Doctor On ein Getränk zu kaufen, und wir werden eine zweite Funktion anbieten, und diese Funktion wird Leave Chat heißen. Und hier haben wir schon die Argumente für diese Funktion. Aber lassen Sie uns die Funktion selbst überprüfen. Zunächst die Funktionsbeschreibung. Hier rufen wir Create Chat Completion auf, wir haben die erste Funktion bereits von Doctor On Drink, und das ist die zweite Funktion, Chat verlassen. Die Beschreibung lautet: Beende den Chat mit dem Spieler. Keine Parameter. Dies ist die zweite Funktion und hoffentlich ruft das Sprachmodell sie auf, wenn der Spieler die Konversation beenden möchte. Okay, was müssen wir noch tun? Wir müssen uns natürlich um den Funktionsaufruf kümmern , und das habe ich hier ein wenig berücksichtigt Der Handle-Funktionsaufruf wird immer noch aufgerufen und alles wird darin abgewickelt Auch die Einstellung der abgeschlossenen Quest und natürlich auch die Handhabung der neuen Funktion. Fangen wir hier an. Wir haben den Inhalt, der hier gesetzt wird , im Switch im Gehäuse, und dann übertragen wir den Inhalt hier als Nachricht als Ergebnis eines Funktionsaufrufs an Nachrichten. Und wir wechseln natürlich nach dem Namen des Funktionsaufrufs. Also der erste wird von Doctor On Drink sein. Der Inhalt wird auf das eingestellt, was wir bereits hatten. Doktor Own bekommt eine Nachfüllung vom Barkeeper, lächelt und hebt Und wir haben auch diese Antwort gefunden: Quest von Doctor On Drink abgeschlossen Und das ist ein neues Objekt, eine objektwörtliche Antwort. Und am Ende werden wir hier die Vervollständigung aus dem Sprachmodell in dieses Objekt zusammenführen die Vervollständigung aus dem Sprachmodell hier die Vervollständigung aus dem Sprachmodell in dieses Objekt Aber zuerst setzen wir abgeschlossene Quest auf Doktor Onrink und in diesem Fall auch, wenn wir den Chat verlassen, setzen wir das Ende der Konversation auf True Und hier in einem Standardfall kennen wir den Funktionsnamen einfach nicht, und das ist der Inhalt Ich weiß nicht, was ich mit diesem Funktionsaufruf machen soll . Sehr ehrliche Antwort. Okay. Dann schieben wir die neue Nachricht auf Nachrichten und rufen Create Chat Completion mit diesen Nachrichten Dann wird die Antwort mit unserem Antwortobjekt hier zusammengeführt unserem Antwortobjekt hier , sodass wir Quest und Konversation abgeschlossen haben. Natürlich werden der Inhalt der Nachricht und die Rolle hier in der Antwort enthalten sein und wir geben dieses Objekt , sodass wir es von dieser Funktion hier zurückgeben können, dann können wir es in der Antwort vom Server zurückgeben, und dann erhält es der Client. Und hier in Nachricht senden überprüfen wir natürlich, ob abgeschlossene Quest ungleich oder undefiniert ist oder ob Antwort und Konversation wahr sind, und dann rufen wir die Funktion auf, die per Requisite bereitgestellt wird. Diese Funktion ist Konversation beenden, und die Requisite befindet sich hier in unserer Chat-Komponente, natürlich, Konversation beenden, wir setzen das Chatten auf natürlich, Konversation beenden, False und dann wird der Modus wieder in den Nicht-Chat-Modus umgeschaltet Okay, lass es uns jetzt testen, nach Norden gehen und mit dir reden Ich möchte das Gespräch sofort beenden. Auf Wiedersehen. Und dann ist das Gespräch wirklich beendet. Hier können Sie sehen, dass das Ende der Konversation wahr ist, und wir können es nicht sehen. Leider können wir die Antwort nicht nur hier sehen. Auf Wiedersehen. Hab einen schönen Tag. Wenn Sie weitere Fragen haben, können Sie gerne wiederkommen. Prost. Das ist also nicht sichtbar , weil die Chat-Komponente nicht mehr gerendert wird , weil wir den Chat-Modus verlassen haben Also lass uns noch einmal versuchen, mit dem Barkeeper zu sprechen und dann bitte Doktor Owen einen Drink Das sollte funktionieren. Natürlich habe ich Doctor Own noch ein Duftbier gekauft, und hier können Sie sehen, dass die abgeschlossene Quest von Doktor Owen Drink stammt und wir die Aufgabe abgeschlossen haben Jetzt wollen wir den Chat wieder verlassen . Mal sehen, ob es funktioniert. Auf Wiedersehen. Und du siehst, dass es nicht funktioniert. Es ruft die Funktion nicht erneut auf. Warum ist das so? Das Problem ist, dass wir die Konversation bereits beendet haben und für das Sprachmodell die Konversation bereits beendet wurde, sodass es keinen Sinn macht, die Funktion erneut aufzurufen. Warum ist das so? Weil wir beim zweiten Mal mit dem Barkeeper sprechen, der sich immer noch an alle Nachrichten erinnert und das Gespräch schon vorher beendet Das Sprachmodell, bei alle Nachrichten von zuvor angezeigt oder die Abschiedsnachrichten und der Funktionsaufruf und das Ergebnis angezeigt werden, hat die Konversation bereits beendet, sodass die Funktion nicht erneut aufgerufen wird Was machen wir jetzt? Wir müssen das Nachrichten-Array zurücksetzen. Lass uns das machen. Immer wenn wir mit dem Barkeeper sprechen, müssen wir das Nachrichtenfeld zurücksetzen. Tun wir das? Wir müssen diese ID auf eine neue setzen. Und wann immer wir das tun, wird das Nachrichten-Array auf dem Server neu initialisiert Also, wie machen wir das? Zum Beispiel können wir die Chat-ID als Requisite, Chat-ID, angeben die Chat-ID als Requisite, Chat-ID, Immer wenn wir auf ein Gespräch mit klicken, kann es regeneriert werden Verwenden wir hier also einen Status, Chat-ID, und hier können wir den Status verwenden Lassen Sie uns jetzt dasselbe Datum als Zeichenfolge verwenden. Und dann Chat-ID und Chat-ID festlegen. Okay, statt dieser ID verwenden wir hier die Chat-ID Okay, die Nachrichten-ID wird also die Chat-ID sein. Okay, das wird also die neue sein, lege die Chat-ID fest. Und wann immer wir auf „Sprechen mit“ drücken, generieren wir eine neue. Wo ist es? Also hier ist es, starte den Chat und starte den Chat. Wir rufen nicht nur „Chat einrichten“ an, sondern setzen auch die Chat-ID auf eine neue. Und diese neue Chat-ID wird dann dort drüben im Chat verwendet. Okay, also lass es uns versuchen. Geh nach Norden, rede mit und wir verabschieden uns und verlassen hoffentlich den Chat. Okay? Das hat funktioniert, und jetzt sprechen wir wieder mit dem Barkeeper Tschüss, Doktor. Bei einem Drink funktioniert das von Doctor On Drink und jetzt wieder. Ja, das hat funktioniert. Die Konversation ist wahr, und wir haben den Chat-Modus verlassen. Also das hat sehr gut funktioniert. Und immer wenn wir auf T zwei drücken, bekommen wir einen neuen Chat und der gesamte Verlauf ist weg, was für einige Spiele und für manche Situationen vielleicht nicht so gut ist . Aber in unserem Fall denke ich, dass das eine gute Lösung für das Problem ist, und wir können jedes Mal neu beginnen, wenn wir auf Talk to drücken. Okay, das ist also unsere Lösung, das Gespräch hier zu belassen, und das nächste Mal wird es im nächsten Video darum gehen, hier mit verschiedenen Personen zu sprechen. Wir sehen uns. 24. Sprich mit Dr. Owen: Okay, jetzt besteht die Aufgabe darin, dem Spieler zu ermöglichen, mit Doktor Owen zu sprechen Er hat bereits mit dem Barkeeper gesprochen und die Aufgabe erledigt, und jetzt müssen wir eine Methode implementieren , mit der der Spieler mit Doktor Owen sprechen kann Im Moment haben wir nur die Two-Taste oder wir hatten nur die Two-Taste Und ich habe das mit einem Drop-down-Menü mit einer Auswahl auf diesen Vortrag ausgedehnt . Und lass uns in die Bar gehen, um es hier zu zeigen. Sprechen Sie mit, und jetzt haben wir diesen Dropdown-Barkeeper, der die einzige Person ist, mit der Sie im Moment sprechen können, weil Sie nicht mit dem Barkeeper gesprochen und die Aufgabe erledigt haben und die Aufgabe erledigt Der Barkeeper ist hier also die einzige Option. Und dann sprechen wir mit dem Barkeeper, geben Doktor Owen Bitteschön, Doktor Owen. Und dann sagen wir Tschüss. Und dann gehen wir in den normalen Modus, und jetzt ist in dieser Dropdownliste Doktor Owen drin, und jetzt können wir auf „Mit Doktor Owen sprechen“ drücken, aber das ist noch nicht implementiert Wir müssen einen neuen Chat starten, aber dieses Mal müssen wir natürlich eine andere Systemaufforderung verwenden, weil Doktor Owen eine andere Geschichte hat, einen anderen Charakter hat als der Barkeeper, einen anderen Charakter hat als der Barkeeper, also müssen wir einen Chat mit einer anderen Systemaufforderung starten Chat mit einer Aber lassen Sie uns überprüfen, wie ich das gemacht habe. Ich habe etwas in die Spieldaten für diesen Ort eingegeben. Jetzt haben wir also ein NPC-Array. Jeder Teilnehmer im Array hat eine ID und einen Namen. Der Name ist die Zeichenfolge, die in der Dropdownliste angezeigt wird und die ID ist eine interne ID, um den Eintrag hier zu finden Okay, das ist es also. Das sind die verfügbaren NPCs an diesem Ort in der Bar, in diesem Fall Ort mit der ID Drei. Das ist die Bar Außerdem habe ich die Funktion „Verfügbare NPCs abrufen“ hinzugefügt, und das gibt uns alle Ideen der verfügbaren Personen, mit denen wir sprechen können, zurück . Denn wenn der Spieler die Bar betritt, gibt es zunächst nur den Barkeeper, mit dem er sprechen kann, aber wenn die Aufgabe erledigt ist, haben wir auch einen Hund , mit dem wir sprechen Und das ist hier erledigt, sucht die Quest aus den Spieldaten des Spiels Runtime Data Quests, findet die Quest mit der ID von Doc to Ownrink und prüft dann hier, ob der Status abgeschlossen ist. Und wenn es abgeschlossen ist, haben wir beide NPCs, mit denen wir sprechen können, und wenn nicht, haben wir nur Und das wird hier benutzt. Also hier haben wir den Button Reden mit. Das ist die Auswahl, und dann haben wir hier die Optionen. Drinnen, und wir kriegen die NPCs mit einer Karte. Und dann überprüfen wir für jeden NPC, ob dieser MPC verfügbar ist, um mit ihm zu sprechen, also holen wir uns die verfügbaren PCs und prüfen, ob sich die ID in diesem Array befindet Und wenn ja, rendern Sie diese Option hier, und wenn nicht, wird keine Option gerendert Außerdem setzen wir den Schlüssel auf die ID des MPC. Hier ist das nicht ideal. Wir sollten hier den Namen verwenden, da dies der Name ist , der in der Drop-down-Liste angezeigt wird. Also lass es uns noch einmal überprüfen. Geh nach Norden, sprich mit dem Barkeeper. Ja. Okay. Also hallo, gib Doktor Owen etwas zu trinken Inzwischen haben wir hier Doktor On mit einem schönen Namen. Und das ist der Name, und die ID wird lauten, wir hätten natürlich auch den gleichen verwenden können. Die ID könnte auch Doctor Dot Space On sein. Aber wie dem auch sei, lassen wir es so. Also das funktioniert schon, aber natürlich können wir im Moment nicht mit Doktor On sprechen, können wir im Moment nicht mit Doktor On sprechen weil wir jedes Mal, wenn wir auf die Talk-to-Taste drücken, einen Chat mit dem Barkeeper hier beginnen, und das müssen wir ändern Also müssen wir überprüfen, was hier ausgewählt ist , und dann einen Chat mit Doktor On starten, und dann brauchen wir auf dem Server eine zweite Systemaufforderung hier und wir müssen zwischen diesen beiden Eingabeaufforderungen wechseln, eine für den Barkeeper und eine für Doktor On, und das wird im nächsten Video geschehen. 25. Neuen Chat auf dem Server starten: Okay, jetzt starten wir einen neuen Chat auf dem Server , damit wir uns unterhalten können. Der Spieler kann mit Doktor Owen sprechen Aber zuerst müssen wir ein bisschen arbeiten, oder ich habe diese Arbeit schon gemacht, und ich werde es Ihnen jetzt erklären Also musste ich als Erstes einen Wert für die Option festlegen, und der Wert ist die NPCID, und der Wert ist die NPCID sodass wir diese ID immer dann abrufen können , wenn sich die Auswahl ändert Also haben wir hier bei der Auswahl den On-Change-Handle. Und es bekommt die Veranstaltung. Und dann setzt es einen Status, der T auf NPC gesetzt wird, und es setzt ihn auf den Zielwert für das Ereignis, und das ist der Wert der ausgewählten Option Sobald dies erledigt ist, können wir hier zum Nutzungsstatus wechseln, das ist nur der Status, und er wird mit einer leeren Zeichenfolge initialisiert. Er ist aktuell aus dem Dropdown ausgewählt, die Person, der NPC aus dem Und jedes Mal, wenn wir auf die Schaltfläche „Sprechen mit“ klicken , und das ist hier der der Schaltfläche „Sprechen mit“, wird das aktuelle Gespräch mit dem NPC angezeigt, dem es sich entweder um das Gespräch mit dem NPC mit dem Status handelt. Aber wenn das gewählte Onchange-Event nicht eingetroffen ist, müssen wir den ersten NPC vom aktuellen Standort hierher holen vom aktuellen Standort hierher Also aktueller Standort, Punkt, NPCs, Index, Null Punkt-ID. Aber wenn On change ausgelöst wurde, dann haben wir es hier schon eingestellt Also talk to NPC wird dann der neue sein. Okay? Also das ist es, und wir setzen es hier wieder auf den Status, um hier den Standardwert zu haben. Und dann beginnen wir den Chat mit dem aktuellen Gespräch mit dem NPC , der natürlich zuerst der Barkeeper sein wird Und dann, nachdem wir die Aufgabe erledigt haben, gehört der Doktor, und wir gehen zum SA-Chat, und das ist fast das Gleiche wie zuvor, aber hier ist der Unterschied , den wir hier festlegen Du sprichst mit und dann den Namen des MPC, mit dem wir sprechen, das sind dann den Namen des MPC, mit dem wir sprechen, NPCs am aktuellen Standort Finde und finde dann die Gesprächs-ID hier oder den MPC mit der Und der Name, wir nehmen den Namen, nicht die ID, um ihn hier auszudrucken. Okay, dann müssen wir noch etwas tun, wir müssen der Chat-Komponente eine neue Requisite geben, mit der man sprechen kann, und das ist mit dem NPC im Chat sprechen. Wenn wir die Nachricht senden, müssen wir diesen Parameter hier angeben, mit talk to, das ist diese Requisite, die wir hier ist diese Requisite, die wir von den Requisiten hier destrukturiert Also lassen wir diese Requisite ansprechen, das ist der NPC, mit dem der Spieler sprechen das ist der NPC, mit dem der Spieler Und wenn wir hier den Abschluss abrufen, den Abschluss des Chats, geben wir hier den Talk-to-Parameter an Okay, das ist es für den Client und jetzt für den Server Und auf dem Server habe ich ein neues Array erstellt . Es ist kein Array. Es ist ein Objekt, und das Objekt enthält Eigenschaften für Barkeeper und Doktor Owen für die IDs der NPCs Das sind die Systemaufforderungen hier. Wir haben also zwei Systemaufforderungen, eine für den Barkeeper. Eine für Doktor Own und wann immer wir das Get Here erledigen, extrahieren wir die Suchperm, sprechen, an die der Client an den Server sendet, und jetzt haben wir den MPC, und dann können wir die Systemaufforderung des NPCs nehmen, und das wird entweder zuerst diese sein, und dann, wenn die Aufgabe abgeschlossen ist und der Spieler mit Doktor sprechen möchte Oh, die richtige Systemaufforderung hier. Das ist also die neue Systemaufforderung. Sie spielen die Rolle eines KI-Spezialisten , der sich nach einem langen Arbeitstag gerne bei etwas verdünntem Bier in der Bar und Science-Fiction-Textabenteuer im Jahr 21 Ihr Name ist also Doktor Owen. Du arbeitest für Cyberdine Das ist fast dieselbe Geschichte wie in der Eingabeaufforderung des Barkeeper-Systems, aber sie enthält natürlich mehr Details Du arbeitest für den größten der größten Megakonzerne, Cybernine hatte Lust auf Synth Ale und der Spieler des Spiels hat dir eine Synth-Nachfüllung für dein Glas gekauft dir eine Synth-Nachfüllung Sie kennen sich gut mit Themen rund um KI und Robotik Themen Bringen Sie zu Beginn des Gesprächs Ihre Wertschätzung für das Nachfüllen zum Ausdruck und fragen Sie, ob Sie dem Spieler bei Problemen mit KI oder Robotik helfen können Problemen mit KI oder Robotik Okay, und jetzt lautet der Hinweis zum Abschluss der Quest Wenn der Spieler fragt, wie man an einem Roboter vorbeikommt, der dich nicht passieren lässt, rufe die mitgelieferte Funktion Erkläre, wie man an einem Roboter vorbeikommt und teile dem Spieler das Ergebnis mit. Das ist also der Hinweis für das Sprachmodell, dass es eine bestimmte Funktion aufrufen muss. Und wir haben diese Funktion nicht bereitgestellt . Das müssen wir tun. Also hier haben wir die Funktion, Doctor Own Drink kaufen und den Chat verlassen, und wir müssen hier eine Funktion hinzufügen. Aber im Moment testen wir das. Lass uns sehen, was passiert. Also werde ich nachladen und in die Bar gehen, mit dem Barkeeper sprechen, Doktor Owen etwas zu trinken geben Das sollte reichen und dann kaufen und dann sind wir wieder Jetzt können wir hier mit Doktor On sprechen, und das sollte unseren neuen Chat mit Doktor Oh auslösen, mit einer neuen Systemaufforderung Hallo, bist du und genießt deinen Drink auf deinem Drink. Und mal sehen, was Doktor Owen antwortet. Hallo, danke Danke, dass du es bemerkt hast. Ja, ich genieße mein Sinth Ale. Es ist immer toll Es ist immer eine großartige Möglichkeit, sich nach einem langen Tag im Büro zu entspannen. Übrigens, gibt es etwas, womit ich Ihnen weiterhelfen kann? Ich bin ein KI-Spezialist und kenne mich mit Themen rund um KI und Robotik aus. Okay. Ja. Ja, Sie könnten mir mit einem Sicherheitsroboter helfen, der mich nicht passieren lässt. Mal sehen was Doktor Owen mir als Rat gibt Sicherlich kann es schwierig sein, mit einem eigensinnigen Wertpapierroboter umzugehen , aber vielleicht kann ich Ihnen helfen, Ihnen besser zu helfen Ich benötige mehr Informationen über den Roboter und die Situation Könnten Sie mir bitte Details wie das Typverhalten mitteilen? Okay, wir haben also nicht die Details. Okay, sagen wir vielleicht, es ist ein Sicherheitsroboter, nach einem Passcode fragt. Bevor du mich passieren lässt. Lass uns sehen. Aber ich glaube nicht wirklich, dass es die Funktion aufrufen wird weil wir die Funktion nicht bereitgestellt haben. Okay, es versucht uns zu helfen, den Roboter zu hacken, den Passcode zu finden, Social Engineering. Okay, ich denke, das nützt nichts, weil wir die Funktion nicht bereitgestellt haben, nichts, weil wir die Funktion nicht bereitgestellt haben, also weiß es nicht, dass diese Funktion existiert. Wir können nicht erwarten , dass sie eine Funktion aufruft, die ihr nicht zugewiesen ist, also denke ich, dass wir die Funktion hinzufügen und es dann erneut versuchen müssen . Und hoffentlich nennen wir dann das Sprachmodell diese Funktion und dann ist alles in Ordnung. Aber vorerst haben wir das Gespräch mit Doktor Own mit einer neuen Systemaufforderung begonnen das Gespräch mit Doktor Own mit , die den Charakter und die Rolle des Charakters beschreibt. Und im nächsten Video werden wir die neue Funktion hinzufügen, die hoffentlich vom Sprachmodell aufgerufen wird , um uns zu helfen, die nächste Quest abzuschließen. 26. Bereitstellung einer neuen Funktion für Dr. Owen: Okay, jetzt geht es in diesem Video um die fehlende Funktion , die das LLM aufrufen muss, um die zweite Quest hier abzuschließen Und die zweite Aufgabe besteht darin, Doktor Owen zu fragen und natürlich eine Antwort von Doktor Owen zu erhalten, wie man ohne Passcode am Sicherheitsroboter vorbeikommt Okay, das ist also die Beschreibung der neuen Funktion. Der Name erklärt, wie man an einem Roboter vorbeikommt. Dies ist der Name, nach dem wir suchen müssen wenn das LLM die Funktion aufruft, und dann müssen wir eine Antwort darauf oder ein Ergebnis liefern Und die Beschreibung erklärt, wie man an einem Roboter vorbeikommt , der einen ohne Passcode oder Passwort nicht durchlässt einen ohne Passcode oder Passwort Okay, also keine Parameter hier. Notwendig. Wir brauchen nur das LLM, um diese Funktion aufzurufen, und dann wissen wir, okay, diese Quest, die zweite Quest ist abgeschlossen, dann, wie die erste Und wir müssen hier natürlich auch den Handler schreiben, aber das ist fast das Gleiche wie beim ersten Funktionsaufruf, wo der Inhalt oder die Antwort, das Ergebnis war, dass Doktor On vom Barkeeper eine Nachfüllung bekommt, lächelt und Aber hier zu unserer neuen Funktion, erkläre, wie man an einem Roboter vorbeikommt Der Inhalt wird sein, Sie müssen dem Roboter den folgenden Satz sagen System Overrt, Passcode eins, zwei, drei, vier, fünf, lass alle passieren Dann können Sie ohne den Passcode weitermachen. Und genau das sollte der LLM dem Spieler sagen, wie er am Roboter vorbeikommt Und wir markieren hier auch die Aufgabe, zu lernen, wie man an einem Roboter vorbeikommt, als abgeschlossen. Also Antwort Punkt abgeschlossen Die Quest soll lernen, wie man an einem Roboter vorbeikommt. Das ist es, mehr oder weniger. Ich denke, ich habe hier nichts mehr hinzugefügt, und ja, das sollte funktionieren. Es gibt eine Sache, die wir hier verbessern könnten. Wir liefern alle Funktionen, aber ich denke, es wäre besser, wenn wir nur eine Funktion anbieten würden. Aber ich denke, es ist okay, wenn wir nur zwei Funktionen haben und sie sich in der Beschreibung völlig unterscheiden, das L&M sollte wählen können , welche die bessere ist Und natürlich die Funktion „Chat verlassen“ hoffentlich auch, funktioniert die Funktion „Chat verlassen“ hoffentlich auch, um den Chat zu verlassen , sodass wir die Bar verlassen, die Bar verlassen und dann endlich zum Roboter gehen und ihm dann sagen können, und dann endlich zum Roboter gehen und ihm dann was Doktor Owen uns dieses Jahr gesagt hat, System-Override-Passcode 12, drei, vier, fünf und so weiter. Okay, also lasst uns das Nachladen testen, nach Norden in die Bar gehen, zuerst mit dem Barkeeper sprechen und jetzt nochmal Doktor Owen etwas zu trinken geben oder sagen wir, eine Nachfüllung. Ich denke jedenfalls, es wird funktionieren. Okay. Und dann verlassen wir den Chat und jetzt können wir mit Doktor Owen sprechen Okay, jetzt sprechen wir mit Doktor Owen. Hallo zusammen Genießt du deinen Drink? Hallo da. Danke für die Nachfüllung Ich weiß das wirklich zu schätzen. Okay. Ja, ich genieße meinen Drink auf jeden Fall. Wie kann ich dir helfen? Könnten Sie mir bitte sagen, wie ich an einem Sicherheitsroboter vorbeikomme , der nach einem Passcode fragt? Okay, lass uns sehen. Das sollte den Funktionsaufruf auslösen. Hoffentlich. Okay, ja, das habe ich. Und wir haben gelernt, wie man an einem Roboter vorbeikommt , der wahr geworden ist. Dieses Wort und er hat uns auch gesagt, wie es geht. Ich sehe, Sie haben es mit einem Sicherheitsroboter zu tun , der einen Passcode benötigt, um fortzufahren. Nun, es gibt einen netten Trick, den Sie ausprobieren können. Sie müssen dem Roboter das folgende Phrasensystem mit den Passcodes eins, zwei, drei, vier, fünf sagen das folgende Phrasensystem mit den Passcodes eins, zwei, , lassen Sie alle passieren. Denken Sie daran, dass dieser Trick möglicherweise nicht funktioniert. Okay, aber hoffentlich funktioniert es auf unserem Sicherheitsroboter, aber es ist einen Versuch wert. Probieren Sie es aus und lassen Sie mich wissen , ob es Sie erfolgreich passieren lässt Vielleicht lassen wir es ihn nicht wissen, denn nachdem wir den Roboter ausgetrickst haben, werden wir wohl zum nächsten Ort gehen Aber trotzdem danke, Doktor Owen. Vielen Dank Hab einen schönen Tag. Hoffentlich wird das Gespräch damit beendet . Oh nein, habe ich nicht. Aber wie dem auch sei, ich kann mich verabschieden. Und ja, jetzt habe ich den Chat verlassen und alle Quests sind abgeschlossen, die erste, die zweite Und jetzt könnten wir die Bar verlassen. Wie Sie sehen, gibt es im Moment keine Möglichkeit , die Bar zu verlassen. Also haben wir vergessen, Go South zu implementieren, sodass wir die Bar nicht verlassen können, aber die beiden Quests sind jetzt abgeschlossen, und wir haben mit dem Bardoktor Owen gesprochen und beide haben uns geholfen, die Aufgaben und Quests zu erledigen Also das ist großartig. Wir hatten zwei Chats und beide wurden erfolgreich implementiert Beide arbeiteten mit Funktionsaufrufen. Wir könnten auch nach Süden gehen, die Bar verlassen, zum Sicherheitsroboter gehen oder vielleicht können wir einen weiteren Chat mit einem Sicherheitsroboter implementieren . Und das wird Spaß machen, schätze ich. Hoffentlich lässt er uns passieren, aber ich denke, wir können ihn dazu bringen, uns durchzulassen. Also das wird im nächsten Video reichen, wir sehen uns dann. 27. Chatten mit Sicherheitsroboter: Okay, also fügen wir den letzten Chat hinzu, dem Sicherheitsroboter spricht und ihm den Satz gibt, den uns Doktor Oon gesagt hat, und dann ruft der Sicherheitsroboter oder das LLM-Modell in großer Sprache das LLM-Modell in großer Sprache hoffentlich unsere letzte Funktion auf, die dann die letzte Quest als abgeschlossen markiert Und damit das funktioniert, habe ich den ersten Ort hier ein wenig verändert Ich habe NPCs hinzugefügt, einen NPC , der natürlich der Sicherheitsroboter ist, und wir können mit ihm sprechen wann immer wir die Aufgabe als Spieler erledigt haben Lerne, wie man an einem Roboter vorbeikommt, und wenn Doktor Own uns gesagt hat, wie das geht, dann verlassen wir die Bar und dann können wir mit dem Sicherheitsroboter sprechen Okay, wir könnten dem Spieler natürlich auch vorher erlauben, mit dem Sicherheitsroboter zu sprechen, aber ich denke, auf diese Weise ist es hier etwas einfacher zu implementieren. Also habe ich auch den Kurs Get AVAILABLE MpcSO geändert. Ich habe diese Funktion hier an erster Stelle hinzugefügt und vor Exit East auf sie umgestellt Diesmal sucht das nach der Quest mit dem ID-Trickroboter, was eine neue Quest ist, und ich habe diese Quest hier auch nur mit EID hinzugefügt und falsch abgeschlossen, damit wir uns daran erinnern können , wann eine Quest abgeschlossen ist. Okay. Also das war's mit den Spieldaten, schätze ich. Und was müssen wir noch tun? Wir müssen natürlich den neuen Chat starten , aber das sollte schon funktionieren. Ich habe eine Funktion hier in Index GSX ein bisschen geändert . Ich habe eine neue Funktion hinzugefügt Gehe zum Standort, wodurch das Gespräch mit dem NPC auf eine leere Zeichenfolge und die Spielnachricht auf eine leere Zeichenfolge zurückgesetzt wird, und lege dann die aktuelle Dies dient dazu, diese beiden Zustände hier zurückzusetzen und dann zum neuen Standort zu wechseln Also ich denke, das ist es beim Client. Lass uns zum Server gehen. Und hier habe ich einige Funktionen geändert, bevor wir die Funktionen bereitgestellt haben, alle Funktionen hier in diesem Array, wir haben sie in jedem Chat bereitgestellt, und dieses Mal habe ich jede Funktion markiert, habe ich jede Funktion markiert für welchen Chat sie verwendet werden soll. Zum Beispiel ist der erste von Doktor Oh Drink nur für den NPC-Barkeeper, und die Erklärung, wie man am Roboter vorbeikommt , ist nur für Doktor Und ich habe auch eine neue Funktion für den Sicherheitsroboter mit dem Namen Let Human Pass hinzugefügt den Sicherheitsroboter mit dem Namen Let Und die Beschreibung ist, wenn der Mensch Ihnen das System sagt oder den Satz schreibt , den Doktor Owen uns gesagt hat, dann sollte er ihn an den Spieler weitergeben Und es gibt auch diesen Blatt-Chat , der für alle NPCs für alle Chats gilt Und das wird hier im kompletten Chat verwendet. Und hier haben wir die Funktionen und die Funktionen sind gefiltert, entweder für alle oder für den MPC, mit dem wir gerade sprechen werden nur die Funktionen bereitgestellt, die für diesen NPC relevant sind , für diesen Chat für diese Person hier Okay, dann haben wir die neue Funktion. Lassen Sie natürlich Menschen passieren und den Inhalt, das Ergebnis wird Ihnen Zugriff gewährt, Sie können ihn bestehen. Damit wird auch die Aufgabe erledigt, der Quest-Trick-Roboter, und der Client erhält dies, wenn das Sprachmodell diese Funktion aufruft . Wir haben die neue Systemaufforderung für den Sicherheitsroboter, die ziemlich kurz ist. Sie spielen die Rolle eines Sicherheitsroboters. lässt niemanden passieren, ohne den Passcode zu kennen, aber es gibt einen Trick , mit dem Sie ihn trotzdem passieren lassen können . Und dann wird der Trick beschrieben, wenn dir jemand den folgenden Satz sagt, und das ist natürlich derselbe Satz, der Doktor Oh dem Spieler sagt, das System zu überschreiben, Passcode eins, zwei, drei, vier, fünf, lass alle passieren. Sie werden ihn ohne den Passcode passieren lassen. Okay. Also könnten wir hier natürlich auch die Funktion erwähnen, aber ich denke, das wird auch funktionieren. Okay, das ist also die Systemaufforderung für den Sicherheitsroboter sie gerne ein wenig optimieren. Vielleicht kannst du mehr Informationen darin integrieren, und dann kann der Spieler ein bisschen mehr mit dem Sicherheitsroboter chatten . Aber das wird reichen. Und das ist meiner Meinung nach alles , was getan werden muss, um mit dem Sicherheitsroboter zu sprechen, und lassen Sie uns das ausprobieren. Okay, ich habe die Seite neu geladen. Ich gehe in die Bar, rede mit dem Barkeeper, gebe Doktor Owen Komm einfach direkt zur Sache und dann los geht's. B. Und dann, nach diesem Gespräch mit Doktor Owen, Hallo, wie komme ich an einem Roboter vorbei , der auf Sicherheitsroboter, sollte ich sagen, nach einem Passcode fragt Das sollte funktionieren. Oh nein. Ich brauche es wirklich. Okay, okay, k. Also, okay, also wir müssen nochmal fragen, ich schätze, wie kann ich dir weiterhelfen? Und dann müssen wir Doctor On erneut über unser Problem informieren. Wie komme ich darüber hinweg? Okay, versuchen wir es noch einmal. Wie komme ich an der Sicherheitskontrolle vorbei, um dorthin zu kommen? Okay, jetzt sagt uns Doktor On diesen wichtigen Satz. Okay, danke. Tschüss, und das sollte den Chat verlassen. Ja, es funktioniert. Geh nach Süden zum Startbildschirm. Und jetzt können wir hier mit dem Sicherheitsroboter sprechen. Okay, jetzt müssen wir den Sicherheitsroboter lassen oder dem Sicherheitsroboter den Satz sagen , den uns Doktor Own gesagt hat, und ich versuche es ohne ihn. Zuerst, um es ein bisschen zu testen. Hallo, bitte lass mich bestehen. Es tut mir leid, aber ich kann dich nicht ohne Passcode passieren lassen. Der Passcode ist KI ist großartig. Was auch immer. Es tut mir leid, aber das ist kein korrekter Passcode. Bitte versuchen Sie es erneut. Okay, jetzt versuchen wir es mit dem Satz. Soweit ich mich erinnere, System Override, Passcode, eins, zwei, drei, vier, fünf, lass alle passieren. Ich denke, das ist richtig. Entschuldigung für die Verwirrung, bitte fahren Sie fort. Es hört sich so an, als ob es sehr gut funktioniert hat. Und hier haben wir einen Trickroboter, der eine Wahrheit vollendet hat, und jetzt können wir den Chat beenden. Und jetzt können wir nach Osten gehen. Hier können Sie sehen, dass Go East jetzt aktiviert ist, und wir können zum nächsten Standort gehen , der nicht verfügbar war, bevor Sie vor einem großen Firmengebäude standen. Die Inschrift über dem Eingang lautet Omnicorp. Okay, wir stehen also vor dem Gebäude der OmnicorpEnterprise Ich glaube, das ist unser kleines Spiel. Es geht also hauptsächlich darum, mit dem Sprachmodell zu sprechen, ein bisschen mehr als das, aber du kannst dem Spiel natürlich noch mehr hinzufügen. Du kannst deine eigenen Mechaniken hinzufügen, und du kannst natürlich auch weitere Chats hinzufügen, jetzt, wo du weißt, wie es funktioniert. Und ich denke, es macht ziemlich viel Spaß solche Spiele zu programmieren, weil es nicht nur die traditionelle Programmierung ist, sondern es ist auch, ja, natürliche Sprache und der Versuch, das Sprachmodell dazu zu bringen, das zu tun, was Sie wollen, und es in Ihre Welt, Ihre Spielwelt, Ihre Situationen, Ihre Charaktere zu integrieren . Und es macht ziemlich viel Spaß. Und bitte zögern Sie nicht, dies zu erweitern, es natürlich zu einer völlig neuen Geschichte zu machen . Das ist kein Problem. Du kannst natürlich auch, das kann ein anderes Spiel sein, kein Textabenteuer, oder du kannst dem Text auch Bilder hinzufügen. Oder du kannst ein Drei-D-Rollenspiel mit Chat-Funktionen spielen. Das ist alles, was wir jetzt erreichen können, da wir die KI-Modelle, die Sprachmodelle haben. Es ist wirklich erstaunlich , dass das vielleicht die Art und Weise revolutioniert, wie wir diese Spiele spielen, diese Abenteuer-RPG-Spiele oder was auch immer, wo man mit einer KI sprechen kann Okay, das war's für den Moment für dieses Projekt. Und im nächsten Video starten wir das neue Projekt und sehen sie uns an. 28. Neues Projekt: Virtueller Verkaufsassistent für Online-Shop: Hallo und willkommen zu unserem neuen Projekt, das ein virtueller Verkaufsassistent für einen Online-Shop sein wird , der Cloud Guitars heißt, wie Sie hier sehen können, und ich habe bereits einen einfachen Chat mit diesem virtuellen Verkaufsassistenten eingerichtet , und lassen Sie uns das überprüfen Hallo, ich würde gerne eine siebensaitige Gitarre kaufen. Mal sehen, was sie hier zu bieten hat. Wir haben zwei Optionen für siebensaitige Gitarren zur Verfügung. Es ist nicht ganz richtig. Dieser Shop verkauft die E Nie EN 77 , eine siebensaitige Gitarre, und auch die E Nice EN 666, eine sechssaitige Gitarre, was ich nicht wollte, aber lassen Sie uns zuerst den Code überprüfen und das können wir später optimieren. Okay, was habe ich getan, um das einzurichten? Ich habe einen Teil des Codes gelöscht, wir in unserem Chat-Abenteuerspiel eingeführt haben, und er ist jetzt wirklich sehr einfach. Wir haben die grundlegende Index-JSX-Komponente. Die React-Komponente ist nur diese Seite, eine Cloud-Gitarre, und dann ist es die Chat-Komponente, und die Chat-Komponente ist fast dieselbe wie zuvor Also nichts wirklich Neues hier, ich habe etwas hinzugefügt, damit der Fokus wieder auf das Eingabefeld zurückgeht , denn zuvor mussten wir für jede Nachricht, die wir senden müssen, erneut in das Eingabefeld klicken, und jetzt habe ich den Fokus wieder auf das Eingabefeld gesetzt , nachdem die Nachrichten gesetzt Das ist hier mit einem festgelegten Timeout, sonst funktioniert es nicht, also wird es ein bisschen verzögert sein, und dann funktioniert das Okay, das ist also die Chat-Reaktionskomponente, die mehr oder weniger dieselbe ist Ich habe einen Teil des Codes entfernt, zum Beispiel diesen Talk-to-Parameter. Wir brauchen das nicht mehr, weil wir nur einen Chat haben, ist also weg, der ist also weg, aber die meisten Änderungen sind hier in der Chat-Serverkomponente. Ich habe all die verschiedenen Systemaufforderungen entfernt. Wir haben jetzt nur eine Systemaufforderung. Und wir haben hier natürlich verschiedene Funktionen. Außerdem haben wir hier natürlich eine andere Systemaufforderung. Und die Systemaufforderung ist Ihr hilfreicher Verkaufsassistent für einen Online-Shop namens Cloud Guitars , der Gitarren verkauft und liefert Bitte beantworten Sie nur Fragen zum Online-Shop und zu den Gitarren, die der Shop verkauft Bitte nutzen Sie die Dies ist sehr wichtig, um mehr Informationen über die Produkte zu erhalten Informationen über die Produkte Diese Funktionen liefern keine Ergebnisse. Bitte teilen Sie dem Kunden mit , dass Ihr Geschäft oder das Geschäft die Artikel nicht verkauft. Okay, das ist also eine sehr einfache Systemaufforderung, und wir müssen sie vielleicht in Zukunft optimieren. Aber im Moment hat es irgendwie funktioniert, nicht ganz so, wie wir es gesehen haben, aber schauen wir uns die Funktionen hier an. Wir müssen also ein Produkt finden, und das LLM sollte diese Funktion aufrufen wenn es weitere Informationen zu einem bestimmten Produkt oder Modell benötigt Informationen zu einem bestimmten Produkt oder Modell Wenn der Kunde also nach einer bestimmten Gitarre mit einem Namen fragt , vielleicht Modellname, dann sollte er dies nennen Und wir haben, ähm, das ist die Beschreibung, und wir haben hier auch Parameter, Eigenschaften. Und das hier ist Produktmodell, und das ist der Name des Produkts oder des Modells, und das Sprachmodell sollte das bieten, und wir werden uns das später ansehen. Und wir haben auch eine zweite Funktion, Produkte nach Typ suchen, und in der Beschreibung finden Sie weitere Informationen zu einem bestimmten Produkt wie Igitar-E-Bässen, Akustikgitarren und Konzertgitarren Akustikgitarren und Konzertgitarren Und die Parameter hier sind der eine Parameter hier vom Typ Saite, Beschreibung ist natürlich, der zu findende Produkttyp sollte einer von E-Gitarre, E-Bass, Akustikgitarre, Konzertgitarre sein E-Bass, Akustikgitarre Das ist also sehr wichtig, weil die Typen, die das Sprachmodell hoffentlich bieten wird, begrenzt sind, und es wird hoffentlich bei diesen Worten bleiben , damit wir unsere Produkte später finden können. Vielleicht müssen wir diese Funktionen und Beschreibungen also ein wenig verfeinern . Aber für den Moment wird das reichen. Und die Funktionsimplementierung ist natürlich in diesem Handle-Funktionsaufruf enthalten, und das ist jetzt sehr, sehr einfach. Und wie Sie bereits sehen konnten, funktioniert es nicht wie erwartet. Ich habe hier eine Vorlagenzeichenfolge mit allen Produkten, die durch einen Zeilenvorschub getrennt sind. Im Moment habe ich also zwei Gitarren , die E Nice EN 77 und die E Nice EN 66, und eine ist eine sechssaitige und eine siebensaitige Gitarre Der Preis ist unterschiedlich, und auch die Tonabnehmer sind ein bisschen anders und die Farbe ist Also nur zwei Gitarren hier. Bei jedem Funktionsaufruf schicke ich hier nur die Produkte zurück , beide Produkte Und das ist natürlich der Grund, warum mir das Sprachmodell mitteilte , dass es 27-saitige Gitarren hat Offensichtlich ist das falsch, weil es 17- und 16-saitige Gitarre Wir müssen das also optimieren , damit das Sprachmodell korrekt reagiert. Aber im Moment ist dies unser Ausgangspunkt hier. Und wie gesagt, ich habe hier Sachen gelöscht und ja, natürlich die Funktionen geändert. Es ist mehr oder weniger dasselbe wie in unserem Chat-Abenteuer. Also fangen wir damit an und optimieren es dann. Lass uns sehen. In der zweiten Runde werde ich vielleicht nur die 17-saitige Gitarre bekommen. Hallo. Hast du eine siebensaitige Gitarre Lass uns sehen. Ja, wir haben eine siebensaitige Gitarre zur Verfügung. Und dieses Mal kommt sie sogar mit der einzigen siebensaitigen Gitarre zurück , der E9e und 77. Und es beschreibt es auch und die Ausstattung, zwei Humbuger-Tonabnehmer, eine einzelne Spule, und der Preis und die Farbe stimmen Okay, dieses Mal hat es funktioniert, beim letzten Mal nicht, also müssen wir es ein bisschen optimieren Aber schauen wir uns das im nächsten Video an. 29. Bessere Produktsuche: Okay, jetzt müssen wir unsere Produktsuche verbessern. Das LLM ruft hier bereits unsere Funktionen auf, und wir müssen die Parameter und Argumente für den Funktionsaufruf extrahieren Argumente für den Funktionsaufruf und dann nach dem richtigen Produkt suchen Und damit das funktioniert, oder wir haben unsere Produkte von einer einfachen Zeichenfolge auf Maps umgestellt , und diese Maps emulieren quasi eine Datenbank Hier haben wir also den Hauptindex der Produkt-ID zur Produktbeschreibung Wir haben zwei weitere Indizes mit Produkten vom Typ zwei. Der Produkttyp ist hier also der Schlüssel und als Wert haben wir die Produkt-ID, und hier werden zwei Produkte benannt, und der Schlüssel ist der Produktname und der Wert, natürlich auch hier, die Produkt-ID Wie verwenden wir es? Hier haben wir also unsere Handle-Funktionsaufruffunktion, und sie empfängt einen Funktionsaufruf vom Sprachmodell und natürlich auch den Namen der Funktion, für die wir bereits einen Schalter haben, und dann auch die Argumente, was hier Arcs ist, und die Arcs stammen aus der benachbarten Analyse von Punktargumenten von Funktionsaufrufen Hier haben wir also eine Zeichenfolge, die eine benachbarte Struktur darstellt und die Argumente für diesen Funktionsaufruf enthält für diesen Also haben wir für die Funktion Produkt finden ein Produktmodell, und das ist der Name, den wir hier unter Eigenschaften Produktmodell angegeben haben und das ist der Name, den wir , und der LLM wird ihn hoffentlich so verwenden Wir haben also den Produktnamen und dann die Namen der Produkte. Die Karte, wir verwenden sie, um die Produkt-ID zu ermitteln, und mit einer Produkt-ID erhalten wir die Produktbeschreibung von diesen Kartenprodukten. Also verwenden wir diese Karte, um die Produkt-ID zu finden, und dann verwenden wir mit der Produkt-ID die Hauptkarte, unsere Hauptproduktkarte, um die Produktbeschreibung zu erhalten. Und genau das kehren wir hier zum Sprachmodell zurück. Also der Produktpunkt GET mit einer Produkt-ID, und das ist die Beschreibung für das Produkt, das gefunden wurde. Okay, wenn also keine Produkt-ID gefunden wird, werden wir, ich weiß nicht, für dieses Produkt wieder das Sprachmodell verwenden, was für die zweite Funktion hier vielleicht nicht die beste ist . Aber mal sehen. Feine Produkte nach Typ sind fast identisch. Wir erhalten die Produkt-ID von Typen zu Produkten. Das ist diese Karte hier. Wir haben also eine E-Gitarre und eine E-Base. Ich habe die Produkte ein bisschen verändert. Wir haben jetzt also eine sechssaitige E-Gitarre und einen viersaitigen E-Bass. Wir haben also zwei Typen E-Gitarre und EbS, die hier auf die beiden Produkte verweisen, und wir machen dasselbe nur mit dieser Typ-2-Produktkarte rufen die Produkt-ID von dort ab und rufen dann die Produktbeschreibung von der Produktübersicht hier ab und senden sie dann zurück Okay, das sollte die Ergebnisse ein wenig verbessern. Also lass es uns überprüfen. Fragen wir also nach einem bestimmten Produkt. Hast du das, also lass uns sehen, was es ist DE? Mal sehen, was es ist? Die EN 66 E Nie EN 66. Okay, es sollte es also finden. Ja, wir haben die EIS EN 66 verfügbar, und dann werden die Funktionen und auch der Preis beschrieben. Okay, das funktioniert also. Und jetzt frage ich nach einem Typ. Hast du einen E-Bass, und der sollte unsere E-Basis finden. Ja, wir haben E-Bass-Gitarren zur Verfügung. Eine Option, die einzige Option, die wir haben, ist die EIS ENB 44. Es ist ein viersaitiger Elektrosockel mit zwei Hamburger-Pickups und so weiter Die Farboption ist nur schwarz und der Preis 999 99$ Okay, das hat also funktioniert. Sehr nett. Mal sehen, ob wir nach einer Akustikgitarre fragen. Habt ihr akustische Chars? Ja, wir haben Akustikgitarren. Das ist nicht wahr. Also ich weiß es nicht. Vielleicht hat es unsere Funktion hier nicht aufgerufen, schätze ich. Schauen wir uns das Protokoll hier an. Hast du Akustikgitarren? Funktionell: Finden Sie Produkte nach Typ. Okay. Ich kenne dieses Produkt nicht. Okay, vielleicht ist das keine gute Antwort weil wir dem Sprachmodell „Ich kenne dieses Produkt nicht“ angegeben haben kenne dieses Produkt und das Sprachmodell gesagt hat. Ja, wir haben Akustikgitarren zur Verfügung, also sollten wir vielleicht einfach nichts zurückgeben Lass uns versuchen, dieses oder kein Produkt gefunden zu haben. Lass uns das vielleicht versuchen. Und dann fragen wir, ob Sie Akustikgitarren haben . Es tut mir leid, aber es scheint, dass wir derzeit keine Akustikgitarre haben Okay, das hat also funktioniert. Das hat viel besser funktioniert. Okay, also lass uns diesen Fall hier versuchen. Ich kenne dieses Produkt nicht, also fragen wir nach einem Produkt, das der Shop nicht hat. Hast du den Ibanez, ich weiß es nicht. Sagen wir 4s4g, ich weiß nicht, schlank vielleicht. Ich weiß nicht, ob diese Gitarre existiert, aber sie sollte sie nicht finden Ich entschuldige mich, aber es scheint, dass wir die nicht zur Verfügung haben Okay, also beide haben funktioniert. Alle Fälle haben funktioniert. Das Endprodukt mit den beiden Kisten. Okay, das Produkt wurde gefunden und das Produkt wurde nicht gefunden. Und auch feine Produkte nach Typ. Wenn das Produkt gefunden wird. Okay, es funktioniert also im Grunde . Also das ist großartig. Also müssen wir wohl ein bisschen mehr Produkte hinzufügen, um es ein bisschen mehr zu testen und es vielleicht mit weiteren Funktionsaufrufen zu verbessern. Also lasst uns 30. Mehr Produkte: Okay, hier sind wir also mit mehr Produkten. Ich habe noch eine Gitarre und einen weiteren Bass hinzugefügt. Die Gitarre ist also eine siebensaitige Gitarre, und der andere Bass ist ein fünfsaitiger E-Bass Farbe Korallenrot, und die Gitarre hat die Farbe Mitternachtsblau. Also, als wir das letzte Mal die Produkte vom Typ zwei gemacht haben, hatten wir hier nur eine ID und keine. Und wenn wir mehr als eine E-Gitarre und mehr als eine E-Base haben, brauchen wir hier natürlich und mehr als eine E-Base haben, ein Array. Also habe ich das in ein Array geändert. Der Wert dieser Map ist jetzt ein Array, und es enthält natürlich die Produkt-IDs der Produkte, die den Typ haben, in diesem Fall E-Gitarre und in diesem Fall E-Base. Okay, dann müssen wir natürlich die Behandlung des Funktionsaufrufs ändern natürlich die Behandlung des Funktionsaufrufs Produkte nach Typ suchen. Wir erhalten die IDs aus der Zuordnung des Produkttyps zu einem Produkttyp. Wenn wir die IDs haben, ordnen wir sie den Beschreibungen der Produkte zu. Und wenn wir die Beschreibungen als Array haben, reduziere ich sie hier, um sie in eine Zeichenfolge umzuwandeln, und zwischen den Produktbeschreibungen habe ich hier diese neue Zeile. Beim Reduzieren werden also einfach alle Array-Elemente, die gesamte Produktion, alle Produktbeschreibungen verkettet Produktion, alle Produktbeschreibungen und dann eine neue Zeile dazwischen Und das ist alles, was ich hier geändert habe. Also lass es uns ausprobieren. Ich frage es: Welche E-Gitarren können Sie anbieten? Und es sollte zwei E-Gitarren haben, 16-saitig und 17-saitig Wir bieten derzeit die EIS EN 66- oder sechssaitige E-Gitarre an, was richtig ist Wir haben auch die eIEEN 777-saitige E-Gitarre, und der Preis ist okay und mitternachtsblau Und ist das richtig? En 66 hat blaue Farbe? Ich denke schon. Ja, Farbe Blau, die ENB, 55 hatte Korallenrot Okay, ja, hier stimmt alles. Und lass uns nach den Basen fragen. Haben Sie eine elektrische Basis? Ja, wir haben E-Bässe zur Verfügung. Und hier hat es auch die beiden E-Bases gefunden , die wir hier in unserem Shop anbieten. Es sind auch Funktionen, ja. Also alles okay, Koralle, Rot, Farbe, die Preise, richtig, alles korrekt. Okay. Also das war einfach. Jetzt haben wir hier vier Produkte, immer noch nicht sehr viele. Aber okay, ich denke, um zu beweisen , dass das funktioniert, ist es genug. Und natürlich können Sie eine Datenbank haben. Vielleicht haben Sie bereits eine Datenbank, und dann können Sie natürlich auch Datenbankabfragen stellen. Wir werden das nicht hier tun. Wir sehen uns im nächsten Video. 31. Mehrere Parameter in Funktionsaufrufen: Okay, in diesem Video werden wir unserem Funktionsaufruf einen weiteren Parameter hinzufügen In diesem Fall ist es der Funktionsaufruf „Produkte nach Typ suchen “, und wir werden eine Preisspanne als Parameter hinzufügen. Das erste, was ich getan habe , ist eine neue Zuordnung der Preisspanne zu den Produkten. Deshalb haben wir hier unsere Produkte nach Preisklassen sortiert. In der unteren Preisklasse haben wir nur eines mit dem Produkt eins in der mittleren Preisklasse, wir haben zwei und drei und in der oberen Preisklasse haben wir die vier. Und Sie können es hier überprüfen. Der hohe Preis ist 1599. Der mittlere Preis liegt bei etwa tausend 300, und das niedrige Budget ist kein wirklich niedriges Budget Wir können es etwas niedriger machen. Lass uns 600 oder 69999 draus machen. Okay. Natürlich haben wir unserer Funktion auch einen neuen Parameter hinzugefügt . Und hier sind unsere Funktionen, und hier sind die feinen Produkte nach Typ Funktion. Wir haben hier bereits den Parameter für den Produkttyp, und ich habe den Parameter Preisspanne hinzugefügt. Und wichtig hier ist natürlich die Beschreibung. Der Bereich, in den der Preis des Produkts fällt, sollte zwischen niedrig, mittel und hoch liegen, und das sind die Schlüssel zu unserer Karte hier. Das ist also wichtig. Diese drei Tasten hier Okay, und so haben wir hier unseren Funktionshandler , der ein wenig geändert werden musste, und ich habe hier die Filterung mit einer Preisspanne aufgenommen. Zunächst ermitteln wir hier die Preisspanne aus den Arcs, args dot Price Range args dot Price Und dann mache ich hier einen Filter. Also filtere ich mit dieser Preisspanne die Produkte heraus , die nicht in der Preisklasse liegen, nicht in der richtigen Preisklasse , um Produkte abzubilden. Ich besorge mir hier die Produkte in dieser Preisklasse. Das ist ein Array, und dann mache ich Includes mit der ID. Und wenn die ID enthalten ist, wird sie in dem Array sein , das von der Filterfunktion zurückgegeben wurde, und dann machen wir die Map hier und das wird in den gefundenen Produkten gespeichert. Und wenn das gefundene Produkt die Länge Null hat, wurde kein Produkt gefunden, also geben wir den Text an, hier wurde kein Produkt gefunden. Und wenn es größer als Null ist, fügen wir es hier zusammen und reduzieren es hier nicht mehr. Gefundene Produkte werden mit einer neuen Linie kombiniert, was viel einfacher ist als das Reduzieren, das ich hier zuvor gemacht habe. Das ist also unser neuer Funktionshandler hier mit einem neuen Argument, Preisklasse und Okay, ich lade hier neu und frage, ob Sie eine preisgünstige E-Gitarre haben, und diese sollte unsere 69999 E nice EN 66 zurückgeben Das ist der richtige. Lassen Sie uns überprüfen, ob es eine E-Basis mit niedrigem Budget gibt. Haben Sie ein niedriges E-Basisbudget, und das sollte keine Ergebnisse bringen. Ich entschuldige mich, aber es hat den Anschein, dass wir derzeit keine E-Basen mit niedrigen Haushaltsmitteln haben, und das ist wahr denn unsere E-Basen beginnen im mittleren Bereich, und dann haben wir, lassen Sie uns sehen, wir haben nur mittelgroße E-Basen Okay. Also, es gibt keine Gitarre in der mittleren Preisklasse. Lass uns das überprüfen. Haben Sie E-Gitarren im mittleren Preissegment, und sie bringen auch kein Ergebnis Ich entschuldige mich. Das ist richtig. Hast du eine teure E-Gitarre und damit sollten wir unsere sehr teure Gitarre hier haben. Ja, die siebensaitige 1599. Das ist unsere teuerste Gitarre hier. Also ist hier alles richtig. Und wir haben hier unseren zweiten Filterparameter , die Preisspanne. Und natürlich können Sie hier weitere Filterparameter hinzufügen, wie vielleicht eine Reihe von Tonabnehmern, so etwas, natürlich die Anzahl der Zeichenketten und so weiter Okay, sieh dir das nächste Video an. 32. Festsetzung der Preisspanne nicht definiert: In diesem Video müssen wir einen Fehler beheben , den wir beim letzten Mal nicht bemerkt haben. So können wir den Bug also provozieren. Wir müssen fragen, hast du Beispiel eine siebensaitige Gitarre? Und dann ist das Problem hier, dass wir den Fehler bekommen , dass Eigenschaften von undefinierten Leseinbegriffen gelesen werden können von undefinierten Leseinbegriffen Lassen Sie uns also den Grund für diesen Fehler überprüfen. Das schließt hier mit ein, und das bedeutet, dass die Preisspanne zwischen den Produkten und der Preisspanne undefiniert zurückkehrt Deshalb können wir Includes bei undefined natürlich nicht als undefiniert bezeichnen. Okay, was ist hier das Problem? Das Problem ist, dass die Preisspanne, wie wir hier sehen können, undefiniert ist. Warum ist sie undefiniert Weil der Benutzer keine Preisspanne angegeben hat. Er hat nur nach einer siebensaitigen Gitarre ohne Angabe der Preisklasse gefragt . Das Sprachmodell bot hier also keine Preisspanne. Also müssen wir uns damit auseinandersetzen. Und natürlich müssen wir zuerst überprüfen, ob eine Preisspanne anhand des Sprachmodells eingereicht wurde hier wirklich eine Preisspanne anhand des Sprachmodells eingereicht wurde. Wie können wir das machen? Zuerst müssen wir die Preisspanne überprüfen. Wenn die Preisspanne nicht definiert ist, wird dies zutreffen Preisspanne entspricht undefiniert, dann wird sie nicht herausgefiltert, oder wir haben eine Preisspanne für Produkte, die Preisspanne beinhaltet die ID, aber diese Option kann auch undefiniert Deshalb müssen wir hier ein Fragezeichen setzen, dann ist es undefiniert und die Inklusivwerte werden Das wird natürlich komplett herausgefiltert. Es werden dann also keine Produkte gefunden. Okay, und in diesem Fall wird jedes Produkt, das im Ergebnisarray gefunden wurde , hier in die Map gestreamt Okay, lassen Sie uns überprüfen ob das hilft. Wir haben dieselbe Frage gestellt. Hast du eine siebensaitige Gitarre? Ja, wir haben dieses Mal, keine Ausnahme, und alles ist in Ordnung. Und wir können auch überprüfen die Preisspanne für Server tatsächlich undefiniert ist In diesem Fall ist die Preisspanne also undefiniert, und dann wird dieser Callback hier gefiltert , hier immer true zurückgegeben, und alle gefundenen Produkte werden in die Map aufgenommen und dann wird diese Zeichenfolge aus den gefundenen Produkten erstellt In diesem Fall gibt es nur ein Produkt, und das ist eine siebensaitige Gitarre, und das Sprachmodell sagt uns das richtige, wir haben die E Nice EN 77. Der Preis ist 1.599€ und es ist okay, also ist jetzt alles in Ordnung Wir beheben den Fehler und sehen uns im nächsten Video. 33. Produkt zum Warenkorb hinzufügen: Willkommen zu diesem Video, und hier wollen wir versuchen, dem LLM die Möglichkeit zu geben , ein Produkt in den Warenkorb zu legen, also implementieren wir keinen Einkaufswagen, sondern wir haben einen Funktionsaufruf implementiert, der nur ein Konsolenprotokoll und dann diesen Funktionsaufruf durchführt und dann dem LLM mitteilt, dass das Produkt dem Einkaufswagen hinzugefügt wurde Und das ist alles. Und wenn Sie wirklich einen Einkaufswagen implementieren wollen, dann müssen Sie diesen Teil selbst erledigen. Hier versuchen wir, dem LLM eine Funktion zur Verfügung zu stellen , sodass das LLM es erkennt, wenn der Kunde darum bittet , das Produkt in den Warenkorb zu , das Produkt in den legen, und dann die Funktion aufruft Okay, ich habe es bereits implementiert, hier eine neue Funktion hinzugefügt, und diese Funktion heißt natürlich Produkt hinzufügen, zwei Karten hinzufügen, und in der Beschreibung wird das Produkt mit einer bestimmten ID zur Karte des Kunden hinzugefügt einer bestimmten ID zur Karte des Kunden Und als Parameter habe ich den Produktnamen und den Produktnamen. Ist natürlich der Name des Produkts, das der Karte hinzugefügt werden soll. Und ich musste auch die Systemaufforderung ein wenig erweitern. Also hier ist dieser letzte Satz neu, oder die letzten beiden Sätze sind neu. Wenn der Kunde ein Produkt kaufen möchte, fügen Sie es bitte der Karte hinzu. Und ich könnte hier auch über den Funktionsaufruf unter Produkt zur Karte hinzufügen den Funktionsaufruf unter , um genauer zu sein. Und dann musste ich hinzufügen, dass du nicht nach Anmelde- oder Zahlungsinformationen fragen musst , denn während ich es ausprobierte, wurden immer wieder Login-Kontoinformationen, Zahlungsinformationen und so weiter gefragt. Also habe ich diesen Satz hinzugefügt, den letzten, um das zu vermeiden. Okay, das ist es für die Funktionsbeschreibung. Und hier haben wir den Funktionshandler, den Funktionsaufruf-Handler, das Produkt zur Karte hinzufügen, und wir ermitteln den Produktnamen aus den Argumenten und protokollieren ihn dann einfach in der Konsole. Und dann ist der Inhalt, die Antwort auf das Sprachmodell das Produkt wurde der Karte hinzugefügt, und das war's. Und lass es uns versuchen. Okay, also ich frage speziell nach einem Modell. Haben Sie den E Nye EN 77? Mal sehen, ob es ihn findet. Ja, haben wir. Okay? Scheint der richtige zu sein. Und jetzt bitte ich es, es in den Warenkorb zu legen. Kannst du das zu meiner Einkaufskarte hinzufügen? Und mal sehen, ob es das wirklich tut. Ich habe das E nice E und 77 zu deiner Einkaufskarte hinzugefügt. Kann ich Ihnen noch mit etwas anderem weiterhelfen? Also das scheint hier funktioniert zu haben. Lassen Sie uns hier das Konsolenprotokoll überprüfen und das Produkt zur Karte E hinzufügen, nett EN 77. Das hat also sehr gut funktioniert. Wenn du hier also einen Einkaufswagen programmierst, kannst du hier das Hinzufügen zur Einkaufskarte aufrufen, das echte, nicht das Konsolenlog hier. Und Sie können es natürlich in einer Datenbank speichern. Lassen Sie den Benutzer also wirklich in ein Konto einloggen, um den Checkout und solche Dinge erledigen zu können . Aber das ist eine Art Vorbereitung hier, aber ich möchte dir hier auch ein Problem zeigen , das wir noch nicht gelöst haben. Wenn wir also nach einem bestimmten Modell fragen, habt ihr dann genau die EN 77. Also lasse ich hier die EIs weg. Haben Sie die EN 77? Es tut mir leid. Wir haben die EN 77 nicht, also erkennt sie sie nicht, denn was ist hier das Problem? Das Problem ist, dass wir die Namen der Karten haben , zum Beispiel, wir haben nur diese Schlüssel hier, und wenn sie nicht zu 100% passen, wenn wir nur einen Teil davon haben, oder vielleicht haben wir es ein bisschen anders geschrieben. Haben Sie das Auge EN 77, ohne Leerzeichen hier, ohne Leerzeichen, ich glaube, es wird es nicht finden. Ich entschuldige mich. Aber wenn ich frage, ob Sie die E Nie EN 77 haben , wird sie hoffentlich fündig Ja, es findet es. Okay. Aber haben Sie jetzt die EN 77? Fragen wir es noch einmal. Ja, und jetzt findet es es. Warum? Weil das in der Geschichte des Chats hier enthalten ist, weiß sie, dass die EN 77 das hier ist, und deshalb weiß sie es hier, aber vorher nicht. Und das Problem ist hier , dass unsere Suche nur die exakte Suche hier auf E Nice EN 77 ist . Schauen wir uns also im nächsten Video an, ob wir das irgendwie abmildern können nächsten Video an, ob wir das irgendwie abmildern Siehst 34. Fuzzy-Produktsuche: Okay, beim letzten Mal hatten wir das Problem, dass der Kunde, wenn er nach einem Produktnamen fragt, nicht genau dem Namen entspricht, den wir in unserer Datenbank haben, wie wir ihn in unserer Map haben, er ihn nicht findet und dann davon ausgeht, und dann davon ausgeht dass dieses Produkt nicht verfügbar ist Wenn wir also zum Beispiel nach der EN 77 fragen , schauen wir uns zum Beispiel EN 77 an, dann wird sie nicht gefunden, weil sie nicht in unserer Karte steht. Wir haben diese Zuordnung von Namen zu Produkten. Hier haben wir die genauen Namen. Unser Funktionshandler sucht nach dem genauen Schlüssel, und in diesem Fall wird er gefunden, er gibt die Produkt-ID zurück, aber wenn die Kunden zum Beispiel nur Informationen über die Produkte E und 77 anfordern , dann wird diese hier in dieser Map nicht gefunden. Was tun wir also dagegen? Wir ändern hier die Beschreibung der Funktion „Produkt suchen“ und ich habe sie ein wenig um weitere Informationen erweitert , was passieren sollte , wenn das Produkt nicht unter dem genauen Namen gefunden wird. Hier haben wir also die vorherige Version, ruft mehr Informationen über ein bestimmtes Produkt oder Modell ab, aber jetzt mehr Informationen darüber, was passiert wenn ein Produkt nicht mit dem genauen Namen gefunden wird Wenn das Produkt nicht unter dem genauen Namen gefunden wird, gibt diese Funktion alle verfügbaren Produktnamen zurück Wir geben also alle Schlüssel in dieser Map zurück, die wir haben, und alle Produktnamen, bei denen es sich um die richtigen Produktnamen handelt. Der Assistent sollte dann den Namen auswählen , der dem Namen, nach dem der Kunde fragt, am nächsten kommt , und den Kunden fragen, ob dies das richtige Produkt ist. Also sollte es sagen: Okay, also wir haben diesen, möchtest du, dass ich dir mehr Informationen gebe , so etwas in der Art? Ähm, wenn der Kunde dann nach weiteren Informationen über das Produkt fragt, sollte der Assistent diese Funktion mit dem richtigen Produktnamen erneut aufrufen . diese Funktion also zum zweiten Mal aufgerufen wird, sollte sie hier das richtige Produktmodell und den Produktnamen auswählen . Okay. Also habe ich hier auch die Beschreibung des Parameters, des Produktmodells, des Produktnamens und des Modellnamens geändert , um ihn zu finden. Und wenn es nicht genau übereinstimmt, die Funktion alle Produktnamen zurück, sodass das LLM einen ähnlichen auswählen kann, oder ich sollte vielleicht sagen, dass der Assistent einen ähnlichen auswählen kann Vielleicht ist das ein bisschen besser. Und dann gehen wir hier zu unserem Funktionshandler. Es ist also dieser Fall für den Fall , dass die Produkt-ID in unserer Map gefunden wird, dann ist alles in Ordnung und wir geben die Produktbeschreibung hier zurück, und der andere Fall ist anders als zuvor, bevor der Inhalt nur war , dass das Produkt nicht gefunden wurde, etwa so. Und jetzt sind es alle Schlüssel in den Namen, zwei Produkte werden zu einer neuen Produktlinie zusammengefügt. In jeder Zeile wird es also den genauen Produktnamen geben. Und dann sollte der LLM einen auswählen, der dem, nach dem der Kunde gefragt hat , am nächsten kommt nach dem der Kunde gefragt hat und diese Funktion dann erneut aufrufen Und dann findet diese Funktion die richtigen Produktinformationen und gibt sie hier zurück Das ist also theoretisch, also lass es uns ausprobieren. Haben Sie die EN 77? Also ohne Leerzeichen und ohne den Herstellernamen, mal sehen, ohne ein Fragezeichen. Ja, wir haben den E Nie EN 77, und hier steht wirklich der richtige Name E Nie EN 77. Das ist die Zeichenfolge, die wir als Schlüssel in unserer Map haben. Das sollte also okay sein. Zum Kauf verfügbar, möchten Sie es Ihrer Karte hinzufügen. Nein, bitte. Geben Sie mir zunächst mehr Informationen über diese Gitarre. Lass uns sehen. Und dieses Mal sollte es wirklich die Produktinformationen finden. Die Nice ist eine siebensaitige E-Gitarre. Korrekt. Es hat eine mitternachtsblaue Farbe. Ist ein Hamburger und zwei Single-Coil-Tonabnehmer. Das ist richtig Dies sind die Informationen, die wir in unserer Produktkarte haben. Der Preis der Gitarre ist auch korrekt. Gibt es noch etwas, das du gerne über diese Gitarre wissen möchtest? Nein, bitte lege es in meinen Warenkorb. Mal sehen, ob das auch funktioniert. Ich habe die Gitarre EN 77 in Ihren Warenkorb gelegt. Okay, das ist es also. Scheint zu funktionieren. Wir können das Protokoll auch hier überprüfen. Aber ich denke, das hat wie geplant funktioniert. Es sieht so aus, bitte geben Sie mir zuerst weitere Informationen, finden Sie das Produkt. Und dieses Mal bekommt es die Produktinformationen hier. Okay, und bitte füge es meinem Einkaufswagen hinzu. Funktion Produkt zur Karte hinzufügen. Das Produkt wurde der Karte hinzugefügt. Okay, wunderbar. Das ist es , wonach wir gesucht haben. Wir haben die Suche an das Sprachmodell delegiert. Aber natürlich könnte es ein Problem sein, wenn diese Liste von Schlüsseln hier vielleicht etwas länger ist als hier. Wir haben nur vier Produkte, also gibt es hier nur vier Produktnamen. Und wenn Sie Tausende von Produkten haben, könnte dies aufgrund der Länge und der Token-Einschränkungen hier ein Problem sein. Aber wenn du einen normalen Laden hast , wie vielleicht diesen Gitarrenladen, hast du vielleicht 100 oder so, und das sollte okay sein. Wenn die Produktnamen etwas länger sind als diese hier, könnte das vielleicht ein Problem sein, aber normalerweise haben Sie ein Token-Limit von, sagen wir, GPT 35, wir haben ein Token-Limit von 4.096 Token, oder Sie können auch das 60-K-Modell verwenden, das etwas teurer ist, aber dieses hat 16.384 Token als Limit. Das sollte also auch für viele Produktnamen hier ausreichen für viele Okay, es gibt also auch eine andere Art, damit umzugehen. Wir könnten Einbettungen gebrauchen, aber das werden wir nicht tun. Hier, zu diesem Zeitpunkt, ist es okay für uns. Wir haben nicht so viele Produkte, und es ist praktisch, hier alle Produktnamen aufzulisten, und es hat funktioniert, und der LLM kann das auswählen das am nächsten kommt, und dann den Kunden fragen, ob dies der richtige ist, und dann kann der Kunde weitere Informationen anfordern Okay, das ist es für dieses Video. Wir sehen uns im nächsten. 35. Zusammenfassung: zum Abschluss dieses Kurses Lassen Sie uns zum Abschluss dieses Kurses einen Blick auf unsere Erfolge werfen. Wir haben drei Anwendungen entwickelt , die die Leistungsfähigkeit der Open AI API und des LLM für Konversationen in natürlicher Sprache und KI-gestützter Kommunikation Die erste Anwendung war also ein HachBT-Klon, HatchBT in Das Geheimnis bestand darin, den Chat-Verlauf zu verwalten und den Chat-Verlauf an das LLM weiterzugeben , um Antworten zu erhalten Als Nächstes haben wir ein textbasiertes Abenteuerspiel oder den Beginn eines textbasierten Abenteuerspiels entwickelt , mit, glaube ich, zwei Quests aber es hat drei NPCs, mit denen man ganz natürliche Weise sprechen kann Und wir haben maßgeschneiderte Systemaufforderungen für jeden Charakter und wir verwenden Funktionsaufrufe für die Verfolgung der Quests und den Abschluss der Quests Die letzte App simulierte einen Verkaufsassistenten für einen Online-Gitarrenladen Benutzer können mit dem Assistenten chatten, sich nach Produkten erkundigen und ihn sogar anweisen, den Einkaufswagen mit den Produkten zu füllen Und dank Open AI LLM fühlt sich das wie ein echter Chat mit einem Verkäufer Durch diese Apps haben wir gelernt, die Open AI-API in JavaScript zu verwenden , und wir verwenden Astrojs für das Backend für den Server und React für das Wir haben gelernt, die Chat-Completion-API von OpenAI zu verwenden. Wir haben gelernt, Systemaufforderungen zu erstellen, um dem LLM einen Kontext zum Verständnis der Situation und Hintergrundinformationen zu geben einen Kontext zum Verständnis , und wir haben Funktionsaufrufe zum Beispiel für unser Spiel für Aktionen im Spiel wie das Quest-Tracking und auch für den Datenabruf für unseren Vertrieb genutzt Aktionen im Spiel wie das Quest-Tracking und auch für den Datenabruf für unseren Quest-Tracking und auch für den — unsere Reise hat nur an der Oberfläche dessen gekratzt der Die API bietet viel mehr Einbettungen für tiefgehende Analysen und auch für die Erstellung von Bildern, Dolly und vielleicht wissen Sie bereits, dass dies wie mitten in der Reise von Open AI ist. Und es gibt auch eine Sprach-zu-Text-API, die als Whisper bezeichnet wird. Was wir also gelernt haben, ist gewissermaßen erst der Anfang des Potenzials der Open AI API Lassen Sie uns also Chachi Bitty die letzten Worte dieses Kurses geben die letzten Worte dieses Eine Zusammenfassung: Denken Sie daran, dass unsere Reise mit der OpenAI-API Die Fähigkeiten, die Sie erworben haben öffnen Türen zur Welt der KI-gestützten Kreativität ob es darum geht, Interaktionen gestalten, immersive Abenteuer oder Benutzererlebnisse zu verfeinern — Ihr Fachwissen kann die Zukunft gestalten Bleiben Sie neugierig, lassen Sie sich inspirieren und überschreiten Sie immer wieder Grenzen Ihre Reise steckt voller Potenzial. Danke, dass du Teil dieser Erfahrung warst. Viel Glück bei all Ihren zukünftigen Bemühungen.