The orchestration core and the request pipeline that every interaction flows through. For developers who want to understand how a prompt becomes a validated answer.
Orazaka Core Engine: Architecture & Pipeline
Deep-dive into the
orazaka-coremodule — the stateless, Spring AI-powered orchestration library.
1. Architectural Position
orazaka-core is the central orchestration library. It is strictly stateless, web-agnostic, database-agnostic, and security-context-agnostic. It wraps Spring AI (1.1.6) under a single entry facade: AiClient.
2. The AiClient Facade & Request Records
All AI operations invoke the unified AiClient:
Request payloads are immutable Java records enforcing compact constructor validation boundaries (ERR-106, ERR-116).
3. Dynamic Pipeline Orchestrator
The orchestrator executes a sequence of PromptContextInterceptor beans. It can be bypassed using:
orazaka.core.orchestration.pipeline.enabled=false.
Routing Modes (orazaka.core.orchestration.routing.mode)
- DETERMINISTIC: Database-driven order configured in
pipeline_interceptor_config. - AGENTIC: LLM-driven runtime intent classification.
Kill-Switch
If orazaka.security.disable-ai=true, any interceptor returning isAiDependent() == true raises a SecurityException.
Core Interceptor Chain Blueprint
4. Engine Topology
Engines map core models to Spring AI integrations:
5. Outbound Ports & Lifecycle Policies
- Interface-Driven Boundaries: Outbound ports (e.g.
ChatGeneratorClient,VideoGeneratorClient) live as public interfaces indomain.ports.outbound. Implementations reside in infrastructure packages as package-private beans. - Resource Recovery: Streams and SSE channels must register completion/timeout hooks (
onCompletion,.doFinally()) to dispose subscriptions (Disposable.dispose()) and prevent memory leaks. - Hikari Database Connection Eviction:
6. Model Catalog & Chat Configuration
- Database Model Catalog: Image, video, and speech models reside in the
orazaka_modelstable. Cached via Caffeine TTL. - Chat Model Resolution Cascade:
ORAZAKA_OLLAMA_MODELenvironment variable (highest priority)spring.ai.ollama.chat.options.modelYAML value- Auto-detected default (first non-embedding model from Ollama tags catalog)