Редактировать soma_evaluate.py

This commit is contained in:
Markov Andrey
2026-06-30 20:58:00 +00:00
parent b01c66cdd0
commit 9d7395980e

View File

@@ -6,7 +6,7 @@ SOMA-анализ (LLM-as-judge) для оценки качества ответ
import json
import logging
from typing import Dict, Any, Optional
from typing import Dict, Any
from rag.services.giga_client import GigaClient
from rag.config_models import AppConfig
@@ -61,15 +61,13 @@ async def soma_evaluate(
default_result["error"] = "Отсутствует промпт soma_evaluate"
return default_result
# Формируем полный промпт
full_prompt = prompt_template.format(
query=query,
context=context[:3000] if context else "Нет контекста",
answer=answer,
)
# Параметры из конфига (можно сделать отдельную секцию)
temperature = getattr(config, 'soma_temperature', 0.1) # низкая для детерминизма
temperature = getattr(config, 'soma_temperature', 0.1)
timeout = getattr(config, 'soma_timeout', 30)
try:
@@ -79,14 +77,12 @@ async def soma_evaluate(
system_prompt=None,
file_id=None,
temperature=temperature,
timeout=timeout, # нужно добавить timeout в GigaClient.chat (если нет, игнорировать)
timeout=timeout,
)
# Ожидаем JSON
data = json.loads(response.strip())
scores = data.get("scores", {})
feedback = data.get("feedback", "")
# Приводим оценки к числам
for key in scores:
try:
scores[key] = float(scores[key])
@@ -94,7 +90,6 @@ async def soma_evaluate(
scores[key] = 3.0
overall = sum(scores.values()) / len(scores) if scores else 3.0
# Порог можно задать в конфиге
threshold = getattr(config, 'soma_threshold', 3.5)
verdict = "pass" if overall >= threshold else "fail"