← Все гайды AI Release
EN Подписаться на @ai_release1

Как подключить модели OpenAI через Google Cloud: пошаговая настройка доступа и ключей

Обновлено: 21.10.2026 · AI Release · @ai_release1
Как подключить модели OpenAI через Google Cloud: пошаговая настройка доступа и ключей

TL;DR

Требования и подготовка

Иллюстрация к разделу «Требования и подготовка»
Иллюстрация к разделу «Требования и подготовка»

Что понадобится по компонентам:

КомпонентЧто это (одной фразой)Зачем в этой схеме
Vertex AIплатформа Google Cloud для запуска моделейпринимает ваш HTTP-запрос и передаёт его модели
Model Gardenкаталог моделей внутри Vertex AIздесь включается доступ к моделям OpenAI
Сервисный аккаунт«технический пользователь» без пароляот его имени код получает OAuth2-токен
IAMуправление правами в Google Cloudроль `roles/aiplatform.user` разрешает вызывать модель
OAuth2 access tokenвременный токен доступа (живёт около часа)подставляется в заголовок `Authorization: Bearer …` вместо API-ключа

Чек-лист подготовки:

Поток запроса выглядит так — держите эту схему перед глазами:

1. Ваш скрипт читает файл сервисного аккаунта (JSON) или credentials активного пользователя.

2. Библиотека google-auth обменивает их на OAuth2 access token.

3. Токен уходит в заголовке Authorization: Bearer <token> на OpenAI-совместимый endpoint Vertex AI в выбранном регионе.

4. Vertex AI передаёт запрос модели OpenAI, включённой в Model Garden.

5. Ответ возвращается в формате OpenAI Chat Completions — с полями choices, usage и т. д.

Если позже понадобится ходить из одного кода сразу в несколько провайдеров, пригодится отдельный гайд: Как объединить несколько ИИ-провайдеров в один API.

Пример: проект называется my-ai-lab-2026, регион — us-central1. Ниже эти значения подставляются вместо плейсхолдеров <PROJECT_ID> и <REGION>.

Как проверить: gcloud projects describe my-ai-lab-2026 --format="value(lifecycleState)" → должно напечататься ACTIVE.

Шаг 1. Авторизация в gcloud, выбор проекта и включение API

Что сделать: войдите в аккаунт, зафиксируйте проект по умолчанию и включите API Vertex AI.

gcloud auth login
gcloud config set project my-ai-lab-2026
gcloud services enable aiplatform.googleapis.com

Для локальных скриптов, которые используют credentials пользователя (ADC — Application Default Credentials, «учётные данные по умолчанию»), дополнительно:

gcloud auth application-default login

Зачем: aiplatform.googleapis.com — тот самый API, который обслуживает запросы к моделям. Пока он выключен, любой вызов вернёт ошибку о недоступности сервиса, даже при корректных правах. gcloud auth application-default login создаёт локальный файл с credentials, который библиотека google-auth находит автоматически.

Как проверить:

gcloud config list --format="value(core.project)"
gcloud services list --enabled --filter="config.name:aiplatform.googleapis.com"

Ожидаемый результат: первая команда печатает my-ai-lab-2026, вторая — строку, в которой присутствует aiplatform.googleapis.com. Пустой вывод второй команды означает, что API ещё не включился: подождите минуту и повторите.

Пример: gcloud config list показывает core.project = my-ai-lab-2026, а gcloud services list --enabled содержит aiplatform.googleapis.com Vertex AI API.

Шаг 2. Сервисный аккаунт, права IAM и включение модели в Model Garden

Иллюстрация к разделу «Шаг 2. Сервисный аккаунт, права IAM и включение модели в Model Garden»
Иллюстрация к разделу «Шаг 2. Сервисный аккаунт, права IAM и включение модели в Model Garden»

Что сделать: создайте сервисный аккаунт, выдайте ему роль roles/aiplatform.user, скачайте JSON-ключ и включите нужную модель OpenAI в Model Garden.

gcloud iam service-accounts create vertex-ai-client \
  --display-name="Vertex AI client"

gcloud projects add-iam-policy-binding my-ai-lab-2026 \
  --member="serviceAccount:vertex-ai-client@my-ai-lab-2026.iam.gserviceaccount.com" \
  --role="roles/aiplatform.user"

mkdir -p ~/keys
gcloud iam service-accounts keys create ~/keys/vertex-ai-client.json \
  --iam-account=vertex-ai-client@my-ai-lab-2026.iam.gserviceaccount.com

chmod 600 ~/keys/vertex-ai-client.json
export GOOGLE_APPLICATION_CREDENTIALS="$HOME/keys/vertex-ai-client.json"

В PowerShell те же два последних шага выглядят так:

gcloud iam service-accounts keys create $HOME\keys\vertex-ai-client.json `
  --iam-account=vertex-ai-client@my-ai-lab-2026.iam.gserviceaccount.com

$env:GOOGLE_APPLICATION_CREDENTIALS = "$HOME\keys\vertex-ai-client.json"

Зачем: сервисный аккаунт — это «бот» внутри проекта: у него нет пароля, вход выполняется по JSON-ключу. Роль roles/aiplatform.user даёт право отправлять запросы к моделям, но не менять настройки проекта. Переменная GOOGLE_APPLICATION_CREDENTIALS сообщает библиотекам Google, где лежит ключ, — код не содержит секретов.

Затем включите модель: Console → Vertex AI → Model Garden → найдите карточку нужной модели OpenAI → кнопка подключения/включения модели в вашем проекте. Точные названия кнопок, список доступных моделей и регионов, а также идентификаторы моделей (<OPENAI_MODEL_ID>) сверьте с документацией Vertex AI — они меняются.

Пример: после включения вызываем endpoint обычным curl. Токен берём у пользователя, чтобы отделить проблемы прав от проблем ключа:

TOKEN="$(gcloud auth print-access-token)"

curl -sS \
  -X POST \
  -H "Authorization: Bearer ${TOKEN}" \
  -H "Content-Type: application/json" \
  "https://us-central1-aiplatform.googleapis.com/v1/projects/my-ai-lab-2026/locations/us-central1/endpoints/openapi/chat/completions" \
  -d '{
    "model": "<OPENAI_MODEL_ID>",
    "messages": [{"role": "user", "content": "Ответь одним словом: столица Франции?"}]
  }'

Почему это работает: заголовок Authorization подтверждает личность, путь /projects/<PROJECT_ID>/locations/<REGION>/endpoints/openapi/chat/completions указывает проект, регион и OpenAI-совместимый шлюз, а поле model выбирает включённую модель. Формат пути и поддержку регионов сверьте с документацией — часть моделей доступна не во всех регионах.

Как проверить:

gcloud projects get-iam-policy my-ai-lab-2026 \
  --flatten="bindings[].members" \
  --filter="bindings.members:vertex-ai-client@my-ai-lab-2026.iam.gserviceaccount.com" \
  --format="table(bindings.role)"

Ожидаемый результат: таблица с одной строкой roles/aiplatform.user. Если таблица пустая — привязка роли не выполнилась, повторите add-iam-policy-binding.

Шаг 3. Проверка работы из кода и фиксация конфигурации

Иллюстрация к разделу «Шаг 3. Проверка работы из кода и фиксация конфигурации»
Иллюстрация к разделу «Шаг 3. Проверка работы из кода и фиксация конфигурации»

Что сделать: вызовите модель из Python через официальный SDK openai, подставив токен вместо API-ключа.

import google.auth
from google.auth.transport.requests import Request
from openai import OpenAI

PROJECT_ID = "my-ai-lab-2026"
REGION = "us-central1"
MODEL_ID = "<OPENAI_MODEL_ID>"  # идентификатор из карточки модели в Model Garden

creds, _ = google.auth.default(scopes=["https://www.googleapis.com/auth/cloud-platform"])
creds.refresh(Request())

client = OpenAI(
    base_url=f"https://{REGION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{REGION}/endpoints/openapi",
    api_key=creds.token,
)

resp = client.chat.completions.create(
    model=MODEL_ID,
    messages=[{"role": "user", "content": "Ответь одним словом: столица Франции?"}],
)
print(resp.choices[0].message.content)
print(resp.usage)

Зачем: это тот же запрос, что и curl, но через привычный SDK. google.auth.default() читает переменную GOOGLE_APPLICATION_CREDENTIALS (или ADC пользователя), creds.refresh() получает свежий токен, а base_url переключает SDK с api.openai.com на шлюз Google Cloud. Поэтому отдельный ключ OpenAI не нужен.

Пример вывода на экране:

Париж
CompletionUsage(completion_tokens=2, prompt_tokens=20, total_tokens=22)

Конкретные значения usage зависят от модели и токенизатора — важна сама структура ответа.

Сохраните рабочую конфигурацию, чтобы не повторять шаги:

cat > ~/.vertex-openai.env <<'EOF'
export GOOGLE_APPLICATION_CREDENTIALS="$HOME/keys/vertex-ai-client.json"
export VERTEX_PROJECT="my-ai-lab-2026"
export VERTEX_REGION="us-central1"
export VERTEX_MODEL="<OPENAI_MODEL_ID>"
EOF
source ~/.vertex-openai.env

Как проверить (чек-лист успеха):

Если нужен доступ к модели, запущенной локально, а не в облаке, логика «OpenAI-совместимый endpoint + ключ» повторяется один в один: Как подключить локальную модель к Claude Code.

Возможные проблемы и решения

Проблема. Модель отвечает отказом в доступе, хотя API включён

gcloud projects add-iam-policy-binding my-ai-lab-2026 \
  --member="serviceAccount:vertex-ai-client@my-ai-lab-2026.iam.gserviceaccount.com" \
  --role="roles/aiplatform.user"

Проблема. Python не находит ключ

source ~/.vertex-openai.env
test -f "$GOOGLE_APPLICATION_CREDENTIALS" && echo OK

Проблема. Ресурс не найден

Резюме и следующие шаги

Доступ к моделям OpenAI через Google Cloud строится на трёх вещах: включённом aiplatform.googleapis.com, сервисном аккаунте с ролью roles/aiplatform.user и запросе на OpenAI-совместимый endpoint Vertex AI с OAuth2-токеном вместо API-ключа. Дальше имеет смысл вынести ключ в секрет-хранилище, добавить try/except на ошибки 401/403/404 и сверить актуальный список моделей, регионов и лимитов с документацией.

FAQ

Нужен ли отдельный API-ключ OpenAI?

Нет: доступ идёт через идентичность Google Cloud, а в поле api_key SDK openai подставляется OAuth2 access token, полученный через google-auth.

Можно ли пользоваться привычным SDK openai?

Да, достаточно заменить base_url на OpenAI-совместимый endpoint Vertex AI в вашем проекте и регионе; остальной код с chat.completions.create остаётся прежним.

Где хранить JSON-ключ сервисного аккаунта?

Не в git и не в коде: положите файл вне репозитория, ограничьте права (chmod 600) и передавайте путь через переменную окружения или секрет-хранилище.

Чем это отличается от прямого доступа к API OpenAI?

Биллинг идёт через ваш проект Google Cloud, права управляются через IAM, а доступность модели зависит от региона и включения в Model Garden; актуальные модели, регионы и лимиты сверьте с документацией.

🤖 Кратко для ИИ