- 消息管理器创建用户/系统消息时返回 MessageId - 网关在流式响应中新增消息创建事件,返回 MessageId 与创建时间 - 统一在消息创建完成后发送 [DONE] 标识,优化流式结束时机
54 lines
2.0 KiB
C#
54 lines
2.0 KiB
C#
using Volo.Abp.Domain.Services;
|
||
using Volo.Abp.Users;
|
||
using Yi.Framework.AiHub.Domain.Entities;
|
||
using Yi.Framework.AiHub.Domain.Entities.Chat;
|
||
using Yi.Framework.AiHub.Domain.Shared.Dtos;
|
||
using Yi.Framework.SqlSugarCore.Abstractions;
|
||
|
||
namespace Yi.Framework.AiHub.Domain.Managers;
|
||
|
||
public class AiMessageManager : DomainService
|
||
{
|
||
private readonly ISqlSugarRepository<MessageAggregateRoot> _repository;
|
||
|
||
public AiMessageManager(ISqlSugarRepository<MessageAggregateRoot> repository)
|
||
{
|
||
_repository = repository;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 创建系统消息
|
||
/// </summary>
|
||
/// <param name="userId">用户Id</param>
|
||
/// <param name="sessionId">会话Id</param>
|
||
/// <param name="input">消息输入</param>
|
||
/// <param name="tokenId">Token Id(Web端传Guid.Empty)</param>
|
||
/// <returns></returns>
|
||
public async Task<Guid> CreateSystemMessageAsync(Guid? userId, Guid? sessionId, MessageInputDto input, Guid? tokenId = null)
|
||
{
|
||
input.Role = "system";
|
||
var message = new MessageAggregateRoot(userId, sessionId, input.Content, input.Role, input.ModelId, input.TokenUsage, tokenId);
|
||
await _repository.InsertAsync(message);
|
||
return message.Id;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 创建用户消息
|
||
/// </summary>
|
||
/// <param name="userId">用户Id</param>
|
||
/// <param name="sessionId">会话Id</param>
|
||
/// <param name="input">消息输入</param>
|
||
/// <param name="tokenId">Token Id(Web端传Guid.Empty)</param>
|
||
/// <param name="createTime"></param>
|
||
/// <returns></returns>
|
||
public async Task<Guid> CreateUserMessageAsync( Guid? userId, Guid? sessionId, MessageInputDto input, Guid? tokenId = null,DateTime? createTime=null)
|
||
{
|
||
input.Role = "user";
|
||
var message = new MessageAggregateRoot(userId, sessionId, input.Content, input.Role, input.ModelId, input.TokenUsage, tokenId)
|
||
{
|
||
CreationTime = createTime??DateTime.Now
|
||
};
|
||
await _repository.InsertAsync(message);
|
||
return message.Id;
|
||
}
|
||
} |