autoreg-skills-max: initial public release (restored, redacted, hardened)

This commit is contained in:
baradok60915d52e8425
2026-10-20 02:16:32 +03:00
commit f58eafeb48
565 changed files with 60064 additions and 0 deletions

View File

@@ -0,0 +1,88 @@
# Gateway Verification Checklist
После создания/перезапуска шлюза — полный цикл проверки всех endpoint-ов.
## 1. Health Check
```bash
curl -s http://127.0.0.1:PORT/health \
-H "Authorization: Bearer $KEY" | python -m json.tool
```
Ожидаемый ответ: `pool.total_accounts`, `pool.available`, `models`, `gateway_key`.
## 2. Non-Streaming Chat (N запросов = размер пула)
```bash
for i in $(seq 1 N); do
curl -s -X POST http://127.0.0.1:PORT/v1/chat/completions \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-5-nano","messages":[{"role":"user","content":"Say OK"}],"max_tokens":5}' \
| python -c "import sys,json; print(json.load(sys.stdin)['choices'][0]['message']['content'][:30])"
done
```
**Проверяем**: все N запросов возвращают 200 + контент (ротация работает).
## 3. Streaming
```bash
curl -s -N -X POST http://127.0.0.1:PORT/v1/chat/completions \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-5-nano","messages":[{"role":"user","content":"Say hi"}],"max_tokens":10,"stream":true}' \
--max-time 20
```
**Проверяем**: NDJSON/SSE чанки с `data:` + завершающий `data: [DONE]`.
**ВАЖНО**: не тестировать streaming через `execute_code` (Python `resp.read()` вешает инструмент). Только `curl -N`.
## 4. Tool Use
```bash
curl -s -X POST http://127.0.0.1:PORT/v1/chat/completions \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-5-nano","messages":[{"role":"user","content":"What is 15+27? Use calculator."}],"tools":[{"type":"function","function":{"name":"calculator","parameters":{"type":"object","properties":{"expr":{"type":"string"}}}}}],"tool_choice":"auto","max_tokens":100}'
```
**Проверяем**: `finish_reason: "tool_calls"` + `tool_calls[]` с именем функции и аргументами.
## 5. Pool Stats
```bash
curl -s http://127.0.0.1:PORT/health \
-H "Authorization: Bearer $KEY" \
| python -c "import sys,json; d=json.load(sys.stdin); [print(f'{a[\"name\"]}: {a[\"requests\"]} reqs, {a[\"errors\"]} errs, avail={a[\"available\"]}') for a in d['pool']['accounts']]"
```
**Проверяем**: все аккаунты `available=true`, ошибок нет, запросы распределены.
## 6. Models
```bash
curl -s http://127.0.0.1:PORT/v1/models \
-H "Authorization: Bearer $KEY" \
| python -c "import sys,json; d=json.load(sys.stdin); print(f'{len(d[\"data\"])} models')"
```
## 7. Gateway Key Recovery
Если 401 — ключ не в коде, а в state-файле:
```bash
python -c "import json; print(json.load(open('PROJECT_gateway_state.json'))['gateway_key'])"
```
## Expected Full Output
```
HEALTH: 200 | pool: 10 total, 10 avail
NON-STREAMING: 10/10 passed
STREAMING: chunks > 0, text: "Hi there!..."
TOOL USE: 1 tool call, calculator({"expr":"15+27"})
POOL: guest-1..N: 1-2 reqs, 0 errs, avail=True
MODELS: 35
```