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

46 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Вопрос: 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 это работает одной строкой:
```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.