# Hướng Dẫn AI Chatbot

**Cập nhật lần cuối**: 2026-01-18

Tìm hiểu cách cấu hình và tối ưu hóa chatbot AI cho hội thoại WhatsApp.

## Tổng Quan

AI Chatbot sử dụng Mô Hình Ngôn Ngữ Lớn (LLM) để cung cấp phản hồi thông minh, nhận biết ngữ cảnh. Không giống như tự động hóa dựa trên quy tắc, AI có thể:

- Hiểu ngôn ngữ tự nhiên và ý định
- Duy trì ngữ cảnh qua các lượt hội thoại
- Tạo phản hồi động
- Xử lý các câu hỏi bất ngờ
- Học từ các mẫu hội thoại

## Các Nhà Cung Cấp LLM Được Hỗ Trợ

| Nhà Cung Cấp | Model | Chi Phí (mỗi 1M tokens) | Độ Trễ |
|--------------|-------|-------------------------|--------|
| **OpenAI** | GPT-4-Turbo | $10 input / $30 output | ~2s |
| **OpenAI** | GPT-3.5-Turbo | $0.50 input / $1.50 output | ~1s |
| **Azure OpenAI** | GPT-4 | Giá tùy chỉnh | ~2s |
| **Google Gemini** | Gemini Pro | $0.50 input / $1.50 output | ~1.5s |

**Khuyến Nghị**: Bắt đầu với GPT-4-Turbo cho chất lượng, tối ưu hóa sang GPT-3.5 cho các truy vấn đơn giản.

## Tạo AI Agent

### Qua API

```bash
POST /api/v1/whatsapp/ai-agents
Content-Type: application/json

{
  "shopId": "shop-guid",
  "agentName": "AI Hỗ Trợ Khách Hàng",
  "personality": {
    "tone": "friendly",
    "language": "vietnamese",
    "constraints": [
      "KHÔNG cung cấp giá mà không kiểm tra catalog hiện tại",
      "KHÔNG xử lý đơn hàng trực tiếp",
      "Luôn đề nghị kết nối với nhân viên cho các vấn đề phức tạp"
    ],
    "promptTemplate": "Bạn là trợ lý hỗ trợ khách hàng hữu ích cho {shop_name}."
  },
  "knowledgeBaseId": "kb-guid",
  "isActive": false
}
```

### Phản Hồi

```json
{
  "success": true,
  "data": {
    "agentId": "agent-guid",
    "agentName": "AI Hỗ Trợ Khách Hàng",
    "createdAt": "2026-01-18T10:00:00Z"
  }
}
```

## Cấu Hình Tính Cách

### Các Tùy Chọn Tone

**Friendly** (Khuyến nghị cho bán lẻ)
```
"Bạn là trợ lý ấm áp và nhiệt tình. Sử dụng emoji thỉnh thoảng. 
Xưng hô khách hàng một cách thân thiện nhưng tôn trọng."
```

**Professional** (Khuyến nghị cho B2B)
```
"Bạn là trợ lý doanh nghiệp chuyên nghiệp. Sử dụng ngôn ngữ trang trọng.
Cung cấp thông tin chi tiết, chính xác. Tránh emoji."
```

**Casual** (Khuyến nghị cho đối tượng trẻ tuổi)
```
"Bạn là trợ lý thân thiện và dễ gần. Sử dụng ngôn ngữ không trang trọng.
Giữ phản hồi ngắn gọn. Sử dụng slang thịnh hành khi thích hợp."
```

### Ngôn Ngữ

Đặt ngôn ngữ chính:
```json
{
  "language": "vietnamese",
  "fallbackLanguage": "english"
}
```

AI sẽ:
1. Phản hồi bằng tiếng Việt mặc định
2. Chuyển sang tiếng Anh nếu khách hàng sử dụng tiếng Anh
3. Xử lý ngôn ngữ hỗn hợp (Vienglish)

### Ràng Buộc

Định nghĩa những gì AI KHÔNG nên làm:

```json
{
  "constraints": [
    "Không bao giờ chia sẻ thông tin cá nhân của khách hàng khác",
    "Không hứa giảm giá hoặc hoàn tiền mà không có sự chấp thuận",
    "Không xử lý giao dịch tài chính",
    "Luôn xác minh mã đơn hàng trước khi cung cấp trạng thái",
    "Chuyển các vấn đề nhạy cảm cho nhân viên"
  ]
}
```

## Prompt Template

### Template Cơ Bản

```
Bạn là nhân viên hỗ trợ khách hàng cho {shop_name}.

Vai trò: Hỗ trợ khách hàng về thông tin sản phẩm, theo dõi đơn hàng và các câu hỏi chung.

Ngữ Cảnh:
- Tên khách hàng: {customer_name}
- Tags khách hàng: {customer_tags}
- Lần mua hàng trước: {purchase_count}

Cơ Sở Kiến Thức:
{knowledge_base_content}

Hướng Dẫn:
- Hữu ích và ngắn gọn
- Nếu không chắc chắn, hãy nói và đề nghị kết nối với nhân viên
- Không bao giờ bịa thông tin
- Luôn xác nhận trước khi thực hiện hành động

Ngày hiện tại: {current_date}
Thời gian hiện tại: {current_time}
```

### Template Nâng Cao với Few-Shot Examples

```
Bạn là nhân viên hỗ trợ khách hàng cho {shop_name}.

Dưới đây là các ví dụ về phản hồi tốt:

Khách hàng: "Bạn có iPhone 15 không?"
Nhân Viên: "Để tôi kiểm tra hàng tồn kho cho bạn! 📱 Bạn có thể cho biết màu sắc và dung lượng bộ nhớ bạn đang tìm kiếm không? Chúng tôi thường có Đen, Xanh và Hồng với dung lượng 128GB, 256GB và 512GB."

Khách hàng: "Đơn hàng của tôi đâu?"
Nhân Viên: "Tôi sẽ giúp bạn theo dõi! Bạn có thể chia sẻ mã đơn hàng không? Nó trông giống như #12345. Bạn có thể tìm thấy trong email xác nhận."

Khách hàng: "Sản phẩm này bị hỏng"
Nhân Viên: "Tôi rất tiếc khi nghe điều này! 😞 Để giúp bạn nhanh chóng, tôi sẽ kết nối bạn với đội hỗ trợ của chúng tôi, họ có thể xử lý đổi trả hoặc thay thế. Vui lòng chờ một chút."

Bây giờ phản hồi tin nhắn của khách hàng:
{customer_message}
```

## Tích Hợp Cơ Sở Kiến Thức

### Tạo Knowledge Base

Tải lên tài liệu (FAQ, catalog sản phẩm, chính sách):

```bash
POST /api/v1/whatsapp/knowledge-bases
Content-Type: application/json

{
  "shopId": "shop-guid",
  "name": "KB Hỗ Trợ Khách Hàng",
  "documents": [
    {
      "title": "Chính Sách Vận Chuyển",
      "content": "Chúng tôi cung cấp vận chuyển miễn phí cho đơn hàng trên 500.000 VNĐ..."
    },
    {
      "title": "Chính Sách Đổi Trả",
      "content": "Bạn có thể đổi trả hàng trong vòng 30 ngày..."
    }
  ]
}
```

### Liên Kết với AI Agent

```bash
PUT /api/v1/whatsapp/ai-agents/{agentId}
Content-Type: application/json

{
  "knowledgeBaseId": "kb-guid"
}
```

AI sẽ tự động tham chiếu KB khi phản hồi.

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

### Lịch Sử Hội Thoại

AI tự động bao gồm 10 tin nhắn cuối cùng cho ngữ cảnh:

```json
{
  "messages": [
    {"role": "user", "content": "Bạn có bán laptop không?"},
    {"role": "assistant", "content": "Có! Chúng tôi có nhiều mẫu laptop..."},
    {"role": "user", "content": "Còn laptop gaming thì sao?"}
  ]
}
```

AI hiểu "laptop gaming" đề cập đến cuộc thảo luận về laptop.

### Biến Ngữ Cảnh Tùy Chỉnh

Chèn ngữ cảnh động:

```json
{
  "contextVariables": {
    "customer_tier": "vip",
    "cart_value": "2500000",
    "last_purchase_date": "2026-01-10",
    "preferred_category": "electronics"
  }
}
```

Sử dụng trong prompt:
```
Cấp độ khách hàng: {customer_tier}
Giá trị giỏ hàng: {cart_value} VNĐ

Cung cấp đề xuất cá nhân hóa dựa trên sở thích của họ về {preferred_category}.
```

## Tạo Phản Hồi

### API Request

Khi khách hàng gửi tin nhắn, AI agent tự động tạo phản hồi:

```
Khách hàng: "Tôi muốn mua áo thun size L"

[Pipeline AI Nội Bộ]
1. Tải lịch sử hội thoại
2. Lấy hồ sơ khách hàng (tags, trường tùy chỉnh)
3. Truy vấn cơ sở kiến thức cho thông tin liên quan
4. Xây dựng prompt với ngữ cảnh
5. Gọi OpenAI API
6. Phân tích phản hồi
7. Áp dụng bộ lọc an toàn
8. Gửi cho khách hàng
```

### Phản Hồi Streaming

Đối với phản hồi dài, bật streaming:

```bash
PUT /api/v1/whatsapp/ai-agents/{agentId}
Content-Type: application/json

{
  "streamingEnabled": true,
  "streamingChunkSize": 500
}
```

Gửi tin nhắn theo từng đoạn (UX mượt mà hơn cho câu trả lời dài).

## Xử Lý Fallback

### Khi AI Nên Chuyển Tiếp

Cấu hình điều kiện để chuyển cho người:

```json
{
  "fallbackConditions": [
    {"type": "low_confidence", "threshold": 0.7},
    {"type": "contains_keywords", "keywords": ["khiếu nại", "hoàn tiền", "gặp quản lý"]},
    {"type": "conversation_length", "maxTurns": 10},
    {"type": "sentiment", "value": "negative"}
  ]
}
```

### Tin Nhắn Fallback

Tin nhắn chuyển giao tùy chỉnh:

```json
{
  "fallbackMessage": "Tôi muốn đảm bảo bạn nhận được sự giúp đỡ tốt nhất! Để tôi kết nối bạn với một trong những chuyên gia của chúng tôi, họ có thể hỗ trợ bạn thêm. Vui lòng chờ... 👨‍💼"
}
```

## Tối Ưu Hóa Chi Phí

### 1. Phân Loại Ý Định

Trước khi gọi GPT-4 đắt tiền, sử dụng bộ phân loại rẻ:

```json
{
  "intentClassifier": {
    "enabled": true,
    "model": "gpt-3.5-turbo",
    "categories": ["faq", "product_inquiry", "order_tracking", "complaint", "other"]
  }
}
```

Định tuyến đến GPT-3.5 cho FAQs, GPT-4 cho truy vấn phức tạp.

### 2. Response Caching

Lưu cache câu hỏi phổ biến:

```json
{
  "caching": {
    "enabled": true,
    "ttl": 3600,
    "similarityThreshold": 0.95
  }
}
```

Nếu khách hàng hỏi "Bạn có giao hàng đến Hà Nội?" và cache có câu trả lời cho câu hỏi tương tự → trả về phản hồi đã cache (không gọi API = $0).

### 3. Giới Hạn Token

Đặt token tối đa để tránh chi phí tăng cao:

```json
{
  "tokenLimits": {
    "maxPromptTokens": 2000,
    "maxCompletionTokens": 500
  }
}
```

### 4. Cảnh Báo Ngân Sách

Đặt giới hạn chi tiêu:

```bash
POST /api/v1/whatsapp/ai-agents/{agentId}/budget
Content-Type: application/json

{
  "dailyBudgetUsd": 10.00,
  "monthlyBudgetUsd": 200.00,
  "alertThreshold": 0.8
}
```

Nhận cảnh báo khi sử dụng 80% ngân sách.

## An Toàn & Kiểm Duyệt

### Lọc Nội Dung

Bật kiểm duyệt OpenAI:

```json
{
  "moderation": {
    "enabled": true,
    "blockCategories": ["hate", "harassment", "violence", "self-harm"]
  }
}
```

Nội dung đáng ngờ bị chặn trước khi phản hồi.

### Bảo Vệ PII

Tự động che giấu dữ liệu nhạy cảm:

```json
{
  "piiProtection": {
    "enabled": true,
    "redactTypes": ["credit_card", "ssn", "email", "phone"]
  }
}
```

Logs sẽ hiển thị `[REDACTED]` thay vì giá trị thực tế.

## Kiểm Tra

### Chế Độ Kiểm Tra

Mô phỏng phản hồi AI mà không gửi cho khách hàng:

```bash
POST /api/v1/whatsapp/ai-agents/{agentId}/test
Content-Type: application/json

{
  "conversationHistory": [
    {"role": "user", "content": "Laptop nào tốt nhất?"}
  ],
  "customerContext": {
    "name": "Nguyễn Văn A",
    "tags": ["vip"]
  }
}
```

**Phản Hồi**:
```json
{
  "generatedResponse": "Xin chào Nguyễn Văn A! 👋 ...",
  "tokensUsed": {
    "prompt": 450,
    "completion": 120,
    "total": 570
  },
  "estimatedCost": 0.0154,
  "latencyMs": 1850
}
```

### Kiểm Thử A/B

So sánh prompts:

- Agent A: Personality = "friendly"
- Agent B: Personality = "professional"

Định tuyến 50% lưu lượng cho mỗi agent, đo lường:
- Sự hài lòng của khách hàng (ngầm từ độ dài hội thoại)
- Tỷ lệ giải quyết
- Chi phí mỗi hội thoại

## Theo Dõi

### Dashboard Số Liệu

Theo dõi:
- **Token usage** (hàng ngày/hàng tháng)
- **Chi phí** (mỗi hội thoại, tổng cộng)
- **Độ trễ** (p50, p95, p99)
- **Tỷ lệ fallback** (AI chuyển tiếp bao nhiêu lần)
- **Sự hài lòng của khách hàng** (thumbs up/down)

### Chất Lượng Hội Thoại

Xem xét mẫu ngẫu nhiên:

```bash
GET /api/v1/whatsapp/ai-agents/{agentId}/conversations/sample?count=10
```

Tìm:
- Ảo giác (AI bịa thông tin)
- Tone không phù hợp với thương hiệu
- Không chuyển tiếp khi cần

## Cách Tiếp Cận Lai

Kết hợp tự động + AI cho kết quả tốt nhất:

### Chiến Lược 1: Tự Động Trước

1. Tin nhắn đến → Kiểm tra luồng tự động
2. Nếu không khớp → Định tuyến đến AI
3. Phản hồi AI → Gửi cho khách hàng

### Chiến Lược 2: AI Để Phân Loại

1. AI phân loại ý định
2. Định tuyến đến luồng tự động phù hợp
3. Fallback đến AI nếu không có luồng nào khớp

### Chiến Lược 3: Dựa Trên Thời Gian

- Giờ làm việc (9 AM - 6 PM): AI bật
- Sau giờ: Chỉ tự động (FAQ đơn giản)

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

1. **Bắt đầu với phạm vi hẹp** - Huấn luyện AI về các danh mục cụ thể trước
2. **Xem xét thường xuyên** - Lấy mẫu hội thoại hàng tuần
3. **Cập nhật cơ sở kiến thức** - Giữ thông tin sản phẩm/chính sách cập nhật
4. **Đặt ràng buộc rõ ràng** - Định nghĩa AI có thể/không thể làm gì
5. **Theo dõi chi phí** - Đặt ngân sách và cảnh báo
6. **Con người trong vòng lặp** - Luôn cung cấp đường chuyển tiếp
7. **Tối ưu hóa prompts** - Lặp lại dựa trên hiệu suất
8. **Sử dụng ví dụ** - Few-shot learning cải thiện chất lượng

## Khắc Phục Sự Cố

### Phản Hồi AI Chung Chung

**Giải Pháp**: Thêm ngữ cảnh và ví dụ vào prompt template.

### AI Cung Cấp Thông Tin Sai

**Giải Pháp**: 
1. Cập nhật cơ sở kiến thức
2. Thêm ràng buộc trong prompt
3. Xem xét và huấn luyện lại

### Chi Phí Cao

**Giải Pháp**:
1. Bật phân loại ý định
2. Giảm token tối đa
3. Sử dụng GPT-3.5 khi có thể
4. Triển khai caching

### Phản Hồi Chậm

**Giải Pháp**:
1. Giảm cửa sổ ngữ cảnh (ít tin nhắn lịch sử hơn)
2. Bật streaming
3. Sử dụng mô hình nhanh hơn (GPT-3.5)

## Bước Tiếp Theo

- [Tài Liệu API](API.md) - Tham chiếu API AI agent
- [Hướng Dẫn Automation](AUTOMATION_GUIDE.md) - Kết hợp với tự động
- [Kiến Trúc](ARCHITECTURE.md) - Hiểu pipeline AI

## Tài Nguyên

- [OpenAI Best Practices](https://platform.openai.com/docs/guides/prompt-engineering)
- [Hướng Dẫn Prompt Engineering](https://www.promptingguide.ai/)
- [Công Cụ Tính Chi Phí LLM](https://docsbot.ai/tools/gpt-openai-api-pricing-calculator)
