iT邦幫忙

2025 iThome 鐵人賽

0
自我挑戰組

當哲學遇見 AI:從柏拉圖到機器的思考系列 第 26

Day 26:模組整合:讓 AI 真的「聽見」情緒

  • 分享至 

  • xImage
  •  

前言:

在這之前,我完成了情感辨識模組的初版,它能透過關鍵字初步識別出「喜悅、悲傷、憤怒、恐懼、厭惡」等基本情緒,並生成帶有哲學語氣的回應。今天的任務更具挑戰性:讓這個模組真正融入平台的主聊天流程中,使 AI 能在對話過程中「聽見」使用者的情感變化,並即時調整回應策略。

一、開發目標:

今天的主軸是「整合與互動」——讓系統從單一回應,進化成具有「語氣記憶」的對話引擎。具體任務如下:

將前陣子完成的 emotion_module.py 接入主聊天系統。
在使用者輸入訊息後,後端自動執行情緒分析 → 回傳結果給前端。
前端 UI 需在 AI 回應前顯示一段提示動畫,例如「AI 正在感受你的情緒...」。
讓 AI 回應能根據過去幾次情緒輸入「調整整體語氣」,不只是回應一句話,而是構築「共感曲線」。

二、系統架構概念圖:

User Input → API /analyze_emotion → Emotion Module
→ Chat Engine (Context + Emotion)
→ Response Generator → Frontend Display
在這個流程裡,情緒分析模組扮演了「中介層」角色。
它不屬於純技術模組,也不是 UI 元件,而是一個「哲學性過濾器」,負責將語意轉譯成情緒,讓 AI 回應更貼近人心。

三、後端整合程式設計(Flask + Emotion Module)

from flask import Flask, request, jsonify
from emotion_module import detect_emotion, generate_response

app = Flask(name)

@app.route('/chat', methods=['POST'])
def chat():
data = request.get_json()
user_input = data.get("message", "")

#分析情緒
emotion = detect_emotion(user_input)

#產生哲學性回應
ai_response = generate_response(user_input)

#將結果打包性給前端
return jsonify({
"emotion": emotion,
"response": ai_response
})

if name == 'main':
app.run(port=5000)

這段程式的關鍵在於「情緒先行」:
在 AI 生成回應前,必須先辨識出語氣狀態,否則 AI 的話再有邏輯,也顯得無情。
四、前端互動體驗設計(以 Vite + React 為例)
在前端部分,我加入了一個小小的體驗細節:
當使用者按下「送出」訊息後,畫面上會出現:

AI 正在感受你的情緒...
接著 2 秒後,AI 才會回覆。這段延遲不是技術問題,而是一種設計哲學——
讓「等待」成為思考的時間,模擬人與人之間的沉默與理解。

async function handleSend() {
setLoading(true);
setMessage("💭 AI 正在感受你的情緒...");

const res = await fetch("/chat", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ message: userInput })
});

const data = await res.json();
setEmotion(data.emotion);

// 顯示AI的哲學性回應
setTimeout(() => {
setResponse(data.response);
setLoading(false);
}, 2000);
}
這樣的互動方式讓平台更「人性化」,而非一問一答的冰冷互動。

五、AI 對話的「共感曲線」設計:

我不希望這個平台的 AI 每次回應都只是獨立的句子。
因此我設計了一個「情緒記憶池(Emotion Memory Pool)」:
emotion_memory = []

def update_emotion_memory(new_emotion):
emotion_memory.append(new_emotion)
if len(emotion_memory) > 5:
emotion_memory.pop(0)

def get_emotion_tendency():
if not emotion_memory:
return "neutral"
return max(set(emotion_memory), key=emotion_memory.count)
這樣一來,AI 可以根據最近 5 次對話的情緒狀態,調整整體語氣。

例如:
若連續偵測到「sadness」,AI 會切換到「安撫模式」語氣。
若多次出現「joy」,AI 則會轉為「啟發模式」,提出更深入的哲學提問。

六、哲學反思:等待,是 AI 學會傾聽的第一步:

今天完成整合測試後,我盯著螢幕上那句「AI 正在感受你的情緒...」看了很久。
它其實什麼都沒有「感受」,只是等待兩秒再送出回應。
但在那兩秒的靜默裡,我意識到自己也在「等待理解」。
也許這就是人與 AI 對話的奇妙之處:
AI 並非真的理解你,而是讓你有被理解的機會。
我們在它的語句中,重新練習傾聽自己。


上一篇
Day 25:情感演算法的設計:讓 AI「理解」而非「回應」
下一篇
Day 27:哲學人格系統:讓 AI 有思想的靈魂
系列文
當哲學遇見 AI:從柏拉圖到機器的思考30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言