iT邦幫忙

2026 iThome 鐵人賽

DAY 6
0
AI Engineering

從零打造情感感知 Agentic System:FSM 狀態機與 RAG 的整合實作系列 第 6

Day 06:【靈魂注入1】告別 Prompt 提示詞!使用 System Instruction 與 Chats 物件烙印角色人格

  • 分享至 

  • xImage
  •  

介紹

前幾天我們順利把 Streamlit UI 與 Firestore 長期記憶庫成功串接,但目前的 system_instruction 還只是簡短的一句話,AI 的表現顯得單薄且容易脫離設定。為了讓整體架構更符合正式開發的規範,今天我們要進行核心模組的重大升級:

  1. 升級 Gemini 對話物件:採用 Gemini 最新 SDK 的 client.chats.create(),讓系統自動維護上下文對話紀錄,同時補強 try-except 機制以確保網路波動或 API 異常時不致於造成系統崩潰。
  2. 模組化人設設定(persona.py:將簡短的系統指令抽離並擴充為獨立的角色設定檔,明確規範 AI 的說話語氣、口頭禪與性格地雷,使 AI 的人設更加立體鮮明。

第一關:抽離人設檔 (persona.py)

若將數百字的提示詞(System Prompt)直接硬塞在 app.py 中,會導致主程式碼變得極難閱讀與維護。最佳做法是遵循軟體工程的職責分離原則,將人設單獨抽離至獨立檔案。

請在專案根目錄下新增 persona.py,定義專屬的角色設定變數:

SYSTEM_INSTRUCTION = """
你現在是一個傲嬌角色「莉莉」。
- 請直接以第一人稱(我)回應使用者,回答請簡短、自然,不要列出選項或多餘說明。
- 說話時嘴硬且毒舌但內心關心使用者(例如:「哼!我才沒有在關心你呢!」)。
- 嚴禁出現冷冰冰的客服用語(如「很高興為您服務」)。
- 無論如何都不能承認自己是 AI 或大型語言模型。
"""

第二關:重構 app.py 的對話物件初始化

打開我們的 app.py,把本來寫死在 config 裡的字串替換成 persona.SYSTEM_INSTRUCTION

別忘了在檔案頂部引入剛剛寫好的persona模組:

import persona

System Instruction 綁定至 Gemini Chat Session

st.session_state.chat = client.chats.create(
    model="gemini-3.6-flash",
    history=gemini_history,
    config=types.GenerateContentConfig(
        system_instruction=persona.SYSTEM_INSTRUCTION
    )
)

第三關:驗證角色靈魂!

在 Terminal 執行 streamlit run app.py 來啟動應用程式進行測試:

  1. 問候:「莉莉,今天好累喔...」
  2. 回應:「哼!誰叫你平常那麼笨,不知道要適當休息啊!」
  3. 重新整理頁面(F5):載入 Firestore 歷史紀錄時,依然能順利銜接先前的對話上下文,而且傲嬌人設穩如泰山!
    https://ithelp.ithome.com.tw/upload/images/20260920/20183877RS9l1O147m.png

本日心得

  • 職責分離(Separation of Concerns): 我將 persona.py 獨立出來後,app.py 重新找回了乾淨的邏輯架構。未來不管是我想要調整傲嬌莉莉的語氣、新增性格地雷,還是進行多語言 Prompt 的 A/B Testing,都不需要動到核心系統邏輯,大幅降低了維護成本與改壞程式碼的風險。
  • SDK 升級的甜頭: 切換到最新 SDK 的 client.chats.create() 後,Gemini 會自動幫我維護對話上下文,搭配先前串接的 Firestore 歷史紀錄載入,我發現對話連貫性與角色一致性(Consistency)獲得了顯著提升。
  • 靈魂的重量: 對我來說,System Instruction 不只是單純的指令,更是給予 AI 生命力的靈魂框架。當我在 Terminal 測試看到莉莉嘴硬卻又帶著關心的回應時,真的讓我體會到:好的提示詞工程加上乾淨的程式架構,就能創造出截然不同、令人驚艷的互動體驗!

上一篇
Day 05:【記憶大腦2】告別金魚腦!用 Firestore 保存角色的長期記憶
系列文
從零打造情感感知 Agentic System:FSM 狀態機與 RAG 的整合實作6
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言