Quellcode durchsuchen

fix(打印模型名称)

tangle vor 1 Monat
Ursprung
Commit
8bfe075277
1 geänderte Dateien mit 58 neuen und 14 gelöschten Zeilen
  1. 58 14
      core/construction_write/component/outline_generator.py

+ 58 - 14
core/construction_write/component/outline_generator.py

@@ -638,6 +638,32 @@ class OutlineGenerator:
             return None
         return self._keyword_rules_cache.get(code)
 
+    def _resolve_llm_model_name(
+        self,
+        function_name: Optional[str] = None,
+        model_name: Optional[str] = None
+    ) -> str:
+        """解析本次 LLM 调用实际会使用的模型名,用于日志排查。"""
+        try:
+            from foundation.ai.models.model_config_loader import get_model_for_function
+
+            # 保持和 generate_model_client.get_model_generate_invoke 的解析顺序一致。
+            if function_name:
+                resolved_model = get_model_for_function(function_name)
+                if resolved_model:
+                    return resolved_model
+
+            if model_name:
+                return model_name
+
+            default_model = get_model_for_function("default")
+            if default_model:
+                return default_model
+        except Exception as e:
+            logger.warning(f"[LLM调用] 解析模型名失败: {str(e)}")
+
+        return model_name or "default"
+
     async def _call_llm(
         self,
         trace_id: str,
@@ -709,7 +735,14 @@ class OutlineGenerator:
                 "task_prompt": chat_template
             }
 
-            logger.info(f"[LLM调用] trace_id: {trace_id}, 开始生成内容")
+            resolved_model_name = self._resolve_llm_model_name(
+                function_name=function_name,
+                model_name=model_name
+            )
+            logger.info(
+                f"[LLM调用] trace_id: {trace_id}, model: {resolved_model_name}, "
+                f"function_name: {function_name}, 开始生成内容"
+            )
 
             # 调用模型生成(非流式)
             generated_content = await generate_model_client.get_model_generate_invoke(
@@ -720,15 +753,26 @@ class OutlineGenerator:
                 function_name=function_name,
             )
 
-            logger.info(f"[LLM调用] trace_id: {trace_id}, 生成完成,内容长度: {len(generated_content)}")
+            logger.info(
+                f"[LLM调用] trace_id: {trace_id}, model: {resolved_model_name}, "
+                f"生成完成,内容长度: {len(generated_content)}"
+            )
 
             return generated_content
 
         except TimeoutError as e:
-            logger.error(f"[LLM调用] trace_id: {trace_id}, 超时: {str(e)}")
+            resolved_model_name = self._resolve_llm_model_name(
+                function_name=function_name,
+                model_name=model_name
+            )
+            logger.error(f"[LLM调用] trace_id: {trace_id}, model: {resolved_model_name}, 超时: {str(e)}")
             raise
         except Exception as e:
-            logger.error(f"[LLM调用] trace_id: {trace_id}, 异常: {str(e)}")
+            resolved_model_name = self._resolve_llm_model_name(
+                function_name=function_name,
+                model_name=model_name
+            )
+            logger.error(f"[LLM调用] trace_id: {trace_id}, model: {resolved_model_name}, 异常: {str(e)}")
             raise
 
     async def _generate_single_chapter(
@@ -1088,16 +1132,16 @@ class OutlineGenerator:
         project_name = project_info.get("project_name", "未命名项目")
 
         # 从 keyword_rules 获取该章节的编写要求
-        keyword_rule = self._get_keyword_rule(chapter_code)
-        if keyword_rule:
-            writing_requirements = f"""【编写要求】
-{keyword_rule}
-
-"""
-            logger.info(f"[章节生成] trace_id: {trace_id}, code={chapter_code}, 已加载 keyword_rule")
-        else:
-            writing_requirements = ""
-            logger.warning(f"[章节生成] trace_id: {trace_id}, code={chapter_code}, 未找到 keyword_rule")
+#         keyword_rule = self._get_keyword_rule(chapter_code)
+#         if keyword_rule:
+#             writing_requirements = f"""【编写要求】
+# {keyword_rule}
+
+# """
+#             logger.info(f"[章节生成] trace_id: {trace_id}, code={chapter_code}, 已加载 keyword_rule")
+#         else:
+#             writing_requirements = ""
+#             logger.warning(f"[章节生成] trace_id: {trace_id}, code={chapter_code}, 未找到 keyword_rule")
 
         prompt = f"""请对【{chapter_title}】章节的模板文本进行受限校订。
 【项目信息】