国产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ī)器人,我們將添加專案的「後端」。上次我們使用 HTML、CSS 和 Javascript 創(chuàng)建前端,我們保證使用者介面將反映使用者和聊天機(jī)器人之間的對話。

現(xiàn)在我們需要建立一個(gè)伺服器,使用express.js設(shè)定路由來與Gemini API進(jìn)行通訊。我們走吧!

安裝專案依賴項(xiàng)

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

npm install @google/generative-ai express dotenv

現(xiàn)在我們準(zhǔn)備好採用最佳實(shí)務(wù)建立伺服器,例如使用本地環(huán)境變數(shù)來保護(hù)私有資料。

為此,我們將在專案根資料夾中建立一個(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ù)載的請求。這就是為什麼我們將index.html、styles.css 和script.js 檔案放在這個(gè)資料夾中。我們還將應(yīng)用程式配置為在連接埠 3000 上運(yùn)行。

我們使用 @google/generative-ai 函式庫來整合 Gemini API,並使用儲存在名為 GOOGLE_GEMINI_API_KEY 的環(huán)境變數(shù)中的金鑰對其進(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

按一下「建立 API 金鑰」按鈕,指定您將在其中使用此金鑰的項(xiàng)目,然後就完成了。您的密鑰將顯示在下方,您可以查看它,甚至可以複製它以進(jìn)行下一步。

保護(hù)您的 API 金鑰

現(xiàn)在在您的專案中,在專案的根資料夾中建立一個(gè)名為 .env.local 或僅 .env 的檔案。在此文件中輸入您的 API 金鑰,如下所示:

GOOGLE_GEMINI_API_KEY="sua-chave-vai-aqui"

現(xiàn)在儲存您的檔案即可。如果您正確執(zhí)行了上一步,您的 API 金鑰將會(huì)起作用。

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

建立 /chat 路由

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

在 server.js 檔案中,我們將建立 /chat 路由:

npm install @google/generative-ai express dotenv

我們的路由是 POST 類型,因?yàn)槟鷮⒃谡闹惺盏揭粭l訊息,正是來自將與聊天互動(dòng)的用戶的訊息。因此,對於此訊息,我們使用了一些防禦性程式設(shè)計(jì)(小心一點(diǎn)不會(huì)傷害任何人,哈哈)並檢查我們是否沒有收到訊息。如果不這樣做,則會(huì)傳回錯(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 模型(您可以在此連結(jié)中查看模型清單)。在這種情況下,我選擇了gemini-1.5-flash。

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

現(xiàn)在,我們在使用 chat.sendMessage(message) 將訊息傳送到模型後等待此回應(yīng)。當(dāng)我們收到回應(yīng)時(shí),我們會(huì)將其傳回給發(fā)出請求的人,並將模型傳回的文字格式轉(zhuǎn)換為 JSON。

最後但並非最不重要的一點(diǎn)是,如果我們遇到錯(cuò)誤,我們可以在catch 中使用它在控制臺中拋出此錯(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." });
  }

  //...
});

測試聊天機(jī)器人

現(xiàn)在最期待的時(shí)刻到了,測試我們的聊天機(jī)器人。為此,我們打開終端機(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)該在終端機(jī)中收到以下訊息:

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

現(xiàn)在,透過造訪 URL http://localhost:3000 並在輸入中寫入訊息並按下傳送按鈕,AI 會(huì)回覆您的訊息並將其顯示在螢?zāi)簧稀?

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

非???,對吧?

結(jié)論

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


但這並不是您能做的全部。我們可以為不同的任務(wù)客製化和配置這個(gè)聊天機(jī)器人,從語言助理,到回答你的數(shù)學(xué)或程式設(shè)計(jì)問題的虛擬老師,這將取決於你的創(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)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)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脫衣器

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版

神級程式碼編輯軟體(SublimeText3)

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

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

JavaScript評論:簡短說明 JavaScript評論:簡短說明 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對像有多種方式,推薦使用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)用程序的有效載荷大??? 如何減少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.替換重型依賴,選用輕量級庫如day.js、fetch

See all articles