# 3. Core Logic: Grounded Generation & Round-Robin

Khác với cách sinh text thông thường, Ultra Description áp dụng 2 kĩ thuật lõi để đảm bảo tốc độ và sự chính xác:

### 3.1. Grounded Generation (Neo dữ liệu thực)
LLM thường hay "bịa" (hallucinate) các thông số như chất liệu hoặc tên sản phẩm. Core logic ở đây là:
- **Hard-inject**: Hệ thống lấy dữ liệu `chat_lieu` (chiết xuất bằng RegEx từ mô tả Magento cũ trong StarRocks), `ten_san_pham`, `gioi_tinh` ép cứng (override) vào kết quả JSON sau khi Writer sinh ra.
- **Reviewer Node**: Một LLM thứ 2 làm nhiệm vụ duyệt lại output JSON của Writer. Nếu phát hiện vi phạm luật của prompt, nó sẽ sửa lại form JSON trước khi lưu.

### 3.2. Multi-key Round-Robin (Bypass Rate Limits)
Sử dụng các dịch vụ Free LLM API (như Groq) thường xuyên bị lỗi 429 Too Many Requests.
Trong `_call_ai_with_fallback`, một vòng lặp (round-robin) được cấu hình với nhiều API Keys:
- Khi một model (vd `openai/gpt-oss-120b`) bị rate limit trên Key 1.
- Hàm sẽ nhảy ngay sang Key 2, Key 3... để thử lại ngay lập tức mà không cần `sleep` quá lâu.
- Chỉ khi TẤT CẢ các keys bị block, nó mới fallback xuống model phụ (`openai/gpt-oss-20b`, `qwen3-32b`).