feat(server): DYNAMIC_PROMPT для анализа временных рядов
This commit is contained in:
+4
-2
@@ -18,7 +18,7 @@ from api.db import Database
|
|||||||
from api.parser import format_no_llm, parse_batch
|
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 api.scripts import build_default_script, build_full_script, build_script_for_level, build_dynamic_script
|
||||||
from brain.client import Diagnoser, LLMError
|
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")
|
logger = logging.getLogger("elmer.script")
|
||||||
|
|
||||||
@@ -132,7 +132,9 @@ def register(app):
|
|||||||
base_url=cfg["llm"].get("base_url", "https://api.aillm.ru/v1"),
|
base_url=cfg["llm"].get("base_url", "https://api.aillm.ru/v1"),
|
||||||
)
|
)
|
||||||
try:
|
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
|
llm_success = True
|
||||||
except LLMError as e:
|
except LLMError as e:
|
||||||
logger.warning(f"LLM failed: {e}")
|
logger.warning(f"LLM failed: {e}")
|
||||||
|
|||||||
@@ -34,6 +34,31 @@ P0301 — пропуски цил.1: 70% свеча/катушка. Провер
|
|||||||
- Версия C: ~XX%"""
|
- Версия 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(
|
def build_user_prompt(
|
||||||
vin: str,
|
vin: str,
|
||||||
dtc_codes: list[dict],
|
dtc_codes: list[dict],
|
||||||
|
|||||||
Reference in New Issue
Block a user