|
|
@@ -245,6 +245,9 @@ class LLMSearchKnowledge:
|
|
|
Exception: 合并失败时抛出异常
|
|
|
"""
|
|
|
logger.info(f"[步骤3] 合并知识 - 共 {len(knowledge_texts)} 个文本")
|
|
|
+
|
|
|
+ if len(knowledge_texts) == 1:
|
|
|
+ return knowledge_texts[0]
|
|
|
|
|
|
# 尝试从缓存读取
|
|
|
if self.use_cache:
|
|
|
@@ -296,7 +299,7 @@ class LLMSearchKnowledge:
|
|
|
logger.error(f"✗ 合并知识文本失败: {e}")
|
|
|
raise
|
|
|
|
|
|
- def get_knowledge(self, question: str, cache_key: str = None) -> str:
|
|
|
+ def get_knowledge(self, question: str, cache_key: str = None, need_generate_query: bool = True) -> str:
|
|
|
"""
|
|
|
主方法:根据问题获取知识文本
|
|
|
|
|
|
@@ -319,7 +322,10 @@ class LLMSearchKnowledge:
|
|
|
logger.info(f"{'='*60}")
|
|
|
|
|
|
# 步骤1: 生成多个query
|
|
|
- queries = self.generate_queries(actual_cache_key)
|
|
|
+ if need_generate_query:
|
|
|
+ queries = self.generate_queries(actual_cache_key)
|
|
|
+ else:
|
|
|
+ queries = [question]
|
|
|
|
|
|
# 步骤2: 对每个query搜索知识
|
|
|
knowledge_texts = self.search_knowledge_batch(actual_cache_key, queries)
|
|
|
@@ -337,7 +343,7 @@ class LLMSearchKnowledge:
|
|
|
raise
|
|
|
|
|
|
|
|
|
-def get_knowledge(question: str, cache_key: str = None) -> str:
|
|
|
+def get_knowledge(question: str, cache_key: str = None, need_generate_query: bool = True) -> str:
|
|
|
"""
|
|
|
便捷函数:根据问题获取知识文本
|
|
|
|
|
|
@@ -349,7 +355,7 @@ def get_knowledge(question: str, cache_key: str = None) -> str:
|
|
|
str: 最终的知识文本
|
|
|
"""
|
|
|
agent = LLMSearchKnowledge()
|
|
|
- return agent.get_knowledge(question, cache_key=cache_key)
|
|
|
+ return agent.get_knowledge(question, cache_key=cache_key, need_generate_query=need_generate_query)
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
@@ -357,7 +363,7 @@ if __name__ == "__main__":
|
|
|
test_question = "关于猫咪和墨镜的服装造型元素"
|
|
|
|
|
|
try:
|
|
|
- result = get_knowledge(test_question)
|
|
|
+ result = get_knowledge(question=test_question, need_generate_query=False)
|
|
|
print("=" * 50)
|
|
|
print("最终知识文本:")
|
|
|
print("=" * 50)
|