Просмотр исходного кода

Merge branch 'feature/refactor-config' of Server/AgentCoreService into master

fengzhoutian 1 день назад
Родитель
Сommit
30402a799d

+ 3 - 3
pqai_agent/agent_service.py

@@ -33,7 +33,7 @@ from pqai_agent.user_manager import UserManager, UserRelationManager
 from pqai_agent.message_queue_backend import MessageQueueBackend, AliyunRocketMQQueueBackend
 from pqai_agent.user_profile_extractor import UserProfileExtractor
 from pqai_agent.mq_message import MessageType, MqMessage, MessageChannel
-from pqai_agent.utils.db_utils import create_sql_engine
+from pqai_agent.utils.db_utils import create_ai_agent_db_engine
 
 
 class AgentService:
@@ -59,8 +59,8 @@ class AgentService:
         self.user_profile_extractor = UserProfileExtractor()
         self.response_type_detector = ResponseTypeDetector()
         self.agent_registry: Dict[str, DialogueManager] = {}
-        self.history_dialogue_db = HistoryDialogueDatabase(self.config['storage']['user']['mysql'])
-        self.agent_db_engine = create_sql_engine(self.config['storage']['agent_state']['mysql'])
+        self.history_dialogue_db = HistoryDialogueDatabase(self.config['database']['ai_agent'])
+        self.agent_db_engine = create_ai_agent_db_engine()
         self.AgentDBSession = sessionmaker(bind=self.agent_db_engine)
 
         chat_config = self.config['chat_api']['openai_compatible']

+ 25 - 22
pqai_agent/configs/dev.yaml

@@ -1,40 +1,42 @@
+database:
+    ai_agent:
+        host: rm-bp13g3ra2f59q49xs.mysql.rds.aliyuncs.com
+        port: 3306
+        user: wqsd
+        password: wqsd@2025
+        database: ai_agent
+        charset: utf8mb4
+    growth:
+        host: rm-bp17q95335a99272b.mysql.rds.aliyuncs.com
+        port: 3306
+        user: crawler
+        password: crawler123456@
+        database: growth
+        charset: utf8mb4
+
 storage:
   history_dialogue:
     api_base_url: http://ai-wechat-hook-internal.piaoquantv.com/wechat/message/getConversation
   user:
-    mysql:
-      host: rm-bp13g3ra2f59q49xs.mysql.rds.aliyuncs.com
-      port: 3306
-      user: wqsd
-      password: wqsd@2025
-      database: ai_agent
-      charset: utf8mb4
+    database: ai_agent
     table: third_party_user
+  staff:
+    database: ai_agent
+    table: qywx_employee
   user_relation:
-    mysql:
-      host: rm-bp17q95335a99272b.mysql.rds.aliyuncs.com
-      port: 3306
-      user: crawler
-      password: crawler123456@
-      database: growth
-      charset: utf8mb4
+    database: growth
     table:
       staff: we_com_staff
       relation: we_com_staff_with_user
       user: we_com_user
-  staff:
-    table: qywx_employee
   agent_state:
-    mysql:
-      host: rm-bp13g3ra2f59q49xs.mysql.rds.aliyuncs.com
-      port: 3306
-      user: wqsd
-      password: wqsd@2025
-      database: ai_agent
+    database: ai_agent
     table: agent_state
   chat_history:
+    database: ai_agent
     table: qywx_chat_history
   push_record:
+    database: ai_agent
     table: agent_push_record_dev
 
 agent_behavior:
@@ -61,6 +63,7 @@ system:
   human_intervention_alert_url: https://open.feishu.cn/open-apis/bot/v2/hook/379fcd1a-0fed-4e58-8cd0-40b6d1895721
   max_reply_workers: 2
   max_push_workers: 1
+  chat_agent_version: 1
 
 debug_flags:
   disable_llm_api_call: True

+ 24 - 22
pqai_agent/configs/prod.yaml

@@ -1,40 +1,42 @@
+database:
+  ai_agent:
+    host: rm-bp13g3ra2f59q49xs.mysql.rds.aliyuncs.com
+    port: 3306
+    user: wqsd
+    password: wqsd@2025
+    database: ai_agent
+    charset: utf8mb4
+  growth:
+    host: rm-bp17q95335a99272b.mysql.rds.aliyuncs.com
+    port: 3306
+    user: crawler
+    password: crawler123456@
+    database: growth
+    charset: utf8mb4
+
 storage:
   history_dialogue:
     api_base_url: http://ai-wechat-hook-internal.piaoquantv.com/wechat/message/getConversation
   user:
-    mysql:
-      host: rm-bp13g3ra2f59q49xs.mysql.rds.aliyuncs.com
-      port: 3306
-      user: wqsd
-      password: wqsd@2025
-      database: ai_agent
-      charset: utf8mb4
+    database: ai_agent
     table: third_party_user
+  staff:
+    database: ai_agent
+    table: qywx_employee
   user_relation:
-    mysql:
-      host: rm-bp17q95335a99272b.mysql.rds.aliyuncs.com
-      port: 3306
-      user: crawler
-      password: crawler123456@
-      database: growth
-      charset: utf8mb4
+    database: growth
     table:
       staff: we_com_staff
       relation: we_com_staff_with_user
       user: we_com_user
-  staff:
-    table: qywx_employee
   agent_state:
-    mysql:
-      host: rm-bp13g3ra2f59q49xs.mysql.rds.aliyuncs.com
-      port: 3306
-      user: wqsd
-      password: wqsd@2025
-      database: ai_agent
+    database: ai_agent
     table: agent_state
   chat_history:
+    database: ai_agent
     table: qywx_chat_history
   push_record:
+    database: ai_agent
     table: agent_push_record_dev
 
 chat_api:

+ 1 - 1
pqai_agent/dialogue_manager.py

@@ -74,7 +74,7 @@ class DialogueStateChange:
 class DialogueStateCache:
     def __init__(self):
         self.config = configs.get()
-        self.db = MySQLManager(self.config['storage']['agent_state']['mysql'])
+        self.db = MySQLManager(self.config['database']['ai_agent'])
         self.table = self.config['storage']['agent_state']['table']
 
     def get_state(self, staff_id: str, user_id: str) -> Tuple[DialogueState, DialogueState]:

+ 2 - 2
pqai_agent/history_dialogue_service.py

@@ -89,6 +89,6 @@ if __name__ == '__main__':
     service = HistoryDialogueService(api_url)
     resp = service.get_dialogue_history(staff_id='1688857241615085', user_id='7881299616070168', recent_minutes=5*1440)
     print(resp)
-    user_db_config = configs.get()['storage']['user']['mysql']
-    db = HistoryDialogueDatabase(user_db_config)
+    agent_db_config = configs.get()['database']['ai_agent']
+    db = HistoryDialogueDatabase(agent_db_config)
     # print(db.get_dialogue_history_backward('1688854492669990', '7881301263964433', 1747397155000))

+ 10 - 2
pqai_agent/utils/db_utils.py

@@ -1,6 +1,6 @@
 from urllib.parse import quote_plus
-
 from sqlalchemy import create_engine
+from pqai_agent import configs
 
 def create_sql_engine(config):
     user = config['user']
@@ -9,4 +9,12 @@ def create_sql_engine(config):
     db_name = config['database']
     charset = config.get('charset', 'utf8mb4')
     engine = create_engine(f'mysql+pymysql://{user}:{passwd}@{host}/{db_name}?charset={charset}')
-    return engine
+    return engine
+
+def create_ai_agent_db_engine():
+    config = configs.get()['database']['ai_agent']
+    return create_sql_engine(config)
+
+def create_growth_db_engine():
+    config = configs.get()['database']['growth']
+    return create_sql_engine(config)

+ 5 - 3
pqai_agent_server/agent_server.py

@@ -49,6 +49,8 @@ if __name__ == "__main__":
 
     # 初始化用户管理服务
     # FIXME(zhoutian): 如果不使用MySQL,此数据库配置非必须
+    agent_db_config = config['database']['ai_agent']
+    growth_db_config = config['database']['growth']
     user_db_config = config['storage']['user']
     staff_db_config = config['storage']['staff']
     wecom_db_config = config['storage']['user_relation']
@@ -56,10 +58,10 @@ if __name__ == "__main__":
         user_manager = LocalUserManager()
         user_relation_manager = LocalUserRelationManager()
     else:
-        user_manager = MySQLUserManager(user_db_config['mysql'], user_db_config['table'], staff_db_config['table'])
+        user_manager = MySQLUserManager(agent_db_config, user_db_config['table'], staff_db_config['table'])
         user_relation_manager = MySQLUserRelationManager(
-            user_db_config['mysql'], wecom_db_config['mysql'],
-            config['storage']['staff']['table'],
+            agent_db_config, growth_db_config,
+            staff_db_config['table'],
             user_db_config['table'],
             wecom_db_config['table']['staff'],
             wecom_db_config['table']['relation'],

+ 7 - 5
pqai_agent_server/api_server.py

@@ -17,7 +17,7 @@ from pqai_agent.data_models.agent_configuration import AgentConfiguration
 from pqai_agent.data_models.service_module import ServiceModule
 from pqai_agent.history_dialogue_service import HistoryDialogueService
 from pqai_agent.user_manager import MySQLUserManager, MySQLUserRelationManager
-from pqai_agent.utils.db_utils import create_sql_engine
+from pqai_agent.utils.db_utils import create_ai_agent_db_engine
 from pqai_agent.utils.prompt_utils import format_agent_profile, format_user_profile
 from pqai_agent_server.const import AgentApiConst
 from pqai_agent_server.models import MySQLSessionManager
@@ -539,30 +539,32 @@ if __name__ == '__main__':
     logging_service.setup_root_logger(level=logging_level, logfile_name='agent_api_server.log')
 
     # set db config
+    agent_db_config = config['database']['ai_agent']
+    growth_db_config = config['database']['growth']
     user_db_config = config['storage']['user']
     staff_db_config = config['storage']['staff']
     agent_state_db_config = config['storage']['agent_state']
     chat_history_db_config = config['storage']['chat_history']
 
     # init user manager
-    user_manager = MySQLUserManager(user_db_config['mysql'], user_db_config['table'], staff_db_config['table'])
+    user_manager = MySQLUserManager(agent_db_config, growth_db_config, staff_db_config['table'])
     app.user_manager = user_manager
 
     # init session manager
     session_manager = MySQLSessionManager(
-        db_config=user_db_config['mysql'],
+        db_config=agent_db_config,
         staff_table=staff_db_config['table'],
         user_table=user_db_config['table'],
         agent_state_table=agent_state_db_config['table'],
         chat_history_table=chat_history_db_config['table']
     )
     app.session_manager = session_manager
-    agent_db_engine = create_sql_engine(config['storage']['agent_state']['mysql'])
+    agent_db_engine = create_ai_agent_db_engine(config['database']['ai_agent'])
     app.session_maker = sessionmaker(bind=agent_db_engine)
 
     wecom_db_config = config['storage']['user_relation']
     user_relation_manager = MySQLUserRelationManager(
-        user_db_config['mysql'], wecom_db_config['mysql'],
+        agent_db_config, growth_db_config,
         config['storage']['staff']['table'],
         user_db_config['table'],
         wecom_db_config['table']['staff'],

+ 4 - 2
scripts/disable_user_daily_push.py

@@ -16,10 +16,12 @@ if __name__ == '__main__':
     config = configs.get()
     user_db_config = config['storage']['user']
     staff_db_config = config['storage']['staff']
-    user_manager = MySQLUserManager(user_db_config['mysql'], user_db_config['table'], staff_db_config['table'])
+    agent_db_config = config['database']['ai_agent']
+    growth_db_config = config['database']['growth']
+    user_manager = MySQLUserManager(agent_db_config, user_db_config['table'], staff_db_config['table'])
     wecom_db_config = config['storage']['user_relation']
     user_relation_manager = MySQLUserRelationManager(
-        user_db_config['mysql'], wecom_db_config['mysql'],
+        agent_db_config, growth_db_config,
         config['storage']['staff']['table'],
         user_db_config['table'],
         wecom_db_config['table']['staff'],

+ 2 - 1
scripts/profile_cleaner.py

@@ -12,7 +12,8 @@ if __name__ == '__main__':
     config = configs.get()
     user_db_config = config['storage']['user']
     staff_db_config = config['storage']['staff']
-    user_manager = MySQLUserManager(user_db_config['mysql'], user_db_config['table'], staff_db_config['table'])
+    agent_db_config = config['database']['ai_agent']
+    user_manager = MySQLUserManager(agent_db_config, user_db_config['table'], staff_db_config['table'])
 
     user_ids_to_clean = ['7881299986081786', '7881303544096524', '7881300732152777', '7881301752098239', '7881299457990953', '7881302872936170',]
     for user_id in user_ids_to_clean:

+ 4 - 3
scripts/resend_lost_message.py

@@ -13,11 +13,12 @@ from pqai_agent.user_manager import MySQLUserRelationManager
 config = configs.get()
 
 def main():
-    wecom_db_config = config['storage']['user_relation']
     user_db_config = config['storage']['user']
-
+    agent_db_config = config['database']['ai_agent']
+    growth_db_config = config['database']['growth']
+    wecom_db_config = config['storage']['user_relation']
     user_relation_manager = MySQLUserRelationManager(
-        user_db_config['mysql'], wecom_db_config['mysql'],
+        agent_db_config, growth_db_config,
         config['storage']['staff']['table'],
         user_db_config['table'],
         wecom_db_config['table']['staff'],