LLM API proxy — один эндпоинт для клиентов, который маршрутизирует запросы к разным LLM-провайдерам с разными API-ключами и прокси.
ADMIN_PASSWORD=my_secure_admin_password
PORT=20129
HOST=127.0.0.1
SQLITE_URL=sqlite+aiosqlite:///./myllmapi.db
LOG_LEVEL=info| Переменная | По умолчанию | Описание |
|---|---|---|
ADMIN_PASSWORD |
my_secure_admin_password |
Пароль для входа в админку |
PORT |
20129 |
Порт сервера |
HOST |
127.0.0.1 |
Хост |
SQLITE_URL |
sqlite+aiosqlite:///./myllmapi.db |
Путь к SQLite-базе |
LOG_LEVEL |
info |
Уровень логирования uvicorn: debug, info, warning, error, critical |
Все переменные опциональны.
poetry install
poetry run uvicorn app.main:app --host 127.0.0.1 --port 20129Открой http://127.0.0.1:20129/admin, войди с паролем из .env (admin_password).
Три сущности:
- Providers — LLM-провайдеры (OpenRouter, OpenAI, etc.) и их base URL.
- Accounts — аккаунты с API-ключами, привязанные к провайдерам. Опционально — прокси (
proxy_url). - Routes (Access Keys) — ключи доступа для клиентов. Каждый ключ привязан к связке Account + Provider.
Клиенты шлют OpenAI-совместимые запросы на /v1/..., используя Access Key как Bearer-токен:
curl http://127.0.0.1:20129/v1/chat/completions \
-H "Authorization: Bearer <access_key>" \
-H "Content-Type: application/json" \
-d '{"model": "gpt-4o", "messages": [{"role": "user", "content": "Hello"}]}'Прокси подменяет Authorization на реальный API-ключ провайдера, подставляет прокси (если задан) и пробрасывает запрос.