治理優先的 AI Agent 進銷存系統 —— 讓 AI 助理能實際操作 ERP(查庫存、開訂單、評估供應鏈風險),同時把每一個 AI 自主行動納入「可控、可審批、可稽核」的治理鏈。
企業導入 AI Agent 最大的顧慮不是能力,是控制:AI 建議可以參考,但讓 AI 直接改庫存、開訂單,誰來把關?出了問題怎麼追?
本系統的回答是一條完整的治理鏈:
- AI 的每一次工具呼叫都經過統一的 Tool Gateway(白名單、角色權限、風險分級)
- 會改動資料的操作一律先攔截、送人工審批,核准後才執行
- 全程寫入稽核紀錄(派工決策、工具呼叫、審批流程三層)
- 審批狀態如實揭露 —— 系統層保證回覆不會宣稱未執行的操作已完成
| 特性 | 說明 |
|---|---|
| 總管 Agent 派工 | 自然語言任務由 LLM 語意路由到專責 Agent,跨領域任務自動串接多個 Agent 並彙整 |
| 8 個專責 Agent | 庫存、採購、銷售、財務、人資、ESG、供應鏈風險、客服 —— 各自僅持有職責內的工具白名單 |
| Tool Gateway | 30 個 ERP 工具的唯一入口:檢查工具存在 → Agent 白名單 → 角色權限 → 風險分級 |
| 四級風險分級 | read_only / suggestion 直接執行;write / dangerous 攔截送審批 |
| 人工審批流程 | 待審批清單、核准 / 拒絕(附原因)、沖銷與重試,皆於 Dashboard 操作 |
| 三層稽核紀錄 | 派工決策(誰派給誰、為什麼)、工具呼叫(誰用了什麼、結果)、審批歷程(誰核准了什麼) |
| 審批狀態揭露 | 操作被攔下時,回覆由系統層強制附上審批單號與「尚未執行」告示,不依賴 LLM 自律 |
| 多供應商容錯 | LLM 供應商掉線自動依序切換備援模型(LiteLLM,一行設定換模型) |
| 供應鏈風險分析 | 外部新聞情資 → 風險熱圖 → 受影響採購單 → 替代建議 |
| 雙入口 | Web(Streamlit)與 LINE Bot 共用同一套 Gateway 與審批規則 |
目前系統架構圖
AI 任務治理標準流程圖
使用者(Web / LINE)
│ 自然語言任務
▼
總管 Agent ─── 語意路由:判斷派給哪個專責 Agent(派工紀錄落庫)
▼
8 個專責 Agent ─── 各自僅能使用白名單內的工具
│ tool call
▼
Tool Gateway ─── 白名單 → 角色權限 → 風險分級(呼叫紀錄落庫)
├── read_only / suggestion ──→ 直接執行
└── write / dangerous ──→ 待審批 ──→ 人工核准 ──→ 執行(審批歷程落庫)
▼
SQLite(業務資料 + 三層稽核紀錄)
治理邊界:治理鏈的對象是「AI Agent 的自主行動」。傳統的人工操作表單(手動開單、記帳、維護主檔)由登入者的角色權限(RBAC)管理,操作者本人即決策者,不重複進審批。
# 1. 環境(Python 3.11+)
python -m venv .venv
.venv/Scripts/activate # Windows;macOS/Linux 用 source .venv/bin/activate
pip install -r requirements.txt
# 2. 設定模型(.env)
cp .env.example .env
# LLM_MODEL=gemini/gemini-2.5-flash ← 填你的供應商/模型與對應金鑰
# 3. 啟動
streamlit run app.py登入後左側選單進入「AI 智能助理」即可用自然語言操作;「Agent Dashboard」檢視派工、稽核與待審批。
測試帳號(示範資料):admin/admin(管理者)、wh1/wh1(倉管)、sales1/sales1(業務)、hr1/hr1(人資)。
# .env 需另設 LINE_CHANNEL_ACCESS_TOKEN / LINE_CHANNEL_SECRET / GEMINI_API_KEY
python "line bot/bot_server.py" # FastAPI 於 :8000,webhook 需公開網址(如 ngrok)| 環境變數 | 用途 | 預設 |
|---|---|---|
LLM_MODEL |
主模型(LiteLLM 格式 provider/model),AI 助理與分析頁共用 |
gemini/gemini-2.5-flash |
LLM_FALLBACK_MODELS |
備援模型(逗號分隔,主模型失敗時依序切換) | openai/kimi-k2.6,gemini/gemini-2.5-flash |
LLM_ANALYSIS_MODEL |
分析副任務別名(選填;新聞歸類/翻譯可指到較便宜模型) | 未設=用主模型鏈 |
OPENAI_API_KEY / OPENAI_API_BASE |
OpenAI 相容供應商的金鑰與端點 | — |
GEMINI_API_KEY |
Gemini 金鑰(選 gemini 系模型時) | — |
GNEWS_API_KEY |
供應鏈新聞來源(選用) | — |
ERP_DB_PATH |
資料庫路徑(企業可指定既有 .db) | data/erp.db |
LINE_CHANNEL_ACCESS_TOKEN / LINE_CHANNEL_SECRET |
LINE Bot 憑證(選用) | — |
pip install -r requirements-dev.txt
python -m pytest tests/ -v測試涵蓋治理關鍵路徑:審批狀態揭露、彙整層治理訊號保留、供應商容錯切換。CI 於每個 PR 自動執行。
Python 3.11 · Streamlit · SQLite · LiteLLM(多供應商模型層)· FastAPI + LINE Messaging API · Plotly
- 稽核紀錄雜湊鏈(防篡改驗證)與寫入交易邊界
- LINE 入口最小權限角色
- 治理效益量化儀表板(決策時間、攔截率、可追溯率)
- 敏感欄位遮罩與密碼雜湊

