Как получить доступ к метаданным об использовании (использование токена) из GenerateContentResponse с помощью google-genJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как получить доступ к метаданным об использовании (использование токена) из GenerateContentResponse с помощью google-gen

Сообщение Anonymous »

Я использую ИИ только для перевода корейского языка на английский и упорядочения текста.
Я работаю с Google GenAI Java SDK — com.google.genai:google-genai:1.23.0 — в приложении Spring Boot 3, работающем в среде GitHub Codespaces.
Я называю модель Gemini 2.5 Flash следующим образом:

Код: Выделить всё

GenerateContentResponse response = geminiClient.models()
.generateContent(modelName, prompt, generationConfig);

String answer = response.text(); // This part works well
Теперь я хочу регистрировать информацию об использовании токена, например:
  • подсчет количества токенов
  • количество токенов кандидатов
  • общее количество токенов
Я понимаю, что это должно быть получено от useMetadata(), но я не могу правильно получить доступ к полям.
  • Я использую GitHub Codespaces, поэтому я не могу легко нажать «Ctrl + щелчок» в определениях классов, чтобы изучить доступные методы.
  • Я искал в официальной документации SDK и Javadocs, но мне не удалось найти четкую документацию для класса GenerateContentResponseUsageMetadata или его доступных методов.
  • Я также искал в Интернете (GitHub, Google, форумы разработчиков), и в некоторых сообщениях говорится, что useMetadata может не предоставляться надежно в некоторых версиях или моделях SDK. ответы.
  • Я подтвердил, что response.toString() иногда включает useMetadata в качестве фрагмента JSON, например:

Код: Выделить всё

"usageMetadata": {
"promptTokenCount": 30,
"candidatesTokenCount": 65,
"totalTokenCount": 95
}
Значит, данные существуют — я просто не могу получить к ним прямой доступ через Java SDK.
  • Как правильно импортировать и использовать useMetadata() в версии 1.23.0?
  • Каков точный метод имена (если есть) для получения количества токенов?
  • Поддерживается ли эта функция вообще в SDK v1.23.0, или мне следует анализировать необработанный JSON вручную в качестве обходного пути?
Будем очень признательны за любые советы или примеры, особенно от тех, кто успешно извлекал данные об использовании токенов в Java используя модель Gemini 2.5 Flash.
Заранее спасибо!
Я попробовал следующее:

Код: Выделить всё

import com.google.genai.types.GenerateContentResponseUsageMetadata;

...

GenerateContentResponseUsageMetadata usage = response.usageMetadata().orElse(null);

if (usage != null) {
int promptTokens = usage.getPromptTokenCount();  // error
int completionTokens = usage.getCandidatesTokenCount();  // error
int totalTokens = usage.getTotalTokenCount();  // error
}
Но я продолжаю получать ошибки "не могу найти символ" для всех трех вызовов методов, указанных выше, что указывает на то, что методы не существуют.
Я также пробовал вызывать их без get, например use.promptTokenCount(), но это тоже не сработало.>

Подробнее здесь: https://stackoverflow.com/questions/797 ... -using-goo
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»