3.5 KiB
3.5 KiB
LLM Provider Plugin Architecture (Multi-Provider Inference)
Module
AdvisoryAI
Status
IMPLEMENTED
Description
Pluggable LLM provider architecture with ILlmProvider interface supporting OpenAI, Claude, Gemini, llama.cpp (LlamaServer), and Ollama backends. Includes LlmProviderFactory for runtime selection and configuration validation. Enables sovereign/offline inference by switching to local providers.
Implementation Details
- Modules:
src/AdvisoryAi/StellaOps.AdvisoryAI/Inference/LlmProviders/,src/AdvisoryAi/StellaOps.AdvisoryAI/Chat/Inference/,src/AdvisoryAi/StellaOps.AdvisoryAI.Plugin.Unified/ - Key Classes:
LlmProviderFactory(src/AdvisoryAi/StellaOps.AdvisoryAI/Inference/LlmProviders/LlmProviderFactory.cs) - factory for runtime LLM provider selectionOpenAiLlmProvider(src/AdvisoryAi/StellaOps.AdvisoryAI/Inference/LlmProviders/OpenAiLlmProvider.cs) - OpenAI API providerClaudeLlmProvider(src/AdvisoryAi/StellaOps.AdvisoryAI/Inference/LlmProviders/ClaudeLlmProvider.cs) - Anthropic Claude API providerGeminiLlmProvider(src/AdvisoryAi/StellaOps.AdvisoryAI/Inference/LlmProviders/GeminiLlmProvider.cs) - Google Gemini API providerLlamaServerLlmProvider(src/AdvisoryAi/StellaOps.AdvisoryAI/Inference/LlmProviders/LlamaServerLlmProvider.cs) - local llama.cpp server providerOllamaLlmProvider(src/AdvisoryAi/StellaOps.AdvisoryAI/Inference/LlmProviders/OllamaLlmProvider.cs) - Ollama local inference providerLlmProviderOptions(src/AdvisoryAi/StellaOps.AdvisoryAI/Inference/LlmProviders/LlmProviderOptions.cs) - provider configuration and validationClaudeInferenceClient(src/AdvisoryAi/StellaOps.AdvisoryAI/Chat/Inference/ClaudeInferenceClient.cs) - Claude-specific chat inference clientOpenAIInferenceClient(src/AdvisoryAi/StellaOps.AdvisoryAI/Chat/Inference/OpenAIInferenceClient.cs) - OpenAI-specific chat inference clientOllamaInferenceClient(src/AdvisoryAi/StellaOps.AdvisoryAI/Chat/Inference/OllamaInferenceClient.cs) - Ollama-specific chat inference clientLocalInferenceClient(src/AdvisoryAi/StellaOps.AdvisoryAI/Chat/Inference/LocalInferenceClient.cs) - local model inference clientLlmPluginAdapter(src/AdvisoryAi/StellaOps.AdvisoryAI.Plugin.Unified/LlmPluginAdapter.cs) - unified plugin adapter for LLM providersLlmPluginAdapterFactory(src/AdvisoryAi/StellaOps.AdvisoryAI.Plugin.Unified/LlmPluginAdapterFactory.cs) - factory for creating LLM plugin adaptersSystemPromptLoader(src/AdvisoryAi/StellaOps.AdvisoryAI/Chat/Inference/SystemPromptLoader.cs) - loads system prompts for inference clients
- Interfaces:
ILlmProvider,ILlmProviderPlugin,IAdvisoryChatInferenceClient - Source: SPRINT_20251226_019_AI_offline_inference.md
E2E Test Plan
- Configure
LlmProviderFactorywith multiple providers and verify runtime selection based on configuration - Verify
OpenAiLlmProvidersends requests to OpenAI API with correct authentication and model parameters - Verify
ClaudeLlmProvidersends requests to Claude API with correct authentication - Verify
OllamaLlmProviderconnects to local Ollama instance and performs inference - Verify
LlamaServerLlmProviderconnects to local llama.cpp server endpoint - Verify
LlmProviderOptionsvalidation rejects invalid configurations (missing API keys, invalid endpoints) - Verify
LlmPluginAdapterprovides health checks for configured LLM providers - Verify provider failover: when primary provider is unavailable, factory falls back to secondary