Mimari (TR)
Bu sayfayı neden okuyorsunuz? Bu sayfa Intentum mimarisini anlatır: hangi paketleri neden kullanacağınızı ve Observe → Infer → Decide akışının teknik karşılığını gösterir. İlk projeyi kurmadan önce veya paket seçerken faydalıdır.
Temel akış: Observe → Infer → Decide
Intentum, senaryo tabanlı BDD yerine üç adımlı akış kullanır: davranışı kaydet, intent çıkar, policy uygula.
flowchart LR
subgraph observe [Observe]
Events[Behavior Events]
Space[BehaviorSpace]
Events --> Space
end
subgraph infer [Infer]
Model[IIntentModel]
Intent[Intent]
Space --> Model
Model --> Intent
end
subgraph decide [Decide]
Policy[IntentPolicy]
Decision[PolicyDecision]
Intent --> Policy
Policy --> Decision
end
observe --> infer --> decide
| Adım | Sorumluluk |
|---|---|
| Observe | Ne olduğunu kaydet: space.Observe(actor, action) veya BehaviorSpaceBuilder. Olaylar BehaviorSpace oluşturur. İsteğe bağlı normalizasyon için ToVector(options) (Cap, L1, SoftCap) kullan. |
| Infer | IIntentModel (örn. LlmIntentModel, RuleBasedIntentModel veya ChainedIntentModel) Intent (ad, güven, sinyaller, opsiyonel Reasoning) üretir. LlmIntentModel embedding + similarity engine kullanır; dimension count ağırlık olarak geçer; ITimeAwareSimilarityEngine (örn. TimeDecay) kullanıldığında otomatik uygulanır. |
| Decide | IntentPolicy kuralları sırayla değerlendirir → PolicyDecision (Allow, Observe, Warn, Block, Escalate, RequireAuth, RateLimit). |
Somut örnek (e-ticaret dolandırıcılık):
- Observe: Ahmet kullanıcısı 1 dakika içinde: 1) 5 farklı kredi kartı ekledi, 2) 10 farklı adrese sipariş verdi, 3) Hesap şifresini değiştirdi. Sistem bu olayları BehaviorSpace ile kaydeder.
- Infer: IIntentModel bu davranıştan niyet çıkarır: Niyet = HesapEleGeçirme, güven %92. Sistem bu davranışı "hesap ele geçirme" niyeti olarak yorumlar.
- Decide: IntentPolicy kuralı: "%85 üstü güven → Block + bildirim". Sonuç: Sipariş bloke edilir, güvenlik ekibine uyarı gider.
Paket mimarisi
Paketler sorumluluğa göre gruplanır: çekirdek tipler, runtime (policy + rate limiting), AI (model + embedding + cache), persistence, analytics ve opsiyonel uzantılar.
flowchart TB
subgraph core [Core]
CorePkg[Intentum.Core]
CorePkg --> Behavior[BehaviorSpace, BehaviorEvent, BehaviorSpaceBuilder, ToVectorOptions]
CorePkg --> Intent["Intent, IntentConfidence, IntentSignal, Reasoning (Intentum.Core.Intents)"]
CorePkg --> Batch[IBatchIntentModel, BatchIntentModel]
CorePkg --> Model[IIntentModel]
CorePkg --> RuleBased[RuleBasedIntentModel, ChainedIntentModel]
end
subgraph runtime [Runtime]
RuntimePkg[Intentum.Runtime]
RuntimePkg --> Policy[IntentPolicy, IntentPolicyBuilder, PolicyDecision]
RuntimePkg --> RateLimit[IRateLimiter, MemoryRateLimiter]
RuntimePkg --> Localization[IIntentumLocalizer]
end
subgraph ai [AI]
AIPkg[Intentum.AI]
AIPkg --> Embeddings[IIntentEmbeddingProvider, LlmIntentModel]
AIPkg --> Similarity[IIntentSimilarityEngine, ITimeAwareSimilarityEngine, SimpleAverage, TimeDecay, Cosine, Composite]
AIPkg --> Cache[IEmbeddingCache, MemoryEmbeddingCache, CachedEmbeddingProvider]
end
subgraph providers [AI Sağlayıcılar]
OpenAI[Intentum.AI.OpenAI]
Gemini[Intentum.AI.Gemini]
Mistral[Intentum.AI.Mistral]
Azure[Intentum.AI.AzureOpenAI]
Claude[Intentum.AI.Claude]
end
subgraph persistence [Persistence]
Persist[Intentum.Persistence]
PersistEF[Intentum.Persistence.EntityFramework]
PersistMongo[Intentum.Persistence.MongoDB]
PersistRedis[Intentum.Persistence.Redis]
Persist --> Repos[IBehaviorSpaceRepository, IIntentHistoryRepository]
PersistEF --> Repos
PersistMongo --> Repos
PersistRedis --> Repos
end
subgraph extensions [Uzantılar]
AspNet[Intentum.AspNetCore]
Analytics[Intentum.Analytics]
Clustering[Intentum.Clustering]
Events[Intentum.Events]
Experiments[Intentum.Experiments]
Explainability[Intentum.Explainability]
Simulation[Intentum.Simulation]
MultiTenancy[Intentum.MultiTenancy]
Versioning[Intentum.Versioning]
Redis[Intentum.AI.Caching.Redis]
end
core --> runtime
core --> ai
ai --> providers
core --> persistence
persistence --> Analytics
core --> AspNet
core --> Clustering
core --> Events
core --> Experiments
core --> Explainability
core --> Simulation
core --> MultiTenancy
core --> Versioning
ai --> Redis
Tüm paketler (özet): Core, Runtime, AI, AI sağlayıcılar (OpenAI, Gemini, Mistral, Azure, Claude), Persistence (abstractions + EF, MongoDB, Redis), Analytics, AspNetCore, Clustering, Events, Experiments, Explainability, Simulation, MultiTenancy, Versioning, AI.Caching.Redis. Ayrıca Testing, Observability, Logging, CodeGen — bkz. API Referansı ve Gelişmiş Özellikler.
Hangi ihtiyacıma hangi paket?
| İhtiyacınız / Yapmak istediğiniz | Başlamak için paketler | İleride ekleyebilecekleriniz |
|---|---|---|
| Sadece niyet tespiti (kural veya basit AI) | Intentum.Core | — |
| Karar kuralları (policy) ve sınırlama (rate limit) | Intentum.Core + Intentum.Runtime | — |
| LLM ile niyet tahmini (OpenAI, Gemini vb.) | Intentum.Core + Intentum.AI + Intentum.AI.OpenAI (veya diğer sağlayıcı) | Intentum.AI.Caching.Redis (performans) |
| Verileri veritabanına kaydetmek | Intentum.Core + Intentum.Persistence.EntityFramework (veya MongoDB) | Intentum.Analytics |
| Web uygulamasında kullanmak (ASP.NET Core) | Yukarıdakiler + Intentum.AspNetCore | Intentum.MultiTenancy (çoklu müşteri) |
Detaylı kurulum için Kurulum.
Inference pipeline (detay)
BehaviorSpace'ten PolicyDecision'a veri akışı: embedding, similarity ve policy değerlendirmesi.
sequenceDiagram
participant App as Uygulama
participant Space as BehaviorSpace
participant Model as IIntentModel
participant Embed as IIntentEmbeddingProvider
participant Cache as IEmbeddingCache
participant Sim as IIntentSimilarityEngine
participant Policy as IntentPolicy
participant Rate as IRateLimiter
App->>Space: Observe(actor, action)
App->>Model: Infer(space)
Model->>Space: Events / ToVector (opsiyonel ToVectorOptions)
Model->>Embed: Embed(behaviorKey)
Embed->>Cache: Get(key)
alt cache miss
Embed->>Embed: Alt sağlayıcıyı çağır
Embed->>Cache: Set(key, embedding)
end
Embed-->>Model: IntentEmbedding
Model->>Sim: CalculateIntentScore(embeddings, opsiyonel sourceWeights) veya ITimeAwareSimilarityEngine ise CalculateIntentScoreWithTimeDecay(space, embeddings)
Sim-->>Model: score
Model-->>App: Intent (ad, güven, sinyaller, opsiyonel Reasoning)
App->>Policy: intent.Decide(policy)
Policy-->>App: PolicyDecision
opt decision RateLimit ise
App->>Rate: TryAcquireAsync(key, limit, window)
Rate-->>App: RateLimitResult
end
Katman görünümü
Katmanların birbirine bağımlılığının sadeleştirilmiş görünümü.
flowchart TB
subgraph app [Uygulama / Örnekler]
WebApp[Sample.Blazor]
ConsoleApp[Sample.Console]
end
subgraph host [Hosting / HTTP]
AspNetCore[Middleware, HealthChecks]
Events[Webhook, IIntentEventHandler]
end
subgraph domain [Domain]
Behavior[Behavior Space]
Intent[Intent]
Policy[Policy]
end
subgraph ai_layer [AI Katmanı]
Embedding[Embedding Provider]
Similarity[Similarity Engine]
Cache[Embedding Cache]
Model[Intent Model]
end
subgraph data [Veri]
Repo[Repositories]
Analytics[Analytics]
Clustering[Clustering]
Events[Events/Webhook]
Experiments[Experiments]
end
app --> host
app --> domain
app --> ai_layer
app --> data
host --> domain
ai_layer --> domain
data --> domain
Opsiyonel akışlar
Persistence ve analytics
Intent geçmişi IIntentHistoryRepository ile saklanır; IIntentAnalytics trendler, karar dağılımı, anomali tespiti ve export için kullanır.
flowchart LR
Infer[Infer + Decide]
Infer --> Save[SaveAsync]
Save --> History[(Intent History)]
History --> Analytics[IIntentAnalytics]
Analytics --> Trends[Trendler]
Analytics --> Distribution[Karar Dağılımı]
Analytics --> Anomaly[Anomali Tespiti]
Analytics --> Export[JSON / CSV Export]
Rate limiting
Policy RateLimit döndüğünde uygulama IRateLimiter (örn. MemoryRateLimiter) ile kontrol eder ve 429 + Retry-After dönebilir.
flowchart LR
Intent[Intent]
Policy[IntentPolicy]
Intent --> Policy
Policy --> Decision{Decision}
Decision -->|RateLimit| Limiter[IRateLimiter.TryAcquireAsync]
Decision -->|Diğer| Done[Karar dön]
Limiter --> Allowed{Allowed?}
Allowed -->|Yes| Done
Allowed -->|No| RetryAfter[429 Retry-After]
Multi-tenancy
TenantAwareBehaviorSpaceRepository, IBehaviorSpaceRepository ve ITenantProvider ile sarar: save'de metadata'ya TenantId ekler, read'de tenant'a göre filtreler.
flowchart TB
App[Uygulama]
App --> TenantRepo[TenantAwareBehaviorSpaceRepository]
TenantRepo --> TenantProvider[ITenantProvider]
TenantRepo --> InnerRepo[IBehaviorSpaceRepository]
InnerRepo --> Db[(Veritabanı)]
TenantProvider --> TenantId[Güncel TenantId]
TenantRepo --> Metadata[Save'de TenantId metadata]
TenantRepo --> Filter[Get'te TenantId filtre]
Sonraki adım
Bu sayfayı bitirdiyseniz → Kurulum veya Senaryolar.
Ayrıca bakınız
- Kurulum — Repo yapısı ve örnekler
- API Referansı — Ana tipler ve sözleşmeler
- Gelişmiş Özellikler — Similarity engine'ler (time decay, source weights), vektör normalizasyonu, kural tabanlı ve zincirli modeller, caching, clustering, events, analytics