Gemini 終端機介面建置

筆記種類
gemini 3

Ubuntu 本地端部屬gemini 3

可以看到ubuntu 預設的node.js version是18

 

root@suiseiserver:/var/www/order-sys$ node.js
Command 'node.js' not found, did you mean:
  command 'nodejs' from deb nodejs (18.13.0+dfsg1-1ubuntu2)
Try: sudo apt install <deb name>

 

1. 環境準備 (Environment Setup)

為了管理不同版本的 Node.js,我們使用了 NVM (Node Version Manager) 進行安裝。

  • 安裝 NVM & Node.js:

    # 安裝 NVM
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
    source ~/.bashrc
    
    # 安裝最新的 LTS 版本 Node.js (本例使用 v24.12.0)
    nvm install --lts
    

2. 專案初始化 (Project Initialization)

/var/www/ 下建立專屬目錄,避免與網頁程式碼(如 order-sys)混淆。

  • 建立目錄與安裝 SDK:

    mkdir -p /var/www/gemini
    cd /var/www/gemini
    npm install @google/generative-ai
    

3. 核心程式碼實作 (Implementation)

我們建立了兩個檔案:index.js (測試用) 與 cli.js (互動介面)。

互動式腳本:cli.js

這個腳本實現了「持續對話」與「串流輸出 (Streaming)」功能。

JavaScript

#!/usr/bin/env node
// 位於 /var/www/gemini/cli.js

const { GoogleGenerativeAI } = require("@google/generative-ai");
const readline = require("readline");

// 敏感資訊隱藏:建議使用環境變數或在此處替換為你的 Key
const API_KEY = "AIzaSy...[HIDDEN]"; 
const genAI = new GoogleGenerativeAI(API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-3-flash-preview" });

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
  prompt: "\x1b[32m您 > \x1b[0m" 
});

const chat = model.startChat({ history: [] });

console.log("\x1b[36m=== Gemini 終端機對話模式 (輸入 'exit' 退出) ===\x1b[0m");
rl.prompt();

rl.on("line", async (line) => {
  if (line.trim().toLowerCase() === "exit") process.exit(0);

  try {
    process.stdout.write("\x1b[33mGemini > \x1b[0m");
    const result = await model.generateContentStream(line);
    for await (const chunk of result.stream) {
      process.stdout.write(chunk.text());
    }
    process.stdout.write("\n\n");
  } catch (err) {
    console.error("發生錯誤:", err.message);
  }
  rl.prompt();
});

 

4. 系統整合 (System Integration)

為了讓 gemini 成為全局指令,我們設定了執行權限與 Bash 別名。

  1. 賦予執行權限: chmod +x /var/www/gemini/cli.js

  2. 設定 Alias:~/.bashrc 加入 alias gemini='node /var/www/gemini/cli.js'

  3. 生效: source ~/.bashrc


💡 經驗總結

  • API Key 錯誤: 遇到 400 Bad Request (API_KEY_INVALID) 時,應檢查 Key 是否包含空格或是否已從 Google AI Studio 正確複製。

  • 目錄權限:/var/www 下操作時,需注意檔案擁有者,確保執行時具備讀取 node_modules 的權限。

  • 模型選擇: 選擇 gemini-3-flash-preview 能在免費層級下獲得最快的響應速度。

Visit the link for more information:
References