


Erstellen eines Chatbots mit JavaScript und Gemini AI: Erstellen des Backends
Jan 04, 2025 am 09:26 AMSpeichern! o
Wir setzen die Erstellung unseres Chatbots mit Javascript und Gemini AI fort und fügen das ?Backend“ des Projekts hinzu. Beim letzten Mal haben wir das Frontend mit HTML, CSS und Javascript erstellt, wobei wir garantiert haben, dass die Benutzeroberfl?che eine Konversation zwischen dem Benutzer und dem Chatbot widerspiegelt.
Jetzt müssen wir einen Server erstellen und eine Route mit express.js konfigurieren, um mit der Gemini-API zu kommunizieren. Lass uns gehen!
Projektabh?ngigkeiten installieren
Nun, wir brauchen express.js, das Google Gemini SDK, und um unseren API-Schlüssel zu schützen, werde ich dotenv installieren, um mit Umgebungsvariablen zu arbeiten.
npm install @google/generative-ai express dotenv
Jetzt sind wir bereit, unseren Server zu erstellen und dabei Best Practices wie die Verwendung lokaler Umgebungsvariablen zum Schutz privater Daten zu übernehmen.
Dazu erstellen wir im Stammordner des Projekts eine Datei mit dem Namen server.js. In dieser Datei importieren wir zun?chst die Abh?ngigkeiten und konfigurieren die erforderlichen Ressourcen.
const express = require("express"); require("dotenv").config(); const { GoogleGenerativeAI } = require("@google/generative-ai"); const app = express(); const port = 3000; const genAI = new GoogleGenerativeAI(process.env.GOOGLE_GEMINI_API_KEY); app.use(express.static("public")); app.use(express.json());
Dieser Code konfiguriert Express für die Bereitstellung statischer Dateien aus dem ??ffentlichen“ Ordner und akzeptiert Anfragen mit JSON-Nutzlast. Aus diesem Grund legen wir die Dateien index.html, style.css und script.js in diesem Ordner ab. Wir haben die Anwendung auch so konfiguriert, dass sie auf Port 3000 l?uft.
Wir verwenden die @google/generative-ai-Bibliothek, um die Gemini-API zu integrieren und sie mit einem Schlüssel zu authentifizieren, der in einer Umgebungsvariablen namens GOOGLE_GEMINI_API_KEY gespeichert ist.
Aber wo bekommen wir diesen API-Schlüssel? Das werden wir jetzt herausfinden.
Gemini-API-Schlüssel
Erhalt des Schlüssels
Um einen Gemini-API-Schlüssel zu erhalten, empfehle ich, dass Sie bei einem ?@gmail.com“-Konto angemeldet sind. Rufen Sie anschlie?end diesen Link auf und Sie sehen einen Bildschirm wie diesen:
Klicken Sie auf die Schaltfl?che ?API-Schlüssel erstellen“, geben Sie ein Projekt an, in dem Sie diesen Schlüssel verwenden m?chten, und schon sind Sie fertig. Ihr Schlüssel wird unten angezeigt und Sie k?nnen ihn anzeigen und sogar kopieren, um mit dem n?chsten Schritt fortzufahren.
Schützen Sie Ihren API-Schlüssel
Erstellen Sie nun in Ihrem Projekt eine Datei mit dem Namen .env.local oder einfach .env im Stammordner Ihres Projekts. Geben Sie in dieser Datei Ihren API-Schlüssel wie folgt ein:
GOOGLE_GEMINI_API_KEY="sua-chave-vai-aqui"
Jetzt speichern Sie Ihre Datei und fertig. Wenn Sie den vorherigen Schritt korrekt ausgeführt haben, funktioniert Ihr API-Schlüssel.
PS: Achten Sie auf den Plan, der in Ihrem API-Schlüssel erscheint. Gemini bietet einen kostenlosen Plan mit einer begrenzten Anzahl an Tokens an, die Ihr Schlüssel zurückgeben kann. Wenn Sie eine gr??ere Menge an Token wünschen, sollten Sie einen kostenpflichtigen Plan in Betracht ziehen. Wir werden den kostenlosen Plan nutzen, der uns zwar begrenzt, aber den Austausch einiger Nachrichten mit dem Chatbot erm?glicht.
Erstellen der /chat-Route
Mit den konfigurierten Abh?ngigkeiten und dem API-Schlüssel in der Hand ?ffnen wir nun die Türen zu den M?glichkeiten, die wir mit künstlicher Intelligenz machen k?nnen.
In der Datei server.js erstellen wir die /chat-Route:
npm install @google/generative-ai express dotenv
Unsere Route ist vom Typ POST, da Sie im Textk?rper eine Nachricht erhalten, genau die Nachricht des Benutzers, der mit dem Chat interagieren wird. Bei dieser Nachricht verwenden wir also eine kleine defensive Programmierung (es schadet niemandem, vorsichtig zu sein, lol) und prüfen, ob wir keine Nachricht haben. Wenn wir dies nicht tun, wird ein Fehler als Antwort zurückgegeben und eine Nachricht ausgegeben.
Wenn wir die Nachricht haben, senden wir sie als Aufforderung für das von uns ausgew?hlte Modell wie folgt:
const express = require("express"); require("dotenv").config(); const { GoogleGenerativeAI } = require("@google/generative-ai"); const app = express(); const port = 3000; const genAI = new GoogleGenerativeAI(process.env.GOOGLE_GEMINI_API_KEY); app.use(express.static("public")); app.use(express.json());
Da es sich bei dieser Kommunikation um einen asynchronen Prozess handelt, verwenden wir try/catch, um die Antwort zu verarbeiten. Zuerst definiere ich das Gemini-Modell, das verwendet werden soll (eine Liste der Modelle finden Sie unter diesem Link). In diesem Fall habe ich mich für gemini-1.5-flash entschieden.
Der zweite Schritt besteht darin, den Chat zu starten. Mit model.startChat() kann ich also die Kommunikation mit Gemini starten und die maximale Anzahl an Token konfigurieren, die ich in der Antwort haben m?chte (in diesem Fall 100 Token pro Antwort).
Jetzt warten wir auf diese Antwort, nachdem wir die Nachricht mit chat.sendMessage(message) an das Modell gesendet haben. Wenn wir die Antwort haben, senden wir sie an die Person zurück, die die Anfrage gestellt hat, und konvertieren das vom Modell zurückgegebene Textformat in JSON.
Und zu guter Letzt: Wenn wir einen Fehler haben, k?nnen wir ihn innerhalb von Catch verwenden, um diesen Fehler in der Konsole auszul?sen und au?erdem einen Status 500 zurückzugeben, was dem Kunden, der diese ?Mini-API“ nutzt, das Leben erleichtert. Sch?nheit?
Jetzt müssen wir nur noch angeben, wo unsere ?Mini-API“ mit dem Code-Snippet unten ausgeführt werden soll:
GOOGLE_GEMINI_API_KEY="sua-chave-vai-aqui"
Unsere API wird auf dem Port ausgeführt, den wir zu Beginn angegeben haben. Der vollst?ndige server.js-Code wird unten angezeigt:
app.post("/chat", async (req, res) => { const { message } = req.body; if (!message) { return res.status(400).json({ error: "Mensagem n?o pode estar vazia." }); } //... });
Testen des Chatbots
Jetzt ist der mit Spannung erwartete Moment gekommen, unseren Chatbot zu testen. ?ffnen wir dazu ein Terminal und geben den folgenden Befehl ein:
try { const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash", }); const chat = model.startChat({ history: [], generationConfig: { maxOutputTokens: 100 }, }); const result = await chat.sendMessage(message); res.json({ response: result.response.text() }); } catch (error) { console.error(error); res.status(500).json({ error: "Erro ao processar mensagem." }); }
Nach der Ausführung dieses Befehls sollten Sie im Terminal die folgende Meldung erhalten:
app.listen(port, () => { console.log(`Servidor rodando em http://localhost:${port}`); });
Wenn Sie nun auf die URL http://localhost:3000 zugreifen, eine Nachricht in die Eingabe schreiben und die Schaltfl?che ?Senden“ drücken, antwortet die KI auf Ihre Nachricht und sie wird auf dem Bildschirm angezeigt.
Sehr cool, oder?
Abschluss
Damit schlie?en wir die Erstellung eines Chatbots mit JavaScript und der Google Gemini API ab. Wir haben gesehen, wie man das Frontend von Grund auf erstellt, Stile anwendet und das DOM manipuliert. Wir haben mit express.js einen Server erstellt, die Gemini-API verwendet, eine POST-Route für die Kommunikation mit dem Anwendungsclient konfiguriert und konnten über unsere eigene, von uns selbst entwickelte Schnittstelle mit der KI kommunizieren.
Aber das ist noch nicht alles, was Sie tun k?nnen. Wir k?nnen diesen Chatbot für verschiedene Aufgaben anpassen und konfigurieren, von der Rolle eines Sprachassistenten bis hin zu einem virtuellen Lehrer, der Ihre Fragen zu Mathematik oder Programmierung beantwortet, es h?ngt von Ihrer Kreativit?t ab.
Um eine KI in einen personalisierten Assistenten zu verwandeln, muss das Modell trainiert werden. Dabei geht es mehr um die Art und Weise, wie es reagieren und sich verhalten soll, als um den Code selbst.
Einige davon werden wir in einem zukünftigen Artikel untersuchen.
Bis dann!
Das obige ist der detaillierte Inhalt vonErstellen eines Chatbots mit JavaScript und Gemini AI: Erstellen des Backends. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Es gibt drei g?ngige M?glichkeiten, HTTP-Anforderungen in Node.js zu initiieren: Verwenden Sie integrierte Module, Axios und Knotenfetch. 1. Verwenden Sie das integrierte HTTP/HTTPS-Modul ohne Abh?ngigkeiten, das für grundlegende Szenarien geeignet ist, jedoch eine manuelle Verarbeitung von Datengen?hten und Fehlerüberwachung erfordert, z. 2.Axios ist eine auf Versprechen basierende Bibliothek von Drittanbietern. Es verfügt über eine kurze Syntax und leistungsstarke Funktionen, unterstützt Async/Auseait, automatische JSON -Konvertierung, Interceptor usw. Es wird empfohlen, asynchrone Anforderungsvorg?nge zu vereinfachen. 3.Node-Fetch bietet einen Stil ?hnlich dem Browser-Abruf, basierend auf Versprechen und einfacher Syntax

JavaScript -Datentypen sind in primitive Typen und Referenztypen unterteilt. Zu den primitiven Typen geh?ren String, Anzahl, Boolesche, Null, undefiniertes und Symbol. Die Werte sind unver?nderlich und Kopien werden bei der Zuweisung von Werten kopiert, sodass sie sich nicht gegenseitig beeinflussen. Referenztypen wie Objekte, Arrays und Funktionen speichern Speicheradressen, und Variablen, die auf dasselbe Objekt zeigen, wirkt sich gegenseitig aus. Typeof und Instanz k?nnen verwendet werden, um die Typen zu bestimmen, aber auf die historischen Probleme der TypeOfnull zu achten. Das Verst?ndnis dieser beiden Arten von Unterschieden kann dazu beitragen, einen stabileren und zuverl?ssigeren Code zu schreiben.

Welches JavaScript -Framework ist die beste Wahl? Die Antwort besteht darin, die am besten geeigneten nach Ihren Bedürfnissen zu w?hlen. 1.React ist flexibel und kostenlos und für mittlere und gro?e Projekte geeignet, für die hohe Anpassungs- und Teamarchitekturf?higkeiten erforderlich sind. 2. Angular bietet vollst?ndige L?sungen, die für Anwendungen auf Unternehmensebene und langfristige Wartung geeignet sind. 3.. Vue ist einfach zu bedienen, geeignet für kleine und mittlere Projekte oder schnelle Entwicklung. Unabh?ngig davon, ob es einen technologischen Stack, die Teamgr??e, der Projektlebenszyklus gibt und ob SSR erforderlich ist, sind auch wichtige Faktoren für die Auswahl eines Rahmens. Kurz gesagt, es gibt keinen absolut besten Rahmen, die beste Wahl ist die, die Ihren Bedürfnissen entspricht.

Hallo, JavaScript -Entwickler! Willkommen in den JavaScript -Nachrichten dieser Woche! Diese Woche konzentrieren wir uns auf: Oracas Markenstreit mit Deno, neue JavaScript -Zeitobjekte werden von Browsern, Google Chrome -Updates und einigen leistungsstarken Entwickler -Tools unterstützt. Fangen wir an! Der Markenstreit von Oracle mit dem Versuch von Deno Oracle, ein "JavaScript" -Marke zu registrieren, hat Kontroversen verursacht. Ryan Dahl, der Sch?pfer von Node.js und Deno, hat eine Petition zur Absage der Marke eingereicht, und er glaubt, dass JavaScript ein offener Standard ist und nicht von Oracle verwendet werden sollte

Cacheapi ist ein Tool, das der Browser zur Cache -Netzwerkanfragen bereitstellt, das h?ufig in Verbindung mit dem Servicearbeiter verwendet wird, um die Leistung der Website und die Offline -Erfahrung zu verbessern. 1. Es erm?glicht Entwicklern, Ressourcen wie Skripte, Stilbl?tter, Bilder usw. Zu speichern; 2. Es kann die Cache -Antworten entsprechend den Anfragen übereinstimmen. 3. Es unterstützt das L?schen bestimmter Caches oder das L?schen des gesamten Cache. 4.. Es kann Cache -Priorit?ts- oder Netzwerkpriorit?tsstrategien durch Servicearbeiter implementieren, die sich auf Fetch -Ereignisse anh?ren. 5. Es wird h?ufig für die Offline -Unterstützung verwendet, die wiederholte Zugriffsgeschwindigkeit, die Vorspannungs -Schlüsselressourcen und den Inhalt des Hintergrundaktualisierungss beschleunigen. 6. Wenn Sie es verwenden, müssen Sie auf die Cache -Versionskontrolle, Speicherbeschr?nkungen und den Unterschied zum HTTP -Caching -Mechanismus achten.

Versprechen ist der Kernmechanismus für den Umgang mit asynchronen Operationen in JavaScript. Das Verst?ndnis von Kettenanrufen, Fehlerbehebung und Kombination ist der Schlüssel zum Beherrschen ihrer Anwendungen. 1. Der Kettenaufruf gibt ein neues Versprechen durch .then () zurück, um asynchrone Prozessverkampferung zu realisieren. Jeder. Dann () erh?lt das vorherige Ergebnis und kann einen Wert oder ein Versprechen zurückgeben; 2. Die Fehlerbehandlung sollte .Catch () verwenden, um Ausnahmen zu fangen, um stille Ausf?lle zu vermeiden, und den Standardwert im Fang zurückgeben, um den Prozess fortzusetzen. 3. Combinatoren wie Promise.All () (erfolgreich erfolgreich erfolgreich nach allen Erfolg), Versprechen.Race () (Die erste Fertigstellung wird zurückgegeben) und Versprechen.Allsettled () (Warten auf alle Fertigstellungen)

JavaScript-Array-integrierte Methoden wie .Map (), .filter () und .Reduce () k?nnen die Datenverarbeitung vereinfachen. 1) .Map () wird verwendet, um Elemente eins in eins um Neuarrays zu konvertieren; 2) .Filter () wird verwendet, um Elemente durch Bedingung zu filtern; 3) .Reduce () wird verwendet, um Daten als einzelner Wert zu aggregieren; Missbrauch sollte bei der Verwendung vermieden werden, was zu Nebenwirkungen oder Leistungsproblemen führt.

Die Ereignisschleife von JavaScript verwaltet asynchrone Vorg?nge, indem sie Call -Stapel, Webapis und Task -Warteschlangen koordinieren. 1. Der Anrufstack führt synchronen Code aus, und wenn er auf asynchrone Aufgaben begegnet, wird er zur Verarbeitung an Webapi übergeben. 2. Nachdem das Webapi die Aufgabe im Hintergrund abgeschlossen hat, wird der Rückruf in die entsprechende Warteschlange (Makroaufgabe oder Micro -Aufgabe) eingebaut. 3. Die Ereignisschleife prüft, ob der Anrufstapel leer ist. Wenn es leer ist, wird der Rückruf aus der Warteschlange herausgenommen und zur Ausführung in den Anrufstapel geschoben. V. 5. Das Verst?ndnis der Ereignisschleife hilft zu vermeiden, den Haupt -Thread zu blockieren und die Codeausführungsreihenfolge zu optimieren.
