Quellcode durchsuchen

Refactor structure

StrayWarrior vor 11 Stunden
Ursprung
Commit
da0b4bbb73

+ 0 - 0
toolkit/__init__.py → pqai_agent/__init__.py


+ 6 - 8
agent_service.py → pqai_agent/agent_service.py

@@ -5,8 +5,7 @@ import re
 import signal
 import sys
 import time
-import random
-from typing import Dict, List, Tuple, Any, Optional
+from typing import Dict, List, Optional
 import logging
 from datetime import datetime, timedelta
 import traceback
@@ -15,21 +14,20 @@ import apscheduler.triggers.cron
 from apscheduler.schedulers.background import BackgroundScheduler
 
 import chat_service
-import configs
+from pqai_agent import configs
 import logging_service
 from configs import apollo_config
-from logging_service import logger
-from chat_service import CozeChat, ChatServiceType
+from pqai_agent.logging_service import logger
+from pqai_agent.chat_service import CozeChat, ChatServiceType
 from dialogue_manager import DialogueManager, DialogueState, DialogueStateCache
 from rate_limiter import MessageSenderRateLimiter
 from response_type_detector import ResponseTypeDetector
-from user_manager import UserManager, LocalUserManager, MySQLUserManager, MySQLUserRelationManager, UserRelationManager, \
+from pqai_agent.user_manager import UserManager, LocalUserManager, MySQLUserManager, MySQLUserRelationManager, UserRelationManager, \
     LocalUserRelationManager
-from openai import OpenAI
 from message_queue_backend import MessageQueueBackend, MemoryQueueBackend, AliyunRocketMQQueueBackend
 from user_profile_extractor import UserProfileExtractor
 import threading
-from message import MessageType, Message, MessageChannel
+from pqai_agent.message import MessageType, Message, MessageChannel
 
 
 class AgentService:

+ 2 - 2
chat_service.py → pqai_agent/chat_service.py

@@ -10,8 +10,8 @@ from enum import Enum, auto
 
 import httpx
 
-import configs
-from logging_service import logger
+from pqai_agent import configs
+from pqai_agent.logging_service import logger
 import cozepy
 from cozepy import Coze, TokenAuth, Message, ChatStatus, MessageType, JWTOAuthApp, JWTAuth
 import time

+ 0 - 0
configs/__init__.py → pqai_agent/configs/__init__.py


+ 0 - 0
configs/dev.yaml → pqai_agent/configs/dev.yaml


+ 0 - 0
configs/prod.yaml → pqai_agent/configs/prod.yaml


+ 1 - 1
database.py → pqai_agent/database.py

@@ -5,7 +5,7 @@
 # Copyright © 2024 StrayWarrior <i@straywarrior.com>
 
 import pymysql
-from logging_service import logger
+from pqai_agent.logging_service import logger
 
 class MySQLManager:
     def __init__(self, config):

+ 10 - 13
dialogue_manager.py → pqai_agent/dialogue_manager.py

@@ -2,29 +2,26 @@
 # -*- coding: utf-8 -*-
 # vim:fenc=utf-8
 import random
-from enum import Enum, auto
+from enum import Enum
 from typing import Dict, List, Optional, Tuple, Any
 from datetime import datetime
 import time
 import textwrap
 
-import chat_service
-import prompt_templates
-from logging_service import logger
-
 import pymysql.cursors
 
-import configs
 import cozepy
 
-from database import MySQLManager
-from history_dialogue_service import HistoryDialogueService
+from pqai_agent import configs
+from pqai_agent.logging_service import logger
+from pqai_agent.database import MySQLManager
+from pqai_agent import chat_service, prompt_templates
+from pqai_agent.history_dialogue_service import HistoryDialogueService
 
-from chat_service import ChatServiceType
-from message import MessageType, Message
-from toolkit.lark_alert_for_human_intervention import LarkAlertForHumanIntervention
-from user_manager import UserManager
-from prompt_templates import *
+from pqai_agent.chat_service import ChatServiceType
+from pqai_agent.message import MessageType, Message
+from pqai_agent.toolkit.lark_alert_for_human_intervention import LarkAlertForHumanIntervention
+from pqai_agent.user_manager import UserManager
 
 class DummyVectorMemoryManager:
     def __init__(self, user_id):

+ 3 - 3
history_dialogue_service.py → pqai_agent/history_dialogue_service.py

@@ -3,11 +3,11 @@
 # vim:fenc=utf-8
 
 import requests
-from logging_service import logger
+from pqai_agent.logging_service import logger
 import time
 
-import configs
-from message import MessageType
+from pqai_agent import configs
+from pqai_agent.message import MessageType
 
 
 class HistoryDialogueService:

+ 1 - 1
logging_service.py → pqai_agent/logging_service.py

@@ -5,7 +5,7 @@
 import logging
 from logging.handlers import RotatingFileHandler
 
-import configs
+from pqai_agent import configs
 
 COLORS = {
     'DEBUG': '\033[0m',    # 蓝色

+ 0 - 0
message.py → pqai_agent/message.py


+ 4 - 4
message_queue_backend.py → pqai_agent/message_queue_backend.py

@@ -4,12 +4,12 @@
 
 import abc
 import time
-from logging_service import logger
-from typing import Dict, Any, Optional
-import configs
+from pqai_agent.logging_service import logger
+from typing import Optional
+from pqai_agent import configs
 
 import logging_service
-from message import Message, MessageType, MessageChannel
+from pqai_agent.message import Message, MessageType, MessageChannel
 
 import rocketmq
 from rocketmq import ClientConfiguration, Credentials, SimpleConsumer

+ 0 - 0
prompt_templates.py → pqai_agent/prompt_templates.py


+ 1 - 1
rate_limiter.py → pqai_agent/rate_limiter.py

@@ -3,7 +3,7 @@
 # vim:fenc=utf-8
 
 import time
-from logging_service import logger
+from pqai_agent.logging_service import logger
 
 class MessageSenderRateLimiter:
     MAX_CHAR_PER_SECOND = 5

+ 6 - 6
response_type_detector.py → pqai_agent/response_type_detector.py

@@ -7,13 +7,13 @@ from typing import Dict, List
 
 from openai import OpenAI
 from datetime import datetime
-import chat_service
-import configs
-import prompt_templates
-from dialogue_manager import DialogueManager
-from logging_service import logger
-from message import MessageType
 import re
+from pqai_agent import chat_service
+from pqai_agent import configs
+from pqai_agent import prompt_templates
+from pqai_agent.dialogue_manager import DialogueManager
+from pqai_agent.logging_service import logger
+from pqai_agent.message import MessageType
 
 
 class ResponseTypeDetector:

+ 0 - 0
pqai_agent/toolkit/__init__.py


+ 1 - 1
toolkit/base.py → pqai_agent/toolkit/base.py

@@ -1,7 +1,7 @@
 from typing import List, Optional
 import functools
 import threading
-from toolkit.function_tool import FunctionTool
+from pqai_agent.toolkit.function_tool import FunctionTool
 
 def with_timeout(timeout=None):
     r"""Decorator that adds timeout functionality to functions.

+ 2 - 2
toolkit/function_tool.py → pqai_agent/toolkit/function_tool.py

@@ -1,5 +1,5 @@
 import inspect
-from inspect import Parameter, getsource, signature
+from inspect import Parameter, signature
 from typing import Any, Callable, Dict, Mapping, Optional, Tuple, Type
 
 from docstring_parser import parse
@@ -13,7 +13,7 @@ import sys
 import os
 # FIXME
 sys.path.append(os.curdir)
-from logging_service import logger
+from pqai_agent.logging_service import logger
 
 
 def to_pascal(snake: str) -> str:

+ 2 - 2
toolkit/lark_alert_for_human_intervention.py → pqai_agent/toolkit/lark_alert_for_human_intervention.py

@@ -1,7 +1,7 @@
 from typing import List
 
-from toolkit.base import BaseToolkit
-from toolkit.function_tool import FunctionTool
+from pqai_agent.toolkit.base import BaseToolkit
+from pqai_agent.toolkit.function_tool import FunctionTool
 import requests
 
 

+ 5 - 5
user_manager.py → pqai_agent/user_manager.py

@@ -2,8 +2,8 @@
 # -*- coding: utf-8 -*-
 # vim:fenc=utf-8
 
-from logging_service import logger
-from typing import Dict, Optional, Tuple, Any, List
+from pqai_agent.logging_service import logger
+from typing import Dict, Optional, List
 import json
 import time
 import os
@@ -11,8 +11,8 @@ import abc
 
 import pymysql.cursors
 
-import configs
-from database import MySQLManager
+from pqai_agent import configs
+from pqai_agent.database import MySQLManager
 
 
 class UserManager(abc.ABC):
@@ -117,7 +117,7 @@ class LocalUserManager(UserManager):
 
     def list_all_users(self):
         user_ids = []
-        for root, dirs, files in os.walk('user_profiles/'):
+        for root, dirs, files in os.walk('../user_profiles/'):
             for file in files:
                 if file.endswith('.json'):
                     user_ids.append(os.path.splitext(file)[0])

+ 5 - 5
user_profile_extractor.py → pqai_agent/user_profile_extractor.py

@@ -3,13 +3,13 @@
 # vim:fenc=utf-8
 
 import json
-from typing import Dict, Any, Optional, List
+from typing import Dict, Optional, List
 
-import chat_service
-import configs
-from prompt_templates import USER_PROFILE_EXTRACT_PROMPT
+from pqai_agent import chat_service
+from pqai_agent import configs
+from pqai_agent.prompt_templates import USER_PROFILE_EXTRACT_PROMPT
 from openai import OpenAI
-from logging_service import logger
+from pqai_agent.logging_service import logger
 
 
 class UserProfileExtractor:

+ 0 - 0
pqai_agent_server/__init__.py


+ 9 - 11
api_server.py → pqai_agent_server/api_server.py

@@ -5,21 +5,19 @@
 import logging
 import werkzeug.exceptions
 from flask import Flask, request, jsonify
-from datetime import datetime, timedelta
+from datetime import datetime
 from argparse import ArgumentParser
 
 from openai import OpenAI
-from message import MessageType
-import chat_service
-import configs
+from pqai_agent.message import MessageType
+from pqai_agent import configs
 import json
-import logging_service
-import prompt_templates
-from dialogue_manager import DialogueManager
-from history_dialogue_service import HistoryDialogueService
-from response_type_detector import ResponseTypeDetector
-from user_manager import MySQLUserManager, MySQLUserRelationManager
-from user_profile_extractor import UserProfileExtractor
+from pqai_agent import logging_service, chat_service, prompt_templates
+from pqai_agent.dialogue_manager import DialogueManager
+from pqai_agent.history_dialogue_service import HistoryDialogueService
+from pqai_agent.response_type_detector import ResponseTypeDetector
+from pqai_agent.user_manager import MySQLUserManager, MySQLUserRelationManager
+from pqai_agent.user_profile_extractor import UserProfileExtractor
 
 app = Flask('agent_api_server')
 logger = logging_service.logger

+ 0 - 1
requirements.txt

@@ -49,7 +49,6 @@ urllib3==2.3.0
 websockets==14.2
 wrapt==1.17.2
 zipp==3.21.0
-
 docstring_parser~=0.16
 pyapollos~=0.1.5
 Werkzeug~=3.1.3

+ 2 - 2
scripts/disable_user_daily_push.py

@@ -12,8 +12,8 @@ import json
 import pymysql.cursors
 
 sys.path.append(os.curdir)
-import configs
-from user_manager import MySQLUserManager, MySQLUserRelationManager
+from pqai_agent import configs
+from pqai_agent.user_manager import MySQLUserManager, MySQLUserRelationManager
 
 if __name__ == '__main__':
     config = configs.get()

+ 3 - 3
scripts/mq_sender.py

@@ -1,9 +1,9 @@
 import os
 import sys
 sys.path.append(os.curdir)
-import configs
-from message import Message, MessageType, MessageChannel
-from message_queue_backend import AliyunRocketMQQueueBackend
+from pqai_agent import configs
+from pqai_agent.message import Message, MessageType, MessageChannel
+from pqai_agent.message_queue_backend import AliyunRocketMQQueueBackend
 import time
 from argparse import ArgumentParser
 

+ 2 - 2
scripts/profile_cleaner.py

@@ -8,8 +8,8 @@
 import sys
 import os
 sys.path.append(os.curdir)
-import configs
-from user_manager import MySQLUserManager
+from pqai_agent import configs
+from pqai_agent.user_manager import MySQLUserManager
 
 if __name__ == '__main__':
     config = configs.get()

+ 4 - 4
scripts/resend_lost_message.py

@@ -6,10 +6,10 @@ import re
 import sys
 import os
 sys.path.append(os.curdir)
-import configs
-from message import MessageChannel, Message, MessageType
-from message_queue_backend import AliyunRocketMQQueueBackend
-from user_manager import MySQLUserRelationManager
+from pqai_agent import configs
+from pqai_agent.message import MessageChannel, Message, MessageType
+from pqai_agent.message_queue_backend import AliyunRocketMQQueueBackend
+from pqai_agent.user_manager import MySQLUserRelationManager
 
 
 config = configs.get()

+ 64 - 0
setup.py

@@ -0,0 +1,64 @@
+from setuptools import setup, find_packages
+
+setup(
+    name='pqai_agent',
+    version='0.1.0',
+    description='A Python package for Piaoquan AI Agent functionalities.',
+    author='FENG Zhoutian',
+    author_email='fengzhoutian@hotmail.com',
+    url='https://git.yishihui.com/Server/AgentCoreService',
+    packages=find_packages(),
+    install_requires=[
+        'annotated-types==0.7.0',
+        'anyio==4.9.0',
+        'APScheduler==3.11.0',
+        'Authlib==1.5.1',
+        'certifi==2025.1.31',
+        'cffi==1.17.1',
+        'charset-normalizer==3.4.1',
+        'cozepy==0.13.0',
+        'cryptography==44.0.2',
+        'Deprecated==1.2.18',
+        'distro==1.9.0',
+        'grpcio==1.71.0',
+        'grpcio-tools==1.71.0',
+        'httpcore==1.0.7',
+        'httpx==0.27.2',
+        'idna==3.10',
+        'importlib_metadata==8.6.1',
+        'iniconfig==2.1.0',
+        'jiter==0.9.0',
+        'openai==1.68.2',
+        'packaging==24.2',
+        'pluggy==1.5.0',
+        'protobuf==5.29.4',
+        'pycparser==2.22',
+        'pydantic==2.10.6',
+        'pydantic_core==2.27.2',
+        'PyJWT==2.10.1',
+        'PyMySQL==1.1.1',
+        'pytest==8.3.5',
+        'PyYAML==6.0.2',
+        'rocketmq-python-client==5.0.5',
+        'requests>=2.0.0',
+        'setuptools==78.1.0',
+        'sniffio==1.3.1',
+        'tqdm==4.67.1',
+        'typing_extensions==4.13.0',
+        'tzlocal==5.3.1',
+        'urllib3==2.3.0',
+        'websockets==14.2',
+        'wrapt==1.17.2',
+        'zipp==3.21.0',
+        'docstring_parser~=0.16',
+        'pyapollos~=0.1.5',
+        'Werkzeug~=3.1.3',
+        'Flask~=3.1.0',
+        'jsonschema~=4.23.0',
+    ],
+    classifiers=[
+        'Programming Language :: Python :: 3',
+        'Operating System :: OS Independent',
+    ],
+    python_requires='>=3.6',
+)

+ 0 - 0
tests/__init__.py


+ 5 - 7
unit_test.py → tests/unit_test.py

@@ -3,14 +3,12 @@
 # vim:fenc=utf-8
 
 import pytest
-from datetime import datetime, timedelta
-from typing import Dict, Optional, Tuple, Any
 from unittest.mock import Mock, MagicMock
-from agent_service import AgentService, MemoryQueueBackend
-from dialogue_manager import DialogueState, TimeContext
-from message import MessageType, Message, MessageChannel
-from response_type_detector import ResponseTypeDetector
-from user_manager import LocalUserManager
+from pqai_agent.agent_service import AgentService, MemoryQueueBackend
+from pqai_agent.dialogue_manager import DialogueState, TimeContext
+from pqai_agent.message import MessageType, Message, MessageChannel
+from pqai_agent.response_type_detector import ResponseTypeDetector
+from pqai_agent.user_manager import LocalUserManager
 import time
 import logging