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);
}
}