fix(chat): 修复知识库相关性得分格式化问题

当知识库返回的相关性得分(relevance)不是有效的浮点数时,格式化字符串 `f"{relevance:.2f}"` 会引发 `TypeError` 或 `ValueError`,导致程序崩溃。

本次修改通过添加 `try-except` 块来捕获潜在的异常。如果 `relevance` 可以成功转换为浮点数,则将其格式化为两位小数;如果转换失败,则直接使用其原始字符串表示形式,从而增强了代码的健壮性,避免了因数据类型不匹配而导致的运行时错误。
This commit is contained in:
minecraft1024a
2025-10-18 21:57:27 +08:00
parent a2ac0d01bc
commit 22ef271c89

View File

@@ -778,12 +778,17 @@ class Prompt:
content = item.get("content", "") content = item.get("content", "")
source = item.get("source", "") source = item.get("source", "")
relevance = item.get("relevance", 0.0) relevance = item.get("relevance", 0.0)
if content: if content:
try:
relevance_float = float(relevance)
relevance_str = f"{relevance_float:.2f}"
except (ValueError, TypeError):
relevance_str = str(relevance)
if source: if source:
knowledge_parts.append(f"- [{relevance:.2f}] {content} (来源: {source})") knowledge_parts.append(f"- [{relevance_str}] {content} (来源: {source})")
else: else:
knowledge_parts.append(f"- [{relevance:.2f}] {content}") knowledge_parts.append(f"- [{relevance_str}] {content}")
if knowledge_results.get("summary"): if knowledge_results.get("summary"):
knowledge_parts.append(f"\n知识总结: {knowledge_results['summary']}") knowledge_parts.append(f"\n知识总结: {knowledge_results['summary']}")