Intent Classification API Playbook
Overview
ระบบ Intent Classification ใช้ Hybrid Strategy: Pattern Matching (keyword/regex) → LLM Fallback (Ollama) → FALLBACK intent
API Endpoints
Classification
| Method |
Endpoint |
Auth |
Rate Limit |
Description |
| POST |
/ai/intent/classify |
JWT |
30/min |
จำแนก Intent จาก query |
Request:
Response:
Admin — Intent Definitions
| Method |
Endpoint |
Auth |
Description |
| GET |
/admin/ai/intent-definitions |
JWT + RBAC |
รายการ Intent Definitions |
| GET |
/admin/ai/intent-definitions/:intentCode |
JWT + RBAC |
Intent ตาม code |
| POST |
/admin/ai/intent-definitions |
JWT + RBAC |
สร้าง Intent ใหม่ |
| PATCH |
/admin/ai/intent-definitions/:intentCode |
JWT + RBAC |
อัปเดต Intent |
Query Parameters (GET all):
category: read | suggest | utility
isActive: true | false
Admin — Intent Patterns
| Method |
Endpoint |
Auth |
Description |
| GET |
/admin/ai/intent-definitions/:code/patterns |
JWT + RBAC |
Patterns ของ Intent |
| POST |
/admin/ai/intent-definitions/:code/patterns |
JWT + RBAC |
สร้าง Pattern |
| GET |
/admin/ai/intent-patterns/:publicId |
JWT + RBAC |
Pattern ตาม UUID |
| PATCH |
/admin/ai/intent-patterns/:publicId |
JWT + RBAC |
อัปเดต Pattern |
| DELETE |
/admin/ai/intent-patterns/:publicId |
JWT + RBAC |
Soft delete |
Classification Methods
| Method |
Description |
Confidence |
Latency |
pattern |
Keyword/regex match |
1.0 |
< 10ms |
llm_fallback |
Ollama LLM classification |
0.4-1.0 |
< 2000ms |
semaphore_overflow |
LLM queue full |
0 |
< 10ms |
llm_error |
LLM unavailable/timeout |
0 |
< 5000ms |
12 Standard Intents (v1)
| Intent Code |
Category |
Description (TH) |
| RAG_QUERY |
read |
ถามคำถามธรรมชาติ ตอบจาก vector + doc context |
| GET_RFA |
read |
ดึง RFA ตาม filter |
| GET_DRAWING |
read |
ดึง Drawing revision |
| GET_TRANSMITTAL |
read |
ดึง Transmittal |
| GET_CORRESPONDENCE |
read |
ดึง Correspondence ทั่วไป |
| GET_CIRCULATION |
read |
ดึง Circulation |
| GET_RFA_DRAWINGS |
read |
ดึง Drawings ที่ผูกกับ RFA |
| SUMMARIZE_DOCUMENT |
read |
สรุปเอกสารที่เปิดอยู่ |
| LIST_OVERDUE |
read |
รายการ cross-entity ที่เกินกำหนด |
| SUGGEST_METADATA |
suggest |
แนะนำ metadata สำหรับเอกสาร |
| SUGGEST_ACTION |
suggest |
แจ้งเตือนว่าควรทำอะไรต่อ |
| FALLBACK |
utility |
ไม่เข้า intent ไหน / ไม่เกี่ยวกับระบบ |
Cache Strategy
- Key:
ai:intent:patterns:active
- TTL: 300 seconds
- Invalidation: Auto on admin CRUD (create/update/delete pattern)
- Fallback: DB query if Redis unavailable
Semaphore (LLM Concurrency Control)
- Max concurrent: 3 (configurable via
INTENT_LLM_MAX_CONCURRENT)
- Behavior on full: Return
FALLBACK with method semaphore_overflow
- Pattern: Promise-based queue with idempotent release
Configuration (Environment Variables)
Troubleshooting
| Problem |
Cause |
Solution |
| All queries return FALLBACK |
Redis empty + LLM down |
Check Redis + Ollama status |
| High latency (> 2s) |
LLM overloaded |
Increase semaphore or add patterns |
| Pattern not matching |
Cache stale |
Wait TTL (5min) or restart |
| 429 Too Many Requests |
Rate limit exceeded |
Wait 60s or reduce frequency |
Related
- ADR-024: Intent Classification Strategy
- ADR-023A: Unified AI Architecture (Model Revision)
- Feature spec:
specs/200-fullstacks/224-intent-classification/spec.md