88 lines
2.6 KiB
Markdown
88 lines
2.6 KiB
Markdown
# lazy
|
||
|
||
`lazy` - репозиторий-обертка для одновременного запуска двух сервисов:
|
||
|
||
- `ai` - AI Router (OpenAI-compatible API роутер)
|
||
- `megapt` - URL-провайдер токена для `codex-responses` (`/chatgpt/token`)
|
||
|
||
Сервисы запускаются вместе через `compose.yml`.
|
||
|
||
## Что здесь находится
|
||
|
||
- `ai/` - git-submodule с AI Router
|
||
- `megapt/` - git-submodule с token URL provider
|
||
- `compose.yml` - оркестрация обоих сервисов
|
||
- `data/` - персистентные данные контейнеров
|
||
|
||
## Быстрый старт
|
||
|
||
1. Инициализируйте submodules:
|
||
|
||
```bash
|
||
git submodule update --init --recursive
|
||
```
|
||
|
||
2. Подготовьте конфиги для роутера в `data/ai/`:
|
||
|
||
- `data/ai/config.yml`
|
||
- `data/ai/auth.yml`
|
||
- `data/ai/users.yml`
|
||
|
||
3. Убедитесь, что в `auth.yml` для провайдера `openai` указан URL на `megapt`:
|
||
|
||
```yaml
|
||
providers:
|
||
openai:
|
||
url: http://megapt/chatgpt/token
|
||
```
|
||
|
||
4. Поднимите оба сервиса:
|
||
|
||
```bash
|
||
docker compose -f compose.yml up -d --build
|
||
```
|
||
|
||
5. Проверьте, что все работает:
|
||
|
||
```bash
|
||
curl http://127.0.0.1:8239/v1/models
|
||
curl http://127.0.0.1:8239/v1/chat/completions \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"model":"openai/gpt-5.3-codex","messages":[{"role":"user","content":"hi"}],"stream":false}'
|
||
```
|
||
|
||
## Как это работает
|
||
|
||
- `megapt` поднимает HTTP endpoint `GET /chatgpt/token`.
|
||
- `ai` при обращении к `codex-responses` берет токен по URL из `auth.yml`.
|
||
- Пользователь ходит только в `ai`, который маршрутизирует запросы в нужные апстримы.
|
||
|
||
## Compose сервисы
|
||
|
||
`compose.yml` поднимает:
|
||
|
||
- `ai`
|
||
- build: `ai`
|
||
- порт: `8239:80`
|
||
- volume: `./data/ai:/data`
|
||
- restart: `unless-stopped`
|
||
|
||
- `megapt`
|
||
- build: `megapt`
|
||
- env: `USAGE_REFRESH_THRESHOLD=85`
|
||
- volume: `./data/megapt:/data`
|
||
|
||
## Полезные команды
|
||
|
||
```bash
|
||
docker compose -f compose.yml ps
|
||
docker compose -f compose.yml logs -f ai
|
||
docker compose -f compose.yml logs -f megapt
|
||
docker compose -f compose.yml down
|
||
```
|
||
|
||
## Примечания
|
||
|
||
- Секреты и токены не коммитьте в git.
|
||
- Директория `data/` должна быть персистентной.
|
||
- Если меняете код в submodule, не забудьте закоммитить изменения в самом submodule и обновить его ссылку в `lazy`.
|