Eliot0110 commited on
Commit
14f6b72
·
1 Parent(s): 83243ef

fix: gersona choose

Browse files
Files changed (1) hide show
  1. modules/response_generator.py +17 -12
modules/response_generator.py CHANGED
@@ -53,18 +53,23 @@ class ResponseGenerator:
53
 
54
  def _get_current_persona_config(self, session_state: dict) -> dict:
55
  """获取当前persona配置"""
56
- persona_info = session_state.get("persona", {})
57
- if isinstance(persona_info, dict):
58
- persona_key = persona_info.get("key")
59
- else:
60
- persona_key = None
61
-
62
- return self.personas.get(persona_key, {
63
- "name": "旅行助手",
64
- "style": "中立",
65
- "tone": ["专业", "友好"],
66
- "prompt_template": self._build_generic_prompt(session_state)
67
- })
 
 
 
 
 
68
 
69
  def generate(self, user_message: str, session_state: dict, extracted_info: dict) -> str:
70
  """生成融合知识库的智能回复"""
 
53
 
54
  def _get_current_persona_config(self, session_state: dict) -> dict:
55
  """获取当前persona配置"""
56
+ persona_info = session_state.get("persona")
57
+ if not isinstance(persona_info, dict) or "key" not in persona_info:
58
+ # 如果 persona 尚未设置或格式不正确,记录日志并抛出异常
59
+ log.error(f"❌ 在会话 {session_state.get('session_id')} 中缺少有效的 persona 配置。当前 persona 状态: {persona_info}")
60
+ raise ValueError("无法在会话状态中找到有效的 'persona' 配置。对话流程可能存在问题。")
61
+
62
+ persona_key = persona_info["key"] # 既然检查过,就可以安全地直接访问
63
+
64
+ persona_config = self.personas.get(persona_key)
65
+
66
+ # 3. 检查获取到的 key 是否真的存在于配置中
67
+ if not persona_config:
68
+ log.error(f"❌ persona key '{persona_key}' 在系统中未定义。")
69
+ raise ValueError(f"提供的 persona key '{persona_key}' 是一个无效的配置项。")
70
+
71
+ log.info(f"✅ 成功加载 Persona: {persona_config.get('name', persona_key)}")
72
+ return persona_config
73
 
74
  def generate(self, user_message: str, session_state: dict, extracted_info: dict) -> str:
75
  """生成融合知识库的智能回复"""