專案背景與業務目標
1.1 客戶輪廓
恆崇企業(品牌「金絲猴」)為台灣防水材料製造商,1989 年創立,全台約 300 家經銷據點。目標客群是遇到漏水、壁癌、隔熱問題的一般屋主與小型工程行——這群人的特徵是:問題發生在晚上與週末(下雨才漏)、不會描述問題(只能拍照)、需要的是解決方案而非單品(底漆+主材+面漆的組合)。
1.2 業務痛點
| 痛點 | 現況 | 機會 |
|---|---|---|
| 服務時間 | 0800 專線僅上班時段 | 夜間與假日進線由 AI 承接 |
| 諮詢門檻 | 消費者說不清楚問題 | 拍照即診斷,降低進線門檻 |
| 名單流失 | 官網無收單機制 | 對話中自然收集 lead,即時交接業務 |
| 錯誤用料 | 消費者買錯底漆造成施工事故 | AI 內建推薦護欄,售前擋掉禁用組合 |
1.3 成效目標(KPI)
方案總覽
以 LINE 官方帳號為互動平台(目標客群滲透率最高、好友資產可再行銷),LIFF 全螢幕聊天為前端,雲端 AI 顧問服務負責意圖判斷、知識庫問答、圖片判讀與導購交接(由 Anthropic Claude 模型驅動)。lead 成立時自動完成三件事:推交接摘要進顧客對話串(業務同視窗接手)、推確認訊息給顧客、自動貼受眾標籤(地區/意願/品類,供後續分眾推播)。
| 模組 | 內容 |
|---|---|
| 知識庫 | 官網內容爬取與清洗,整理為五層結構化內容(產品/工法情境/規則/通路/FAQ) |
| AI 對話服務 | 意圖判斷、知識庫問答、圖片判讀、lead 收集、真人交接 |
| 前端 | LINE OA + LIFF 全螢幕聊天頁 |
| 受眾貼標 | LINE Audience API 自動貼標 |
| 成效儀表板 | 四頁式管理後台(總覽/商業轉換/AI 服務品質/營運分析) |
系統架構
3.1 業務需求與方案對應
| 業務需求 | 方案對應 |
|---|---|
| 夜間與假日也要有人接 | 全託管雲端服務 24 小時運作,不需自建機房與值班人力 |
| 消費者說不清楚、只能拍照 | AI 影像判讀先確認情境再推薦;判讀不了就直說並請補拍 |
| 說明必須與官網一致 | 官網知識庫為唯一回答依據;查無資料不作答,導向 0800 專線 |
| 買錯料會出施工事故 | 推薦護欄硬規則,售前就擋掉禁用組合 |
| 有購買意圖就要接到人 | 逐項收集聯絡資料 → 交接摘要推進顧客對話串,業務同視窗接手、不需重問 |
| 名單要能再行銷 | 自動貼「地區/意願/品類」標籤,沉澱為可分眾推播的名單資產 |
| 成效要能被驗收 | 成效儀表板呈現轉換漏斗、服務品質與營運分析,並支援區間篩選 |
3.2 為什麼不直接用 LINE 聊天室對話
顧客本來就在 LINE 裡,讓 AI 直接在聊天室回覆看似最短路徑。實際評估後採用「LINE 為入口與交接管道、諮詢在獨立聊天網頁」的組合,關鍵在於三件事:真人接手會與 AI 搶同一條管道、對話節奏無法約束、記憶邊界無從界定——前兩者影響正確性,第三者影響成本與品質:
| 評估面向 | 直接用 LINE 聊天室 | 獨立聊天網頁(本方案) |
|---|---|---|
| 真人接手 | AI 與業務共用同一條對話串,需自建「暫停 AI」狀態機,且判斷失準就會在客戶面前插嘴 | AI 只在網頁、真人只在 LINE,天然分離;業務接手後不需關閉任何開關 |
| 回覆體驗 | 需等整段生成完才送出,長回覆有數秒空白等待 | 逐字串流即時顯示,符合 NFR-1 的體驗要求 |
| 訊息節奏 | 無法阻止使用者在 AI 回覆前連續發訊,每則各自觸發一次處理;並行請求會讓對話記憶與收單狀態互相覆蓋,出現重複追問或答非所問 | 送出後即鎖住輸入,一次只處理一則,回合邊界明確 |
| 記憶邊界 | 對話串永遠存在、沒有「結束」的概念,記憶無邊界累積:成本隨時間上升,三個月前的屋頂問題還會污染今天的浴室諮詢,需自建逾時重置機制 | 開啟頁面即為一段新對話,記憶天然有邊界,也可隨時「重新開始」 |
| 訊息成本 | 被動一問一答可用免費的回覆訊息,但其受權杖時效與則數上限;要做進度提示、分段送出或逾時補送就得改用計費的推播訊息,且推播有每人每月上限 | 諮詢過程完全不經官方帳號訊息額度,只有 lead 成立的交接與確認兩則計入 |
| 成效量測 | 只拿得到訊息事件,無法得知停留與放棄等行為 | 可埋設前端事件,支撐儀表板的漏斗與時段分析 |
| 身分貫穿 | 原生具備 | 由 LINE 登入取得同一組使用者識別,對話、推播、貼標仍對得到同一人 |
取捨與補償:這個選擇的代價是多一次點擊,且諮詢內容不會留在 LINE 聊天記錄裡。因應方式是——入口用常駐的圖文選單橫幅與歡迎訊息降低摩擦(見 §5.1);lead 成立時把交接摘要推回 LINE 對話串,等於把該留下的脈絡補回顧客與業務都看得到的地方。
使用者旅程與系統流程
4.1 對話流程
4.2 LLM 節點與記憶設計
每個 LLM 節點依任務性質決定模型等級與是否帶入對話記憶——記憶帶得太少會失去脈絡、帶得太多則增加成本與干擾,逐一取捨如下:
| 節點 | 模型等級 | 對話記憶 | 為什麼這樣設 |
|---|---|---|---|
| 意圖分類 | 輕量 | 50 輪 | 需知道「AI 上一輪正在追問資料」,才能把一句「0912…」正確歸為購買意圖而非閒聊 |
| AI 影像判讀 | 高階(視覺) | 1 輪 | 只描述當前這張照片,刻意不帶前文以免被既有結論帶偏 |
| 產生回應(文字/圖片) | 高階 | 8 輪 | 支撐「這是啥」「那要多少」這類指代前文的追問 |
| 擷取聯絡資料 | 輕量 | 20 輪 | 每輪自完整對話重新擷取,已提供過的資料不會遺失,也不會重複詢問 |
| 追問一項 | 輕量 | 10 輪 | 知道已問過哪些欄位,維持「一次只問一項、不重問」 |
| 組成交接摘要 | 輕量 | 20 輪 | 需回顧整段對話,才能寫出讓業務免重問的完整脈絡 |
| 閒聊回應 | 輕量 | 8 輪 | 使用者可能其實在指涉前幾輪聊過的內容 |
| 確認回覆 | 輕量 | 無 | 只複述已擷取的四個欄位,帶歷史沒有幫助且增加成本 |
| 產生分眾標籤 | 輕量 | 無 | 輸入是交接摘要與既有標籤清單,與對話歷史無關 |
4.3 受眾貼標流程
lead 成立的回覆送出之後執行(不影響顧客等待時間),任一環節失敗不回滾主流程:
4.4 真人交接旅程(核心敘事)
- AI 對話中偵測購買意圖 → 逐項收集聯絡資料(一次只問一項)
- 四項齊全 → AI 生成交接摘要(需求/屋況/已推薦產品/意願訊號)
- 摘要以 push 進入顧客本人的 LINE 對話串——業務在 OA Manager 打開該對話,交接脈絡就在同一視窗,不需切換系統、不需重問
- 顧客同時收到確認訊息(複述重點+告知專人將聯絡),從 LIFF webview 被拉回 LINE 聊天串
- 業務的 LINE 同步收到 OA 推送的新 lead 通知,點開 OA Manager 即達該筆對話
- 業務以真人身分於 OA Manager 直接回覆 → 結單
- 系統同步為顧客貼上「地區/意願/品類」受眾標籤 → 沉澱為可分眾推播的名單資產
線稿與實機畫面
本章集中所有畫面素材:入口與四條對話流程的分鏡、儀表板四頁線稿,以及實機截圖。線稿呈現設計意圖,實機截圖佐證交付結果。
5.1 對話流程分鏡
從進入到交接的完整旅程:入口分鏡+四條對話流程,各以分鏡呈現關鍵畫面與互動原則:
5.2 儀表板四頁線稿
5.3 實機畫面
功能需求(FR)
| 編號 | 需求 | 規格摘要 | 驗收條件 |
|---|---|---|---|
| FR-1 | 產品介紹與諮詢 | 以官網知識庫為唯一回答依據;產品型號/包裝/塗佈量必須與知識庫一致,查無資料不作答並導向專線 | 知識庫依據率抽測 ≥ 95%;無捏造型號 |
| FR-2 | 情境圖片辨識 | 兩段式:AI 先判讀照片(判斷/視覺特徵/嚴重度,不推產品)→ 以判讀結果檢索知識庫 → 回覆「確認情境+產品組合」;無法判斷時直說並請補拍 | 上傳壁癌照可辨識並推薦對應產品組合(如 P-800+P-507) |
| FR-3 | 導購與轉真人 | 意圖分類器辨識購買訊號 → 逐項收集姓名/電話/縣市/需求(一次一項、已有不重問、可中途插問)→ 齊全即交接 | 完整走完收集流程;中途插問不中斷收集 |
| FR-4 | 真人交接 | 交接摘要固定四欄;push 進顧客對話串+顧客確認訊息;測試環境(無 LINE userId)自動略過推播 | 業務於 OA Manager 同視窗看到摘要,不需重問任何問題 |
| FR-5 | 語氣與排版 | 全程無敬語(禁「您/請問/您好」)、無客套開場結尾;中英文與數字間加空格、數字與單位不加空格、全形標點 | 抽測 30 則合格率 100% |
| FR-6 | 推薦護欄 | 底漆按基材分流(P-930 禁用磁磚面);瀝青黑膠不推斜屋頂與淺色窗框;回黏性乾膜必須搭面漆;雙塗佈量產品先確認用途;工程級需求導向專人 | 觸發情境全數改推安全替代品 |
| FR-7 | 受眾自動貼標 | 三維度控制詞彙:地區(22 縣市正規化)、意願(高/中/低)、品類(7 選 1);先匹配既有標籤、無才建立;輸出格式檢核,異常自動略過 | lead 成立後 OA 受眾清單出現對應標籤,各含該顧客 |
| FR-8 | 成效儀表板 | 四子頁;KPI、轉換漏斗、意圖分佈、每日趨勢(對話折線+lead 長條同圖)、lead 名單、護欄記錄、時段熱圖;日期區間篩選、深淺色、AI 洞察摘要;每項指標附「?」說明(計算方式/放置原因/怎麼解讀) | 四子頁數據與所選區間一致;篩選即時更新;每項指標皆有說明 |
非功能需求(NFR)
| 編號 | 類別 | 需求 | 實作 |
|---|---|---|---|
| NFR-1 | 效能 | 文字回應開始串流 ≤ 8 秒(P95 ≤ 12 秒) | 回覆逐字串流即時呈現 |
| NFR-2 | 成本 | 平均每對話 ≤ NT$0.5 | 依任務難度調度不同等級模型+知識庫快取,實測 NT$0.41 |
| NFR-3 | 安全 | 金鑰不落前端 | 所有金鑰僅存於伺服器端,前端與網址不出現任何金鑰;儀表板限內部帳號登入後存取,依角色授權 |
| NFR-4 | 隱私 | 個資最小揭露 | lead 名單依角色顯示:一般檢視遮蔽電話中段,指派負責人與管理者可見完整資料;通知訊息以 LINE 顯示名稱標示身分,不出現使用者識別碼 |
| NFR-5 | 可靠性 | 貼標/推播失敗不影響主對話 | 貼標與推播於回覆送出後才執行,失敗自動略過,顧客對話不受影響 |
| NFR-6 | 可維運性 | 非工程人員可維運 | 知識庫內容與對話流程皆可獨立更新,不需改動程式;版本可回溯 |
| NFR-7 | 可用性 | 24 小時服務 | 全託管雲端服務,無自建伺服器 |
錯誤處理與例外情境
兩條設計原則:任何加值功能(推播、貼標、名稱查詢)的失敗,都不得影響顧客的對話;AI 不確定時寧可不答,導向真人。以下依情境列出系統行為與補救機制:
| 情境 | 系統行為 | 顧客看到什麼 | 補救機制 |
|---|---|---|---|
| 知識庫查無資料 | 不臆測、不作答,直接說不確定並提供 0800 專線(檢索設定見 §10.5) | 誠實的「不確定」+人工管道 | 寫入查無記錄,每週彙整補進知識庫 |
| 照片無法判讀 | 直說判讀不了,請補拍或改用文字描述 | 不會被亂推薦 | 誤判與無法判讀案例納入知識庫對照條目 |
| 意圖誤判/答非所問 | 顧客隨時可說「找真人」,立即轉入導購收單流程 | 不會被機器人困住 | 每週抽測路由正確性(目標 98%) |
| AI 服務中斷 | 聊天頁顯示服務忙碌與 0800 專線;顧客在 LINE 留言仍完整保留 | 服務不斷線,可留言等真人 | 真人於 OA Manager 後台直接回覆;障礙解除後 AI 自動恢復 |
| 交接推播失敗 (顧客未加好友、封鎖) | 自動略過,不影響對話;lead 資料完整保存 | 頁內照常收到確認回覆 | 業務由儀表板 lead 名單補上聯絡 |
| 貼標失敗 | 自動略過,不影響對話與交接 | 無感 | 後台可手動補標;每週對帳 lead 名單與受眾清單 |
| 聯絡資料可疑 (電話格式異常等) | 複述重點請顧客確認,不阻擋流程 | 順暢留資料 | 業務回撥發現異常時,於同一對話串重新詢問 |
錯誤情境的驗收案例併入 §12.2 端到端驗收執行。
整合範疇與外部相依
| 系統 | 介接方式 | 用途 | 備註 |
|---|---|---|---|
| LINE Messaging API | POST /v2/bot/message/push | 交接摘要、顧客確認 | channel access token 存伺服器端環境變數 |
| LINE Messaging API | GET /v2/bot/profile/{userId} | 取顯示名稱(通知不露 UID) | 404 不中斷(未加好友 fallback) |
| LINE Audience API | GET/POST/PUT /v2/bot/audienceGroup/* | 受眾查詢/建立/加人 | 聊天標籤無公開 API,故以上傳型受眾實作貼標;建立與加人無人數下限 |
| LINE LIFF | LIFF SDK(scope: profile) | 全螢幕聊天、取 userId | Login channel 須與 Messaging API 同 Provider,否則 userId 對不起來 |
| Anthropic Claude | AI 模型雲端服務 | 對話生成與影像判讀 | 金鑰僅存伺服器端 |
資料設計
10.1 資料模型總覽
對話與 lead 為兩個核心實體:每一場對話可產出至多一筆 lead,lead 再延伸出標籤與跟進紀錄;護欄攔截、產品推薦、查無記錄則掛在對話下,供第 6 章的品質指標與知識庫維運使用。
知識側分為兩類,取用方式不同不可混用:kb_documents/kb_chunks 是檢索索引(語意搜尋用的衍生資料,可隨時由來源內容重建);guardrail_rules 是規則,集中管理後常駐於回應節點的提示詞,不進檢索池——規則必須每次生效,不能取決於檢索是否撈到。回覆實際引用了哪些片段記於 message_citations,供依據率抽測與答錯追查。
10.2 資料表定義
資料庫採 PostgreSQL;主鍵一律 UUID(訊息類高頻寫入表用 bigint 序號),時間欄位一律 timestamptz 存 UTC。
conversations|對話場次
| 欄位 | 型別 | 說明 |
|---|---|---|
| id | uuid PK | 對話識別碼 |
| line_user_id | varchar(64), index | LINE 使用者識別碼;貫穿對話、推播與貼標 |
| display_name | varchar(128) | LINE 顯示名稱(取得時寫入,供交接通知使用) |
| channel | varchar(16) | liff/oa,標示對話來源 |
| started_at / last_activity_at / closed_at | timestamptz | 場次起訖;逾 30 分鐘無互動即視為結束並寫入 closed_at |
| turn_count | smallint | 累計輪次,供「平均輪次/對話」取數 |
| primary_intent | varchar(16) | 本場主要意圖:consult/purchase/chitchat |
| has_image | boolean | 是否曾上傳照片,供「圖片辨識」指標取數 |
| draft_name / draft_phone / draft_city / draft_need | varchar / text | lead 草稿四欄位(即 §10.3 的會話狀態);每輪自完整對話重新擷取後覆寫 |
messages|訊息
| 欄位 | 型別 | 說明 |
|---|---|---|
| id | bigserial PK | 訊息序號 |
| conversation_id | uuid FK → conversations | 所屬對話 |
| role | varchar(16) | user/ai/human_agent/system |
| content | text | 訊息內容 |
| image_url | text NULL | 使用者上傳照片位置(物件儲存) |
| intent | varchar(16) NULL | 該輪意圖分類結果 |
| model_tier | varchar(16) NULL | 本輪使用的模型等級,供成本歸因 |
| tokens_in / tokens_out / cached_tokens | integer | 用量與快取命中,供成本與 Token 指標取數 |
| latency_ms | integer NULL | 自送出到開始回覆的毫秒數,供平均與 P95 回應時間 |
| created_at | timestamptz, index | 建立時間,供時段分佈取數 |
leads|商機名單
| 欄位 | 型別 | 說明 |
|---|---|---|
| id | uuid PK | lead 識別碼 |
| conversation_id | uuid FK, unique | 來源對話(一場對話至多一筆 lead) |
| line_user_id | varchar(64), index | 對應顧客 |
| name / phone / city | varchar | 聯絡資料;phone 於一般檢視遮蔽中段(NFR-4) |
| need | text | 需求一句話濃縮 |
| handoff_summary | text | 交接摘要四欄(需求/屋況/AI 已推薦/意願訊號) |
| intent_level | varchar(8) | 意願分級 high/mid/low,與貼標維度一致 |
| status | varchar(16) | new/contacted/quoted/won/lost |
| assigned_agent_id | uuid FK → agents NULL | 指派負責業務 |
| notified_at | timestamptz | 交接通知送達時間(回撥時長的起算點) |
| first_contact_at | timestamptz NULL | 業務標記已聯絡的時間(回撥時長的終點) |
| created_at / updated_at | timestamptz | 建立與更新 |
tag_assignments|分眾標籤
| 欄位 | 型別 | 說明 |
|---|---|---|
| id | bigserial PK | 序號 |
| lead_id | uuid FK → leads | 來源 lead |
| line_user_id | varchar(64) | 被貼標的顧客 |
| dimension | varchar(16) | region/intent/category |
| tag_name | varchar(32) | 標籤全名,須符合 §10.6 控制詞彙 |
| audience_group_id | varchar(32) NULL | 對應的受眾識別碼 |
| api_status | varchar(16) | created/appended/skipped/failed,供對帳 |
| created_at | timestamptz | 貼標時間 |
唯一鍵 (line_user_id, dimension):同一顧客同一維度只保留最新標籤,避免地區改變時留下兩個互斥標籤。
guardrail_rules|推薦護欄規則
FR-6 的護欄規則以資料表集中管理,避免散落於各處提示詞而難以維護與稽核。目前規則於回應節點載入提示詞後由模型執行,並以 rule_code 對應 guard_events 的攔截記錄;後續可加入送出前的程式比對,使護欄由模型自律升級為系統強制(見第 14 章)。
| 欄位 | 型別 | 說明 |
|---|---|---|
| code | varchar(32) PK | 規則代號,如 P930_NO_TILE;guard_events.rule_code 參照此欄 |
| severity | varchar(16) | block(必須改推)/warn(須加註提醒) |
| trigger_products | varchar(24)[] | 觸發此規則的產品型號 |
| trigger_contexts | varchar(32)[] | 觸發情境關鍵詞,如「磁磚」「斜屋頂」「淺色窗框」 |
| alternatives | varchar(24)[] | 應改推的安全替代品 |
| reason | text | 給顧客的說明文字 |
| is_active | boolean | 停用不刪除,保留稽核軌跡 |
kb_documents|知識來源文件
| 欄位 | 型別 | 說明 |
|---|---|---|
| id | uuid PK | 文件識別碼 |
| slug / title | varchar | 代號與標題 |
| category | varchar(32) | product/solution/faq/company/rule |
| retrieval_mode | varchar(24) | retrieved 進檢索池;always_injected 每次常駐提示詞。推薦護欄規則屬後者,寫在回應節點的提示詞中,每次生效而不取決於檢索結果 |
| source_url | text | 官網原始網址,供引用來源與重爬比對 |
| content_hash | char(64) | 內容 SHA-256;未變動即不重算向量 |
| version / updated_at | integer / timestamptz | 版本與更新時間 |
kb_chunks|檢索單位
| 欄位 | 型別 | 說明 |
|---|---|---|
| id | uuid PK | 片段識別碼 |
| document_id | uuid FK → kb_documents | 所屬文件 |
| heading | varchar(200) | 所屬標題(型號或情境名),並複寫進 content 開頭作為脈絡標頭,使片段被單獨檢索時仍能自證所屬 |
| content | text | 片段全文,即注入回應的內容 |
| token_count | integer | 控制注入上下文總量 |
| embedding | vector(維度依模型) | 語意向量,建近似最近鄰索引 |
| hit_count | integer | 被檢索命中次數;長期為零代表內容無人問或不易被找到 |
message_citations|回答引用來源
記錄每則 AI 回覆實際注入了哪些片段。FR-1 的驗收條件「知識庫依據率抽測 ≥ 95%」需靠此表查證,答錯時亦可循此追查是內容缺漏或檢索未命中。
| 欄位 | 型別 | 說明 |
|---|---|---|
| id | bigserial PK | 序號 |
| message_id | bigint FK → messages | 該則回覆 |
| chunk_id | uuid FK → kb_chunks | 被注入的片段 |
| score | real | 重排後分數 |
| rank | smallint | 注入順序 |
其他資料表
| 資料表 | 主要欄位 | 用途 |
|---|---|---|
guard_events | id, conversation_id, message_id, rule_code(→ guardrail_rules), matched_context, action_taken, created_at | 護欄攔截逐筆記錄,供 AI 服務品質頁的攔截次數與記錄表 |
recommendations | id, conversation_id, product_code, role(底漆/主材/面漆), created_at | AI 推薦過的產品,供熱門品項統計與交接摘要回填 |
kb_miss_logs | id, conversation_id, query_text, created_at | 知識庫查無資料的問題,每週彙整補內容(第 8 章補救機制) |
agents | id, name, email, line_user_id, role, is_active | 內部人員,供 lead 指派、儀表板登入與權限控管 |
lead_activities | id, lead_id, agent_id, action, note, created_at | 跟進歷程(已聯絡、改派、報價、結案) |
daily_metrics | date PK, conversations, leads, consult_count, purchase_count, chitchat_count, image_count, guard_count, tokens_in, tokens_out, cost_twd | 每日 03:00 排程彙總,儀表板長區間查詢直接取此表,避免掃描明細 |
10.3 會話狀態(lead 草稿)
導購流程進行中的四個欄位存於 conversations 的 draft_*:每一輪自完整對話重新擷取後整批覆寫,因此已提供的資料不會因後續訊息而遺失,也不會被重複詢問。四欄皆非空時即建立 leads 記錄並觸發交接,草稿欄位保留供稽核比對。
10.4 知識庫內容分層
官網內容經爬取與整理後,依用途分為五層;每一層的檢索方式不同,這是知識庫設計的主軸:
| 內容層 | 規模 | 取用方式 | 理由 |
|---|---|---|---|
| 產品完整條目 | 主力約 92 支,每支含定位/情境/特性/施工要點/包裝/塗佈量/圖片 | 語意檢索 | 條目含完整規格,供回應時引用;型號、包裝與塗佈量須逐字沿用不得改寫 |
| 工程長尾摘要 | 約 62 支,僅摘要 | 語意檢索 | 讓 AI 知道有此產品即可,細節導向專人 |
| 情境對照 | 八大情境:辨識特徵/成因/工法/產品組合 | 語意檢索(圖片判讀的主要依據) | 顧客描述的是症狀而非型號 |
| 推薦規則 | 底漆分流、禁用組合、必配面漆、雙塗佈量、轉專人原則 | 常駐回應節點提示詞,不進檢索池;規則本身以 guardrail_rules 集中管理 | 規則必須每次生效,不能取決於檢索是否撈到 |
| 公司與通路 | 品牌背景、服務專線、經銷據點 | 語意檢索 | 信任建立與轉真人話術素材 |
第四層是最容易被忽略的設計決策:它在性質上是規則而非知識。若與其他內容一同進入檢索池,某次檢索沒撈到禁用規則時,護欄會靜默失效且不留痕跡。
10.5 檢索策略
| 項目 | 設定 | 說明 |
|---|---|---|
| 檢索範圍 | 五層內容全數納入同一組檢索 | 不分流查詢,由重排決定何者相關 |
| 取回筆數 | 每次取前 6 筆注入回應 | 兼顧覆蓋率與上下文長度 |
| 重排 | 啟用重排模型,對檢索結果逐筆重新評分排序 | 向量檢索快而粗略,重排精準而慢,兩階段兼顧速度與品質 |
| 相似度門檻 | 不設門檻,一律取回前 6 筆 | 由回應節點的提示詞規範:知識庫沒有的內容不作答、據實說明並提供服務專線(見 §7) |
| 圖片線查詢 | 以影像判讀結果的文字作為檢索查詢,而非使用者原句 | 使用者傳圖時通常沒有文字,判讀結果才是可檢索的語意來源 |
| 常駐內容 | 推薦護欄規則與語氣排版規範寫在回應節點提示詞 | 不參與檢索,每次必定生效 |
| 引用記錄 | 實際注入的片段寫入 message_citations | 支撐知識庫依據率抽測與答錯追查 |
知識庫查無資料的判定目前由模型依提示詞規範執行;後續可在檢索層加入分數門檻,使判定不再依賴模型自律(見第 14 章)。
10.6 受眾標籤詞彙表(控制詞彙,防標籤增生)
| 維度 | 格式 | 值域 |
|---|---|---|
| 地區 | 地區:縣市 | 台灣 22 縣市正規化寫法(「台中」→「地區:台中市」) |
| 意願 | 意願:等級 | 高(急迫訊號)/中(留完整資料)/低 |
| 品類 | 品類:類型 | 壁癌/屋頂防水/外牆防水/浴廁防水/隔熱/地坪/其他 |
限制與已知風險
| 風險 | 影響 | 因應 |
|---|---|---|
| LINE 聊天標籤無公開 API | 業務在聊天視窗看不到「標籤」欄位 | 以受眾實作分眾;交接摘要本身已含所有屬性。此限制正是 Social CRM 平台自建標籤層的價值所在 |
| 受眾清單僅取第一頁 40 筆 | OA 既有受眾多於 40 時可能重複建名 | 控制詞彙全滿僅 32 個;超過時再擴充翻頁 |
| 屬性篩選推播 50 人門檻 | 初期受眾人數少 | 上傳型受眾直接指定發送無下限;門檻僅限屬性/點擊/曝光型 |
| 圖片誤判(白華 vs 壁癌邊界案例) | 錯誤推薦 | Prompt 要求「先確認再推薦」;知識庫持續增補對照條目 |
| 業務回覆行為無法自動量測 | 「最快回撥」「已聯絡率」需業務在系統上標記狀態,漏標會失真 | lead 名單提供一鍵標記;超過 24 小時未標記自動提醒;長期解法為自建客服後台(見第 14 章) |
交付項目與驗收
12.1 交付項目
本案完成時須交付以下項目,缺一不得驗收:
| 交付項目 | 內容 |
|---|---|
| 知識庫 | 官網內容爬取與清洗流程、五層結構化內容(產品/工法情境/規則/通路/FAQ)、建索引管線與內容更新作業說明 |
| AI 顧問服務 | 對話流程定義(意圖路由、圖片判讀、導購收單、交接、貼標)、各節點提示詞與模型/記憶設定、推薦護欄規則集 |
| 聊天前端 | AI 聊天網頁(全螢幕、照片上傳、建議問題)、LINE 官方帳號設定(圖文選單、歡迎訊息、真人接手模式) |
| 資料層 | 第 10 章之資料表、每日彙總排程、對話與 lead 落地寫入 |
| 成效儀表板 | 四子頁(總覽/商業轉換/AI 服務品質/營運分析)、日期區間篩選、指標說明、內部帳號權限控管 |
| 文件 | 本規格書、部署與維運手冊、知識庫更新流程、業務接手 SOP |
| 教育訓練 | 業務端一場(交接流程與 lead 名單操作)、行銷端一場(分眾標籤與推播應用) |
12.2 端到端驗收案例(手機實測)
- 加 OA 好友 → 歡迎訊息 → 開 LIFF 全螢幕聊天
- 問「牆壁長壁癌怎麼辦」→ 依知識庫回答、無敬語、排版正確
- 問「你是誰」與「今天天氣如何」→ 一句話回應後把話題帶回防水需求,不展開無關內容
- 傳壁癌照片 → 辨識情境並推薦產品組合
- 說「想約估價」→ 被逐項追問 → 留完四項資料
- 顧客 LINE 對話串出現交接摘要與確認訊息(無 UID、顯示名稱正確)
- OA Manager 打開該對話 → 同視窗看到摘要 → 真人身分回覆成功
- OA 受眾清單出現「地區:/意願:/品類:」標籤,各含該顧客
- 觸發護欄情境(磁磚面問 P-930)→ 改推安全替代品
- 以內部帳號登入儀表板,切換四子頁與日期區間,數據與明細一致
工時與用量估算
13.1 工作項預估工時
以 1 人日=8 小時計,逐工作項拆解如下:
| 階段 | 工作項 | 預估工時 | 主要產出 |
|---|---|---|---|
| 1・需求與知識庫 | 需求訪談、範疇與 KPI 確認 | 4 h | 需求清單、驗收標準 |
| 1・需求與知識庫 | 官網爬蟲、資料清洗與五層內容建置 | 8 h | 五層內容、產品主檔與規格表 |
| 2・對話引擎 | 意圖分類與閒聊線 | 4 h | 三分類路由、閒聊回應 |
| 2・對話引擎 | 知識庫問答線+推薦護欄+語氣排版規範 | 8 h | 產品諮詢主線、護欄規則 |
| 2・對話引擎 | 圖片判讀線(判讀 → 檢索 → 回應) | 6 h | 拍照即診斷 |
| 2・對話引擎 | lead 收集流程與會話狀態設計 | 6 h | 逐項追問、四欄位擷取 |
| 3・前端與部署 | 聊天前端建置與 LINE OA 設定 | 8 h | 全螢幕聊天體驗 |
| 4・真人交接 | 交接摘要、顯示名稱、雙推播與測試防呆 | 4 h | 同視窗交接 |
| 5・受眾貼標 | 貼標鏈(清單比對/LLM 產標/防呆/三維度) | 4 h | 自動分眾名單 |
| 6・儀表板 | 四子頁開發與存取閘 | 8 h | 成效儀表板 |
| 7・驗收 | 端到端測試、截圖與文件 | 4 h | 驗收報告、本規格書 |
| 合計 | 64 h(8 人日) |
13.2 流量與用量假設(容量規劃)
下列規模係依需求訪談確認的行銷投放計畫、現有 0800 話務量與官網流量推估,作為容量與成本規劃基準;上線後以儀表板實際數據逐月校準。
| 規劃項目 | 規劃值 | 推導與說明 |
|---|---|---|
| OA 好友數(上線一年) | 10,000 人 | 行銷導流+經銷通路累積 |
| 日常對話場次 | 150 場/日 | 約 1.5% 好友日活躍率 |
| 推播日尖峰場次 | 600 場/日 | 分眾推播後湧入,約 4 倍日常 |
| 平均輪次/場 | 4.6 輪 | 與儀表板營運分析頁口徑一致 |
| 每輪 LLM 呼叫 | 2.2 次 | 分類/擷取(輕)+回應生成(重) |
| 尖峰 RPM | ≈ 60 req/min | 假設推播後 30 分鐘內湧入 30% 場次:600×30%×4.6 輪×2.2 呼叫 ÷ 30 min;遠低於模型 API 速率上限,無需排隊機制 |
| 每輪計費 token | 重回應輪 ≈ 5,000 in/250 out 輕任務輪 ≈ 1,300 in/80 out | in 含系統提示、RAG 上下文、對話記憶;知識庫快取命中 92% |
| 每場對話 token | 原始 ≈ 11,500/計費 ≈ 3,000 | 快取折抵後的有效計費量 |
| 每場對話成本 | NT$0.41 | 模型分工+prompt 快取(NFR-2) |
| 每月用量與成本 | ≈ 13.5M 計費 tokens/NT$1,900 | 150 場 × 30 日;推播日單日約 NT$250 |
未來擴充(Roadmap)
- 分眾推播旅程:以既有標籤發動 narrowcast(例:「品類:壁癌 × 意願:中」推雨季保養提醒),把名單資產轉為回購動能
- 檢索品質強化:加入相似度門檻,使「查無資料」的判定不再依賴模型自律
- 護欄硬化:回覆送出前依
guardrail_rules做程式比對,命中才交由模型改寫;護欄由模型自律升級為系統強制,攔截次數亦成為可自動量測的事件 - 儀表板進階分析:開放區間對比、經銷據點維度下鑽,並將 AI 洞察擴充為可訂閱的週報
- 自建客服與客戶聊天後台:把對話、標籤、交接與真人回覆全部收進自有系統,取得官方帳號後台拿不到的資料——真人首次回覆時間、指派與轉派紀錄、標籤自由度(不受聊天標籤無 API 與受眾命名規則限制);「最快回撥」「已聯絡率」等業務端指標即可自動量測,不再依賴人工標記
- CRM 整合:lead 以 webhook 同步至客戶既有 CRM(Salesforce/HubSpot 或自建),對齊經銷據點指派邏輯
- 多平台複用:對話引擎與知識庫皆與通訊平台解耦,可低成本擴充至 Messenger/IG DM
- 標籤維度擴充:屋況(可拆磁磚與否)、身分(屋主/師傅/經銷)納入詞彙表
名詞對照
| 名詞 | 說明 |
|---|---|
| Lead | 已留下姓名/電話/縣市/需求四項完整資料的潛在客戶 |
| 轉真人率 | lead 數 ÷ 進線對話數 |
| 交接摘要 | AI 生成的四欄摘要(需求/屋況/已推薦/意願訊號),供業務免重問接手 |
| 受眾(audience) | LINE 分眾推播的目標名單;本方案以「一標籤=一上傳型受眾」實作貼標 |
| 護欄 | 防止錯誤用料的推薦硬規則(如 P-930 禁用磁磚面) |