|
@@ -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)
|