NODEDC_1C/llm_normalizer/README.md

167 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# NDC AI First Layer (LLM Normalizer Playground)
Локальный модуль `front + back` для нормализации бухгалтерских запросов через OpenAI token.
Ключевые свойства:
- русифицированный GUI (терминология `NDC`);
- backend-proxy (ключ не уходит во фронт);
- Responses API + structured JSON schema `normalized_query_v1` / `normalized_query_v2` / `normalized_query_v2_0_1`;
- trace/history/eval;
- совместимый `accounting-agent` namespace для будущей интеграции в `dc_node`.
## Быстрый запуск (Windows)
1. Опционально: отдельная среда Miniconda
```powershell
conda create -n ndc-gui nodejs=22 -y
conda activate ndc-gui
```
2. Backend
```powershell
cd X:\1C\NDC_1C\llm_normalizer\backend
npm install
npm run dev
```
3. Frontend (в новом терминале)
```powershell
cd X:\1C\NDC_1C\llm_normalizer\frontend
npm install
npm run dev
```
4. Открыть GUI
- `http://localhost:5174`
Backend по умолчанию:
- `http://localhost:8787`
Чтобы включить live-probe в 1С через MCP (для `hybrid_store_plus_live` и `live_mcp_drilldown`), задайте переменные перед запуском backend:
```powershell
$env:FEATURE_ASSISTANT_MCP_RUNTIME_V1='1'
$env:ASSISTANT_MCP_PROXY_URL='http://127.0.0.1:6003'
$env:ASSISTANT_MCP_CHANNEL='default'
```
## Запуск из одной папки (VS Code)
Открой в VS Code папку:
- `X:\1C\NDC_1C\llm_normalizer`
Дальше 2 варианта:
1. Через Tasks:
- `Terminal -> Run Task -> NDC: Install All` (первый раз)
- `Terminal -> Run Task -> NDC: Dev All (Backend + Frontend)`
2. Через одну команду в терминале:
```powershell
cd X:\1C\NDC_1C\llm_normalizer
start-dev.cmd
```
С live-MCP (прокси 1С на `127.0.0.1:6003`):
```powershell
cd X:\1C\NDC_1C\llm_normalizer
start-dev-mcp.cmd
```
Или:
```powershell
cd X:\1C\NDC_1C\llm_normalizer
npm.cmd run dev:all
```
## Основные endpoint-ы
- `POST /api/openai/test-connection`
- `POST /api/normalize`
- `POST /api/eval/run`
- `GET /api/history`
- `GET /api/history/:trace_id`
- `POST /api/presets/save`
- `GET /api/presets`
- `GET /api/health`
- `GET /api/accounting-agent/v1/health`
## Где хранятся данные
- traces: `llm_normalizer/data/traces`
- presets: `llm_normalizer/data/presets`
- eval cases/reports: `llm_normalizer/data/eval_cases`
Для `POST /api/eval/run` поддержан batch-ввод через `rawQuestions` (разделитель `;` или пустая строка).
## Тесты backend
```powershell
cd X:\1C\NDC_1C\llm_normalizer\backend
npm test
```
## История автопрогонов и разметка
В интерфейсе есть отдельный режим `История автопрогонов` с операционным циклом:
1. Настроить генерацию вопросов (режим, количество, личность, prompt личности).
2. Сгенерировать пачку вопросов.
3. Отредактировать вопросы перед запуском.
4. Запустить асинхронный прогон (`assistant_stage1`, `single-pass-strict`).
5. Смотреть диалог прогона в live-режиме (polling статуса + сообщения по кейсам).
6. Разметить ответы ассистента:
- рейтинг `1..5`,
- комментарий,
- `manual_case_decision`,
- автор.
7. Отметить кейс выполненным (`resolved`) или вернуть в открытые.
8. Смотреть пост-анализ и очереди фиксов по категориям.
### Важный момент по `qwen_seed`
`qwen_seed` использует тот же активный LLM-контур подключения, что и ответы ассистента
(тот же provider/model/baseUrl), но в другой роли: генератор вопросов.
### Основные API для автопрогонов
- `GET /api/autoruns/history`
- `GET /api/autoruns/history/:run_id`
- `GET /api/autoruns/history/:run_id/case/:case_id/dialog`
- `GET /api/autoruns/annotations`
- `POST /api/autoruns/annotations`
- `PATCH /api/autoruns/annotations/:annotation_id`
- `GET /api/autoruns/manual-decision-schema`
- `GET /api/autoruns/post-analysis`
- `GET /api/autoruns/autogen/history`
- `GET /api/autoruns/autogen/personality-catalog`
- `POST /api/autoruns/autogen/generate`
- `POST /api/eval/run-async/start`
- `GET /api/eval/run-async/:job_id`
### Где лежат данные автопрогонов
- аннотации и ручная разметка:
- `llm_normalizer/data/autorun_annotations/annotations.json`
- история генераций:
- `llm_normalizer/data/autorun_generators/history.json`
- сгенерированные кейс-сеты (если включено сохранение):
- `llm_normalizer/data/eval_cases/*.json`
- сессии диалогов ассистента по кейсам:
- `llm_normalizer/data/assistant_sessions/*.json`
### Канонические техдоки
- `docs/TECH/assistant_canon.md`
- `docs/TECH/capabilities_registry.json`
- `docs/TECH/manual_case_decision_schema.json`
- `docs/TECH/ui_markup_system.md`
- `docs/TECH/history_colibration.md`