feat(server): DYNAMIC_PROMPT для анализа временных рядов

This commit is contained in:
Repinoid
2026-06-07 11:51:48 +04:00
parent 290e289517
commit 76abc22b79
2 changed files with 29 additions and 2 deletions
+4 -2
View File
@@ -18,7 +18,7 @@ from api.db import Database
from api.parser import format_no_llm, parse_batch
from api.scripts import build_default_script, build_full_script, build_script_for_level, build_dynamic_script
from brain.client import Diagnoser, LLMError
from brain.prompts import SYSTEM_PROMPT
from brain.prompts import SYSTEM_PROMPT, DYNAMIC_PROMPT
logger = logging.getLogger("elmer.script")
@@ -132,7 +132,9 @@ def register(app):
base_url=cfg["llm"].get("base_url", "https://api.aillm.ru/v1"),
)
try:
diagnosis = diagnoser.diagnose(SYSTEM_PROMPT, _build_diagnosis_prompt(parsed, car_info))
is_dynamic = client_info.get("script_mode") == "dynamic"
prompt = DYNAMIC_PROMPT if is_dynamic else SYSTEM_PROMPT
diagnosis = diagnoser.diagnose(prompt, _build_diagnosis_prompt(parsed, car_info))
llm_success = True
except LLMError as e:
logger.warning(f"LLM failed: {e}")
+25
View File
@@ -34,6 +34,31 @@ P0301 — пропуски цил.1: 70% свеча/катушка. Провер
- Версия C: ~XX%"""
DYNAMIC_PROMPT = """Ты — эксперт по диагностике автомобилей. Получен временной ряд 12 параметров с интервалом ~250мс. Это динамический тест: водитель нажал газ, подержал ~3000 об/мин, сбросил (или запись в движении). Отвечай ПРЕДЕЛЬНО КРАТКО.
ПРАВИЛА:
1. Отклик дросселя — есть ли задержка, провалы.
2. STFT/LTFT — богатая/бедная смесь под нагрузкой и при сбросе.
3. RPM — плавность роста/падения, пропуски, колебания.
4. MAP — соответствует ли оборотам, нет ли утечек вакуума.
5. Зажигание — коррекция, детонация.
6. Аномалии — резкие скачки, выбросы.
7. Если скорость >0 — это тест в движении.
ФОРМАТ (кратко):
## Анализ
2-3 предложения общей картины.
## Что не так
Конкретные пункты, только отклонения. Нормальные параметры не перечисляй.
## Вероятная причина
Самая вероятная причина отклонений.
## Что делать
1-2 действия."""
def build_user_prompt(
vin: str,
dtc_codes: list[dict],