Обновлено: 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-ответ не исправляет такую несовместимость.