using System.Text.Json; using Yi.Framework.AiHub.Domain.Shared.Dtos.OpenAi; using Yi.Framework.AiHub.Domain.Shared.Extensions; namespace Yi.Framework.AiHub.Domain.Shared.Dtos.Gemini; public static class GeminiGenerateContentAcquirer { public static ThorUsageResponse? GetUsage(JsonElement response) { var usage = response.GetPath("usageMetadata"); if (!usage.HasValue) { return null; } var inputTokens = usage.Value.GetPath("promptTokenCount").GetInt(); var outputTokens = usage.Value.GetPath("candidatesTokenCount").GetInt() + usage.Value.GetPath("cachedContentTokenCount").GetInt() + usage.Value.GetPath("thoughtsTokenCount").GetInt() + usage.Value.GetPath("toolUsePromptTokenCount").GetInt(); return new ThorUsageResponse { PromptTokens = inputTokens, InputTokens = inputTokens, OutputTokens = outputTokens, CompletionTokens = outputTokens, TotalTokens = inputTokens + outputTokens, }; } }