# Hướng Dẫn Cấu Hình AI Chatbot

Hướng dẫn cấu hình và tối ưu chatbot AI sử dụng OpenAI hoặc Azure OpenAI.

## Tổng Quan

AI Chatbot sử dụng GPT-4 hoặc GPT-3.5 để cung cấp phản hồi thông minh, theo ngữ cảnh cho tin nhắn khách hàng. Nó có thể hiểu ngôn ngữ tự nhiên, duy trì ngữ cảnh hội thoại, và cung cấp thông tin hữu ích.

## Chọn AI Provider

### Option 1: OpenAI

**Ưu điểm**:
- ✅ Dễ dàng setup
- ✅ Pay-as-you-go pricing
- ✅ Models mới nhất (GPT-4 Turbo)
- ✅ Tốt cho global deployment

**Nhược điểm**:
- ❌ External API (latency)
- ❌ Dữ liệu xử lý bên ngoài region của bạn

**Setup**:
1. Tạo account tại [platform.openai.com](https://platform.openai.com/)
2. Generate API key từ trang **API Keys**
3. Thêm credits vào billing account

```bash
# Cấu hình .env
OPENAI_API_KEY="sk-proj-xxxxxxxxxxxxxxxxx"
OPENAI_MODEL="gpt-4-turbo"
```

### Option 2: Azure OpenAI

**Ưu điểm**:
- ✅ Bảo mật & tuân thủ Enterprise
- ✅ Kiểm soát data residency
- ✅ SLA guarantees
- ✅ VNET integration

**Nhược điểm**:
- ❌ Setup phức tạp hơn
- ❌ Yêu cầu Azure subscription
- ❌ Model updates chậm hơn

**Setup**:
1. Tạo Azure OpenAI resource trong Azure Portal
2. Deploy model (ví dụ, `gpt-4`)
3. Copy endpoint và key

```bash
# Cấu hình .env
AZURE_OPENAI_ENDPOINT="https://your-resource.openai.azure.com/"
AZURE_OPENAI_KEY="your-key-here"
AZURE_OPENAI_DEPLOYMENT_NAME="gpt-4"
```

---

## Lựa Chọn Model

| Model | Phù Hợp Cho | Chi Phí | Tốc Độ |
|-------|-------------|---------|--------|
| **GPT-4 Turbo** | Reasoning phức tạp, responses chính xác | $$ | Trung bình |
| **GPT-4** | Chất lượng cao, hiểu sâu sắc | $$$ | Chậm |
| **GPT-3.5 Turbo** | Responses nhanh, queries đơn giản | $ | Nhanh |

**Đề Nghị**:
- **E-commerce Support**: `gpt-3.5-turbo` (nhanh & tiết kiệm)
- **Technical Support**: `gpt-4-turbo` (chính xác hơn)
- **Multilingual Support**: `gpt-4-turbo` (xử lý ngôn ngữ tốt hơn)

---

## Thực Hành Tốt Nhất System Prompt

### Ví Dụ E-commerce

```
Bạn là trợ lý AI cho "GoodGo Shop", nền tảng thương mại điện tử tại Việt Nam.

SẢN PHẨM:
- Điện tử (điện thoại, laptop, phụ kiện)
- Thời trang (quần áo, giày, túi xách)
- Nhà cửa & Đời sống (nội thất, đồ bếp)

KHẢ NĂNG:
- Kiểm tra trạng thái đơn hàng (hỏi order ID)
- Cung cấp thông tin sản phẩm
- Giải thích chính sách vận chuyển & đổi trả
- Hỗ trợ vấn đề tài khoản

TONE:
- Thân thiện và tự nhiên
- Sử dụng tiếng Việt khi khách hàng dùng tiếng Việt
- Dùng ngôn ngữ đơn giản, tránh thuật ngữ phức tạp

GIỚI HẠN:
- Không thể xử lý hoàn tiền (chuyển sang nhân viên)
- Không thể sửa đơn hàng (chuyển sang customer service)
- Không thể truy cập thông tin thanh toán

Khi không thể giúp, nói: "Để tôi kết nối bạn với đội ngũ chăm sóc khách hàng."
```

---

## Tham Số Cấu Hình

### Temperature

Kiểm soát độ ngẫu nhiên (0.0 - 2.0)

| Giá trị | Hành vi | Use Case |
|---------|---------|----------|
| **0.0 - 0.3** | Nhất quán, tập trung | FAQ, câu hỏi chính sách |
| **0.4 - 0.7** | Cân bằng sáng tạo | Customer service chung |
| **0.8 - 1.0** | Sáng tạo hơn | Marketing, engagement |

**Đề nghị**: `0.7` cho customer service

### Max Tokens

Độ dài tối đa của phản hồi

| Tokens | Từ | Use Case |
|--------|-----|----------|
| 150 | ~100 | Câu trả lời ngắn |
| 300 | ~200 | Responses chuẩn |
| 500 | ~350 | Giải thích chi tiết |

**Đề nghị**: `300-500` tokens cho hầu hết trường hợp

### Top P (Nucleus Sampling)

Thay thế cho temperature (0.0 - 1.0)

- **0.9**: Mặc định đề nghị
- Dùng `temperature` HOẶC `top_p`, không dùng cả hai

---

## Quản Lý Ngữ Cảnh

### Conversation History

Bao gồm tin nhắn gần đây cho ngữ cảnh:

```csharp
var messages = new List<ChatMessage>
{
    new ChatMessage(ChatRole.System, systemPrompt),
    new ChatMessage(ChatRole.User, "Giờ mở cửa là mấy giờ?"),
    new ChatMessage(ChatRole.Assistant, "Chúng tôi mở cửa 10 giờ sáng - 10 giờ tối hàng ngày."),
    new ChatMessage(ChatRole.User, "Bây giờ có thể order giao hàng không?"),
};
```

**Thực Hành Tốt**:
- Giữ **5-10 messages** gần nhất
- Xóa messages cũ để tiết kiệm tokens
- Luôn bao gồm System message

### Token Budget

| Component | Tokens | Ghi Chú |
|-----------|--------|---------|
| System Prompt | 100-200 | Cố định |
| Conversation History | 50-100 per message | Biến đổi |
| Max Response | 300-500 | Cấu hình được |
| **Tổng mỗi request** | ~500-1500 | Ước tính |

**Ước Tính Chi Phí** (GPT-4 Turbo):
- Input: $0.01 / 1K tokens
- Output: $0.03 / 1K tokens
- **Chi phí trung bình mỗi conversation**: $0.02 - $0.05

---

## Chiến Lược Dự Phòng

### 1. Fallback về Automation

Khi AI confidence thấp, fallback về automation rules.

### 2. Chuyển Sang Người

Chuyển sang agent người khi vấn đề phức tạp.

**Trigger Phrases** (trong AI response):
- "Tôi không chắc"
- "Để tôi kết nối"
- "nhân viên"

**Hành động**: Update conversation status thành `NeedsHumanAgent`

### 3. Xử Lý Timeout

Nếu OpenAI API timeout, dùng fallback response:
```
"Xin lỗi vì sự chậm trễ. Để tôi kết nối bạn với đội ngũ của chúng tôi."
```

---

## Hỗ Trợ Đa Ngôn Ngữ

### Tự Động Phát Hiện Ngôn Ngữ

GPT-4 có thể tự động phát hiện và phản hồi bằng ngôn ngữ khách hàng.

**System Prompt**:
```
Bạn là trợ lý chăm sóc khách hàng đa ngôn ngữ.
- Phát hiện ngôn ngữ của khách hàng
- Phản hồi bằng cùng ngôn ngữ
- Hỗ trợ: Tiếng Anh, Tiếng Việt, Tiếng Thái, Tiếng Trung
```

---

## Kiểm Thử & Tối Ưu

### A/B Testing System Prompts

| Chỉ Số | Mục Tiêu | Đo Lường |
|--------|----------|----------|
| **Chất Lượng Response** | Hài lòng > 80% | Thumbs up/down |
| **Tỷ Lệ Giải Quyết** | > 70% không cần người | Track escalations |
| **Thời Gian Response** | < 3 giây | API latency |
| **Chi Phí/Conversation** | < $0.05 | Sử dụng token |

---

## Tối Ưu Chi Phí

### 1. Dùng System Prompts Ngắn Hơn

```diff
- Bạn là trợ lý chăm sóc khách hàng hữu ích cho GoodGo Shop, nền tảng thương mại điện tử bán điện tử, thời trang, nhà cửa...
+ Bạn là trợ lý AI cho GoodGo, nền tảng thương mại điện tử.
```

**Tiết kiệm**: ~50 tokens mỗi request

### 2. Giới Hạn Conversation History

```csharp
// Chỉ giữ 5 messages gần nhất
var contextMessages = conversation.Messages
    .OrderByDescending(m => m.SentAt)
    .Take(5)
    .Reverse();
```

**Tiết kiệm**: ~200-400 tokens mỗi request

### 3. Dùng GPT-3.5 Cho Queries Đơn Giản

```csharp
if (IsSimpleQuery(message)) // FAQ, product lookup
{
    model = "gpt-3.5-turbo"; // Rẻ hơn 10 lần
}
else
{
    model = "gpt-4-turbo";
}
```

### 4. Cache Responses Thường Dùng

Cache responses cho FAQs trong Redis.

---

## Ví Dụ Cấu Hình

### Cấu Hình 1: Support Chất Lượng Cao

```json
{
  "provider": "OpenAI",
  "model": "gpt-4-turbo",
  "systemPrompt": "Prompt customer service chi tiết...",
  "temperature": 0.6,
  "maxTokens": 500
}
```

**Use Case**: Thương hiệu cao cấp, sản phẩm phức tạp  
**Chi phí**: ~$0.04 mỗi conversation

### Cấu Hình 2: Nhanh & Tiết Kiệm

```json
{
  "provider": "OpenAI",
  "model": "gpt-3.5-turbo",
  "systemPrompt": "Prompt customer service ngắn gọn...",
  "temperature": 0.7,
  "maxTokens": 300
}
```

**Use Case**: High-volume, queries đơn giản  
**Chi phí**: ~$0.005 mỗi conversation

---

## Xử Lý Sự Cố

### Issue 1: Responses Quá Chung Chung

**Giải pháp**:
- ✅ Thêm context vào system prompt
- ✅ Bao gồm conversation history
- ✅ Giảm temperature (0.5)

### Issue 2: Chi Phí Cao

**Giải pháp**:
- ✅ Rút ngắn system prompt
- ✅ Giới hạn conversation history
- ✅ Dùng GPT-3.5 cho queries đơn giản
- ✅ Cache FAQs thường gặp

### Issue 3: Responses Chậm

**Giải pháp**:
- ✅ Dùng GPT-3.5 Turbo (nhanh hơn)
- ✅ Giảm max_tokens
- ✅ Enable streaming
- ✅ Dùng Azure OpenAI (regional deployment)

### Issue 4: AI Hallucinates

**Giải pháp**:
- ✅ Thêm: "Không được bịa đặt thông tin"
- ✅ Giảm temperature (0.3-0.5)
- ✅ Cung cấp factual context trong system prompt

---

## Tài Nguyên

### Tài Liệu Chính Thức
- [OpenAI API Reference](https://platform.openai.com/docs/api-reference)
- [Azure OpenAI Documentation](https://learn.microsoft.com/en-us/azure/ai-services/openai/)
- [GPT Best Practices](https://platform.openai.com/docs/guides/prompt-engineering)

### Công Cụ
- [OpenAI Playground](https://platform.openai.com/playground)
- [Tokenizer](https://platform.openai.com/tokenizer)
- [Azure OpenAI Studio](https://oai.azure.com/)

### Tài Liệu Nội Bộ
- [Tài Liệu API](./API.md)
- [Tài Liệu Kiến Trúc](./ARCHITECTURE.md)
- [Hướng Dẫn Setup Facebook](./FACEBOOK_SETUP.md)
