国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 web前端 js教程 使用 JavaScript 和 Gemini AI 創(chuàng)建聊天機(jī)器人:創(chuàng)建后端

使用 JavaScript 和 Gemini AI 創(chuàng)建聊天機(jī)器人:創(chuàng)建后端

Jan 04, 2025 am 09:26 AM

保存!哦

繼續(xù)使用 Javascript 和 Gemini AI 創(chuàng)建我們的聊天機(jī)器人,我們將添加項(xiàng)目的“后端”。上次我們使用 HTML、CSS 和 Javascript 創(chuàng)建前端,我們保證用戶界面將反映用戶和聊天機(jī)器人之間的對(duì)話。

現(xiàn)在我們需要?jiǎng)?chuàng)建一個(gè)服務(wù)器,使用express.js配置路由來與Gemini API進(jìn)行通信。我們走吧!

安裝項(xiàng)目依賴項(xiàng)

好吧,我們需要express.js、Google Gemini SDK,為了保護(hù)我們的API密鑰,我將安裝dotenv來使用環(huán)境變量。

npm install @google/generative-ai express dotenv

現(xiàn)在我們準(zhǔn)備好采用最佳實(shí)踐創(chuàng)建服務(wù)器,例如使用本地環(huán)境變量來保護(hù)私有數(shù)據(jù)。

為此,我們將在項(xiàng)目根文件夾中創(chuàng)建一個(gè)名為 server.js 的文件。在此文件中,我們將首先導(dǎo)入依賴項(xiàng)并配置必要的資源。

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());

此代碼將 Express 配置為從“public”文件夾提供靜態(tài)文件,并接受帶有 JSON 負(fù)載的請(qǐng)求。這就是為什么我們將index.html、styles.css 和script.js 文件放在這個(gè)文件夾中。我們還將應(yīng)用程序配置為在端口 3000 上運(yùn)行。

我們使用 @google/generative-ai 庫來集成 Gemini API,并使用存儲(chǔ)在名為 GOOGLE_GEMINI_API_KEY 的環(huán)境變量中的密鑰對(duì)其進(jìn)行身份驗(yàn)證。

但是我們從哪里獲得這個(gè) API Key 呢?這就是我們現(xiàn)在要找出的。

雙子座 API 密鑰

獲取密鑰

要獲取 Gemini API 密鑰,我建議您登錄“@gmail.com”帳戶。之后,訪問此鏈接,您將看到如下屏幕:

Criando um Chatbot com JavaScript e Gemini AI: criando o backend

單擊“創(chuàng)建 API 密鑰”按鈕,指定您將在其中使用此密鑰的項(xiàng)目,然后就完成了。您的密鑰將顯示在下方,您可以查看它,甚至可以復(fù)制它以進(jìn)行下一步。

保護(hù)您的 API 密鑰

現(xiàn)在在您的項(xiàng)目中,在項(xiàng)目的根文件夾中創(chuàng)建一個(gè)名為 .env.local 或僅 .env 的文件。在此文件中輸入您的 API 密鑰,如下所示:

GOOGLE_GEMINI_API_KEY="sua-chave-vai-aqui"

現(xiàn)在保存您的文件即可。如果您正確執(zhí)行了上一步,您的 API 密鑰將起作用。

PS:請(qǐng)注意您的 API 密鑰中顯示的計(jì)劃。 Gemini 提供免費(fèi)計(jì)劃,您的鑰匙可以返還有限數(shù)量的代幣。如果您想要更多的代幣,請(qǐng)考慮訂閱付費(fèi)計(jì)劃。我們將使用免費(fèi)計(jì)劃,該計(jì)劃雖然有限,但允許我們與聊天機(jī)器人交換一些消息。

創(chuàng)建 /chat 路由

現(xiàn)在配置了依賴項(xiàng)并掌握了 API 密鑰,讓我們打開人工智能的可能性之門。

在 server.js 文件中,我們將創(chuàng)建 /chat 路由:

npm install @google/generative-ai express dotenv

我們的路由是 POST 類型,因?yàn)槟鷮⒃谡闹惺盏揭粭l消息,正是來自將與聊天交互的用戶的消息。因此,對(duì)于此消息,我們使用了一些防御性編程(小心一點(diǎn)不會(huì)傷害任何人,哈哈)并檢查我們是否沒有收到消息。如果不這樣做,則會(huì)返回一個(gè)錯(cuò)誤作為響應(yīng),并拋出一條消息。

如果我們有消息,那么我們會(huì)將其作為我們選擇的模型的提示發(fā)送,如下所示:

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());

由于此通信是一個(gè)異步過程,因此我們將使用 try/catch 來處理響應(yīng)。首先,我定義將使用的 Gemini 模型(您可以在此鏈接中查看模型列表)。在這種情況下,我選擇了gemini-1.5-flash。

第二步是開始聊天。因此,通過 model.startChat() 我可以開始與 Gemini 通信,配置我想要在響應(yīng)中的最大令牌數(shù)(在本例中每個(gè)響應(yīng) 100 個(gè)令牌)。

現(xiàn)在,我們?cè)谑褂?chat.sendMessage(message) 將消息發(fā)送到模型后等待此響應(yīng)。當(dāng)我們收到響應(yīng)時(shí),我們會(huì)將其返回給發(fā)出請(qǐng)求的人,并將模型返回的文本格式轉(zhuǎn)換為 JSON。

最后但并非最不重要的一點(diǎn)是,如果我們遇到錯(cuò)誤,我們可以在 catch 中使用它在控制臺(tái)中拋出此錯(cuò)誤,并返回狀態(tài) 500,使使用此“迷你 api”的客戶端的生活更輕松。美麗?

現(xiàn)在我們只需要使用下面的代碼片段來指示我們的“mini api”將在哪里運(yùn)行:

GOOGLE_GEMINI_API_KEY="sua-chave-vai-aqui"

我們的 api 將在我們一開始指定的端口上運(yùn)行。完整的server.js代碼如下所示:

app.post("/chat", async (req, res) => {
  const { message } = req.body;

  if (!message) {
    return res.status(400).json({ error: "Mensagem n?o pode estar vazia." });
  }

  //...
});

測(cè)試聊天機(jī)器人

現(xiàn)在最期待的時(shí)刻到了,測(cè)試我們的聊天機(jī)器人。為此,我們打開終端并輸入以下命令:

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." });
  }

運(yùn)行此命令后,您應(yīng)該在終端中收到以下消息:

app.listen(port, () => {
  console.log(`Servidor rodando em http://localhost:${port}`);
});

現(xiàn)在,通過訪問 URL http://localhost:3000 并在輸入中寫入消息并按發(fā)送按鈕,AI 會(huì)回復(fù)您的消息并將其顯示在屏幕上。

Criando um Chatbot com JavaScript e Gemini AI: criando o backend

非???,對(duì)吧?

結(jié)論

至此,我們使用 JavaScript 和 Google Gemini API 完成了聊天機(jī)器人的創(chuàng)建。我們了解了如何從頭開始創(chuàng)建前端、應(yīng)用樣式、操作 DOM。我們使用express.js創(chuàng)建了一個(gè)服務(wù)器,使用了Gemini API,配置了一條POST路由來與應(yīng)用程序客戶端通信,并能夠通過我們自己開發(fā)的接口與AI對(duì)話。


但這并不是您能做的全部。我們可以為不同的任務(wù)定制和配置這個(gè)聊天機(jī)器人,從語言助理,到回答你的數(shù)學(xué)或編程問題的虛擬老師,這將取決于你的創(chuàng)造力。

將人工智能轉(zhuǎn)變?yōu)閭€(gè)性化助手需要訓(xùn)練模型,更多的是關(guān)于你希望它響應(yīng)和表現(xiàn)的方式,而不是代碼本身。

我們將在以后的文章中探討其中的一些內(nèi)容。

到時(shí)候見!

以上是使用 JavaScript 和 Gemini AI 創(chuàng)建聊天機(jī)器人:創(chuàng)建后端的詳細(xì)內(nèi)容。更多信息請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

Java vs. JavaScript:清除混亂 Java vs. JavaScript:清除混亂 Jun 20, 2025 am 12:27 AM

Java和JavaScript是不同的編程語言,各自適用于不同的應(yīng)用場(chǎng)景。Java用于大型企業(yè)和移動(dòng)應(yīng)用開發(fā),而JavaScript主要用于網(wǎng)頁開發(fā)。

JavaScript評(píng)論:簡(jiǎn)短說明 JavaScript評(píng)論:簡(jiǎn)短說明 Jun 19, 2025 am 12:40 AM

JavascriptconcommentsenceenceEncorenceEnterential gransimenting,reading and guidingCodeeXecution.1)單inecommentsareusedforquickexplanations.2)多l(xiāng)inecommentsexplaincomplexlogicorprovideDocumentation.3)

如何在JS中與日期和時(shí)間合作? 如何在JS中與日期和時(shí)間合作? Jul 01, 2025 am 01:27 AM

JavaScript中的日期和時(shí)間處理需注意以下幾點(diǎn):1.創(chuàng)建Date對(duì)象有多種方式,推薦使用ISO格式字符串以保證兼容性;2.獲取和設(shè)置時(shí)間信息可用get和set方法,注意月份從0開始;3.手動(dòng)格式化日期需拼接字符串,也可使用第三方庫;4.處理時(shí)區(qū)問題建議使用支持時(shí)區(qū)的庫,如Luxon。掌握這些要點(diǎn)能有效避免常見錯(cuò)誤。

為什么要將標(biāo)簽放在的底部? 為什么要將標(biāo)簽放在的底部? Jul 02, 2025 am 01:22 AM

PlacingtagsatthebottomofablogpostorwebpageservespracticalpurposesforSEO,userexperience,anddesign.1.IthelpswithSEObyallowingsearchenginestoaccesskeyword-relevanttagswithoutclutteringthemaincontent.2.Itimprovesuserexperiencebykeepingthefocusonthearticl

JavaScript與Java:開發(fā)人員的全面比較 JavaScript與Java:開發(fā)人員的全面比較 Jun 20, 2025 am 12:21 AM

JavaScriptIspreferredforredforwebdevelverment,而Javaisbetterforlarge-ScalebackendsystystemsandSandAndRoidApps.1)JavascriptexcelcelsincreatingInteractiveWebexperienceswebexperienceswithitswithitsdynamicnnamicnnamicnnamicnnamicnemicnemicnemicnemicnemicnemicnemicnemicnddommanipulation.2)

什么是在DOM中冒泡和捕獲的事件? 什么是在DOM中冒泡和捕獲的事件? Jul 02, 2025 am 01:19 AM

事件捕獲和冒泡是DOM中事件傳播的兩個(gè)階段,捕獲是從頂層向下到目標(biāo)元素,冒泡是從目標(biāo)元素向上傳播到頂層。1.事件捕獲通過addEventListener的useCapture參數(shù)設(shè)為true實(shí)現(xiàn);2.事件冒泡是默認(rèn)行為,useCapture設(shè)為false或省略;3.可使用event.stopPropagation()阻止事件傳播;4.冒泡支持事件委托,提高動(dòng)態(tài)內(nèi)容處理效率;5.捕獲可用于提前攔截事件,如日志記錄或錯(cuò)誤處理。了解這兩個(gè)階段有助于精確控制JavaScript響應(yīng)用戶操作的時(shí)機(jī)和方式。

JavaScript:探索用于高效編碼的數(shù)據(jù)類型 JavaScript:探索用于高效編碼的數(shù)據(jù)類型 Jun 20, 2025 am 12:46 AM

javascripthassevenfundaMentalDatatypes:數(shù)字,弦,布爾值,未定義,null,object和symbol.1)numberSeadUble-eaduble-ecisionFormat,forwidevaluerangesbutbecautious.2)

如何減少JavaScript應(yīng)用程序的有效載荷大?。? />
								</a>
								<a href=如何減少JavaScript應(yīng)用程序的有效載荷大??? Jun 26, 2025 am 12:54 AM

如果JavaScript應(yīng)用加載慢、性能差,問題往往出在payload太大,解決方法包括:1.使用代碼拆分(CodeSplitting),通過React.lazy()或構(gòu)建工具將大bundle拆分為多個(gè)小文件,按需加載以減少首次下載量;2.移除未使用的代碼(TreeShaking),利用ES6模塊機(jī)制清除“死代碼”,確保引入的庫支持該特性;3.壓縮和合并資源文件,啟用Gzip/Brotli和Terser壓縮JS,合理合并文件并優(yōu)化靜態(tài)資源;4.替換重型依賴,選用輕量級(jí)庫如day.js、fetch

See all articles