Selaa lähdekoodia

Fix agent_service and push_service: apollo config

StrayWarrior 4 viikkoa sitten
vanhempi
commit
01c772ad29
2 muutettua tiedostoa jossa 10 lisäystä ja 6 poistoa
  1. 1 1
      pqai_agent/agent_service.py
  2. 9 5
      pqai_agent/push_service.py

+ 1 - 1
pqai_agent/agent_service.py

@@ -356,7 +356,7 @@ class AgentService:
         if not DialogueManager.is_time_suitable_for_active_conversation():
             logger.info("time is not suitable for active conversation")
             return
-        white_list_tags = set(apollo_config.get_json_value('agent_initiate_whitelist_tags'))
+        white_list_tags = set(apollo_config.get_json_value('agent_initiate_whitelist_tags', []))
         first_initiate_tags = set(apollo_config.get_json_value('agent_first_initiate_whitelist_tags', []))
         # 合并白名单,减少配置成本
         white_list_tags.update(first_initiate_tags)

+ 9 - 5
pqai_agent/push_service.py

@@ -1,5 +1,6 @@
 import json
 import time
+import traceback
 import uuid
 from datetime import datetime
 from enum import Enum
@@ -45,7 +46,7 @@ class PushScanThread:
         self.rmq_producer = mq_producer
 
     def run(self):
-        white_list_tags = set(apollo_config.get_json_value('agent_initiate_whitelist_tags'))
+        white_list_tags = set(apollo_config.get_json_value('agent_initiate_whitelist_tags', []))
         first_initiate_tags = set(apollo_config.get_json_value('agent_first_initiate_whitelist_tags', []))
         # 合并白名单,减少配置成本
         white_list_tags.update(first_initiate_tags)
@@ -142,11 +143,12 @@ class PushTaskWorkerPool:
             content = task['content']
             recent_dialogue = agent.dialogue_history[-10:]
             agent_voice_whitelist = set(apollo_config.get_json_value("agent_voice_whitelist"))
+            # FIXME(zhoutian): 不应该再由agent控制,或者agent和API共享同一配置
             if len(recent_dialogue) < 2 or staff_id not in agent_voice_whitelist:
                 message_type = MessageType.TEXT
             else:
                 message_type = self.agent_service.response_type_detector.detect_type(
-                    recent_dialogue[:-1], recent_dialogue[-1], enable_random=True)
+                    recent_dialogue, content, enable_random=True)
             response = agent.generate_response(content)
             if response:
                 self.agent_service.send_response(staff_id, user_id, response, message_type, skip_check=True)
@@ -154,7 +156,8 @@ class PushTaskWorkerPool:
                 logger.debug(f"agent[{staff_id}] generate empty response")
             self.consumer.ack(msg)
         except Exception as e:
-            logger.error(f"Error processing message sending: {e}")
+            fmt_exc = traceback.format_exc()
+            logger.error(f"Error processing message sending: {e}, {fmt_exc}")
             self.consumer.ack(msg)
 
     def handle_generate_task(self, task: Dict, msg: rocketmq.Message):
@@ -162,7 +165,7 @@ class PushTaskWorkerPool:
             staff_id = task['staff_id']
             user_id = task['user_id']
             main_agent = self.agent_service.get_agent_instance(staff_id, user_id)
-            push_agent = DummyMessagePushAgent()
+            push_agent = MessagePushAgent()
             message_to_user = push_agent.generate_message(
                 context=main_agent.get_prompt_context(None),
                 dialogue_history=main_agent.dialogue_history
@@ -172,6 +175,7 @@ class PushTaskWorkerPool:
             self.producer.send(rmq_message)
             self.consumer.ack(msg)
         except Exception as e:
-            logger.error(f"Error processing message generation: {e}")
+            fmt_exc = traceback.format_exc()
+            logger.error(f"Error processing message generation: {e}, {fmt_exc}")
             # FIXME: 是否需要ACK
             self.consumer.ack(msg)