using Dm.util; using Microsoft.Extensions.DependencyInjection; using Volo.Abp.Domain; using Yi.Framework.AiHub.Application.Contracts.Dtos.OpenAi; using Yi.Framework.AiHub.Domain.AiGateWay; using Yi.Framework.AiHub.Domain.AiGateWay.Impl.ThorAzureDatabricks.Chats; using Yi.Framework.AiHub.Domain.AiGateWay.Impl.ThorAzureOpenAI.Chats; using Yi.Framework.AiHub.Domain.AiGateWay.Impl.ThorAzureOpenAI.Images; using Yi.Framework.AiHub.Domain.AiGateWay.Impl.ThorDeepSeek.Chats; using Yi.Framework.AiHub.Domain.AiGateWay.Impl.ThorSiliconFlow.Embeddings; using Yi.Framework.AiHub.Domain.Shared; using Yi.Framework.Mapster; namespace Yi.Framework.AiHub.Domain { [DependsOn( typeof(YiFrameworkAiHubDomainSharedModule), typeof(YiFrameworkMapsterModule), typeof(AbpDddDomainModule) )] public class YiFrameworkAiHubDomainModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { var configuration = context.Services.GetConfiguration(); var services = context.Services; // Configure(configuration.GetSection("AiGateWay")); services.AddKeyedTransient( nameof(AzureOpenAiChatCompletionCompletionsService)); services.AddKeyedTransient( nameof(AzureDatabricksChatCompletionsService)); services.AddKeyedTransient( nameof(DeepSeekChatCompletionsService)); services.AddKeyedTransient( nameof(AzureOpenAIServiceImageService)); services.AddKeyedTransient(nameof(SiliconFlowTextEmbeddingService)); //ai模型特殊性兼容处理 Configure(options => { options.Handles.add(request => { request.CompatibleCodeCompletion(); }); options.Handles.Add(request => { if (request.Model == "o1") { request.Temperature = null; } }); options.Handles.Add(request => { if (request.Model.StartsWith("o3-mini") || request.Model.StartsWith("o4-mini")) { request.MaxCompletionTokens = request.MaxTokens; request.MaxTokens = null; request.Temperature = null; } }); options.Handles.Add(request => { if (request.Stream == true) { request.StreamOptions = new ThorStreamOptions() { IncludeUsage = true }; } }); }); } public override async Task OnApplicationInitializationAsync(ApplicationInitializationContext context) { var service = context.ServiceProvider; } } }