diff --git a/Yi.Abp.Net8/Yi.Abp.sln b/Yi.Abp.Net8/Yi.Abp.sln index c39106d9..e5fff9ab 100644 --- a/Yi.Abp.Net8/Yi.Abp.sln +++ b/Yi.Abp.Net8/Yi.Abp.sln @@ -186,8 +186,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Yi.Framework.Stock.Domain.S EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Yi.Framework.Stock.SqlSugarCore", "module\ai-stock\Yi.Framework.Stock.SqlSugarCore\Yi.Framework.Stock.SqlSugarCore.csproj", "{5F49318F-E6C7-4194-BAE0-83D4FB8D1983}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Yi.Framework.SemanticKernel", "framework\Yi.Framework.SemanticKernel\Yi.Framework.SemanticKernel.csproj", "{2503116E-4D69-49E3-8ED7-A6CDD0C3B542}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ai-hub", "ai-hub", "{7AD5DBAE-44F9-474B-8F7B-837EDE908934}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Yi.Framework.AiHub.Application", "module\ai-hub\Yi.Framework.AiHub.Application\Yi.Framework.AiHub.Application.csproj", "{1AD10DD2-535E-4EAB-A8A4-EC3FCA206895}" @@ -482,10 +480,6 @@ Global {5F49318F-E6C7-4194-BAE0-83D4FB8D1983}.Debug|Any CPU.Build.0 = Debug|Any CPU {5F49318F-E6C7-4194-BAE0-83D4FB8D1983}.Release|Any CPU.ActiveCfg = Release|Any CPU {5F49318F-E6C7-4194-BAE0-83D4FB8D1983}.Release|Any CPU.Build.0 = Release|Any CPU - {2503116E-4D69-49E3-8ED7-A6CDD0C3B542}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {2503116E-4D69-49E3-8ED7-A6CDD0C3B542}.Debug|Any CPU.Build.0 = Debug|Any CPU - {2503116E-4D69-49E3-8ED7-A6CDD0C3B542}.Release|Any CPU.ActiveCfg = Release|Any CPU - {2503116E-4D69-49E3-8ED7-A6CDD0C3B542}.Release|Any CPU.Build.0 = Release|Any CPU {1AD10DD2-535E-4EAB-A8A4-EC3FCA206895}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1AD10DD2-535E-4EAB-A8A4-EC3FCA206895}.Debug|Any CPU.Build.0 = Debug|Any CPU {1AD10DD2-535E-4EAB-A8A4-EC3FCA206895}.Release|Any CPU.ActiveCfg = Release|Any CPU @@ -589,7 +583,6 @@ Global {162821E4-8FE0-4A68-B3C0-49BD6596446F} = {DB46873F-981A-43D8-91B0-D464CCB65943} {10273544-715D-4BB3-893C-6F010D947BDD} = {DB46873F-981A-43D8-91B0-D464CCB65943} {5F49318F-E6C7-4194-BAE0-83D4FB8D1983} = {DB46873F-981A-43D8-91B0-D464CCB65943} - {2503116E-4D69-49E3-8ED7-A6CDD0C3B542} = {77B949E9-530E-45A5-9657-20F7D5C6875C} {7AD5DBAE-44F9-474B-8F7B-837EDE908934} = {2317227D-7796-4E7B-BEDB-7CD1CAE7B853} {1AD10DD2-535E-4EAB-A8A4-EC3FCA206895} = {7AD5DBAE-44F9-474B-8F7B-837EDE908934} {123D1C81-D667-4060-8E85-FFE7FB4584AD} = {7AD5DBAE-44F9-474B-8F7B-837EDE908934} diff --git a/Yi.Abp.Net8/framework/Yi.Framework.SemanticKernel/YiFrameworkSemanticKernelModule.cs b/Yi.Abp.Net8/framework/Yi.Framework.SemanticKernel/YiFrameworkSemanticKernelModule.cs index 0b9d439a..280a0f1d 100644 --- a/Yi.Abp.Net8/framework/Yi.Framework.SemanticKernel/YiFrameworkSemanticKernelModule.cs +++ b/Yi.Abp.Net8/framework/Yi.Framework.SemanticKernel/YiFrameworkSemanticKernelModule.cs @@ -11,27 +11,5 @@ public class YiFrameworkSemanticKernelModule : AbpModule { var configuration = context.Services.GetConfiguration(); var services = context.Services; - - // 配置绑定 - var semanticKernelSection = configuration.GetSection("SemanticKernel"); - services.Configure(configuration.GetSection("SemanticKernel")); - // 从配置中获取值 - var options = semanticKernelSection.Get(); - foreach (var optionsModelId in options.ModelIds) - { - services.AddKernel() - .AddAzureOpenAIChatCompletion( - deploymentName: optionsModelId, - endpoint: options.Endpoint, - apiKey: options.ApiKey, - serviceId: optionsModelId, - modelId: optionsModelId); - - // .AddOpenAIChatCompletion( - // serviceId: optionsModelId, - // modelId: optionsModelId, - // endpoint: new Uri(options.Endpoint), - // apiKey: options.ApiKey); - } } } \ No newline at end of file diff --git a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/AiService.cs b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/AiService.cs index a2cf33f0..b6d17b61 100644 --- a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/AiService.cs +++ b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/AiService.cs @@ -1,26 +1,19 @@ -using System.Text; -using Azure; -using Microsoft.AspNetCore.Http; -using Microsoft.SemanticKernel.ChatCompletion; -using Microsoft.SemanticKernel.Connectors.AzureOpenAI; -using Newtonsoft.Json; -using Newtonsoft.Json.Serialization; +using Microsoft.AspNetCore.Http; using Volo.Abp.Application.Services; using Yi.Framework.AiHub.Application.Contracts.Dtos; -using Yi.Framework.SemanticKernel; namespace Yi.Framework.AiHub.Application.Services; public class AiService : ApplicationService { - private readonly SemanticKernelClient _skClient; + // private readonly SemanticKernelClient _skClient; private IHttpContextAccessor httpContextAccessor; - public AiService(SemanticKernelClient skClient, IHttpContextAccessor httpContextAccessor) - { - _skClient = skClient; - this.httpContextAccessor = httpContextAccessor; - } + // public AiService(SemanticKernelClient skClient, IHttpContextAccessor httpContextAccessor) + // { + // _skClient = skClient; + // this.httpContextAccessor = httpContextAccessor; + // } /// /// 获取模型列表 @@ -62,59 +55,59 @@ public class AiService : ApplicationService } - /// - /// 发送消息 - /// - /// - /// - public async Task PostSendAsync(SendMessageInput input,CancellationToken cancelToken) - { - var httpContext = this.httpContextAccessor.HttpContext; - var response = httpContext.Response; - // 设置响应头,声明是 SSE 流 - response.ContentType = "text/event-stream"; - response.Headers.Append("Cache-Control", "no-cache"); - response.Headers.Append("Connection", "keep-alive"); - - - var chatCompletionService = this._skClient.Kernel.GetRequiredService(input.Model); - var history = new ChatHistory(); - var openSettings = new AzureOpenAIPromptExecutionSettings() - { - MaxTokens = 3000 - }; - foreach (var aiChatContextDto in input.Messages) - { - if (aiChatContextDto.Role == "ai") - { - history.AddAssistantMessage(aiChatContextDto.Content); - } - else if (aiChatContextDto.Role == "user") - { - history.AddUserMessage(aiChatContextDto.Content); - } - } - - var results = chatCompletionService.GetStreamingChatMessageContentsAsync( - chatHistory: history, - executionSettings: openSettings, - kernel: _skClient.Kernel, - cancelToken); - - - await using var writer = new StreamWriter(response.Body, Encoding.UTF8, leaveOpen: true); - await foreach (var result in results) - { - var modle = GetMessage(input.Model, result.Content); - var message = JsonConvert.SerializeObject(modle, new JsonSerializerSettings - { - ContractResolver = new CamelCasePropertyNamesContractResolver() - }); - - await writer.WriteLineAsync($"data: {message}\n"); - await writer.FlushAsync(cancelToken); // 确保立即推送数据 - } - } + // /// + // /// 发送消息 + // /// + // /// + // /// + // public async Task PostSendAsync(SendMessageInput input,CancellationToken cancelToken) + // { + // var httpContext = this.httpContextAccessor.HttpContext; + // var response = httpContext.Response; + // // 设置响应头,声明是 SSE 流 + // response.ContentType = "text/event-stream"; + // response.Headers.Append("Cache-Control", "no-cache"); + // response.Headers.Append("Connection", "keep-alive"); + // + // + // var chatCompletionService = this._skClient.Kernel.GetRequiredService(input.Model); + // var history = new ChatHistory(); + // var openSettings = new AzureOpenAIPromptExecutionSettings() + // { + // MaxTokens = 3000 + // }; + // foreach (var aiChatContextDto in input.Messages) + // { + // if (aiChatContextDto.Role == "ai") + // { + // history.AddAssistantMessage(aiChatContextDto.Content); + // } + // else if (aiChatContextDto.Role == "user") + // { + // history.AddUserMessage(aiChatContextDto.Content); + // } + // } + // + // var results = chatCompletionService.GetStreamingChatMessageContentsAsync( + // chatHistory: history, + // executionSettings: openSettings, + // kernel: _skClient.Kernel, + // cancelToken); + // + // + // await using var writer = new StreamWriter(response.Body, Encoding.UTF8, leaveOpen: true); + // await foreach (var result in results) + // { + // var modle = GetMessage(input.Model, result.Content); + // var message = JsonConvert.SerializeObject(modle, new JsonSerializerSettings + // { + // ContractResolver = new CamelCasePropertyNamesContractResolver() + // }); + // + // await writer.WriteLineAsync($"data: {message}\n"); + // await writer.FlushAsync(cancelToken); // 确保立即推送数据 + // } + // } private SendMessageOutputDto GetMessage(string modelId, string content) diff --git a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/Managers/OpenAiManager.cs b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/Managers/OpenAiManager.cs new file mode 100644 index 00000000..fbf6642b --- /dev/null +++ b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/Managers/OpenAiManager.cs @@ -0,0 +1,39 @@ +using Azure; +using Azure.AI.OpenAI; +using OpenAI.Chat; +using Volo.Abp.Domain.Services; + +namespace Yi.Framework.AiHub.Domain.Managers; + +public class OpenAiManager : DomainService +{ + public static async Task TestAsync() + { + var endpoint = new Uri("https://japan-ccnetcore-resource.cognitiveservices.azure.com/"); + // var deploymentName = "gpt-4.1-mini"; + var deploymentName = "o4-mini"; + var apiKey = "FaccnRh7Zvz25OCGH07kHPe2z1aCXMliLdr3esgWHgXQ2aivwFgDJQQJ99BFACi0881XJ3w3AAAAACOGAJ2G"; + + AzureOpenAIClient azureClient = new( + endpoint, + new AzureKeyCredential(apiKey)); + ChatClient chatClient = azureClient.GetChatClient(deploymentName); + + List messages = new List() + { + new UserChatMessage("使用c#写一个贪吃蛇代码"), + }; + + var response = chatClient.CompleteChatStreamingAsync(messages); + + await foreach (StreamingChatCompletionUpdate update in response) + { + foreach (ChatMessageContentPart updatePart in update.ContentUpdate) + { + System.Console.Write(updatePart.Text); + } + } + + System.Console.WriteLine("结束"); + } +} \ No newline at end of file diff --git a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/Yi.Framework.AiHub.Domain.csproj b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/Yi.Framework.AiHub.Domain.csproj index 6f4cf426..87f561bf 100644 --- a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/Yi.Framework.AiHub.Domain.csproj +++ b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/Yi.Framework.AiHub.Domain.csproj @@ -1,13 +1,13 @@ + - diff --git a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/YiFrameworkAiHubDomainModule.cs b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/YiFrameworkAiHubDomainModule.cs index 6637ec2d..f682354f 100644 --- a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/YiFrameworkAiHubDomainModule.cs +++ b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/YiFrameworkAiHubDomainModule.cs @@ -1,18 +1,15 @@ using Microsoft.Extensions.DependencyInjection; -using Microsoft.SemanticKernel; using Volo.Abp.Caching; using Volo.Abp.Domain; using Yi.Framework.AiHub.Domain.Shared; using Yi.Framework.Mapster; -using Yi.Framework.SemanticKernel; namespace Yi.Framework.AiHub.Domain { [DependsOn( typeof(YiFrameworkAiHubDomainSharedModule), typeof(YiFrameworkMapsterModule), - typeof(AbpDddDomainModule), - typeof(YiFrameworkSemanticKernelModule) + typeof(AbpDddDomainModule) )] public class YiFrameworkAiHubDomainModule : AbpModule { @@ -21,5 +18,10 @@ namespace Yi.Framework.AiHub.Domain var configuration = context.Services.GetConfiguration(); var services = context.Services; } + + public override async Task OnApplicationInitializationAsync(ApplicationInitializationContext context) + { + await Yi.Framework.AiHub.Domain.Managers.OpenAiManager.Test2Async(); + } } } \ No newline at end of file diff --git a/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/Managers/NewsManager.cs b/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/Managers/NewsManager.cs index 59afe88e..7e9ff774 100644 --- a/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/Managers/NewsManager.cs +++ b/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/Managers/NewsManager.cs @@ -5,7 +5,6 @@ using Yi.Framework.Stock.Domain.Managers.SemanticKernel; using Yi.Framework.Stock.Domain.Managers.SemanticKernel.Plugins; using System.Text; using System.IO; -using Yi.Framework.SemanticKernel; namespace Yi.Framework.Stock.Domain.Managers; diff --git a/Yi.Abp.Net8/framework/Yi.Framework.SemanticKernel/SemanticKernelClient.cs b/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/Managers/SemanticKernel/SemanticKernelClient.cs similarity index 96% rename from Yi.Abp.Net8/framework/Yi.Framework.SemanticKernel/SemanticKernelClient.cs rename to Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/Managers/SemanticKernel/SemanticKernelClient.cs index e5c33b88..4501bbeb 100644 --- a/Yi.Abp.Net8/framework/Yi.Framework.SemanticKernel/SemanticKernelClient.cs +++ b/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/Managers/SemanticKernel/SemanticKernelClient.cs @@ -3,7 +3,7 @@ using Microsoft.SemanticKernel.ChatCompletion; using Microsoft.SemanticKernel.Connectors.OpenAI; using Volo.Abp.DependencyInjection; -namespace Yi.Framework.SemanticKernel; +namespace Yi.Framework.Stock.Domain.Managers.SemanticKernel; public class SemanticKernelClient : ITransientDependency { diff --git a/Yi.Abp.Net8/framework/Yi.Framework.SemanticKernel/SemanticKernelOptions.cs b/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/Managers/SemanticKernel/SemanticKernelOptions.cs similarity index 76% rename from Yi.Abp.Net8/framework/Yi.Framework.SemanticKernel/SemanticKernelOptions.cs rename to Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/Managers/SemanticKernel/SemanticKernelOptions.cs index 68796007..afa754d4 100644 --- a/Yi.Abp.Net8/framework/Yi.Framework.SemanticKernel/SemanticKernelOptions.cs +++ b/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/Managers/SemanticKernel/SemanticKernelOptions.cs @@ -1,4 +1,4 @@ -namespace Yi.Framework.SemanticKernel +namespace Yi.Framework.Stock.Domain.Managers.SemanticKernel { public class SemanticKernelOptions { diff --git a/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/Managers/StockMarketManager.cs b/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/Managers/StockMarketManager.cs index 897e897e..648f232d 100644 --- a/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/Managers/StockMarketManager.cs +++ b/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/Managers/StockMarketManager.cs @@ -13,7 +13,6 @@ using Yi.Framework.Stock.Domain.Managers.SemanticKernel.Plugins; using Microsoft.Extensions.Hosting; using System.Text; using System.IO; -using Yi.Framework.SemanticKernel; namespace Yi.Framework.Stock.Domain.Managers { diff --git a/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/Yi.Framework.Stock.Domain.csproj b/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/Yi.Framework.Stock.Domain.csproj index dce7b3ac..64255401 100644 --- a/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/Yi.Framework.Stock.Domain.csproj +++ b/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/Yi.Framework.Stock.Domain.csproj @@ -3,12 +3,11 @@ - + - @@ -17,5 +16,5 @@ - + diff --git a/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/YiFrameworkStockDomainModule.cs b/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/YiFrameworkStockDomainModule.cs index 7b405b17..065c0fd2 100644 --- a/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/YiFrameworkStockDomainModule.cs +++ b/Yi.Abp.Net8/module/ai-stock/Yi.Framework.Stock.Domain/YiFrameworkStockDomainModule.cs @@ -1,10 +1,11 @@ +using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.SemanticKernel; using Volo.Abp.Caching; using Volo.Abp.Domain; using Yi.Framework.Mapster; -using Yi.Framework.SemanticKernel; using Yi.Framework.Stock.Domain.Managers; +using Yi.Framework.Stock.Domain.Managers.SemanticKernel; using Yi.Framework.Stock.Domain.Managers.SemanticKernel.Plugins; using Yi.Framework.Stock.Domain.Shared; @@ -14,7 +15,6 @@ namespace Yi.Framework.Stock.Domain typeof(YiFrameworkStockDomainSharedModule), typeof(YiFrameworkMapsterModule), typeof(AbpDddDomainModule), - typeof(YiFrameworkSemanticKernelModule), typeof(AbpCachingModule) )] public class YiFrameworkStockDomainModule : AbpModule @@ -24,6 +24,27 @@ namespace Yi.Framework.Stock.Domain var configuration = context.Services.GetConfiguration(); var services = context.Services; + // 配置绑定 + var semanticKernelSection = configuration.GetSection("SemanticKernel"); + services.Configure(configuration.GetSection("SemanticKernel")); + // 从配置中获取值 + var options = semanticKernelSection.Get(); + foreach (var optionsModelId in options.ModelIds) + { + services.AddKernel() + .AddAzureOpenAIChatCompletion( + deploymentName: optionsModelId, + endpoint: options.Endpoint, + apiKey: options.ApiKey, + serviceId: optionsModelId, + modelId: optionsModelId); + + // .AddOpenAIChatCompletion( + // serviceId: optionsModelId, + // modelId: optionsModelId, + // endpoint: new Uri(options.Endpoint), + // apiKey: options.ApiKey); + } // 添加插件 services.AddSingleton(sp => KernelPluginFactory.CreateFromType(serviceProvider: sp)); diff --git a/Yi.Abp.Net8/module/chat-hub/Yi.Framework.ChatHub.Domain/Managers/AiManager.cs b/Yi.Abp.Net8/module/chat-hub/Yi.Framework.ChatHub.Domain/Managers/AiManager.cs index 60371679..3c3b35fa 100644 --- a/Yi.Abp.Net8/module/chat-hub/Yi.Framework.ChatHub.Domain/Managers/AiManager.cs +++ b/Yi.Abp.Net8/module/chat-hub/Yi.Framework.ChatHub.Domain/Managers/AiManager.cs @@ -4,15 +4,14 @@ using Microsoft.SemanticKernel.Connectors.AzureOpenAI; using Microsoft.SemanticKernel.Connectors.OpenAI; using Volo.Abp.DependencyInjection; using Yi.Framework.ChatHub.Domain.Shared.Dtos; -using Yi.Framework.SemanticKernel; namespace Yi.Framework.ChatHub.Domain.Managers { public class AiManager : ISingletonDependency { - private readonly SemanticKernelClient _client; + private readonly Kernel _client; - public AiManager(SemanticKernelClient client) + public AiManager(Kernel client) { _client = client; } @@ -30,7 +29,7 @@ namespace Yi.Framework.ChatHub.Domain.Managers MaxTokens = 3000 }; - var chatCompletionService = this._client.Kernel.GetRequiredService(model); + var chatCompletionService = this._client.GetRequiredService(model); var history = new ChatHistory(); foreach (var aiChatContextDto in aiChatContextDtos) @@ -48,7 +47,7 @@ namespace Yi.Framework.ChatHub.Domain.Managers var results = chatCompletionService.GetStreamingChatMessageContentsAsync( chatHistory: history, executionSettings: openSettings, - kernel: _client.Kernel); + kernel: _client); await foreach (var result in results) { diff --git a/Yi.Abp.Net8/module/chat-hub/Yi.Framework.ChatHub.Domain/Yi.Framework.ChatHub.Domain.csproj b/Yi.Abp.Net8/module/chat-hub/Yi.Framework.ChatHub.Domain/Yi.Framework.ChatHub.Domain.csproj index 05b22837..0826808c 100644 --- a/Yi.Abp.Net8/module/chat-hub/Yi.Framework.ChatHub.Domain/Yi.Framework.ChatHub.Domain.csproj +++ b/Yi.Abp.Net8/module/chat-hub/Yi.Framework.ChatHub.Domain/Yi.Framework.ChatHub.Domain.csproj @@ -2,7 +2,6 @@ - @@ -13,6 +12,7 @@ + diff --git a/Yi.Abp.Net8/module/chat-hub/Yi.Framework.ChatHub.Domain/YiFrameworkChatHubDomainModule.cs b/Yi.Abp.Net8/module/chat-hub/Yi.Framework.ChatHub.Domain/YiFrameworkChatHubDomainModule.cs index 19d54ed6..162bd702 100644 --- a/Yi.Abp.Net8/module/chat-hub/Yi.Framework.ChatHub.Domain/YiFrameworkChatHubDomainModule.cs +++ b/Yi.Abp.Net8/module/chat-hub/Yi.Framework.ChatHub.Domain/YiFrameworkChatHubDomainModule.cs @@ -2,14 +2,12 @@ using Volo.Abp.Domain; using Yi.Framework.Caching.FreeRedis; using Yi.Framework.ChatHub.Domain.Shared; -using Yi.Framework.SemanticKernel; namespace Yi.Framework.ChatHub.Domain { [DependsOn( typeof(YiFrameworkChatHubDomainSharedModule), typeof(YiFrameworkCachingFreeRedisModule), - typeof(YiFrameworkSemanticKernelModule), typeof(AbpDddDomainModule) )] public class YiFrameworkChatHubDomainModule : AbpModule