This commit is contained in:
commit
3cafa163c4
8 changed files with 144 additions and 0 deletions
6
.gitmodules
vendored
Normal file
6
.gitmodules
vendored
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
[submodule "ai"]
|
||||
path = ai
|
||||
url = https://git.wzray.com/ai/ai
|
||||
[submodule "megapt"]
|
||||
path = megapt
|
||||
url = https://git.wzray.com/ai/megapt
|
||||
88
README.md
Normal file
88
README.md
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
# 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`.
|
||||
1
ai
Submodule
1
ai
Submodule
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 2b416d104d3e81777076fb24bd72e6e3501e071b
|
||||
17
compose.yml
Normal file
17
compose.yml
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
services:
|
||||
ai:
|
||||
build: ai
|
||||
labels:
|
||||
traefik.host: ai
|
||||
traefik.external: true
|
||||
ports:
|
||||
- 8239:80
|
||||
volumes:
|
||||
- ./data/ai:/data
|
||||
restart: unless-stopped
|
||||
megapt:
|
||||
build: megapt
|
||||
environment:
|
||||
USAGE_REFRESH_THRESHOLD: 85
|
||||
volumes:
|
||||
- ./data/megapt:/data
|
||||
7
data/ai/auth.yml
Normal file
7
data/ai/auth.yml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
providers:
|
||||
kilocode:
|
||||
token: public
|
||||
opencode:
|
||||
token: public
|
||||
openai:
|
||||
url: http://megapt/chatgpt/token
|
||||
21
data/ai/config.yml
Normal file
21
data/ai/config.yml
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
providers:
|
||||
zai:
|
||||
url: https://api.z.ai/api/coding/paas/v4
|
||||
type: openai-completions
|
||||
whitelist:
|
||||
- glm-5
|
||||
kilocode:
|
||||
url: https://api.kilo.ai/api/openrouter
|
||||
type: openai-completions
|
||||
whitelist:
|
||||
- '*:free'
|
||||
opencode:
|
||||
url: https://opencode.ai/zen/v1
|
||||
type: openai-completions
|
||||
whitelist:
|
||||
- '*-free'
|
||||
openai:
|
||||
url: https://chatgpt.com/backend-api
|
||||
type: codex-responses
|
||||
whitelist:
|
||||
- gpt-5.3-codex
|
||||
3
data/ai/users.yml
Normal file
3
data/ai/users.yml
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
users:
|
||||
example:
|
||||
token: test
|
||||
1
megapt
Submodule
1
megapt
Submodule
|
|
@ -0,0 +1 @@
|
|||
Subproject commit ccd4d82194c0b2f153757d2db61272cfd8522e6e
|
||||
Loading…
Add table
Add a link
Reference in a new issue