|
@@ -240,8 +240,13 @@ class AgentService:
|
|
if should_initiate:
|
|
if should_initiate:
|
|
logger.warning("user: {}, initiate conversation".format(user_id))
|
|
logger.warning("user: {}, initiate conversation".format(user_id))
|
|
try:
|
|
try:
|
|
- # resp = self._get_chat_response(user_id, agent, None)
|
|
|
|
- resp = self._generate_active_greeting_message(agent)
|
|
|
|
|
|
+ if agent.previous_state == DialogueState.INITIALIZED:
|
|
|
|
+ # 完全无交互历史的用户才使用此策略
|
|
|
|
+ # 问题:agent状态更新后即无法再次发起此策略
|
|
|
|
+ # TODO:增加基于对话历史的判断、策略去重;如果对话间隔过长需要使用长期记忆检索;在无长期记忆时,可采用用户添加时间来判断
|
|
|
|
+ resp = self._generate_active_greeting_message(agent, user_tags)
|
|
|
|
+ else:
|
|
|
|
+ resp = self._get_chat_response(user_id, agent, None)
|
|
if resp:
|
|
if resp:
|
|
self._send_response(staff_id, user_id, resp, MessageType.TEXT)
|
|
self._send_response(staff_id, user_id, resp, MessageType.TEXT)
|
|
if self.limit_initiative_conversation_rate:
|
|
if self.limit_initiative_conversation_rate:
|
|
@@ -251,7 +256,7 @@ class AgentService:
|
|
else:
|
|
else:
|
|
logger.debug("user: {}, do not initiate conversation".format(user_id))
|
|
logger.debug("user: {}, do not initiate conversation".format(user_id))
|
|
|
|
|
|
- def _generate_active_greeting_message(self, agent: DialogueManager):
|
|
|
|
|
|
+ def _generate_active_greeting_message(self, agent: DialogueManager, user_tags: List[str]=None):
|
|
chat_config = agent.build_active_greeting_config()
|
|
chat_config = agent.build_active_greeting_config()
|
|
chat_response = self._call_chat_api(chat_config, ChatServiceType.OPENAI_COMPATIBLE)
|
|
chat_response = self._call_chat_api(chat_config, ChatServiceType.OPENAI_COMPATIBLE)
|
|
chat_response = self.sanitize_response(chat_response)
|
|
chat_response = self.sanitize_response(chat_response)
|