Class
Static
public static class ServiceCollectionExtensions
Namespace: Moka.Blazor.AI.Extensions
Extension methods for registering Moka.Blazor.AI services.
Methods
| Name | Description |
|---|---|
AddMokaAi(IServiceCollection services) static |
Registers the AI chat services with default settings (LM Studio at localhost:1234). |
AddMokaAi(IServiceCollection services, AiChatOptions> configure) static |
Registers the AI chat services with custom configuration. |
AddMokaAi(…) static |
Registers the AI chat services with a custom IChatClient. |
AddMokaAi(IServiceCollection services)
IServiceCollection ServiceCollectionExtensions.AddMokaAi(IServiceCollection services)
Registers the AI chat services with default settings (LM Studio at localhost:1234).
AddMokaAi(IServiceCollection services, AiChatOptions> configure)
IServiceCollection ServiceCollectionExtensions.AddMokaAi(IServiceCollection services, Action<AiChatOptions> configure)
Registers the AI chat services with custom configuration.
AddMokaAi(IServiceCollection services, IChatClient chatClient, AiChatOptions>? configure)
IServiceCollection ServiceCollectionExtensions.AddMokaAi(IServiceCollection services, IChatClient chatClient, Action<AiChatOptions>? configure = null)
Registers the AI chat services with a custom IChatClient.
View Source
/// <summary>
/// Extension methods for registering Moka.Blazor.AI services.
/// </summary>
public static class ServiceCollectionExtensions
{
/// <summary>
/// Registers the AI chat services with default settings (LM Studio at localhost:1234).
/// </summary>
public static IServiceCollection AddMokaAi(this IServiceCollection services) => services.AddMokaAi(_ =>
{
});
/// <summary>
/// Registers the AI chat services with custom configuration.
/// </summary>
public static IServiceCollection AddMokaAi(this IServiceCollection services, Action<AiChatOptions> configure)
{
services.Configure(configure);
var options = new AiChatOptions();
configure(options);
TryAddChatClient(services, options);
services.TryAddScoped<AiChatService>();
return services;
}
/// <summary>
/// Registers the AI chat services with a custom <see cref = "IChatClient"/>.
/// </summary>
public static IServiceCollection AddMokaAi(this IServiceCollection services, IChatClient chatClient, Action<AiChatOptions>? configure = null)
{
services.Configure(configure ?? (_ =>
{
}));
services.TryAddSingleton(chatClient);
services.TryAddScoped<AiChatService>();
return services;
}
private static void TryAddChatClient(IServiceCollection services, AiChatOptions options)
{
// Don't register if consumer already provided one
if (services.Any(d => d.ServiceType == typeof(IChatClient)))
{
return;
}
switch (options.Provider)
{
case AiProvider.Ollama:
services.TryAddSingleton<IChatClient>(_ => new OllamaApiClient(new Uri(options.ResolvedEndpoint), options.DefaultModel ?? "llama3.2"));
break;
default: // OpenAI-compatible (LM Studio, vLLM, etc.)
services.TryAddSingleton<IChatClient>(_ => new OpenAIClient(new ApiKeyCredential("lm-studio"), new OpenAIClientOptions { Endpoint = new Uri(options.ResolvedEndpoint) }).GetChatClient(options.DefaultModel ?? "local-model").AsIChatClient());
break;
}
}
}