Доступ к GPT и Claude без VPN: как разработчику подключиться к LLM API
Это текстовая версия видео. Если удобнее смотреть — видео здесь. Если нужны конкретные команды, которые можно сразу скопировать в терминал — они в этой статье.
Прямо сейчас перед тобой обычный curl-запрос к GPT или Claude — без VPN, без зарубежной карты, с оплатой в рублях. Дальше — как именно к этому прийти, шаг за шагом.
Зачем это вообще
Это первое видео серии про AI-автоматизацию на Windmill — дальше мы будем собирать автоматизации, которые обращаются к GPT и Claude десятки, а то и сотни раз в день. Чтобы это работало, на входе обязательно нужен стабильный доступ к API — без VPN и без забот о том, отвалится он завтра или нет.
Я — Артём Иксанов, руковожу агентством заказной разработки MEIJI MEDIA и последнее время плотно занимаюсь внедрением ИИ в реальные проекты. Здесь и дальше в серии показываю то, что реально использую в работе.
Коротко разберём, как устроен запрос к языковой модели, что такое роли system/user/assistant и токены, и почему это не просто чат. Дальше — какие есть варианты доступа для разработчика из России, и в конце — шаг за шагом соберём рабочий запрос руками через Dockhost AI Inference. Если теория не нужна — сразу переходи к разделу «Собираем запрос руками».
Как устроен запрос к языковой модели
Когда ты открываешь чат GPT или Claude в браузере, за веб-интерфейсом происходит ровно то же самое, что мы сейчас соберём руками: браузер отправляет HTTP-запрос на сервер, сервер его обрабатывает и присылает ответ. API — то же самое, только без интерфейса чата: запрос формируешь сам, ответ читаешь сам.
Запрос — это, по сути, JSON-строка со списком сообщений. Важный момент, особенно для новичков: сообщений в одном запросе несколько, и у каждого своя роль.
systemне сообщение от пользователя, а инструкция для модели: кто она, как себя вести, какие есть ограничения. Например: «Ты технический специалист, отвечай кратко на русском языке».userсам запрос, который обрабатывает модель.assistantто, что модель уже отвечала раньше.Отсюда важный вывод: языковая модель сама по себе не помнит диалог. Каждый раз, продолжая переписку, ты отправляешь всю историю сообщений целиком — все user и assistant по порядку. Память — это не свойство модели, а то, что твой код должен собирать и передавать при каждом запросе.
И последнее — токены. Модель не читает текст буквами или словами, она бьёт его на токены — куски текста примерно от одного символа до одного слова. Платишь ты именно за токены, отдельно за то, что отправил (input), и отдельно за то, что получил в ответе (output). Это важно держать в голове при планировании автоматизации: длинный system-промпт на каждый запрос — не бесплатно.
Три способа получить доступ к API из России
Именно третий вариант дальше и разбираем.
Почему Dockhost AI Inference
В этой серии используем Dockhost AI Inference — не потому что это единственный вариант, а потому что это тот же Dockhost, на котором у нас в проде крутится инфраструктура наших и клиентских проектов. Логичнее держать инфраструктуру в одном месте, чем городить зоопарк из разных облаков.
Пошагово — от регистрации до каталога моделей
- Регистрируешься на dockhost.ru, попадаешь в панель управления.
- Выбираешь или создаёшь проект.
- В проекте находишь раздел LLM Inference — там список доступных моделей, у каждой отдельно указана цена за миллион токенов:
inputиoutput— ровно то, о чём говорили выше. - Создаёшь API-ключ.
- Для работы нужны два значения: Base URL и API-ключ — они пригодятся в любом инструменте, хоть в curl, хоть в запросе на любом языке программирования.
Ключ в кадре я не показываю намеренно — сразу кладу его в переменную окружения, и дальше вся работа идёт через неё, а не через хардкод в коде:
export DOCKHOST_AI_KEY="ваш-ключ-из-личного-кабинета" export DOCKHOST_AI_URL="ваш-base-url-из-личного-кабинета"
Собираем запрос руками
Адрес — это DOCKHOST_AI_URL плюс путь /chat/completions. Это стандартный путь у любого OpenAI-совместимого API — можешь его запомнить, он будет использоваться во всех следующих роликах серии.
Заголовков два: Authorization: Bearer <ключ> и Content-Type: application/json.
Тело запроса — то, что разбирали в теории: поле model с названием модели из каталога, и поле messages — массив с сообщениями по ролям.
curl -X POST "${DOCKHOST_AI_URL}/chat/completions" \
-H "Authorization: Bearer ${DOCKHOST_AI_KEY}" \
-H "Content-Type: application/json" \
-d '{
"model": "имя-модели-из-каталога",
"messages": [
{
"role": "system",
"content": "Ты технический специалист. Отвечай кратко, на русском языке."
},
{
"role": "user",
"content": "Твой вопрос здесь"
}
]
}'Обрати внимание: на уровне протокола запроса нигде не указано, что это именно GPT, Claude, Qwen или Gemini — вся разница в одной строке, в значении model. В этом и есть смысл OpenAI-совместимого API: код не меняется, меняется только имя модели.
Разбираем ответ
Выполняем запрос — получаем сырой JSON. Это то, с чем реально работает код, а не интерфейс чата.
{
"choices": [
{
"message": {
"content": "Текст ответа модели"
}
}
],
"usage": {
"prompt_tokens": 0,
"completion_tokens": 0
}
}choices — массив вариантов ответа, обычно нужен первый: choices[0].message.content — это и есть текст ответа модели. В usage — метрики: сколько токенов ушло на запрос и сколько на ответ. Отсюда считается стоимость каждого вызова.
Меняем модель одной строкой
Теперь меняем одну строку — model, например, на другую модель другого провайдера — и запускаем тот же самый запрос ещё раз. Код не трогали вообще, поменяли только имя. Это и есть практический смысл всего разобранного: рабочий доступ к GPT и Claude без VPN, прямо из терминала, за один curl-запрос.
Что дальше в серии
В следующих роликах обернём это в реальный код на Python и TypeScript, поднимем всё внутри Windmill — чтобы получилась настоящая автоматизация, а не одиночное обращение. Дальше по плану:
- Docker и деплой — развернём инфраструктуру, которая пригодится для всего остального
- Python и TypeScript для Windmill
- Разворачивание Windmill в проде
- Практические автоматизации: суммаризация документов в Telegram, Telegram-бот с ИИ, категоризация задач в трекере, AI-агент с подтверждением действий человеком
Если досмотрел или дочитал до этого места — скорее всего, ты разработчик или около того, и тебе интересно не просто поболтать с нейросетью, а встроить её в рабочие задачи и процессы. Этим я и занимаюсь — в Meiji Media как агентстве заказной разработки и лично, в консультациях и менторстве по внедрению ИИ. Канал — про то же самое, с пошаговым разбором.