Обновлено: 17 октября 2026

SDK — библиотека, которая собирает запросы к API и разбирает ответы. Для подключения OpenAI SDK к посреднику нужны его адрес, ключ и точный идентификатор модели. Но при переходе на новые GPT и Claude этого может быть недостаточно: различаются допустимые методы, параметры и формат событий. Ниже — пример для Responses API и порядок проверки, который помогает отделить ошибку настройки от несовместимости модели.

Выберите модель вместе с методом

GPT-6.1 Sol поддерживает инструменты через Responses API; её Chat Completions предназначен для запросов без инструментов. У GPT-6 Luna вызов инструментов в Chat Completions допускается при отключённом рассуждении, с reasoning_effort=none. Одно правило поэтому нельзя применять ко всей линейке GPT.

Для Claude 5.5 нужно учитывать миграционную документацию конкретной модели. Настройки ручного бюджета рассуждений, принудительного инструмента и обработки блоков ответа отличаются от прежних версий. Если посредник преобразует запрос в совместимый формат, проверьте, какие возможности он действительно передаёт дальше.

Что зафиксировать Пример или вопрос
Поставщик и адрес ProxyAPI, https://api.proxyapi.ru/v1
Метод Responses, а не подразумеваемый Chat Completions
Полный ID openai/gpt-6.1-sol у выбранного посредника
Нужные функции Обычный текст, инструменты, структурированный ответ, поток событий
Версия клиента Версия установленного пакета SDK в вашем окружении

Описание общих различий новых моделей есть в гайдах о GPT и Claude. Здесь задача уже: получить воспроизводимую конфигурацию приложения. Возможности другого продавца по приведённому примеру не подтверждаются.

Подготовьте отдельную конфигурацию

Ниже учебный пример для Python 3.10 или новее и официального пакета openai. Понадобятся аккаунт ProxyAPI, разрешённая для вашего ключа модель и баланс для платного запроса.

Редакция проверила пример 17 октября на Python 3.14.8 с SDK 3.33.0: сборку запроса и чтение ответа на локальном HTTP-макете. Обращений к модели не было; успешный вызов посредника здесь не заявляется.

Создайте отдельную папку и виртуальное окружение. Команды активации ниже подходят для macOS/Linux; в Windows PowerShell используйте .venv\Scripts\Activate.ps1.

python3 -m venv .venv
source .venv/bin/activate
python -m pip install openai==3.33.0
python -m pip show openai

Последняя команда покажет установленную версию. После своей проверки зафиксируйте именно её в зависимостях проекта, чтобы следующая установка не меняла клиент незаметно. Методы и параметры примера сверены с официальным SDK и Responses у ProxyAPI. В Windows вместо python3 может понадобиться py -3.

Ключ храните в переменной окружения PROXY_API_KEY, а не в исходнике или браузерном коде. Для локального запуска в macOS/Linux или PowerShell ключ можно ввести через скрытый запрос в приведённом ниже коде. В рабочем приложении задайте PROXY_API_KEY через хранилище секретов или настройки запуска. Не помещайте значение ключа в снимки экрана, отчёты об ошибках и общий журнал запросов.

У ProxyAPI полный идентификатор содержит разработчика и имя модели. Запись openai/gpt-6.1-sol есть в публичном прайсе на дату проверки. Перед запуском сверьте доступность в своём аккаунте и ограничения ключа: наличие общей записи не означает разрешение для каждого ключа.

Минимальный запрос на Python

Сохраните код в check_proxy.py внутри созданной папки. Запустите python check_proxy.py; если переменная с ключом не задана, программа запросит его без показа символов.

import os
from getpass import getpass
from openai import OpenAI

client = OpenAI(
    api_key=os.environ.get("PROXY_API_KEY") or getpass("Ключ ProxyAPI: "),
    base_url="https://api.proxyapi.ru/v1",
    timeout=60.0,
    max_retries=0,
)

response = client.responses.create(
    model="openai/gpt-6.1-sol",
    input="Назови три поля карточки товара без пояснений.",
)
print("Статус:", response.status)
print(response.output_text)
print(response.usage)

Ожидается статус completed, текст с тремя полями и статистика запроса. Если статус другой или текст пуст, переходите к диагностике ниже, даже при успешном HTTP-ответе. Точная формулировка ответа не фиксирована, а наличие текста ещё не доказывает поддержку инструментов. Повторы отключены для первой проверки, чтобы повторный запрос не скрывал исходную ошибку и не затруднял разбор списаний.

Тайм-аут в примере — настройка клиента, а не измеренная скорость модели. Если запрос завершился по тайм-ауту, сначала выясните его состояние у поставщика, прежде чем повторять операцию. Не следует считать отсутствие ответа доказательством того, что запрос не обрабатывался.

Для HTTP-клиента тот же минимальный запрос выглядит так; здесь PROXY_API_KEY должна быть заранее задана в окружении. Вариант рассчитан на оболочку macOS/Linux и curl с поддержкой --fail-with-body; для первого запуска достаточно Python-примера:

curl --fail-with-body --max-time 60 \
  'https://api.proxyapi.ru/v1/responses' \
  -H "Authorization: Bearer $PROXY_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"model":"openai/gpt-6.1-sol","input":"Назови три поля карточки товара без пояснений."}'

Запуск каждого примера создаёт отдельный запрос и может привести к списанию. Для первичной проверки выберите один способ. Ответ HTTP содержит структуру output, тогда как официальный SDK предоставляет удобное поле output_text; обработчик Chat Completions с choices[0] сюда переносить нельзя.

Возвращайте функции по одной

После обычного текста проверьте обязательный формат результата. Если приложение ожидает JSON, недостаточно увидеть похожий на него текст: нужен разбор и проверка требуемых полей. Сохраните пример некорректного входа, чтобы проверить поведение при недостатке данных.

Затем подключите один безопасный инструмент, который не меняет внешнее состояние. Проверьте, как приложение распознаёт вызов, передаёт результат и получает завершённый ответ. Для операций с побочными действиями нужны отдельные правила подтверждения и защиты от повторного выполнения.

Потоковую выдачу проверяйте отдельно. События Responses не следует разбирать как фрагменты Chat Completions: у них разные структуры. Обработчик должен различать текст, вызовы инструментов, завершение и ошибку, а не просто дописывать любое поле в строку.

Для нативного Claude API выбирайте блоки по их типу, не предполагая, что первый блок обязательно содержит текст. Если приложение идёт через преобразование посредника, сравните его документацию с тем, что реально приходит. Пример успешного простого текста не подтверждает правильность такого преобразования для всех функций.

Разберите ошибку до следующей попытки

Наблюдение Что проверить Следующее действие
Ошибка импорта openai Активировано ли окружение, в которое установили пакет Повторить установку в нужном окружении
HTTP 401 Ключ относится к этому сервису и не отозван Исправить ключ; не публиковать его в отчёте
HTTP 400 или ошибка модели Полный ID, метод, названия параметров Сравнить с минимальным примером и документацией
HTTP 429 Сообщение об ограничении и лимиты аккаунта Дождаться указанного срока либо уменьшить нагрузку
Тайм-аут или обрыв Состояние запроса и возможное списание Уточнить результат перед повтором

Код статуса помогает сузить поиск, но не доказывает единственную причину. Для ответа посредника учитывайте и его сообщение об ошибке.

При ошибке сохраните HTTP-статус, безопасную часть сообщения, идентификатор запроса, модель и метод. Уберите ключ, содержимое личных документов и другие секреты. Этих данных обычно достаточно, чтобы начать различать неверный ID, недопустимый параметр и ограничения аккаунта.

Не исправляйте отказ бессистемной сменой модели. Сначала сравните запрос с минимальной схемой, затем проверьте полный идентификатор и доступность функции. Если ошибка появилась после добавления tools или настройки рассуждений, вернитесь к документации именно этой пары модели и метода.

После успешного ответа сопоставьте usage с записью в кабинете поставщика. Убедитесь, что счётчик приложения учитывает оплачиваемые части запроса и не складывает дважды уже включённые токены. Подробности расчёта — в гайде о токенах.

Перенесите проверенную конфигурацию

Зафиксируйте версию SDK, адрес, модель, параметры и обработчик ответа как один набор. Переносите сначала ограниченную часть запросов и сравнивайте ошибки с прежним вариантом. Сохраните возможность вернуть предыдущую конфигурацию целиком.

Если планируете заменить поставщика, заранее проверьте метод: VseGPT прямо указывает отсутствие /v1/responses. Этот пример нельзя перенести туда только заменой адреса.

Повторите важные проверки после смены модели или поставщика. Совместимость формата облегчает перенос, но не обещает одинаковые лимиты, задержки и доступность инструментов. Для выбора самого посредника используйте чеклист API-прокси.

FAQ о настройке SDK

Можно ли оставить старый клиент и поменять только имя модели?

Для простого запроса это иногда достаточно, но заранее обещать такой перенос нельзя. Проверьте нужный метод и допустимые параметры, особенно если приложение использует инструменты или рассуждения.

Нужен ли ключ OpenAI для приведённого примера?

В примере используется ключ ProxyAPI, потому что запрос отправляется этому посреднику. Ключи и балансы разных поставщиков не следует считать взаимозаменяемыми.

Можно ли запустить пример прямо в браузере пользователя?

Секретный API-ключ должен оставаться на сервере приложения. Браузерный код доступен пользователю, поэтому помещение туда ключа раскрывает его и позволяет расходовать связанный баланс.

Почему текст пришёл, а приложение считает запрос ошибочным?

Проверьте формат, который ожидает обработчик. Код для Chat Completions может искать choices, хотя Responses возвращает другую структуру; успешный HTTP-ответ не исправляет такую несовместимость.