Skip to content

Commit cf4a232

Browse files
authored
🐛 Knowledge base summary failed. #1619
2 parents 606d586 + 133b642 commit cf4a232

File tree

5 files changed

+34
-4
lines changed

5 files changed

+34
-4
lines changed

backend/utils/document_vector_utils.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -595,8 +595,10 @@ def summarize_document(document_content: str, filename: str, language: str = LAN
595595
{"role": MESSAGE_ROLE["USER"], "content": user_prompt}
596596
]
597597

598-
# Call LLM
599-
response = llm(messages, max_tokens=max_words * 2) # Allow more tokens for generation
598+
# Call LLM, allow more tokens for generation
599+
response = llm(messages, max_tokens=max_words * 2)
600+
if not response or not response.content:
601+
return ""
600602
return response.content.strip()
601603
else:
602604
# Fallback to placeholder if no model configuration
@@ -675,6 +677,8 @@ def summarize_cluster(document_summaries: List[str], language: str = LANGUAGE["Z
675677

676678
# Call LLM
677679
response = llm(messages, max_tokens=max_words * 2) # Allow more tokens for generation
680+
if not response or not response.content:
681+
return ""
678682
return response.content.strip()
679683
else:
680684
# Fallback to placeholder if no model configuration

frontend/app/[locale]/setup/knowledges/components/document/DocumentList.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -245,15 +245,21 @@ const DocumentListContainer = forwardRef<DocumentListRef, DocumentListProps>(
245245
setSummary("");
246246

247247
try {
248-
await knowledgeBaseService.summaryIndex(
248+
const result = await knowledgeBaseService.summaryIndex(
249249
knowledgeBaseName,
250250
1000,
251251
(newText) => {
252252
setSummary((prev) => prev + newText);
253253
},
254254
selectedModel
255255
);
256-
message.success(t("document.summary.completed"));
256+
// Only show success message if summary was actually generated
257+
if (result && result.trim()) {
258+
message.success(t("document.summary.completed"));
259+
} else {
260+
// If no summary was generated, show error message
261+
message.error(t("knowledgeBase.summary.notGenerated"));
262+
}
257263
} catch (error) {
258264
message.error(t("document.summary.error"));
259265
log.error(t("document.summary.error"), error);

frontend/public/locales/en/common.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -474,6 +474,7 @@
474474
"knowledgeBase.empty.description": "Please select a knowledge base from the list on the left, or create a new one",
475475
"knowledgeBase.error.createUpload": "Failed to create knowledge base or upload files:",
476476
"knowledgeBase.error.getSummary": "Failed to generate knowledge base summary:",
477+
"knowledgeBase.summary.notGenerated": "Knowledge base summary was not generated, please change model configuration and retry",
477478
"knowledgeBase.name.new": "new_base",
478479
"knowledgeBase.message.getDocumentsFailed": "Failed to get documents",
479480

frontend/public/locales/zh/common.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -475,6 +475,7 @@
475475
"knowledgeBase.empty.description": "请在左侧列表选择一个知识库,或创建新的知识库",
476476
"knowledgeBase.error.createUpload": "知识库创建或上传失败:",
477477
"knowledgeBase.error.getSummary": "获取知识库总结失败:",
478+
"knowledgeBase.summary.notGenerated": "未生成知识库总结,请更换模型配置重试",
478479
"knowledgeBase.name.new": "新知识库",
479480
"knowledgeBase.message.getDocumentsFailed": "获取文档列表失败",
480481

frontend/services/knowledgeBaseService.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
// Unified encapsulation of knowledge base related API calls
22

3+
import i18n from "i18next";
4+
35
import { API_ENDPOINTS } from "./api";
46

57
import { NAME_CHECK_STATUS } from "@/const/agentConfig";
@@ -466,6 +468,22 @@ class KnowledgeBaseService {
466468
if (onProgress) {
467469
onProgress(data.message);
468470
}
471+
} else if (data.status === "completed") {
472+
// On completed, check if the accumulated summary is empty
473+
if (!summary || summary.trim() === "") {
474+
// No summary was generated, throw internationalized error
475+
const errorMessage = i18n.t(
476+
"knowledgeBase.summary.notGenerated"
477+
);
478+
throw new Error(errorMessage);
479+
}
480+
// If there is a final message, append it
481+
if (data.message && data.message.trim() !== "") {
482+
summary += data.message;
483+
if (onProgress) {
484+
onProgress(data.message);
485+
}
486+
}
469487
} else if (data.status === "error") {
470488
throw new Error(data.message);
471489
}

0 commit comments

Comments
 (0)