Настройка сверена с публичной документацией приложения и API429. Полный запуск в LangChain Python, импорт в установленный клиент и агентные сценарии здесь не подтверждены. Начните с короткого несекретного запроса и проверьте ответ в своей версии.
Параметры подключения
- Протокол
- OpenAI Chat Completions
- Режим соединения
- LangChain ChatOpenAI
- Base URL
https://gateway.api429.com/v1- Точный ID для проверки
gemini-3.8-flash
Доступ конкретного ключа проверяйте через GET /v1/models. Публичная карточка модели не гарантирует её доступность в приложении. Храните ключ в предусмотренном приложением защищённом хранилище или в окружении текущей сессии. Не передавайте значение ключа аргументом команды и не сохраняйте его в общих файлах проекта.
Отдельное окружение и фиксированный пакет
Подготовьте отдельное виртуальное окружение Python версии 3.10 или новее и установите langchain-openai==1.7.2. Фиксация версии нужна потому, что SDK меняет поля при построении HTTP-запроса. Перед обновлением повторите проверку фактического тела и поведения при ошибках; пример для другой версии нельзя считать эквивалентным только по совпадению имён аргументов. Не устанавливайте пакет поверх рабочего окружения без обычной проверки зависимостей проекта.
Используется адаптер ChatOpenAI из langchain_openai, а не Google-адаптер. Он отправляет OpenAI-совместимый запрос к API429 с точным ID модели Google. Из этого не следует доступность всех возможностей OpenAI или нативного Google SDK. Отдельные инструменты, embeddings, Responses, мультимодальность и агентные графы требуют собственных контрактов и проверок. Начальный пример намеренно ограничен одним текстовым invoke без внешних интеграций.
Параметры соединения и секрет
Укажите base_url=https://gateway.api429.com/v1, api_key через скрытый getpass и use_responses_api=False. Последний параметр явно сохраняет путь Chat Completions. max_retries=0 отключает автоматические повторы клиента; timeout=30 задаёт ожидание сети, а не гарантированный предел оплаты или количества токенов. streaming=False и stream_usage=False убирают потоковый режим и дополнительные stream options из начального запроса. temperature=None оставляет это поле незаданным.
Не используйте переменную OPENAI_API_KEY от другого проекта как случайный источник авторизации. В примере ключ передаётся явно после скрытого ввода, без сохранения в исходнике и аргументах процесса. Перед запуском проверьте настройки трассировки своего окружения: сторонние callbacks и наблюдаемость могут сохранять запросы и ответы. Для первой проверки используйте только короткий несекретный текст и не печатайте заголовки или полное содержимое исключений.
Почему max_tokens передаётся через extra_body
У проверенного пакета параметр конструктора max_tokens преобразуется в max_completion_tokens. Для опубликованного Chat Completions примера API429 нужен max_tokens, поэтому конструктор оставляет этот параметр незаданным, а extra_body содержит только max_tokens: 256. Одновременно задавать оба варианта не следует: это меняет проверенное тело и создаёт неоднозначность. Не переносите такую рецептуру в Responses или нативный Google метод, где используются другие поля.
Реальный пакет версии 1.7.2 проверен offline через httpx.MockTransport при заблокированных сетевых сокетах. Зафиксирован POST /v1/chat/completions с model, stream, messages и max_tokens. Контрольный вариант с constructor max_tokens отправил max_completion_tokens. Отдельный mock-ответ 429 вызвал ровно одно обращение при max_retries=0. Это доказательство сериализации и политики повторов в изолированном тесте, а не выполнения запроса шлюзом или успешной генерации текста.
Ручной запуск, диагностика и бюджет
Перед invoke проверьте доступ точного ID для своего ключа по документации API429. Первый запуск отправит платный запрос; успешная установка пакета и разбор Python-синтаксиса его не заменяют. При 401 проверьте выбранный ключ, при 404 — base URL и путь, при ошибке поля — фактическое тело с удалёнными чувствительными данными. При 429 остановите ручную проверку и выясните причину ограничения, не добавляя скрытый цикл повторов в прикладной код.
После ответа сопоставьте использование с личным кабинетом и отдельно решите, нужен ли более длинный контекст. Числовой пример ниже считает гипотетическую нагрузку именно модели Google; он не заимствует ставки OpenAI из названия адаптера. timeout и max_tokens не ограничивают суммарные расходы приложения при последующих вызовах. Кеш, инструменты, сервисы наблюдаемости и дополнительные действия цепочки требуют отдельной оценки и не входят в этот начальный пример.
Настройки и примеры
Создание окружения и фиксированная версия
python3 -m venv .venv
. .venv/bin/activate
python -m pip install langchain-openai==1.7.2Один ручной Chat Completions запрос; запуск оплачивается
"""Public example syntax checked only; running this file sends a paid request."""
from getpass import getpass
from langchain_openai import ChatOpenAI
model = ChatOpenAI(
model='gemini-3.8-flash',
base_url='https://gateway.api429.com/v1',
api_key=getpass('API429 key: '),
use_responses_api=False,
max_retries=0,
timeout=30,
streaming=False,
stream_usage=False,
temperature=None,
extra_body={'max_tokens': 256},
)
answer = model.invoke('Ответь одним предложением: что такое API?')
print(answer.content)Расход и следующие шаги
Гипотетический объём за час: 30 запросов к gemini-3.8-flash, каждый с 5 000 обычных входных и 512 выходными токенами, — около $0.05 по текущим ставкам API429. Кеш, инструменты, повторы, подписка приложения и другие сборы не включены. Дата каталога: .
Фактический расход зависит от числа запросов, длины контекста и ответов — смотрите его в личном кабинете API429.
Общий протокол OpenAI Compatible · Документация API429 · Помощь и диагностика
Оплата и тест $10
- Карта российского банка. Пополнение баланса в личном кабинете.
- Счёт для юрлиц. Безналичная оплата с закрывающими документами.
- USDT и TON. Пополнение криптовалютой.
Тест $10. Подпишитесь на наш Telegram-канал через бота — получите $10 на баланс для первых запросов. Получить $10 в боте
Частые вопросы
Почему модель Gemini подключается через ChatOpenAI?
Здесь выбирается OpenAI-совместимый Chat Completions контракт API429. Имя адаптера определяет формат запроса, а точный model и семейство Google определяют выбранную модель и расчёт токенов.
Почему нельзя задать max_tokens прямо в ChatOpenAI?
В проверенной версии 1.7.2 конструктор переименовывает его в max_completion_tokens. Пример оставляет параметр конструктора незаданным и передаёт max_tokens через extra_body.
Что именно доказала offline-проверка LangChain?
Реальный пакет сформировал ожидаемый HTTP-запрос в MockTransport при заблокированной сети. Контроль подтвердил переименование поля, а mock 429 — одно обращение. Удалённая генерация не выполнялась.
Является ли timeout=30 пределом бюджета?
Нет. Timeout задаёт ожидание запроса, а не оплату или количество следующих вызовов. Проверяйте usage и фактический расход; max_retries=0 отключает только автоматические повторы клиента.
Источники
Справочник приложения определяет его интерфейс и ограничения; документация API429 — адреса, авторизацию и клиентские методы. Дата сверки: .