如果你想做小工具 / 自架 AI helper,Gemini API 是入門好選擇 — 免費額度大、文檔新、SDK 簡潔。

這篇是「從 0 到第一個 working response」的最小可行教學。我假設你會基本 JS,但沒用過任何 LLM API

1. 拿 API key

https://aistudio.google.com/ ,用 Google 帳號登入。

左下「Get API key」→ 「Create API key」→ 選一個 Google Cloud project(或新建)→ 拿到一串 AIza... 開頭的 key。

重點:

  • 不要 commit 到 git(放 .env)
  • 不要分享(任何人拿到都能花你的 quota)

存到 .env:

GEMINI_API_KEY=AIza你的key

2. 安裝 SDK

npm install @google/genai
npm install dotenv  # 讀 .env

3. 第一個 hello world

新建 hello.js:

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

const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const response = await ai.models.generateContent({
  model: "gemini-2.0-flash-exp",
  contents: "用 50 字介紹台北的夜市文化",
});

console.log(response.text);

跑:

node hello.js

不出意外,你會看到 Gemini 介紹台北夜市的 50 字段落。

第一個 working response,3 行程式碼

4. 加上 streaming(打字機效果)

Hello world 是「等完整 response 才印」,實際 app 通常要「打字機效果」(token 一個個出來)。

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

const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const stream = await ai.models.generateContentStream({
  model: "gemini-2.0-flash-exp",
  contents: "寫一首關於蜂蜜的短詩,4 行",
});

for await (const chunk of stream) {
  process.stdout.write(chunk.text);
}
console.log("\n");

差別只在 generateContentgenerateContentStream,然後用 for await loop chunks。

5. 多輪對話(chat session)

如果要做 chatbot,需要保留 history:

const chat = ai.chats.create({
  model: "gemini-2.0-flash-exp",
});

const r1 = await chat.sendMessage({ message: "我是 VTuber 創作者,想知道台北哪裡有 maid cafe" });
console.log("AI:", r1.text);

const r2 = await chat.sendMessage({ message: "上面那家最便宜的是哪間?" });
console.log("AI:", r2.text);
// Gemini 知道「上面那家」指的是 r1 的回應

chat.sendMessage 自動帶上 history,Gemini 知道脈絡。比手動 push messages array 簡潔。

6. 多模態:傳圖片給 Gemini 分析

Gemini 強項之一是多模態 — 圖片直接丟它分析。

import { GoogleGenAI } from "@google/genai";
import fs from "node:fs";

const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const imageBytes = fs.readFileSync("./screenshot.png");
const imageBase64 = imageBytes.toString("base64");

const response = await ai.models.generateContent({
  model: "gemini-2.0-flash-exp",
  contents: [
    {
      role: "user",
      parts: [
        { text: "這張截圖在做什麼?用繁體中文回答。" },
        { inlineData: { mimeType: "image/png", data: imageBase64 } },
      ],
    },
  ],
});

console.log(response.text);

Gemini 會描述截圖內容。可用於:

  • VTuber 直播自動截圖找精華
  • 自動寫 alt text(無障礙)
  • 影片縮圖選擇

7. JSON mode(structured output)

如果你要 AI 出固定 schema 的 JSON,用 responseMimeType:

const response = await ai.models.generateContent({
  model: "gemini-2.0-flash-exp",
  contents: "從這段文字抽 3 個 tags(中文,每個 2-4 字): 我用 Suno 寫了 30 天 AI 音樂,發現整理流程比創作流程重要",
  config: {
    responseMimeType: "application/json",
    responseSchema: {
      type: "object",
      properties: {
        tags: {
          type: "array",
          items: { type: "string" },
          minItems: 3,
          maxItems: 3,
        },
      },
      required: ["tags"],
    },
  },
});

const data = JSON.parse(response.text);
console.log(data.tags);
// [ 'AI音樂', '工作流程', '創作整理' ]

這個對「文章自動標 tag」、「自動分類」、「萃取 metadata」超好用。

8. 錯誤處理

實戰要包 try-catch:

try {
  const response = await ai.models.generateContent({ ... });
  console.log(response.text);
} catch (e) {
  if (e.status === 429) {
    console.error("超過 rate limit,等 1 分鐘再試");
  } else if (e.status === 400) {
    console.error("Prompt 有問題:", e.message);
  } else {
    console.error("未知錯誤:", e);
  }
}

常見錯誤碼:

  • 429:rate limit(每分鐘 request 太多)
  • 400:prompt 內容違規 / token 太長
  • 401:API key 錯
  • 503:Google 服務暫時不穩

9. 成本控管

Gemini Flash 是最便宜的模型,但對大量 request 還是要監控:

// 每次 request 後印 usage
const response = await ai.models.generateContent({ ... });
console.log("Tokens used:", response.usageMetadata);
// { promptTokenCount: 25, candidatesTokenCount: 89, totalTokenCount: 114 }

把這些累計起來,部署到 production 前先估每月成本。免費額度炸掉前你會收到 email warning。

結論:Gemini API 適合「快速做工具」

我用 Gemini API 做過:

  • DonBee 後台自動 tag suggestion(寫文章時 AI 建議標籤)
  • 自動文章描述生成(meta description)
  • 直播截圖分析(找精華片段)

每個都只用 50-100 行 JS,Free tier 跑得起來。

下一篇我會分享 Claude API 完整實戰(已寫,接的是 Claude Code 直接用 Anthropic API 那部分)。

如果這個 API 系列對你有幫助,Discord(支持冬蜜彈窗)有更深入的問答區。

常見問題

Gemini API 收費嗎?

有免費額度(每分鐘 15 requests, 100 萬 token / 月)。對小工具完全夠用。超過後 pay-as-you-go,$0.075 / 1M input tokens(2026 年 5 月時)。

跟 OpenAI API 比哪個好串?

Gemini API 文檔較新、SDK 較簡潔;OpenAI API 社群案例多、Stack Overflow 答案多。新專案我推 Gemini,migration 既有專案推 OpenAI(穩定)。

支援哪些程式語言?

官方 SDK:Python / Node.js / Go / Java / Swift。其他語言用 REST API 直接打。