Spaces:
Running
Running
File size: 3,700 Bytes
4b9f7d2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
# 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.
|