Files
contracts/History/features/llm-http2-question.md
T

2.1 KiB
Raw Blame History

Вопрос: HTTP/2 из Python к aillm.ru

Контекст

Flask-приложение в контейнере python:3.12-slim, деплоится через облачную платформу. Нужно отправлять промпты к LLM API: https://api.aillm.ru/v1/chat/completions (ключ: sk-ucI5YvOticoOQ9Kuj5K9mQ, модель: gpt-oss-120b).

Проблема

api.aillm.ru за ddos-guard, который требует HTTP/2 от облачных IP. С локальной машины работает любой HTTP-клиент (requests, curl без --http2), но из облачного контейнера — только HTTP/2.

Что пробовали, что НЕ сработало:

  • requests — HTTP/1.1, ddos-guard возвращает ложный 401
  • httpx[http2] в requirements.txt — платформа не парсит [http2], h2 не ставится
  • curl через subprocess — curl не установлен в slim-контейнере, apt недоступен
  • свой HTTP/2 клиент на h2+socket — слишком сложно, заказчик против

Вопрос

Как в Python из slim-контейнера сделать HTTP/2 POST-запрос к aillm.ru?

Требования:

  1. Никакого apt/curl — только pip
  2. Просто, без велосипедов на сокетах
  3. Работает в python:3.12-slim
  4. Ключ передаётся как Authorization: Bearer sk-ucI5YvOticoOQ9Kuj5K9mQ
  5. Тело: JSON с model, messages, max_tokens, temperature

Доступные модели на aillm.ru: gpt-oss-120b, qwen3.6-27b-fp8, qwen3-6-27b-fp8-opt, whisper-large-v3-turbo.

Для справки

В Node.js это работает одной строкой:

await fetch('https://api.aillm.ru/v1/chat/completions', {
  method: 'POST',
  headers: { Authorization: `Bearer ${KEY}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({ model: 'gpt-oss-120b', messages: [...] })
});

Нужен такой же простой способ в Python.