Как пользоваться llmgw
Подробные инструкции по сценариям: повседневная работа с нейросетями, корпоративный чат и агенты, подключение IDE и SDK к OpenAI-compatible API.
Что понадобится в любом сценарии
Создайте API-ключ в личном кабинете. Дальше почти везде нужны только два параметра:
https://api.llmgw.ru/v1ключ из личного кабинета (формат sk-...)Важно: не публикуйте ключ в чатах и открытых репозиториях. Если ключ утёк — отзовите его в кабинете и создайте новый.
Частным пользователям
Один ключ открывает доступ сразу ко многим нейросетям (GPT, Claude, DeepSeek и другим) — без зарубежных карт и VPN. Ниже — чаты, свой Telegram-бот, no-code и готовые промпты.
Способ 1. Готовые приложения-чаты
Проще всего пользоваться нейросетями через готовые приложения, которые поддерживают «свой API-ключ».
Chatbox (Windows, macOS, Linux, iOS, Android)
- Установите Chatbox с официального сайта или из магазина приложений.
- Настройки → Model Provider → Add Custom Provider (тип OpenAI API Compatible).
- Укажите:
- API Host: https://api.llmgw.ru/v1
- API Key: ваш ключ
- Model: например gpt-4o (полный список — в личном кабинете)
- Готово — общайтесь с любой моделью, переключая её в шапке чата.
Аналогично настраиваются другие приложения с поддержкой custom API: PageAssist (расширение для браузера), LobeChat, NextChat и др. Везде принцип один: адрес + ключ + имя модели.
Способ 2. Свой бот в Telegram
Свой бот — это личный ChatGPT прямо в Telegram: на телефоне, без установки приложений. Создаётся за 15 минут.
Шаг 1. Создайте бота у BotFather
- В Telegram откройте @BotFather.
- Команда /newbot → придумайте имя и username бота.
- BotFather выдаст токен бота — сохраните его.
Шаг 2. Код бота (Python)
Установите зависимости:
pip install aiogram openai
Создайте файл bot.py:
import asyncio
from aiogram import Bot, Dispatcher, types
from openai import AsyncOpenAI
TELEGRAM_TOKEN = "ТОКЕН_ОТ_BOTFATHER"
LLMGW_KEY = "sk-ВАШ_КЛЮЧ_LLMGW"
MODEL = "gpt-4o" # любая модель из каталога LLMGW
client = AsyncOpenAI(
base_url="https://api.llmgw.ru/v1",
api_key=LLMGW_KEY,
)
bot = Bot(token=TELEGRAM_TOKEN)
dp = Dispatcher()
# история диалога на каждого пользователя
histories: dict[int, list] = {}
@dp.message(lambda m: m.text == "/start")
async def start(message: types.Message):
histories[message.from_user.id] = []
await message.answer("Привет! Я нейросеть. Задай любой вопрос. /reset — очистить диалог.")
@dp.message(lambda m: m.text == "/reset")
async def reset(message: types.Message):
histories[message.from_user.id] = []
await message.answer("Диалог очищен.")
@dp.message()
async def chat(message: types.Message):
uid = message.from_user.id
history = histories.setdefault(uid, [])
history.append({"role": "user", "content": message.text})
response = await client.chat.completions.create(
model=MODEL,
messages=history[-20:], # держим последние 20 сообщений
)
answer = response.choices[0].message.content
history.append({"role": "assistant", "content": answer})
await message.answer(answer)
async def main():
await dp.start_polling(bot)
if __name__ == "__main__":
asyncio.run(main())
Шаг 3. Запуск
python bot.py
Напишите своему боту в Telegram — он ответит. Чтобы бот работал круглосуточно, запустите его на любом дешёвом VPS или домашнем мини-сервере.
Пример диалога:
Вы: Составь список покупок для борща на 6 порций
Бот: Вот список: говядина на кости 600 г, свёкла 2 шт, капуста 300 г,
картофель 4 шт, морковь 1 шт, лук 1 шт, томатная паста 2 ст.л. ...
Вы: Замени говядину, жена не ест красное мясо
Бот: Тогда возьмите курицу (бёдра, 700 г) — бульон получится легче,
варить 40 минут вместо полутора часов. Остальное без изменений.
Бот помнит контекст диалога — можно уточнять и переспрашивать, как в обычной переписке.
Идеи доработок
- Команда /model для переключения между моделями (GPT для текстов, DeepSeek для кода).
- Ограничьте бота своим Telegram ID, чтобы им не пользовались посторонние:
ALLOWED = {123456789} # ваш ID — узнать можно у @userinfobot
if message.from_user.id not in ALLOWED:
return
- Распознавание голосовых: скачивайте voice-сообщение и отправляйте в модель с поддержкой аудио.
Способ 3. Автоматизации без кода
Ключ LLMGW работает в популярных no-code сервисах — выбирайте OpenAI-совместимый провайдер и указывайте адрес https://api.llmgw.ru/v1:
- n8n — свяжите Telegram-триггер с узлом AI Agent: получите бота вообще без программирования.
- Таблицы и скрипты — вызывайте API из Google Apps Script или Python-скриптов для перевода, суммаризации, генерации описаний.
Повседневные сценарии — готовые промпты
Скопируйте и подставьте своё:
Тексты и переписка:
Напиши поздравление коллеге с юбилеем (50 лет), он инженер, любит рыбалку. Тепло, с юмором, без пафоса, до 5 предложений.
Вот моё резюме [вставить] и вакансия [вставить]. Перепиши раздел «О себе» под требования вакансии, не выдумывая опыт.
Учёба и дети:
Объясни, почему самолёт летает, как для ребёнка 8 лет, с примером из жизни.
Проверь сочинение по критериям ОГЭ, укажи ошибки и как исправить, но не переписывай за меня: [текст]
Перевод:
Переведи на английский для деловой переписки с отелем — вежливо, но настойчиво: «Мы бронировали номер с видом на море, а дали во двор. Просим заменить номер или вернуть разницу».
Быт и финансы:
Составь меню на неделю на семью из 3 человек, бюджет 6000 ₽, без рыбы, ужины не дольше 30 минут готовки. Плюс общий список покупок.
Вот тарифы трёх банков по вкладам [вставить условия]. Сравни таблицей: реальная доходность, подводные камни, что выбрать под сумму 300 000 ₽ на год.
Документы:
Перескажи этот договор аренды простыми словами: мои обязанности, за что могут оштрафовать, как расторгнуть. Процитируй важные пункты: [текст]
Код и таблицы:
Нужна формула для Google Таблиц: в колонке A даты, в B суммы. Посчитай сумму за текущий месяц.
Советы по экономии
- Для простых вопросов используйте недорогие модели — разница в цене между моделями достигает десятков раз.
- Очищайте историю диалога (/reset в боте), когда меняете тему: длинная история увеличивает расход токенов с каждым сообщением.
- Следите за расходом в личном кабинете llmgw.ru и поставьте лимит на ключ.
Безопасность ключа
- Не публикуйте ключ в открытых репозиториях и чатах.
- Если ключ «утёк» — отзовите его в личном кабинете и создайте новый: это делается в один клик и бесплатно.
Бизнесу
Корпоративный ChatGPT на вашей инфраструктуре и раздельные ключи для агентов с контролем бюджета.
1. Корпоративный чат для сотрудников на базе OpenWebUI
OpenWebUI — открытая self-hosted платформа с интерфейсом в стиле ChatGPT: учётные записи сотрудников, группы, права доступа, история диалогов, работа с документами (RAG). В связке с LLMGW вы получаете корпоративный ChatGPT, развёрнутый на вашей инфраструктуре, с единым биллингом и контролем расходов через LLMGW.
Архитектура
Сотрудники → OpenWebUI (ваш сервер) → api.llmgw.ru → модели (GPT, Claude, DeepSeek, ...)
Данные диалогов хранятся у вас. Наружу уходят только запросы к API.
Требования
- Сервер с Docker (2 CPU / 4 ГБ RAM достаточно для команды до ~100 человек — сами модели работают на стороне LLMGW).
- API-ключ LLMGW (рекомендуем отдельный ключ на организацию или отдел).
Установка за 5 минут
docker run -d \ --name open-webui \ -p 3000:8080 \ -e OPENAI_API_BASE_URL="https://api.llmgw.ru/v1" \ -e OPENAI_API_KEY="sk-ВАШ_КЛЮЧ" \ -v open-webui:/app/backend/data \ --restart always \ ghcr.io/open-webui/open-webui:main
Откройте http://ваш-сервер:3000. Первый зарегистрированный пользователь становится администратором.
Вариант с docker-compose
services:
open-webui:
image: ghcr.io/open-webui/open-webui:main
ports:
- "3000:8080"
environment:
- OPENAI_API_BASE_URL=https://api.llmgw.ru/v1
- OPENAI_API_KEY=sk-ВАШ_КЛЮЧ
- WEBUI_NAME=Чат «Название компании»
- ENABLE_SIGNUP=false # регистрация только через админа
- DEFAULT_USER_ROLE=user
volumes:
- open-webui:/app/backend/data
restart: always
volumes:
open-webui:
Настройка после установки
- Модели. Admin Panel → Settings → Connections — проверьте, что подключение к LLMGW активно. В разделе Models скройте лишние модели и задайте модель по умолчанию.
- Пользователи и группы. Admin Panel → Users. Отключите свободную регистрацию (ENABLE_SIGNUP=false), заводите сотрудников вручную или подключите SSO (OpenWebUI поддерживает OAuth/OIDC — Keycloak, Google Workspace и др.).
- Права доступа. Группам можно выдавать разные наборы моделей: например, дорогие модели — только аналитикам, базовые — всем.
- Работа с документами (RAG). Сотрудники загружают документы прямо в чат или в общие «Knowledge»-коллекции — модель отвечает с опорой на них. Регламенты, база знаний, шаблоны договоров.
- Системные промпты. Задайте корпоративный системный промпт (тон, запрет на выдумывание фактов, требования к оформлению) на уровне моделей или рабочих пространств.
Примеры использования по отделам
Продажи:
Вот переписка с клиентом [вставить]. Составь ответ на возражение «у конкурентов дешевле»: без давления, с акцентом на стоимость владения.
HR:
Составь текст вакансии инженера данных: удалёнка, стек Python/Airflow/ClickHouse, зарплатная вилка не указывается. Тон — живой, без канцелярита.
Юристы (с загруженным документом):
[прикреплён договор.docx] Найди в договоре пункты с рисками для нас как исполнителя: штрафы, односторонние права заказчика, неограниченная ответственность. Процитируй каждый пункт и объясни риск.
Маркетинг:
Из этого пресс-релиза сделай: пост для Telegram (до 800 знаков), пост для VK, короткий анонс для email-рассылки. Сохрани факты, убери воду.
Пример: база знаний компании (RAG)
- Admin Panel → Knowledge → создайте коллекцию «Регламенты».
- Загрузите PDF/DOCX: правила отпусков, командировок, ИТ-политики.
- Сотрудник в чате пишет #Регламенты и задаёт вопрос:
#Регламенты Сколько дней согласовывается командировка и кто утверждает?
- Модель отвечает с опорой на загруженные документы и указывает источник.
Так снимается значительная часть однотипных вопросов к HR и офис-менеджеру.
Контроль расходов
Выдавайте OpenWebUI отдельный ключ LLMGW с месячным бюджетом — расходы всей платформы будут видны одной строкой в личном кабинете и не смешаются с другими интеграциями. При необходимости заведите по ключу на отдел: тогда видно, кто сколько потребляет.
2. Токены для ИИ-агентов
Агенты (автоматизации, боты, пайплайны) — это программы, которые обращаются к API без участия человека, поэтому к их ключам другие требования:
Правила выдачи ключей агентам
- Один агент — один ключ. Никогда не переиспользуйте личный ключ разработчика в продакшн-агенте.
- Бюджетные лимиты. Ставьте на ключ агента месячный бюджет и rate limit — зациклившийся агент не сожжёт бюджет компании за ночь.
- Ограничение моделей. Если агент должен работать только на одной модели — ограничьте ключ этой моделью в личном кабинете.
- Ротация. Держите ключи в секрет-менеджере (Vault, переменные окружения CI/CD), не коммитьте в репозитории.
Все агентские ключи создаются в личном кабинете LLMGW: Ключи → Создать ключ → тип «Сервисный», там же задаются бюджет, лимиты и список разрешённых моделей.
Интеграция с инструментами разработки агентов
Везде используется одна пара параметров: base_url = https://api.llmgw.ru/v1 и ключ.
LangChain / LangGraph (Python)
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="gpt-4o",
base_url="https://api.llmgw.ru/v1",
api_key="sk-КЛЮЧ_АГЕНТА",
temperature=0,
)
Для LangGraph этот же объект llm передаётся в узлы графа — дополнительной настройки не требуется.
OpenAI Agents SDK (Python)
from openai import AsyncOpenAI
from agents import set_default_openai_client, set_default_openai_api
client = AsyncOpenAI(
base_url="https://api.llmgw.ru/v1",
api_key="sk-КЛЮЧ_АГЕНТА",
)
set_default_openai_client(client)
set_default_openai_api("chat_completions")
CrewAI
from crewai import LLM
llm = LLM(
model="openai/gpt-4o",
base_url="https://api.llmgw.ru/v1",
api_key="sk-КЛЮЧ_АГЕНТА",
)
LlamaIndex
from llama_index.llms.openai_like import OpenAILike
llm = OpenAILike(
model="gpt-4o",
api_base="https://api.llmgw.ru/v1",
api_key="sk-КЛЮЧ_АГЕНТА",
is_chat_model=True,
)
Полный пример: агент-классификатор обращений в поддержку
from langchain_openai import ChatOpenAI
from pydantic import BaseModel, Field
class Ticket(BaseModel):
category: str = Field(description="billing | technical | sales | other")
urgency: str = Field(description="low | medium | high")
summary: str = Field(description="суть обращения одной фразой")
llm = ChatOpenAI(
model="gpt-4o",
base_url="https://api.llmgw.ru/v1",
api_key="sk-КЛЮЧ_АГЕНТА",
temperature=0,
).with_structured_output(Ticket)
email = """Здравствуйте! Третий день не приходят чеки об оплате,
бухгалтерия требует закрывающие документы до конца недели, горим!"""
ticket = llm.invoke(f"Классифицируй обращение клиента:\n\n{email}")
print(ticket)
# category='billing' urgency='high' summary='Не приходят чеки, нужны закрывающие документы до конца недели'
Дальше результат уходит в CRM или назначается на нужный отдел — уже обычным кодом.
n8n (no-code автоматизации)
- Credentials → New → OpenAI.
- API Key: ключ агента.
- Base URL: https://api.llmgw.ru/v1.
- Используйте узлы OpenAI / AI Agent как обычно — они пойдут через LLMGW.
Пример workflow «Дайджест почты» в n8n:
Gmail Trigger (новое письмо)
→ OpenAI: «Определи: спам / требует ответа / информационное.
Если требует ответа — составь черновик в деловом тоне»
→ IF (требует ответа)
→ Gmail: сохранить черновик ответа
→ Telegram: отправить менеджеру сводку письма и категорию
Собирается из четырёх узлов без единой строки кода.
Vercel AI SDK (TypeScript)
import { createOpenAICompatible } from "@ai-sdk/openai-compatible";
import { generateText } from "ai";
const llmgw = createOpenAICompatible({
name: "llmgw",
baseURL: "https://api.llmgw.ru/v1",
apiKey: process.env.LLMGW_API_KEY,
});
const { text } = await generateText({
model: llmgw("gpt-4o"),
prompt: "Составь план запуска рассылки",
});
Dify / Flowise и другие low-code платформы
В настройках провайдера моделей выберите OpenAI-API-compatible, укажите base URL https://api.llmgw.ru/v1, ключ и имена моделей из каталога /v1/models.
Типовая схема для компании
| Потребитель | Ключ | Ограничения |
|---|---|---|
| OpenWebUI (чат сотрудников) | sk-...-webui | бюджет N ₽/мес, все разрешённые модели |
| Агент поддержки (n8n) | sk-...-support | одна модель, rate limit, бюджет |
| Пайплайн аналитики (LangChain) | sk-...-analytics | мощная модель, бюджет |
| Разработчики (IDE) | личные ключи | бюджет на человека |
Такое разделение даёт прозрачный учёт расходов по направлениям и позволяет мгновенно отозвать ключ скомпрометированной интеграции, не задев остальные.
Разработчикам
Любой инструмент с поддержкой OpenAI API подключается к llmgw заменой Base URL и ключа. Имена моделей берите из GET /v1/models.
Параметры подключения
| Параметр | Значение |
|---|---|
| Base URL | https://api.llmgw.ru/v1 |
| API Key | ключ из личного кабинета (sk-...) |
Список моделей:
curl https://api.llmgw.ru/v1/models \ -H "Authorization: Bearer sk-ВАШ_КЛЮЧ"
В примерах ниже — условные имена (gpt-4o, claude-sonnet-4-6, deepseek-v3). Подставьте актуальные из каталога.
Быстрая проверка ключа
curl https://api.llmgw.ru/v1/chat/completions \
-H "Authorization: Bearer sk-ВАШ_КЛЮЧ" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o",
"messages": [{"role": "user", "content": "Привет!"}]
}'
Пример ответа:
{
"id": "chatcmpl-9f3a...",
"object": "chat.completion",
"model": "gpt-4o",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Привет! Чем могу помочь?"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 9,
"completion_tokens": 8,
"total_tokens": 17
}
}
Если пришёл такой ответ — всё работает, можно подключать инструменты.
Cursor
- Откройте Cursor Settings → Models.
- В разделе OpenAI API Key вставьте ваш ключ LLMGW.
- Включите переключатель Override OpenAI Base URL и укажите https://api.llmgw.ru/v1.
- Нажмите Verify — Cursor проверит соединение.
- В списке моделей отключите модели, которых нет в LLMGW, и добавьте нужные через Add model (имя должно точно совпадать с именем из /v1/models).
Особенности Cursor:
- При включённом custom base URL работают чат и inline-редактирование (Cmd+K). Часть фирменных функций Cursor (Tab-автодополнение) использует собственные модели Cursor и через сторонний API не работает.
- Если Verify выдаёт ошибку — проверьте, что в списке не осталось включённых моделей, отсутствующих в LLMGW: Cursor валидирует ключ по первой активной модели.
Cline (VS Code)
- Установите расширение Cline из маркетплейса VS Code.
- Откройте настройки Cline (шестерёнка в панели Cline).
- API Provider: выберите OpenAI Compatible.
- Заполните поля:
- Base URL: https://api.llmgw.ru/v1
- API Key: sk-ВАШ_КЛЮЧ
- Model ID: имя модели, например claude-sonnet-4-6
- Сохраните. Cline готов к работе.
Рекомендация: для агентных задач Cline активно расходует токены — заведите под него отдельный ключ с бюджетным лимитом (см. раздел про токены в документации для бизнеса).
Примеры задач для Cline:
Найди в проекте все места, где пароль логируется в открытом виде, и исправь их.
Добавь в API эндпоинт POST /users/{id}/avatar: загрузка файла до 5 МБ,
валидация типа (jpg/png), сохранение в S3, тесты.
Прочитай README и docker-compose.yml, подними проект локально и скажи, что нужно поправить, чтобы он завёлся на macOS.
Cline сам прочитает файлы, внесёт изменения и покажет diff перед применением.
Roo Code (VS Code)
Настраивается аналогично Cline:
- Установите расширение Roo Code.
- В настройках профиля выберите API Provider → OpenAI Compatible.
- Base URL: https://api.llmgw.ru/v1, ключ и Model ID — как выше.
- Roo Code поддерживает несколько профилей — удобно завести отдельные профили под разные модели (быстрая для рутины, мощная для сложных задач).
OpenCode
OpenCode настраивается через конфигурационный файл ~/.config/opencode/opencode.json (или opencode.json в корне проекта):
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"llmgw": {
"npm": "@ai-sdk/openai-compatible",
"name": "LLMGW",
"options": {
"baseURL": "https://api.llmgw.ru/v1",
"apiKey": "{env:LLMGW_API_KEY}"
},
"models": {
"gpt-4o": { "name": "GPT-4o" },
"claude-sonnet-4-6": { "name": "Claude Sonnet" },
"deepseek-v3": { "name": "DeepSeek V3" }
}
}
}
}
Ключ передавайте через переменную окружения:
export LLMGW_API_KEY="sk-ВАШ_КЛЮЧ" opencode
Внутри OpenCode выберите провайдера и модель командой /models.
Continue (VS Code / JetBrains)
Отредактируйте ~/.continue/config.yaml:
models:
- name: LLMGW GPT-4o
provider: openai
model: gpt-4o
apiBase: https://api.llmgw.ru/v1
apiKey: sk-ВАШ_КЛЮЧ
roles: [chat, edit, apply]
- name: LLMGW DeepSeek
provider: openai
model: deepseek-v3
apiBase: https://api.llmgw.ru/v1
apiKey: sk-ВАШ_КЛЮЧ
roles: [chat, autocomplete]
Перезапустите Continue — модели появятся в выпадающем списке.
Aider
Aider работает через переменные окружения:
export OPENAI_API_BASE="https://api.llmgw.ru/v1" export OPENAI_API_KEY="sk-ВАШ_КЛЮЧ" aider --model openai/gpt-4o
Префикс openai/ обязателен — он говорит Aider использовать OpenAI-совместимый протокол.
Для постоянной конфигурации создайте ~/.aider.conf.yml:
openai-api-base: https://api.llmgw.ru/v1 openai-api-key: sk-ВАШ_КЛЮЧ model: openai/gpt-4o
Пример сессии:
$ cd my-project $ aider app.py tests/test_app.py ──────────────────────────────────────── > Добавь кэширование ответов в get_user() через functools.lru_cache и обнови тесты Aider внесёт правки в оба файла и сам сделает git-коммит с осмысленным сообщением.
Zed
В settings.json Zed (Cmd+, → Open Settings):
{
"language_models": {
"openai_compatible": {
"LLMGW": {
"api_url": "https://api.llmgw.ru/v1",
"available_models": [
{
"name": "gpt-4o",
"display_name": "GPT-4o (LLMGW)",
"max_tokens": 128000
},
{
"name": "claude-sonnet-4-6",
"display_name": "Claude Sonnet (LLMGW)",
"max_tokens": 200000
}
]
}
}
}
}
API-ключ Zed запросит при первом обращении к провайдеру (панель Agent → настройки провайдера LLMGW).
JetBrains IDE (IntelliJ, PyCharm и др.)
Встроенный JetBrains AI Assistant не поддерживает сторонние endpoints. Используйте плагины с поддержкой OpenAI-совместимых API:
- ProxyAI (бывший CodeGPT): Settings → Tools → ProxyAI → Providers → Custom OpenAI → укажите URL https://api.llmgw.ru/v1/chat/completions, ключ и модель.
- Continue: см. раздел выше — плагин доступен и для JetBrains.
Собственный код (SDK)
Python (openai)
from openai import OpenAI
client = OpenAI(
base_url="https://api.llmgw.ru/v1",
api_key="sk-ВАШ_КЛЮЧ",
)
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Напиши функцию сортировки на Python"}],
)
print(response.choices[0].message.content)
Node.js / TypeScript
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://api.llmgw.ru/v1",
apiKey: process.env.LLMGW_API_KEY,
});
const response = await client.chat.completions.create({
model: "gpt-4o",
messages: [{ role: "user", content: "Привет!" }],
});
console.log(response.choices[0].message.content);
Стриминг (Python)
stream = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Объясни, как работает asyncio"}],
stream=True,
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
Function calling (Python)
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Получить погоду в городе",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "Название города"}
},
"required": ["city"],
},
},
}]
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Какая погода в Барнауле?"}],
tools=tools,
)
tool_call = response.choices[0].message.tool_calls[0]
print(tool_call.function.name) # get_weather
print(tool_call.function.arguments) # {"city": "Барнаул"}
Structured outputs (Python)
import json
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": "Отвечай только валидным JSON без пояснений."},
{"role": "user", "content": "Извлеки данные: 'Иванов Пётр, +7 900 123-45-67, Москва'. Поля: name, phone, city."},
],
response_format={"type": "json_object"},
)
data = json.loads(response.choices[0].message.content)
# {"name": "Иванов Пётр", "phone": "+7 900 123-45-67", "city": "Москва"}
Vision (отправка изображений) работает штатно через content с блоками image_url — как в обычном OpenAI API, если модель поддерживает изображения.
Частые проблемы
| Симптом | Причина и решение |
|---|---|
| 401 Unauthorized | Ключ указан без префикса Bearer или с опечаткой. Проверьте ключ в личном кабинете. |
| 404 model not found | Имя модели не совпадает с каталогом. Сверьтесь с GET /v1/models. |
| Инструмент «не видит» модели | В инструменте включён список моделей по умолчанию (OpenAI). Добавьте модели вручную с точными именами. |
| Обрыв длинных ответов | Увеличьте max_tokens в настройках инструмента. |
| 429 Rate limit | Достигнут лимит ключа. Проверьте лимиты в личном кабинете или запросите повышение. |