国产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)在我們需要創(chuàng)建一個服務(wù)器,使用express.js配置路由來與Gemini API進(jìn)行通信。我們走吧!

安裝項目依賴項

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

npm install @google/generative-ai express dotenv

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

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

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 文件放在這個文件夾中。我們還將應(yīng)用程序配置為在端口 3000 上運行。

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

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

雙子座 API 密鑰

獲取密鑰

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

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

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

保護(hù)您的 API 密鑰

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

GOOGLE_GEMINI_API_KEY="sua-chave-vai-aqui"

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

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

創(chuàng)建 /chat 路由

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

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

npm install @google/generative-ai express dotenv

我們的路由是 POST 類型,因為您將在正文中收到一條消息,正是來自將與聊天交互的用戶的消息。因此,對于此消息,我們使用了一些防御性編程(小心一點不會傷害任何人,哈哈)并檢查我們是否沒有收到消息。如果不這樣做,則會返回一個錯誤作為響應(yīng),并拋出一條消息。

如果我們有消息,那么我們會將其作為我們選擇的模型的提示發(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());

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

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

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

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

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

GOOGLE_GEMINI_API_KEY="sua-chave-vai-aqui"

我們的 api 將在我們一開始指定的端口上運行。完整的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)在最期待的時刻到了,測試我們的聊天機(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īng)該在終端中收到以下消息:

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

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

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

非常酷,對吧?

結(jié)論

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


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

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

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

到時候見!

以上是使用 JavaScript 和 Gemini AI 創(chuàng)建聊天機(jī)器人:創(chuàng)建后端的詳細(xì)內(nèi)容。更多信息請關(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)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

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è)和移動應(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中與日期和時間合作? 如何在JS中與日期和時間合作? Jul 01, 2025 am 01:27 AM

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

為什么要將標(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)

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

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

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

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

Java和JavaScript有什么區(qū)別? Java和JavaScript有什么區(qū)別? Jun 17, 2025 am 09:17 AM

Java和JavaScript是不同的編程語言。1.Java是靜態(tài)類型、編譯型語言,適用于企業(yè)應(yīng)用和大型系統(tǒng)。2.JavaScript是動態(tài)類型、解釋型語言,主要用于網(wǎng)頁交互和前端開發(fā)。

See all articles