From 81b5d1eb964b8e820b547a16f6be02be67cf4422 Mon Sep 17 00:00:00 2001 From: Wenjie Zhang Date: Thu, 7 May 2026 09:49:01 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BD=BF=E7=94=A8=20json=5Frepair=20?= =?UTF-8?q?=E6=9B=BF=E4=BB=A3=20json=20=E5=A4=84=E7=90=86=20LLM=20?= =?UTF-8?q?=E8=AF=84=E5=88=A4=E7=BB=93=E6=9E=9C=EF=BC=8C=E5=A2=9E=E5=BC=BA?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E5=A4=84=E7=90=86=E8=83=BD=E5=8A=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/package/yuxi/knowledge/eval/metrics.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/backend/package/yuxi/knowledge/eval/metrics.py b/backend/package/yuxi/knowledge/eval/metrics.py index 812d137a..55b0c09c 100644 --- a/backend/package/yuxi/knowledge/eval/metrics.py +++ b/backend/package/yuxi/knowledge/eval/metrics.py @@ -3,7 +3,7 @@ RAG评估指标计算工具 简化版:只保留Recall/F1(检索)和 LLM Judge(答案准确性) """ -import json +import json_repair import textwrap from typing import Any @@ -68,11 +68,12 @@ class AnswerMetrics: 忽略措辞、标点符号或格式上的细微差异。 只关注核心事实是否准确包含。 - 请返回以下JSON格式的结果(不要包含其他文本): + 请返回以下JSON格式的结果(不要包含其他文本、Markdown 或注释): {{ - "score": 1.0, // 如果答案正确返回 1.0, 错误返回 0.0 + "score": 1.0, "reasoning": "简要说明判定理由" }} + score 只能是 1.0 或 0.0。 """) try: response = await judge_llm.call(prompt, stream=False) @@ -85,7 +86,7 @@ class AnswerMetrics: content = content[:-3] content = content.strip() - result = json.loads(content) + result = json_repair.loads(content) return {"score": float(result.get("score", 0.0)), "reasoning": result.get("reasoning", "")} except Exception as e: logger.error(f"LLM 评判失败: {e}")