| Name | Message | Date |
|---|---|---|
| 📄 Ai.csproj | 8 days ago | |
| 📄 EmbeddingOptions.cs | 8 days ago | |
| 📄 packages.lock.json | 8 days ago | |
| 📄 ServiceCollectionExtensions.cs | 8 days ago |
📄
src/Infrastructure/Ai/ServiceCollectionExtensions.cs
using Microsoft.Extensions.AI; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; using OllamaSharp; namespace Slopper.Infrastructure.Ai; public static class ServiceCollectionExtensions { extension(IServiceCollection services) { public IServiceCollection AddAi() { services.AddOptions<EmbeddingOptions>().BindConfiguration("Embedding").ValidateOnStart(); services.AddTransient<IValidateOptions<EmbeddingOptions>, EmbeddingOptionsValidator>(); services.AddHttpClient<OllamaApiClient, OllamaApiClient>( (client, sp) => { var options = sp.GetRequiredService<IOptions<EmbeddingOptions>>().Value; client.BaseAddress = options.Endpoint; if (options.BasicAuth is not null) { client.DefaultRequestHeaders.Authorization = new("Basic", options.BasicAuth); } return new OllamaApiClient(client, options.Model); } ); services.AddEmbeddingGenerator(sp => sp.GetRequiredService<OllamaApiClient>()).UseOpenTelemetry(); return services; } } }