From 22ef271c898a0389a4408f7a5cff24c7ae2e2785 Mon Sep 17 00:00:00 2001 From: minecraft1024a Date: Sat, 18 Oct 2025 21:57:27 +0800 Subject: [PATCH] =?UTF-8?q?fix(chat):=20=E4=BF=AE=E5=A4=8D=E7=9F=A5?= =?UTF-8?q?=E8=AF=86=E5=BA=93=E7=9B=B8=E5=85=B3=E6=80=A7=E5=BE=97=E5=88=86?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 当知识库返回的相关性得分(relevance)不是有效的浮点数时,格式化字符串 `f"{relevance:.2f}"` 会引发 `TypeError` 或 `ValueError`,导致程序崩溃。 本次修改通过添加 `try-except` 块来捕获潜在的异常。如果 `relevance` 可以成功转换为浮点数,则将其格式化为两位小数;如果转换失败,则直接使用其原始字符串表示形式,从而增强了代码的健壮性,避免了因数据类型不匹配而导致的运行时错误。 --- src/chat/utils/prompt.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/chat/utils/prompt.py b/src/chat/utils/prompt.py index 4ece3ef94..543da2d2b 100644 --- a/src/chat/utils/prompt.py +++ b/src/chat/utils/prompt.py @@ -778,12 +778,17 @@ class Prompt: content = item.get("content", "") source = item.get("source", "") relevance = item.get("relevance", 0.0) - if content: + try: + relevance_float = float(relevance) + relevance_str = f"{relevance_float:.2f}" + except (ValueError, TypeError): + relevance_str = str(relevance) + if source: - knowledge_parts.append(f"- [{relevance:.2f}] {content} (来源: {source})") + knowledge_parts.append(f"- [{relevance_str}] {content} (来源: {source})") else: - knowledge_parts.append(f"- [{relevance:.2f}] {content}") + knowledge_parts.append(f"- [{relevance_str}] {content}") if knowledge_results.get("summary"): knowledge_parts.append(f"\n知识总结: {knowledge_results['summary']}")