using System.Text.Json.Serialization;
namespace Yi.Framework.AiHub.Domain.Shared.Dtos.OpenAi;
///
/// 统计信息模型
///
public record ThorUsageResponse
{
///
/// 提示中的令牌数。
///
[JsonPropertyName("prompt_tokens")]
public int? PromptTokens { get; set; }
[JsonPropertyName("input_tokens")]
public int? InputTokens { get; set; }
[JsonPropertyName("output_tokens")]
public int? OutputTokens { get; set; }
[JsonPropertyName("input_tokens_details")]
public ThorUsageResponseInputTokensDetails? InputTokensDetails { get; set; }
///
/// 生成的完成中的令牌数。
///
[JsonPropertyName("completion_tokens")]
public long? CompletionTokens { get; set; }
///
/// 请求中使用的令牌总数(提示 + 完成)。
///
[JsonPropertyName("total_tokens")]
public long? TotalTokens { get; set; }
///
/// ThorUsageResponsePromptTokensDetails
///
[JsonPropertyName("prompt_tokens_details")]
public ThorUsageResponsePromptTokensDetails? PromptTokensDetails { get; set; }
///
/// ThorUsageResponseCompletionTokensDetails
///
[JsonPropertyName("completion_tokens_details")]
public ThorUsageResponseCompletionTokensDetails? CompletionTokensDetails { get; set; }
}
public class ThorUsageResponseInputTokensDetails
{
[JsonPropertyName("image_tokens")]
public int? ImageTokens { get; set; }
[JsonPropertyName("text_tokens")]
public int? TextTokens { get; set; }
}
public record ThorUsageResponsePromptTokensDetails
{
///
/// 缓存的令牌数。
///
[JsonPropertyName("cached_tokens")]
public int? CachedTokens { get; set; }
///
/// audio_tokens
///
[JsonPropertyName("audio_tokens")]
public int? AudioTokens { get; set; }
}
///
/// completion_tokens_details
///
public record ThorUsageResponseCompletionTokensDetails
{
///
/// 使用 Predicted Outputs 时, Prediction 的 Final。
///
[JsonPropertyName("accepted_prediction_tokens")]
public int? AcceptedPredictionTokens { get; set; }
///
/// 模型生成的音频输入令牌。
///
[JsonPropertyName("audio_tokens")]
public int? AudioTokens { get; set; }
///
/// 模型生成的用于推理的 Token。
///
[JsonPropertyName("reasoning_tokens")]
public int? ReasoningTokens { get; set; }
///
/// 使用 Predicted Outputs 时, 预测,但未出现在 completion 中。但是,与 reasoning 令牌,这些令牌仍然计入总数 用于 Billing、Output 和 Context Window 的完成令牌 限制。
///
[JsonPropertyName("rejected_prediction_tokens")]
public int? RejectedPredictionTokens { get; set; }
}