Spaces:
Paused
Paused
# Intent Tabanlı Chatbot Sistem Tasarımı (v1) | |
Bu doküman, niyet (intent) tespiti, parametre çıkarımı, REST API entegrasyonu, session yönetimi, veri doğrulama ve LLM destekli hibrit karar mekanizmasını içeren chatbot altyapısını detaylı olarak tanımlar. | |
--- | |
## 🧠 Amaç | |
- Kullanıcı ifadelerinden "intent" algılanması | |
- Parametrelerin (variables) otomatik çıkarılması | |
- Eksik ya da hatalı parametrelerin sorgulanması | |
- Format kontrolleri ve validasyon | |
- Gerekirse REST API çağrıları | |
- Session bazlı token yönetimi | |
- Gelen cevabın insani cevaplaşa dönüşü | |
- Gelişmiş kararlar için hibrit sistem (LLM + logic) | |
--- | |
## 📂 JSON Şema (Intent + Data Format) | |
```json | |
{ | |
"data_formats": [ | |
{ | |
"name": "currency_format", | |
"valid_options": ["dolar", "euro", "TL"], | |
"error_message": "Geçerli bir döviz cinsi belirtmelisiniz." | |
}, | |
{ | |
"name": "client_no_format", | |
"pattern": "^[0-9]{6}$", | |
"error_message": "Müşteri numaranız 6 haneli olmalıdır." | |
} | |
], | |
"intents": [ | |
{ | |
"name": "doviz-kuru-intent", | |
"examples": ["dolar kuru nedir?"], | |
"variables": ["currency:{dolar} kuru nedir?"], | |
"variable_formats": { | |
"currency": "currency_format" | |
}, | |
"action": { | |
"url": "https://api.ex.com/doviz", | |
"method": "POST", | |
"headers": [ | |
{ "key": "Authorization", "value": "Bearer {auth_tokens.doviz-kuru-intent.token}" } | |
], | |
"body": { | |
"currency": "{variables.currency}" | |
}, | |
"timeout": 5, | |
"retry_count": 1, | |
"tls": { | |
"verify": true, | |
"ca_bundle": "/app/certs/my-ca.pem" | |
}, | |
"auth": { | |
"auth_endpoint": "https://api.ex.com/auth", | |
"auth_body": { "username": "user", "password": "pass" }, | |
"auth_token_path": "token", | |
"auth_refresh_endpoint": "https://api.ex.com/refresh", | |
"refresh_body": { "refresh_token": "{session.refresh_token}" } | |
}, | |
"response_parser": { | |
"field": "rate", | |
"format": "{variables.currency} kuru: {rate} TL" | |
}, | |
"reply_template": "{variables.currency} kuru şu an {rate} TL." | |
} | |
} | |
] | |
} | |
``` | |
--- | |
## 🧭 Chat Akışı (Hibrit) | |
1. Kullanıcıdan mesaj alınır (`POST /chat`) | |
2. Session bulunur (`X-Session-ID` header) | |
3. Intent tespiti (bert model) | |
4. Parametreler `extract_parameters()` ile alınır | |
5. `variable_formats` varsa validasyon yapılır | |
6. Eksik/hatalı varsa `awaiting_variable` kaydedilir, soru sorulur | |
7. Tüm parametreler tamamsa: | |
- Gerekirse auth token üretilir / yenilenir | |
- API çağrısı yapılır | |
- `response_parser` uygulanır | |
- `reply_template` ile mesaj hazır | |
8. Session güncellenir, cevap döndürülür | |
--- | |
## 📦 Session Yapısı | |
```json | |
{ | |
"session_id": "abc-123", | |
"variables": { | |
"tckn": "12345678900" | |
}, | |
"auth_tokens": { | |
"doviz-kuru-intent": { | |
"token": "...", | |
"refresh_token": "..." | |
} | |
}, | |
"awaiting_variable": "currency", | |
"last_intent": "doviz-kuru-intent" | |
} | |
``` | |
--- | |
## 🧩 Placeholder Kullanımı | |
| Amaç | Yazım | | |
|---------------|-------------------------------| | |
| Parametre | `{variables.currency}` | | |
| Session verisi| `{session.tckn}` | | |
| Token | `{auth_tokens.intent.token}` | | |
--- | |
## ✅ Sonraki Adımlar | |
- `resolve_placeholders()` fonksiyonu | |
- `validate_variable_formats()` | |
- `auth_token_handler()` → create + refresh | |
- `execute_intent()` tam mantık | |
- `log()` yapısı | |
--- | |
Bu tasarım, modüler ve üretim ortamı için ölçeklenebilir sağlam bir altyapı sunar. | |