File size: 5,674 Bytes
7e828dc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
# 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