Also, wie geht es dir?
Ich habe mir einige Projekte auf meinem Github angesehen und bin auf einen Chatbot gestoßen, den ich kürzlich mit Google Gemini erstellt habe. Die Idee bestand darin, einen Sprachassistenten zu entwickeln, bei dem Sie mit der KI sprechen können, um Ihre Fähigkeiten in der gewünschten Sprache zu verbessern.
Also dachte ich: „Warum teile ich nicht allen mit, wie ich dieses Projekt gemacht habe?“. Und deshalb schreibe ich hier, um Ihnen zu zeigen, wie ich jeden Teil gemacht habe. Beginnen wir also mit dem Frontend der Anwendung.
Nun, um einige Maßnahmen zu rechtfertigen, die ich im Rahmen des Projekts ergreifen werde, möchte ich gleich sagen, dass wir mit express.js einen „Server“ erstellen werden, auf dem wir eine API bereitstellen werden Route „/chat“, die für die Kommunikation zwischen dem Frontend und der Gemini-API verwendet wird.
Also müssen wir unser Projekt mit dem Befehl npm init -y starten. Das Ergebnis ist eine package.json-Datei, die etwa so aussieht:
{ "name": "chatbot-ia", "version": "1.0.0", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "description": "" }
Außerdem müssen wir unsere Dateien wie folgt organisieren:
public |__ index.html |__ style.css |__ script.js package.json
Sobald das erledigt ist, erstellen wir den visuellen Teil unseres Chatbots. Auf geht's!
Da die Idee darin bestand, ein Projekt für eine einstündige Live-Codierung zu erstellen, habe ich beschlossen, eine sehr einfache Schnittstelle mit HTML, CSS und JavaScript für den Chatbot zu erstellen. Da ich mit Design ziemlich schlecht bin, habe ich die Schriftart und die Farben ausgewählt, die mir am besten gefallen. Also fangen wir an und beginnen mit HTML.
<!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Chatbot Assistente de Idiomas</title> <link rel="preconnect" href="https://fonts.googleapis.com" /> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> <link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet" /> <link rel="stylesheet" href="style.css" /> </head> <body> <div> <p>E agora o CSS da página<br> </p> <pre class="brush:php;toolbar:false">* { box-sizing: border-box; margin: 0; padding: 0; font-family: "Roboto", sans-serif; } body { display: flex; justify-content: center; align-items: center; min-height: 100vh; background-color: #f2f2f2; } .chat-container { width: 100%; max-width: 400px; background-color: #fff; border-radius: 10px; box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.1); overflow: hidden; } .chat-box { height: 300px; max-height: 500px; overflow-y: auto; padding: 16px; display: flex; flex-direction: column; } .chat-form { width: 100%; display: flex; justify-content: space-between; } .message { padding: 10px; margin-bottom: 8px; border-radius: 20px; width: auto; display: inline-flex; max-width: 50%; word-wrap: break-word; } .model { background-color: #e0e0e0; color: #333; align-self: flex-start; justify-content: flex-start; } .user { background-color: #4caf50; color: white; align-self: flex-end; justify-content: flex-end; margin-left: auto; } .input-container { display: flex; padding: 10px; border-top: 1px solid #ddd; } #user-input { flex: 1; padding: 10px; border: 1px solid #ddd; border-radius: 20px; outline: none; } #send-button { margin-left: 10px; padding: 10px 15px; background-color: #4caf50; color: white; border: none; border-radius: 20px; cursor: pointer; } #send-button:hover { background-color: #45a049; }
Das Ergebnis sollte ein Bildschirm sein, der dem unten gezeigten ähnelt:
Unsere Anwendung ist ein Chatbot, der mit der Gemini-API kommuniziert. Wir müssen also die Logik schaffen, die diese Kommunikation ermöglicht. Um zu verdeutlichen, was wir tun sollten, werde ich es unten auflisten:
Also los geht's, fügen wir zunächst einen Ereignis-Listener hinzu, um unsere Logik erst auszuführen, nachdem der DOM-Inhalt vollständig geladen ist:
// script.js document.addEventListener("DOMContentLoaded", () => { const chatForm = document.getElementById("chat-form"); const chatWindow = document.getElementById("chat-window"); const userInput = document.getElementById("user-input"); // ... });
Wir erstellen Konstanten, um die Elemente zu erfassen, die uns interessieren, wie z. B. die Eingabe, in die der Benutzer eingibt, das Fenster, in dem Nachrichten angezeigt werden, und das Formularfeld, da wir abhören, wenn es übermittelt wird, und dann unsere Logik ausführen.
Weiter geht es mit dem zweiten Schritt, bei dem wir die Route anfordern, die wir erstellen, indem wir die Nachricht des Benutzers senden.
{ "name": "chatbot-ia", "version": "1.0.0", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "description": "" }
In diesem Code überwachen wir das Submit-Ereignis im Formularelement. Daher verwenden wir zunächst „preventDefault“, um zu verhindern, dass die Seite jedes Mal, wenn wir eine Nachricht senden, neu geladen wird. Dann nehmen wir, was der Benutzer eingegeben hat, entfernen die Leerzeichen aus der Nachricht, vom Anfang bis zum Ende mit trim() und prüfen, ob die Nachricht nicht leer, leer ist. Wenn die Nachricht leer ist, stoppen wir unseren Prozess genau dort.
Wenn wir nun die Nachricht des Benutzers haben, zeigen wir sie mit der Funktion addMessage() auf dem Bildschirm an. Diese Funktion ist wie folgt definiert:
public |__ index.html |__ style.css |__ script.js package.json
Im Grunde empfängt es, wer die Nachricht gesendet hat, sowie den Text der Nachricht und zeigt diese Informationen im Chat an, wobei die richtigen Stile des Benutzers und des Modells, des KI-Modells, hinzugefügt werden.
Okay, jetzt zurück zur Logik unserer Anfrage: Wenn wir eine Benutzernachricht haben, müssen wir eine POST-Anfrage über die Abruf-API stellen, und der Hauptteil dieser Anfrage ist die Benutzernachricht.
Wenn wir abschließend eine Antwort auf diese Anfrage erhalten, zeigen wir die Nachricht des Models im Chat an. Andernfalls nehmen wir den Fehler und zeigen ihn in der Konsole mit console.error() an oder zeigen eine Nachricht im Chat selbst auf angepasste Weise an. Und um die Benutzerfreundlichkeit des Chats zu verbessern, haben wir die Benutzernachrichteneingabe mit userInput.value = ""; bereinigt.
Die Datei „script.js“ sieht folgendermaßen aus:
<!DOCTYPE html> <html lang="pt-br"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Chatbot Assistente de Idiomas</title> <link rel="preconnect" href="https://fonts.googleapis.com" /> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> <link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet" /> <link rel="stylesheet" href="style.css" /> </head> <body> <div> <p>E agora o CSS da página<br> </p> <pre class="brush:php;toolbar:false">* { box-sizing: border-box; margin: 0; padding: 0; font-family: "Roboto", sans-serif; } body { display: flex; justify-content: center; align-items: center; min-height: 100vh; background-color: #f2f2f2; } .chat-container { width: 100%; max-width: 400px; background-color: #fff; border-radius: 10px; box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.1); overflow: hidden; } .chat-box { height: 300px; max-height: 500px; overflow-y: auto; padding: 16px; display: flex; flex-direction: column; } .chat-form { width: 100%; display: flex; justify-content: space-between; } .message { padding: 10px; margin-bottom: 8px; border-radius: 20px; width: auto; display: inline-flex; max-width: 50%; word-wrap: break-word; } .model { background-color: #e0e0e0; color: #333; align-self: flex-start; justify-content: flex-start; } .user { background-color: #4caf50; color: white; align-self: flex-end; justify-content: flex-end; margin-left: auto; } .input-container { display: flex; padding: 10px; border-top: 1px solid #ddd; } #user-input { flex: 1; padding: 10px; border: 1px solid #ddd; border-radius: 20px; outline: none; } #send-button { margin-left: 10px; padding: 10px 15px; background-color: #4caf50; color: white; border: none; border-radius: 20px; cursor: pointer; } #send-button:hover { background-color: #45a049; }
Und damit sind wir mit dem Frontend-Teil des Chatbots fertig. Der nächste Schritt besteht darin, unseren „Server“ zu erstellen, mit der Gemini-API zu kommunizieren und mit ihm über das Leben, das Universum und alles andere zu sprechen!
Bis zum nächsten Mal!
Das obige ist der detaillierte Inhalt vonErstellen eines Chatbots mit JavaScript und Gemini AI. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!