2025-06-25 17:12:09 +08:00
|
|
|
|
using SqlSugar;
|
|
|
|
|
|
using Volo.Abp.Domain.Entities.Auditing;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Yi.Framework.AiHub.Domain.Entities;
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 用量统计
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
[SugarTable("Ai_UsageStatistics")]
|
2025-11-27 19:01:16 +08:00
|
|
|
|
[SugarIndex($"index_{{table}}_{nameof(UserId)}_{nameof(ModelId)}_{nameof(TokenId)}",
|
|
|
|
|
|
nameof(UserId), OrderByType.Asc,
|
|
|
|
|
|
nameof(ModelId), OrderByType.Asc,
|
|
|
|
|
|
nameof(TokenId), OrderByType.Asc
|
|
|
|
|
|
)]
|
2025-06-25 17:12:09 +08:00
|
|
|
|
public class UsageStatisticsAggregateRoot : FullAuditedAggregateRoot<Guid>
|
|
|
|
|
|
{
|
2025-06-27 22:13:26 +08:00
|
|
|
|
public UsageStatisticsAggregateRoot()
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2025-11-27 19:01:16 +08:00
|
|
|
|
public UsageStatisticsAggregateRoot(Guid? userId, string modelId, Guid tokenId)
|
2025-06-27 22:13:26 +08:00
|
|
|
|
{
|
|
|
|
|
|
UserId = userId;
|
|
|
|
|
|
ModelId = modelId;
|
2025-11-27 19:01:16 +08:00
|
|
|
|
TokenId = tokenId;
|
2025-06-27 22:13:26 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2025-06-25 17:12:09 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 用户id
|
|
|
|
|
|
/// </summary>
|
2025-08-03 21:32:54 +08:00
|
|
|
|
public Guid? UserId { get; set; }
|
2025-06-25 17:12:09 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 哪个模型
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public string ModelId { get; set; }
|
|
|
|
|
|
|
2025-11-27 19:01:16 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Token密钥Id(通过API调用时记录,Web调用为Guid.Empty)
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public Guid TokenId { get; set; }
|
|
|
|
|
|
|
2025-06-25 17:12:09 +08:00
|
|
|
|
/// <summary>
|
2025-06-27 22:13:26 +08:00
|
|
|
|
/// 对话次数
|
2025-06-25 17:12:09 +08:00
|
|
|
|
/// </summary>
|
2025-06-27 22:13:26 +08:00
|
|
|
|
public int UsageTotalNumber { get; set; }
|
2025-06-25 17:12:09 +08:00
|
|
|
|
|
2025-06-25 22:41:32 +08:00
|
|
|
|
/// <summary>
|
2025-06-27 22:13:26 +08:00
|
|
|
|
/// 使用输出token总数
|
2025-06-25 22:41:32 +08:00
|
|
|
|
/// </summary>
|
2025-07-22 10:40:23 +08:00
|
|
|
|
public long UsageOutputTokenCount { get; set; }
|
2025-06-27 22:13:26 +08:00
|
|
|
|
|
2025-06-25 17:12:09 +08:00
|
|
|
|
/// <summary>
|
2025-06-27 22:13:26 +08:00
|
|
|
|
/// 使用输入总数
|
|
|
|
|
|
/// </summary>
|
2025-07-22 10:40:23 +08:00
|
|
|
|
public long UsageInputTokenCount { get; set; }
|
2025-06-27 22:13:26 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 总token使用数量
|
|
|
|
|
|
/// </summary>
|
2025-07-22 10:40:23 +08:00
|
|
|
|
public long TotalTokenCount { get; set; }
|
2025-06-27 22:13:26 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 新增一次聊天统计
|
2025-06-25 17:12:09 +08:00
|
|
|
|
/// </summary>
|
2025-07-22 10:40:23 +08:00
|
|
|
|
public void AddOnceChat(long inputTokenCount, long outputTokenCount)
|
2025-06-27 22:13:26 +08:00
|
|
|
|
{
|
|
|
|
|
|
UsageTotalNumber += 1;
|
|
|
|
|
|
UsageOutputTokenCount += outputTokenCount;
|
|
|
|
|
|
UsageInputTokenCount += inputTokenCount;
|
|
|
|
|
|
TotalTokenCount += (outputTokenCount + inputTokenCount);
|
|
|
|
|
|
}
|
2025-06-25 17:12:09 +08:00
|
|
|
|
}
|