|
# Pydantic AI 整合說明文件 |
|
|
|
## 📋 概述 |
|
|
|
本次更新整合了 Pydantic AI 框架到 LineBot 專案中,主要解決商品查詢準確性問題,特別是像 "是否有推薦貓砂?" 這類自然語言查詢。 |
|
|
|
## 🎯 解決的問題 |
|
|
|
### 原有問題 |
|
- 用戶詢問 "是否有推薦貓砂?" 時,系統常常回答沒有相關資訊 |
|
- 商品查詢意圖識別不準確 |
|
- 缺乏智能推薦功能 |
|
|
|
### 解決方案 |
|
- 整合 Pydantic AI 框架,提供更精確的意圖識別 |
|
- 移植 inventory 專案的查詢功能,增強商品搜尋能力 |
|
- 新增智能商品推薦系統 |
|
|
|
## 🔧 技術架構變更 |
|
|
|
### 新增組件 |
|
|
|
1. **Pydantic AI 服務** (`backend/services/pydantic_ai_service.py`) |
|
- 商品查詢意圖分析 |
|
- 智能推薦系統 |
|
- 結構化輸出驗證 |
|
|
|
2. **增強商品服務** (`backend/services/enhanced_product_service.py`) |
|
- 進階商品搜尋 |
|
- 商品推薦功能 |
|
- 庫存狀態分析 |
|
|
|
3. **新增依賴** |
|
- `pydantic-ai[groq]`: Pydantic AI 框架 |
|
|
|
### 修改組件 |
|
|
|
1. **訊息路由器** (`backend/services/message_router.py`) |
|
- 新增商品查詢路由邏輯 |
|
- 整合 Pydantic AI 意圖分析 |
|
- 保留原有 `/chat` 和 `/search` 功能 |
|
|
|
2. **主應用** (`backend/main.py`) |
|
- 新增 `/product-query` API 端點 |
|
|
|
## 🚀 功能特性 |
|
|
|
### 1. 智能意圖識別 |
|
```python |
|
# 自動識別商品查詢意圖 |
|
"是否有推薦貓砂?" → 商品推薦查詢 (信心度: 0.8) |
|
"有什麼狗糧推薦?" → 商品推薦查詢 (信心度: 0.9) |
|
"查詢iPhone庫存" → 庫存查詢 (信心度: 0.7) |
|
``` |
|
|
|
### 2. 智能商品推薦 |
|
- 基於關鍵字的商品匹配 |
|
- 優先顯示有庫存的商品 |
|
- 提供推薦原因說明 |
|
|
|
### 3. 增強的庫存資訊 |
|
- 實時庫存狀態顯示 |
|
- 庫存警告提醒 |
|
- 緊急程度分級 |
|
|
|
## 📱 使用指南 |
|
|
|
### LINE Bot 使用方式 |
|
|
|
#### 1. 指令模式(原有功能保留) |
|
``` |
|
/chat 今天天氣如何? # 聊天模式 |
|
/search iPhone 15 Pro # 商品查詢模式 |
|
/help # 顯示幫助 |
|
``` |
|
|
|
#### 2. 智能模式(新增功能) |
|
直接輸入訊息,系統自動判斷意圖: |
|
``` |
|
是否有推薦貓砂? # → 智能商品推薦 |
|
有什麼狗糧推薦? # → 智能商品推薦 |
|
查詢寵物用品庫存 # → 庫存查詢 |
|
iPhone 還有庫存嗎? # → 庫存查詢 |
|
你好! # → 聊天模式 |
|
``` |
|
|
|
### API 端點 |
|
|
|
#### 1. 原有端點(保留) |
|
- `POST /chat`: 直接聊天 |
|
- `POST /search`: 直接搜尋 |
|
- `POST /route`: 智能路由 |
|
|
|
#### 2. 新增端點 |
|
- `POST /product-query`: 專門的商品查詢 |
|
|
|
### API 使用範例 |
|
|
|
```bash |
|
# 商品查詢 API |
|
curl -X POST "http://localhost:7860/product-query" \ |
|
-H "Content-Type: application/json" \ |
|
-d '{ |
|
"message": "是否有推薦貓砂?", |
|
"user_id": "test_user" |
|
}' |
|
|
|
# 智能路由 API |
|
curl -X POST "http://localhost:7860/route" \ |
|
-H "Content-Type: application/json" \ |
|
-d '{ |
|
"message": "有什麼狗糧推薦?", |
|
"user_id": "test_user" |
|
}' |
|
``` |
|
|
|
## ⚙️ 配置要求 |
|
|
|
### 環境變數 |
|
```env |
|
# 必需 |
|
GROQ_API_KEY=your_groq_api_key_here |
|
DB_HOST=your_database_host |
|
DB_NAME=your_database_name |
|
DB_USER=your_database_user |
|
DB_PASSWORD=your_database_password |
|
|
|
# LINE Bot (如果使用) |
|
LINE_CHANNEL_ACCESS_TOKEN=your_line_token |
|
LINE_CHANNEL_SECRET=your_line_secret |
|
``` |
|
|
|
### 依賴安裝 |
|
```bash |
|
pip install -r requirements.txt |
|
``` |
|
|
|
## 🧪 測試 |
|
|
|
### 運行測試腳本 |
|
```bash |
|
python test_pydantic_ai_integration.py |
|
``` |
|
|
|
### 測試案例 |
|
1. 商品推薦查詢 |
|
2. 庫存查詢 |
|
3. 意圖分析準確性 |
|
4. 路由統計 |
|
|
|
## 📊 路由統計 |
|
|
|
系統會追蹤各種路由模式的使用情況: |
|
- 💬 聊天模式 |
|
- 🔍 搜尋模式 |
|
- 🛍️ 商品查詢(新增) |
|
- 🧠 智能路由 |
|
- ❓ 幫助模式 |
|
- ❌ 錯誤次數 |
|
|
|
查看統計:輸入 `統計` 或 `stats` |
|
|
|
## 🔄 路由邏輯 |
|
|
|
``` |
|
用戶訊息 |
|
↓ |
|
是否有前綴? |
|
├─ /chat → 聊天模式 |
|
├─ /search → 搜尋模式 |
|
├─ /help → 幫助模式 |
|
└─ 無前綴 → 智能路由 |
|
↓ |
|
Pydantic AI 意圖分析 |
|
↓ |
|
商品查詢?(信心度>0.6) |
|
├─ 是 → 商品查詢模式 |
|
└─ 否 → 關鍵字分析 |
|
↓ |
|
搜尋關鍵字? |
|
├─ 是 → 搜尋模式 |
|
└─ 否 → 聊天模式 |
|
``` |
|
|
|
## 🚨 注意事項 |
|
|
|
### LINE 群組使用 |
|
- **保留前綴設計**:在群組中使用 `/chat` 和 `/search` 前綴,避免所有訊息都觸發 AI |
|
- **智能路由**:只在私聊或明確需要時使用無前綴訊息 |
|
|
|
### 效能考量 |
|
- Pydantic AI 查詢會消耗 Groq API token |
|
- 建議在生產環境中監控 API 使用量 |
|
- 可以調整意圖識別的信心度閾值 |
|
|
|
### 錯誤處理 |
|
- 當 Pydantic AI 不可用時,會自動降級到原有的搜尋功能 |
|
- 完整的錯誤日誌記錄 |
|
|
|
## 📈 預期效果 |
|
|
|
### 查詢準確性提升 |
|
- **之前**:「是否有推薦貓砂?」→ 沒有相關資訊 |
|
- **現在**:「是否有推薦貓砂?」→ 顯示貓砂商品列表,包含庫存狀態 |
|
|
|
### 用戶體驗改善 |
|
- 更自然的對話方式 |
|
- 智能推薦功能 |
|
- 詳細的庫存資訊 |
|
|
|
### 系統可維護性 |
|
- 模組化設計 |
|
- 完整的測試覆蓋 |
|
- 清晰的錯誤處理 |
|
|
|
## 🔮 未來擴展 |
|
|
|
1. **多語言支援**:擴展到英文查詢 |
|
2. **個人化推薦**:基於用戶歷史的推薦 |
|
3. **語音查詢**:整合語音識別 |
|
4. **圖片查詢**:支援商品圖片搜尋 |
|
|
|
--- |
|
|
|
**版本**:v1.0 |
|
**更新日期**:2025-01-12 |
|
**作者**:Augment Agent |
|
|