Что означает generativelanguage.googleapis.com/v1beta/openai

В этой статье

Если в конфигурации SDK вы увидели https://generativelanguage.googleapis.com/v1beta/openai/, это не адрес OpenAI API. Это базовый URL Google для OpenAI-совместимого слоя Gemini: клиент может отправлять запросы в знакомом формате OpenAI, но обработает их сервис Google и модели Gemini.

Документация Google показывает этот вариант подключения для Python, JavaScript и REST-запросов: OpenAI compatibility.

Если вместе с настройкой API вам нужен отдельный каталог сервисов для работы с зарубежными платформами, его можно открыть у Amber Market.

Как разобрать URL

https://generativelanguage.googleapis.com/v1beta/openai/
│      │                                  │      │
│      │                                  │      └─ совместимый маршрут
│      │                                  └──────── версия API и пространство OpenAI
│      └────────────────────────────────── домен Google Generative Language
└──────────────────────────────────────── защищённое соединение HTTPS

generativelanguage.googleapis.com — домен Google, через который доступен Gemini API. v1beta обозначает версию интерфейса, а openai здесь означает формат совместимости, а не владельца сервиса.

Этот адрес является базовым: библиотека или ваш код добавляет к нему путь метода. Например, запрос чата обращается к:

https://generativelanguage.googleapis.com/v1beta/openai/chat/completions

В том же слое предусмотрены маршруты вроде /models и /embeddings. Названия похожи на OpenAI API, но список моделей и обработка запроса относятся к Gemini.

Как использовать адрес с OpenAI-клиентом

В клиенте нужно указать три вещи: ключ Gemini, этот базовый URL и доступное имя модели Gemini. В Python это может выглядеть так:

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["GEMINI_API_KEY"],
    base_url="https://generativelanguage.googleapis.com/v1beta/openai/"
)

response = client.chat.completions.create(
    model="YOUR_GEMINI_MODEL",
    messages=[
        {"role": "user", "content": "Объясни простыми словами, что такое API"}
    ]
)

print(response.choices[0].message)

В JavaScript параметры называются apiKey и baseURL:

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.GEMINI_API_KEY,
  baseURL: "https://generativelanguage.googleapis.com/v1beta/openai/",
});

const response = await client.chat.completions.create({
  model: "YOUR_GEMINI_MODEL",
  messages: [
    { role: "user", content: "Объясни простыми словами, что такое API" },
  ],
});

console.log(response.choices[0].message);

YOUR_GEMINI_MODEL — это место для имени модели Gemini, доступной вашему ключу. Список можно проверить через маршрут /models.

Без SDK тот же принцип можно проверить через REST:

curl "https://generativelanguage.googleapis.com/v1beta/openai/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $GEMINI_API_KEY" \
  -d '{
    "model": "YOUR_GEMINI_MODEL",
    "messages": [
      {"role": "user", "content": "Объясни простыми словами, что такое API"}
    ]
  }'

Секретный ключ должен оставаться на сервере. Не встраивайте его в JavaScript, который отправляется в браузер.

Какой ключ использовать

Для этого адреса нужен Gemini API key — ключ Google для доступа к Gemini API. Ключ OpenAI здесь не подходит. В примерах Google используется переменная GEMINI_API_KEY и заголовок Authorization: Bearer $GEMINI_API_KEY (пример OpenAI-совместимого вызова).

Собственный OpenAI API — отдельный сервис со своим базовым адресом и своим API key. Сам факт, что в обоих случаях можно использовать библиотеку openai, ничего не меняет: библиотека задаёт способ отправки запроса, а не провайдера и не выдаёт доступ к его API. Для ориентира можно сравнить этот режим с официальным quickstart OpenAI.

Где заканчивается совместимость

OpenAI-совместимость отвечает на практический вопрос: можно ли переиспользовать привычный клиент и схему запроса. Она не обещает полного совпадения API. Поэтому одного похожего имени метода недостаточно — поддерживаемую функцию нужно сверять с актуальной документацией Google.

Слой совместимости Gemini находится в beta, и его набор возможностей может быть уже, чем у прямого Gemini API. Например, Google отдельно указывает ограничение для некоторых операций пакетной обработки: загрузка и скачивание файлов через OpenAI-совместимый слой не поддерживаются. За возможностями, специфичными для Gemini, Google рекомендует обращаться к прямому Gemini API; различие между интеграциями описано в документации Partner and library integrations.

Отсюда следуют два простых сценария:

  • Если приложение уже использует OpenAI SDK и нужен обычный запрос к модели Gemini, замените базовый URL, ключ и имя модели, а затем проверьте нужный вызов.
  • Если нужна функция, которой нет в OpenAI-схеме, или возможность, специфичная для Gemini, используйте прямой Gemini API и официальный SDK Google.

Проверка через /models удобна как первый тест настройки, но результатом будет список моделей Gemini, а не моделей OpenAI. Успешный ответ от https://generativelanguage.googleapis.com/v1beta/openai/models подтверждает, что маршрут и ключ работают; он не превращает этот endpoint в OpenAI API.

Итак, generativelanguage.googleapis.com/v1beta/openai/ — это Google Gemini с OpenAI-подобным интерфейсом. Он помогает подключить Gemini к существующему коду, но не меняет провайдера, ключ или набор доступных возможностей. Для совместимого вызова используйте этот endpoint, а для полного набора функций Gemini выбирайте прямой Gemini API.

Источники

Есть следующая задача?Ещё по теме «Первые шаги» →