From 490d8b6d1131d28e712fd662cca04e47ba54672a Mon Sep 17 00:00:00 2001 From: Repinoid Date: Wed, 7 Oct 2026 13:51:23 +0300 Subject: [PATCH] =?UTF-8?q?docs:=20Dockerfile=20(=D0=BA=D0=BE=D0=BF=D0=B8?= =?UTF-8?q?=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BD=D0=BE=D0=B2?= =?UTF-8?q?=D1=8B=D1=85=20=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D0=B5=D0=B9)=20+?= =?UTF-8?q?=20README=20(=D1=8D=D0=BD=D0=B4=D0=BF=D0=BE=D0=B8=D0=BD=D1=82?= =?UTF-8?q?=20=D0=B8=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD?= =?UTF-8?q?=D1=8B=D0=B5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 2 +- README.md | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index 770ced0..3c98179 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,7 +5,7 @@ WORKDIR /app COPY package.json package-lock.json ./ RUN npm ci --omit=dev -COPY server.js ./ +COPY server.js assist.js search.js stage1.js stage2.js orchestrator.js ./ ENV NODE_ENV=production diff --git a/README.md b/README.md index 77cbabd..57c9372 100644 --- a/README.md +++ b/README.md @@ -5,3 +5,40 @@ Репозиторий создан как основа для документации по проекту Terraform (провайдеры, модули, схемы, история изменений и т.д.). Содержимое будет дополняться по мере развития проекта. + +## AI-ассистент документации + +Сервис — обратный прокси статики документации и эндпоинт AI-ассистента. + +### Эндпоинт + +`POST //_api/assist` — тело `{"question": "текст вопроса"}`. + +Ответ 200: +```json +{ + "answer": "ответ по шаблону Роль/Задача/Контекст/Требования/Ограничения", + "sources": [{"title": "...", "url": "//..."}], + "meta": {"model": "...", "resource_type": "nubes_...", "elapsed_ms": 1234} +} +``` + +Ошибки (JSON `{"error": code, "message": ...}`): 400/413/415 (невалидный ввод), 429 (rate-limit, `Retry-After`), 502 (`bad_llm_output`), 503 (busy / индекс недоступен). + +### Переменные окружения + +| Имя | По умолчанию | Назначение | +|---|---|---| +| `VM_DOCS_BASE_URL` | — (обязательна) | базовый URL статики (upstream) | +| `LLM_BASE_URL` | — | `https://api.aillm.ru` | +| `LLM_API_KEY` | — | ключ ЛЛМ (брать из Secret, не логировать) | +| `LLM_MODEL` | `gpt-oss-120b` | модель | +| `ASSIST_MAX_CONCURRENT` | `4` | семафор одновременных вызовов ЛЛМ | +| `ASSIST_TOTAL_DEADLINE_MS` | `40000` | общий дедлайн запроса | +| `ASSIST_LLM_TIMEOUT_MS` | `25000` | таймаут одного вызова ЛЛМ | +| `ASSIST_RATE_PER_WINDOW` | `6` | лимит запросов на IP за окно | +| `ASSIST_RATE_WINDOW_MS` | `60000` | окно rate-limit | +| `ASSIST_REPLICAS` | `1` | число реплик (для деления лимита) | +| `ASSIST_MAX_BODY` | `2048` | макс. размер тела запроса | +| `ASSIST_TRUSTED_PROXY_CIDR` | — | CIDR доверенного proxy (для `X-Forwarded-For`) | +