Skip to main content

AI Providers Overview

Reveal SDK AI uses a provider-based architecture that lets you integrate with different large language model (LLM) services. Each provider is distributed as a separate NuGet package, so you only install what you need.

Available Providers

ProviderNuGet PackageExtension Method
OpenAIReveal.Sdk.AI.OpenAI.AddOpenAI()
Azure OpenAIReveal.Sdk.AI.AzureOpenAI.AddAzureOpenAI()
AnthropicReveal.Sdk.AI.Anthropic.AddAnthropic()
Google GeminiReveal.Sdk.AI.Google.AddGoogle()

How Providers Work

All providers implement the IAIProvider interface and are registered through the IRevealAIBuilder fluent API. The SDK uses dependency injection with keyed services, allowing you to register multiple providers simultaneously.

Registering Providers

Providers are added by chaining extension methods after AddRevealAI():

builder.Services.AddRevealAI()
.AddOpenAI(options =>
{
options.ApiKey = "your-api-key";
})
.AddAnthropic(options =>
{
options.ApiKey = "your-api-key";
});

Default Provider

The SDK uses a default provider when no specific provider is requested. You can configure this in appsettings.json:

appsettings.json
{
"RevealAI": {
"DefaultProvider": "openai"
}
}

Available provider keys: openai, azure-openai, anthropic, google.

Configuration Binding

All providers support configuration binding from appsettings.json under the RevealAI section. Options set in code take precedence over configuration file values:

appsettings.json
{
"RevealAI": {
"DefaultProvider": "openai",
"OpenAI": {
"ApiKey": "sk-...",
"Model": "gpt-4.1"
},
"Anthropic": {
"ApiKey": "sk-ant-..."
}
}
}

Multiple Providers

You can register multiple providers and the SDK will resolve the appropriate one based on the request. This is useful for scenarios such as:

  • Using different models for different types of analysis
  • Providing fallback options
  • Cost optimization by routing simpler tasks to less expensive models
builder.Services.AddRevealAI()
.AddOpenAI() // Registered as "openai"
.AddAnthropic() // Registered as "anthropic"
.AddGoogle(); // Registered as "google"

Custom Providers

If you need to integrate with an LLM service that isn't supported out of the box, you can build a custom provider.