Переход с Google Generative Language API
Подключение GenerateContent и перенос обработчиков ответа
Что изменить
Базовый адрес: https://api.getapi.ru
| Запрос | Путь |
|---|---|
| Генерация | /v1beta/models/{model}:generateContent |
| Поток | /v1beta/models/{model}:streamGenerateContent?alt=sse |
Используйте ключ GetAPI и точный ID модели из каталога. Передавайте ключ в заголовке x-goog-api-key, чтобы не включать его в URL
Запрос
Пример использует gemini-2.5-flash. Перед запуском убедитесь, что модель доступна вашему ключу
curl --fail-with-body https://api.getapi.ru/v1beta/models/gemini-2.5-flash:generateContent \
-H "x-goog-api-key: $GETAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"systemInstruction": {"parts": [{"text": "Отвечай кратко"}]},
"contents": [
{"role": "user", "parts": [{"text": "Что такое HTTP?"}]}
],
"generationConfig": {"maxOutputTokens": 1024}
}'Чтение ответа
Текст находится в candidates[].content.parts[].text. Собирайте все подходящие части, а не только первый элемент массива. Части, помеченные как рассуждения, обрабатывайте отдельно от пользовательского ответа
Причина завершения находится в finishReason, сведения о расходе в usageMetadata. При блокировке или ошибке кандидат с текстом может отсутствовать
Что проверить
| Возможность | Действие при переносе |
|---|---|
| Системная инструкция | Передать через systemInstruction |
| Изображения | Использовать поддерживаемые inlineData или другой согласованный способ |
| Поток | Читать SSE, см. потоковые ответы |
| Рассуждения | Проверить thinkingConfig для выбранной модели |
| Инструменты | Сохранить структуру вызова и результата функции |
| Метаданные | Допускать отсутствие modelVersion, responseId и отдельных счётчиков |
safetyRatings может быть пустым, а отдельные счётчики reasoning могут отсутствовать или не отражать фактический расход. Не используйте их как единственное основание для проверки безопасности или стоимости
Настройка адреса в SDK зависит от его версии. Если клиент не позволяет задать совместимый адрес, используйте прямой HTTP-запрос по примеру выше
Полная структура: GenerateContent, изображения и документы