From a074cdefa5ba808fd771a957d25c964ba43decdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A9=99=E5=AD=90?= <454313500@qq.com> Date: Mon, 22 Jul 2024 23:59:21 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96ai=E8=81=8A=E5=A4=A9?= =?UTF-8?q?=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/AiChatService.cs | 27 +++++++++++++++++-- Yi.Bbs.Vue3/src/views/chathub/Index.vue | 9 ++++--- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/Yi.Abp.Net8/module/chat-hub/Yi.Framework.ChatHub.Application/Services/AiChatService.cs b/Yi.Abp.Net8/module/chat-hub/Yi.Framework.ChatHub.Application/Services/AiChatService.cs index 31c8ab8e..8604ab46 100644 --- a/Yi.Abp.Net8/module/chat-hub/Yi.Framework.ChatHub.Application/Services/AiChatService.cs +++ b/Yi.Abp.Net8/module/chat-hub/Yi.Framework.ChatHub.Application/Services/AiChatService.cs @@ -1,6 +1,8 @@ using System.Collections.Generic; +using System.Text; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using NUglify.Helpers; using Volo.Abp.Application.Services; using Yi.Framework.ChatHub.Domain.Managers; using Yi.Framework.ChatHub.Domain.Shared.Dtos; @@ -25,13 +27,34 @@ namespace Yi.Framework.ChatHub.Application.Services public async Task ChatAsync([FromBody] List chatContext) { + const int maxChar = 10; var contextId = Guid.NewGuid(); + Queue stringQueue = new Queue(); await foreach (var aiResult in _aiManager.ChatAsStreamAsync(chatContext)) { - await _userMessageManager.SendMessageAsync(MessageContext.CreateAi(aiResult, CurrentUser.Id!.Value, contextId)); + stringQueue.Enqueue(aiResult); + + if (stringQueue.Count >= maxChar) + { + StringBuilder currentStr=new StringBuilder(); + while (stringQueue.Count > 0) + { + var str = stringQueue.Dequeue(); + currentStr.Append(str); + } + await _userMessageManager.SendMessageAsync(MessageContext.CreateAi(currentStr.ToString(), CurrentUser.Id!.Value, contextId)); + } } - await _userMessageManager.SendMessageAsync(MessageContext.CreateAi(null, CurrentUser.Id!.Value, contextId)); + StringBuilder currentEndStr = new StringBuilder(); + while (stringQueue.Count > 0) + { + var str = stringQueue.Dequeue(); + currentEndStr.Append(str); + } + await _userMessageManager.SendMessageAsync(MessageContext.CreateAi(currentEndStr.ToString(), CurrentUser.Id!.Value, contextId)); + + //await _userMessageManager.SendMessageAsync(MessageContext.CreateAi(null, CurrentUser.Id!.Value, contextId)); } } } diff --git a/Yi.Bbs.Vue3/src/views/chathub/Index.vue b/Yi.Bbs.Vue3/src/views/chathub/Index.vue index 6333cead..ec1bf0ed 100644 --- a/Yi.Bbs.Vue3/src/views/chathub/Index.vue +++ b/Yi.Bbs.Vue3/src/views/chathub/Index.vue @@ -45,7 +45,7 @@ const currentMsgContext = computed(() => { // return chatStore.aiMsgContext; let tempHtml = []; chatStore.aiMsgContext.forEach(element => { - console.log(toMarkDownHtml(element.content), "toMarkDownHtml(element.content)"); + tempHtml.push({ content: toMarkDownHtml(element.content), messageType: 'Ai', sendUserId: element.sendUserId, sendUserInfo: element.sendUserInfo }); }); @@ -93,6 +93,7 @@ let codeCopyDic=[]; //code部分处理、高亮 const codeHandler = (code, language) => { const codeIndex = parseInt(Date.now() + "") + Math.floor(Math.random() * 10000000); + console.log(codeIndex,"codeIndex"); // 格式化第一行是右侧language和 “复制” 按钮; if (code) { const navCode = navHandler(code) @@ -370,15 +371,15 @@ const getLastMessage = ((receiveId, itemType) => {