using SqlSugar; using Volo.Abp.Domain.Entities.Auditing; namespace Yi.Framework.AiHub.Domain.Entities; /// /// 用量统计 /// [SugarTable("Ai_UsageStatistics")] [SugarIndex($"index_{{table}}_{nameof(UserId)}_{nameof(ModelId)}_{nameof(TokenId)}", nameof(UserId), OrderByType.Asc, nameof(ModelId), OrderByType.Asc, nameof(TokenId), OrderByType.Asc )] public class UsageStatisticsAggregateRoot : FullAuditedAggregateRoot { public UsageStatisticsAggregateRoot() { } public UsageStatisticsAggregateRoot(Guid? userId, string modelId, Guid tokenId) { UserId = userId; ModelId = modelId; TokenId = tokenId; } /// /// 用户id /// public Guid? UserId { get; set; } /// /// 哪个模型 /// public string ModelId { get; set; } /// /// Token密钥Id(通过API调用时记录,Web调用为Guid.Empty) /// public Guid TokenId { get; set; } /// /// 对话次数 /// public int UsageTotalNumber { get; set; } /// /// 使用输出token总数 /// public long UsageOutputTokenCount { get; set; } /// /// 使用输入总数 /// public long UsageInputTokenCount { get; set; } /// /// 总token使用数量 /// public long TotalTokenCount { get; set; } /// /// 新增一次聊天统计 /// public void AddOnceChat(long inputTokenCount, long outputTokenCount) { UsageTotalNumber += 1; UsageOutputTokenCount += outputTokenCount; UsageInputTokenCount += inputTokenCount; TotalTokenCount += (outputTokenCount + inputTokenCount); } }