iT邦幫忙

2026 iThome 鐵人賽

DAY 8
0
Build on Google AI

30 天玩轉 Google AI 全家桶:初學者的隨身 Coding 助理養成記系列 第 8

Day 08:告別網頁點擊:用 10 行 Node.js 呼叫 Gemini API

  • 分享至 

  • xImage
  •  

昨天說要跟網頁點擊說再見。

今天說到做到。

打開終端機,準備寫下這個系列的第一行「正式代碼」。


一、離開 AI Studio 網頁,代碼才是主場

前六天,所有實驗都在 Google AI Studio 的網頁介面裡完成。

方便,但有一個限制:沒辦法把它接進自己的工具裡。

DevPulse 最終要做到的是「終端機輸入一行指令,自動分析代碼」,這件事網頁做不到,只能靠 API。

所以今天的目標很單純:

用最少的代碼,讓 Gemini 第一次在我的終端機裡開口說話。


二、安裝官方 SDK

Google 目前官方建議用 @google/genai 這個套件(TypeScript / JavaScript 通用):

npm init -y
npm install @google/genai dotenv

dotenv 是拿來讀取等一下要設定的環境變數,跟今天的重點沒有直接關係,但少不了它。


三、把 API Key 藏好,這件事 Day 02 就說過了

Day 02 花了整篇在講「不要把 Key 燒在代碼裡」,今天正式派上用場。

在專案根目錄建一個 .env

GEMINI_API_KEY=你的金鑰貼這裡

然後打開 .gitignore,確認這一行有在裡面:

.env

沒有的話現在就加上去,這一步做完才安心。


四、十行代碼,第一次呼叫 Gemini

新建一個 index.js

import 'dotenv/config';
import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({}); // 會自動讀取 GEMINI_API_KEY

async function main() {
  const interaction = await ai.interactions.create({
    model: "gemini-3.5-flash",
    input: "用一句話跟我打招呼,說你是我的 Coding 助理。",
  });

  console.log(interaction.output_text);
}

main();

不算 import 跟空行,核心邏輯真的差不多十行。

值得一提的是 ai.interactions.create——這是 Google 目前官方主推的新寫法,取代舊版常見的 generateContent,之後如果要接工具呼叫或多步驟推理,也是走這條路線,算是提前跟上最新的官方建議。


五、終端機,見證奇蹟的地方

執行:

node index.js

終端機印出一句話,大概是這樣:

哈囉!我是你的 Coding 助理,隨時準備好幫你抓蟲、給建議。

畫面上沒什麼特效,就一句話。

但這一句話的意義是:DevPulse 第一次真正「活」了起來,不再只是網頁上的對話框,而是終端機裡跑得動的程式。


六、今天的踩坑記錄

代碼寫完不代表一次就跑得動。

第一次執行 node index.js,終端機直接噴了一串紅字:

SyntaxError: Cannot use import statement outside a module

翻開 package.json 才發現,npm init -y 預設產生的是:

"type": "commonjs"

但代碼裡用的是 ES Module 的 import 語法,兩邊對不上,Node.js 才會直接罷工。

解法很單純,把這一行改成:

"type": "module"

存檔、重新執行,錯誤就消失了。這大概是每個第一次用 ES Module 寫 Node.js 的人都會踩過的坑,記一筆,下次就不會再中招。


七、小小的不滿足,留給明天

修完坑之後總算成功了,但實際跑起來又有一個新的小小不滿足:程式安靜等了好幾秒,才把整句話一次印出來,體驗有點乾。

原因也不難理解——現在用的是一次性呼叫,Gemini 要在伺服器端把整句話完整生成好,才會一次性傳回終端機,字數越長,等待感越明顯。

如果是聊天視窗,通常都是一個字一個字蹦出來,感覺比較「有在思考」。這個「打字機效果」背後其實有個技術名詞——Streaming(串流)

明天就來處理這件事,讓 DevPulse 的回應也能一個字一個字跑出來。

順便打開 Google AI Studio 的 Rate Limit 面板看了一眼,這幾次測試的用量都還遠遠低在免費額度裡,Day 02 設定的安全防護,這時候正好派上用場。

第一行代碼寫完了,接下來會越來越好玩。


上一篇
Day 07 :【第 1 週小結】免代碼階段心得:我對大語言模型特性的新理解
系列文
30 天玩轉 Google AI 全家桶:初學者的隨身 Coding 助理養成記8
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言