本章以一句話摘要開場,接著展開 PIF AI 的四大設計命題、五層系統架構總覽,並列出本白皮書的四項學術與工程貢獻。讀完本章,您應能在 3 分鐘內向同事複述「PIF AI 是什麼、為何必要、如何運作」。
PIF AI 是一套多租戶 SaaS,以 AI 文件擷取、國際毒理資料庫交叉查詢、台灣 TFDA 法規即時比對,將原本耗時 4–8 週的化粧品 PIF 建檔壓縮至 3–5 個工作天,並提供 Safety Assessor(SA)線上審閱與電子簽章工作流程。
這一句話濃縮了三個層次的資訊:使用者痛點(4–8 週建檔太慢)、技術解法(AI 擷取 + 毒理查詢 + 法規比對)、組織合規(SA 簽章為法定必要)。本文件第 2 章深入法規背景,第 3 章拆解 16 項資料,後續章節解析技術實作。
台灣《化粧品衛生安全管理法》(下稱「衛安法」)自 2019 年分階段施行,最後過渡期於 2026 年 7 月 1 日結束。該日之後:
台灣化粧品相關事業(品牌商、代工廠、進口商、諮詢/檢驗機構)總數估計逾 8,000 家。依 TFDA 官方登錄資料與台灣化粧品工業同業公會公開統計,市面流通之化粧品單品(SKU)總數超過 10 萬項1。
傳統人工建檔之三大成本:
| 成本項目 | 佔比(估計) | 說明 |
|---|---|---|
| 毒理資料查詢翻譯 | 35% | 每個成分需查 PubChem、翻譯 SDS、交叉比對 TFDA 清冊 |
| SA 專業費用 | 35% | 第 16 項安全評估必須由具資格者簽署 |
| 文件整理與法規對照 | 20% | 16 項散落於多份原始文件 |
| 行政與協調 | 10% | 跨部門蒐集配方、試驗報告等 |
[!IMPORTANT] 上表百分比為產業觀察值,並非經正式統計研究確立之數字,僅供討論之用。正式研究詳見附錄 C 參考文獻 [3]。
大型品牌有內部法規部門,小型業者則面臨:時間耗不起、成本扛不住、專業找不到。這正是 SaaS 化 AI 工具的市場機會 — 以軟體將專業知識普及化,讓中小業者能在合理成本內完成合規。
PIF AI 的整體設計由以下四項核心命題驅動。每項命題都對應到具體的工程決策(見後續章節)。
PIF 16 項內容多為結構化資訊的跨文件拼裝:配方表(Excel)、GMP 證書(PDF)、試驗報告(多種格式)、法規清冊(HTML/PDF)、毒理資料庫(JSON API)。瓶頸不在「撰寫能力」,而在「資料對齊與驗算」。
這正是大型語言模型(LLM)Tool Use(工具使用)能力的強項:讓 LLM 作為「協調者」呼叫結構化工具,而非將所有運算塞進 token context。
引述依據:
app/ai/toxicology_engine.py採 Claude Tool Use 模式,LLM 以pubchem.query、tfda.check_restricted、db.lookup_inci等 function signatures 擷取結構化結果,不依賴自由生成。詳見 §7。
所有 AI 輸出一律標示為「參考草稿」,最終專業判斷由具資格之 SA 簽署。這不是免責聲明,而是系統設計原則:
於資料庫層,這體現為 pif_documents.status 的狀態機(見 §13 圖 13.1):missing → uploaded → ai_processing → ai_draft_ready → human_reviewed → approved。AI 永不將文件標記為 approved,這是 SA 的專屬權限。
化粧品配方是商業機密。A 品牌的配方絕對不得被 B 品牌存取。PIF AI 提供三層隔離:
flowchart LR
R["HTTP Request"]
L1["Layer 1<br/>FastAPI ACL<br/>org_id filter"]
L2["Layer 2<br/>PostgreSQL<br/>Row-Level Security"]
L3["Layer 3<br/>RAG KB<br/>per-product"]
D[("Data")]
R --> L1 --> L2 --> L3 --> D
L1 -. 驗證 JWT<br/>注入 org_id .-> S1["✓ user.org_id"]
L2 -. current_setting<br/>RLS policy .-> S2["✓ WHERE org_id=?"]
L3 -. ACL gate<br/>resolve kb_id .-> S3["✓ pif_org_X_prod_Y"]
圖 1.1 說明:請求從前端進入後依序通過三層隔離檢查。第一層(FastAPI ACL)由 JWT 中的 org_id 決定可存取的組織;第二層(PostgreSQL Row-Level Security)於資料庫層強制過濾,即使應用層發生 bug 也無法返回他組資料;第三層(中心 RAG KB per-product)確保毒理/配方 AI 分析查詢局限於當前產品專屬 KB。任一層若被繞過,後兩層仍提供防護 — 這是「縱深防禦」(defense in depth)。詳細威脅模型見 §11,RAG 隔離機制(方案 C+)見 §10。
PIF 建檔是一個跨天的連續流程。使用者可能在不同時間段上傳不同文件,AI 在背景非同步處理。若任何環節因外部依賴短暫故障(Claude API 超載、PubChem rate limit、中心 RAG 重啟)而硬性阻斷,使用者體驗將極差。
因此所有外部呼叫皆為 fail-soft:失敗時降級為「此項目暫存待補」而非 HTTP 500。具體實作範例:
# app/services/rag_client.py:207
async def safe_create_kb(*, org_id, product_id, product_name=None) -> str | None:
"""Attempt to create KB; return kb_id or None on failure (fail-soft)."""
if not _is_configured():
logger.info("RAG not configured — skipping KB creation for product %s", product_id)
return None
try:
kb = await RagClient.create_knowledge_base(...)
return kb.id
except RagServiceError as e:
logger.warning("RAG create_kb failed for product %s: %s", product_id, e)
return None # 產品照建,kb_id 留空可後補
產品建立成功與否從不依賴 RAG 可用性。詳細失敗處理策略見 §10.4。
以下為 PIF AI 的五層架構總覽。後續 §4 將深入每層的模組邊界與資料流。
flowchart TB
subgraph L1["① 前端層 Frontend"]
U["業者 Operator"]
W["Next.js 15<br/>App Router"]
end
subgraph L2["② BFF 層"]
R["tRPC / API Routes"]
A["NextAuth<br/>Session + JWT"]
end
subgraph L3["③ 業務邏輯層 Business"]
F["FastAPI<br/>Python 3.12"]
WK["Worker<br/>async tasks"]
end
subgraph L4["④ AI 引擎 AI Engine"]
C["Claude<br/>Sonnet 4"]
H["Claude<br/>Haiku 4.5"]
T["Tool Use<br/>+ Vision"]
end
subgraph L5["⑤ 資料與整合層 Data"]
P[("PostgreSQL 16<br/>+ pgvector")]
RD[("Redis")]
S3[("S3 / R2")]
PC["PubChem"]
EC["ECHA"]
TF["TFDA 清冊"]
RAG["中心 RAG<br/>rag.baiyuan.io"]
end
U --> W --> R --> A
A -.JWT.-> F
F --> WK
F --> C
F --> H
C --> T
H --> T
F --> P
F --> RD
F --> S3
F --> PC
F --> EC
F --> TF
F --> RAG
WK --> C
WK --> P
圖 1.2 說明:五層架構採單向依賴(上層只呼叫下層,不反向呼叫)。
| 指標 | 傳統人工 | PIF AI 目標 | 來源 |
|---|---|---|---|
| 建檔時間 | 4–8 週 | 3–5 工作天 | 商業目標(CLAUDE.md) |
| 毒理查詢/成分 | 2–4 小時 | < 10 秒(並發 + cache) | Phase 1 設計 |
| INCI 校正信心度 | 人工查辭典 | ≥ 0.8(Claude + 辭典) | ai/ingredient_validator.py |
| 法規比對延遲 | 人工查 TFDA PDF | 即時(本地同步清冊) | mcp_servers/tfda_server/ |
| SA 審閱時間/件 | 1–2 週 | 2–4 小時 | SA 線上化 |
[!IMPORTANT] 上表「PIF AI 目標」欄為設計目標值,非實測結果。正式效能 benchmark 將於 Phase 1 GA 後於白皮書 v0.2 補上。本原則符合《開發憲法》中「不可模擬數據、實測後才回報」的規範。
PIF AI 整個專案 —— 前端、後端、AI 引擎、RAG 整合、部署設定、i18n 5 語系、包含本白皮書 —— 皆由作者搭配 Anthropic Claude Code(Anthropic 官方 CLI)完成開發與撰寫。
兩個原因:
學術透明性:LLM 輔助工程對軟體開發生命週期的影響,目前是活躍研究主題。本專案作為完整可審閱的開源案例,讓研究者能觀察「LLM 如何影響一個具商業規模、多方依賴的 SaaS 開發」。
社群教學價值:希望對考慮以 Claude Code 開發複雜系統的讀者提供具體可參照的流程、取捨、失敗案例。詳細工程實踐見 §7.4 與 §15.2。
| 版本 | 日期 | 摘要 |
|---|---|---|
| v0.1 | 2026-04-19 | 首次撰寫。涵蓋四大設計命題、五層架構、Claude Code 聲明 |
© 2026 Baiyuan Tech. Licensed under CC BY-NC 4.0.
導覽 ← README · 第 2 章:台灣化粧品 PIF 法規背景 →
台灣化粧品工業同業公會(TCIIA)。「2024 年會員年報」(未公開統計)。 ↩