/v1beta generateContent), ответ использует структуру Google candidates / parts, отличную от режима совместимости с OpenAI. На этой странице показано, как разбирать как ответ без потоковой передачи (generateContent), так и ответ с потоковой передачей (streamGenerateContent).
Сторона запроса (base_url —
https://api.apiyi.com без /v1, x-goog-api-key аутентификации, thinking_level управления) описана в Руководстве по нативному формату Gemini. Эта страница посвящена только стороне ответа. В примерах используется облегченная модель gemini-3.1-flash-lite.Ответ без потоковой передачи
Эндпоинт…:generateContent. Ответ находится в candidates[0].content.parts[]:
parts и конкатенировать каждый text:
finishReason — это в верхнем регистре STOP (а не строчный stop в OpenAI); другие значения включают MAX_TOKENS и SAFETY. part может содержать только thoughtSignature и не содержать text, поэтому при итерации фильтруйте по if "text" in p, иначе возникнет KeyError.Сигнатура мысли
Модели серии Gemini 3 прикрепляютthoughtSignature (зашифрованное состояние рассуждения) к фрагментам — в тестировании даже облегчённый gemini-3.1-flash-lite возвращает его.
- Один ход: не нужно; игнорируйте это.
- Многоходовый / вызов функций: передавайте
thoughtSignatureпредыдущего ответа обратно дословно вcontentsследующего хода, чтобы модель могла продолжить цепочку рассуждения. Официальныйgoogle-genaiSDK делает это автоматически; при ручной записи REST не пропускайте это поле. См. Вызов функций Gemini.
Потоковый ответ (SSE)
Эндпоинт…:streamGenerateContent. Каждая строка — data: {...}, а приращение каждого чанка находится в candidates[0].content.parts[0].text:
usageMetadata присутствует в каждом чанке и является накопительным (candidatesTokenCount растет по мере вывода) — просто возьмите значение последнего чанка; ручное суммирование не требуется.Ключевые отличия от режима, совместимого с OpenAI
Использование и тарификация
thoughtsTokenCount(thinking tokens) тарифицируется по тарифу вывода; используйтеthinking_level, чтобы ограничить его и снизить стоимость.- Скидку для поля cache-hit (
cachedContentTokenCount) см. в Тарификация кэша Gemini. - Полный справочник полей находится в разделе «Поля использования» в Руководстве по нативному формату Gemini.
Связанные ссылки
- Та же группа: Gemini Native Format Guide · Multimodal & Code Execution · Function Calling
- Соответствующий вариант в совместимом формате: OpenAI Compatible Mode: Handling Responses
- Получение / управление token:
https://api.apiyi.com/token