diff --git a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/Chat/AiChatService.cs b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/Chat/AiChatService.cs index 2024a568..e6695aad 100644 --- a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/Chat/AiChatService.cs +++ b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Application/Services/Chat/AiChatService.cs @@ -148,6 +148,9 @@ public class AiChatService : ApplicationService // 使用 ChatManager } + /// + /// Agent 发送消息 + /// [HttpPost("ai-chat/agent/send")] public async Task PostAgentSendAsync() { diff --git a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/Managers/ChatManager.cs b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/Managers/ChatManager.cs index ad89ec26..bb70d84d 100644 --- a/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/Managers/ChatManager.cs +++ b/Yi.Abp.Net8/module/ai-hub/Yi.Framework.AiHub.Domain/Managers/ChatManager.cs @@ -1,5 +1,6 @@ using System.ClientModel; using System.Reflection; +using System.Text.Json; using Dm.util; using Microsoft.Agents.AI; using Microsoft.Extensions.AI; @@ -15,6 +16,7 @@ public class ChatManager : DomainService { private readonly AiGateWayManager _aiGateWayManager; private readonly ILoggerFactory _loggerFactory; + public ChatManager(AiGateWayManager aiGateWayManager, ILoggerFactory loggerFactory) { _aiGateWayManager = aiGateWayManager; @@ -26,15 +28,16 @@ public class ChatManager : DomainService //token可以用户传进来 // HttpClient.DefaultProxy = new WebProxy("127.0.0.1:8888"); var modelId = "gpt-5.2-chat"; - var client = new OpenAIClient(new ApiKeyCredential("xxx"), new OpenAIClientOptions - { - Endpoint = new Uri("https://yxai.chat/v1"), - }); + var client = new OpenAIClient(new ApiKeyCredential("xxx"), + new OpenAIClientOptions + { + Endpoint = new Uri("https://yxai.chat/v1"), + }); var agent = client.GetChatClient(modelId) .AsIChatClient() // Converts a native OpenAI SDK ChatClient into a Microsoft.Extensions.AI.IChatClient - .CreateAIAgent("你是一个专业的网页ai助手") ; + .CreateAIAgent("你是一个专业的网页ai助手"); + - var thread = agent.GetNewThread(); var tools = GetTools(); @@ -43,7 +46,7 @@ public class ChatManager : DomainService Tools = tools.Select(x => (AITool)x).ToList(), ToolMode = ChatToolMode.Auto }; - + await foreach (var update in agent.RunStreamingAsync("联网搜索一下,奥德赛第一中学学生会会长是谁", thread, new ChatClientAgentRunOptions(chatOptions))) { @@ -71,6 +74,11 @@ public class ChatManager : DomainService } } } + + + string serializedJson = thread.Serialize(JsonSerializerOptions.Web).GetRawText(); + JsonElement reloaded = JsonSerializer.Deserialize(serializedJson, JsonSerializerOptions.Web); + var newThread = agent.DeserializeThread(reloaded, JsonSerializerOptions.Web); }