iT邦幫忙

2026 iThome 鐵人賽

DAY 2
2

「不是武器選擇了人,而是人賦予了武器意義!」

介紹

昨天決定要搞一個有靈魂、有情緒、還能長期記憶的角色 Agent 之後,今天第一件事就是:配上一套適合這個靈魂的神級裝備! 沒有好裝備,再強大的靈魂也發揮不出應有的實力。今天我們的目標非常純粹,只做兩件事:

  1. Python 虛擬環境(異次元空間)
  2. Gemini API Key 申請(簽訂契約)

第一關:建造異次元空間(Python 虛擬環境)

相信大家都有做過這種事,像我就做過在電腦裡亂安裝 pip package,結果最後版本衝突,整個 Python 環境直接「自我崩壞」。為了不讓次元爆炸,先建立一個獨立的虛擬環境:

手動建立專案資料夾或在終端機建立專案資料夾

# 切換至 D 槽並建立專案資料夾(建議) 還有的話就建在 C 槽
cd D:\
mkdir "Character Interaction and Situations Agent"

# 切換進入專案目錄
cd "Character Interaction and Situations Agent"

用VS Code開啟檔案

按下Ctrl + ~ 開啟終端,建立虛擬環境並啟動

如何下載VS code:https://youtu.be/vMPHZjRBhJU?si=83LleCG3E7_uhKRJ

( 虛擬環境建置 )

# 建立虛擬環境
py -3.11 -m venv venv        # 指定 Python 版本 (以 Python 3.11 為例)
python -m venv venv          # 使用系統目前預設的 Python 版本

# 啟動虛擬環境
source venv/bin/activate     # Mac / Linux
.\venv\Scripts\Activate.ps1  # Windows PowerShell

安裝專案初期會用到的四個套件:

# 安裝專案所需的基礎核心套件
pip install google-genai streamlit firebase-admin python-dotenv
  • google-genai:Google 官方最新推出的 SDK,我們的角色主腦。
  • streamlit:做 UI 的神器,讓我們不用寫繁瑣的前端就能看到角色的臉(雖然目前還只是文字)。
  • firebase-admin:連接角色的「長期記憶大腦」,避免記憶被重置。
  • python-dotenv:用來把密碼藏起來,避免被魔法反噬。

第二關:簽訂契約(Gemini API Key 與安全封印)

要召喚 AI,必須先拿到通往 Google 神殿的鑰匙。

  1. 取得 API Key:前往 Google AI Studio,點擊「Get API key」,生成一把神殿鑰匙。
  2. 施加封印(設定 .env:在專案根目錄建立 .env 檔案,把神殿鑰匙藏進去:

程式碼片段

GEMINI_API_KEY="your_actual_gemini_api_key_here"

踩坑警示(防爆機制):千萬!千萬!千萬! 要把 .env 加進 .gitignore
如果你把 API Key 推上 GitHub,不用 5 分鐘,機器人爬蟲就會幫你拿去「課金狂刷」,到時候你的錢包就會像海馬一樣,被遊戲直接轟到灰飛煙滅,宣告遊戲結束( 破產 )...(像底下這樣)

動漫圖片

動漫名:《遊戲王》

第三關:召喚儀式(測試)

創建一個test.py

from dotenv import load_dotenv
from google import genai

load_dotenv()

# 初始化 Gemini (SDK 會自動讀取 GEMINI_API_KEY)
client = genai.Client()

# 送出測試
response = client.models.generate_content(
    model='gemini-3.6-flash',
    contents='請用一句極度傲嬌的語氣跟我打招呼!',
)

print()
print(response.text)

今日測試結果輸出

(venv) PS D:\Character Interaction and Situations Agent> python .\test_setup.py
Direct use of automatic function calling (AFC) in Models.generate_content is not recommended. Instead, we recommend to use AFC in Chat.send_message. Similarly, direct use of AFC in Models.generate_content_stream is not recommended. Instead, we recommend to use AFC in Chat.send_message_stream.
「哼,才、才不是因為想見你才特地站在這裡的,只是剛好路過順便跟你打個招呼而已,你可別自作多情了,笨蛋!」

上一篇
Day 01:從單純對話到「有靈魂」的角色互動 Agent
下一篇
Day 03:畫出角色的第一個對話視窗!用 Streamlit 快速搭建聊天 UI
系列文
從零打造情感感知 Agentic System:FSM 狀態機與 RAG 的整合實作6
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言