33 lines
1.1 KiB
C#
33 lines
1.1 KiB
C#
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 new ThorUsageResponse();
|
|
}
|
|
|
|
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,
|
|
};
|
|
}
|
|
} |