179 words
1 minute
Configure multiple AI providers
- Define providers in
appsettings.json
/appsettings.*.json
appsettings.*.json {"ProviderSettings": {"Gemini": {"Endpoint": "https://generativelanguage.googleapis.com/v1beta","ApiKey": "","DefaultModel": "gemini-2.0-flash-exp"},"Mistral": {"Endpoint": "https://api.mistral.ai/v1","ApiKey": "","DefaultModel": "mistral-large-2407"},"OpenRouter": {"Endpoint": "https://openrouter.ai/api/v1","ApiKey": "","DefaultModel": "google/gemini-2.0-pro-exp-02-05:free"},"Ollama": {"Endpoint": "http://127.0.0.1:11434/v1","ApiKey": "","DefaultModel": "command-r7b"}}} - Create config classes
ProviderConfiguration.cs public class ProviderConfiguration{public string Endpoint { get; set; } = string.Empty;public string ApiKey { get; set; } = string.Empty;public string DefaultModel { get; set; } = string.Empty;}ProviderSettings.cs public class ProviderSettings{public ProviderConfiguration Gemini { get; set; } = default!;public ProviderConfiguration Mistral { get; set; } = default!;public ProviderConfiguration OpenRouter { get; set; } = default!;public ProviderConfiguration Ollama { get; set; } = default!;} - Register config in
Program.cs
builder.Services.Configure<ProviderSettings>(builder.Configuration.GetSection(nameof(ProviderSettings))); - Install
OpenAI
packageTerminal window dotnet add package OpenAI - Use in endpoint
app.MapGet("", async (IOptions<ProviderSettings> options,string prompt,CancellationToken cancellationToken) =>{var provider = options.Value.Gemini;var client = new ChatClient(provider.DefaultModel,new ApiKeyCredential(provider.ApiKey),new OpenAIClientOptions { Endpoint = new Uri(provider.Endpoint) });var result = await client.CompleteChatAsync([prompt], cancellationToken);return Results.Ok(result.Value.Content);});
NOTEYou can switch to other providers like
options.Value.Mistral
,options.Value.Ollama
, etc.
References
Configure multiple AI providers
https://slimaeus.github.io/posts/multiple-ai-provider-configuration/