sycommon-python-lib 0.2.0b25__tar.gz → 0.2.0b26__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/PKG-INFO +11 -11
  2. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/pyproject.toml +11 -11
  3. sycommon_python_lib-0.2.0b26/src/sycommon/agent/__init__.py +38 -0
  4. sycommon_python_lib-0.2.0b26/src/sycommon/agent/examples/virtual_employee_demo.py +463 -0
  5. sycommon_python_lib-0.2.0b26/src/sycommon/agent/exports.py +107 -0
  6. sycommon_python_lib-0.2.0b26/src/sycommon/agent/skills/__init__.py +18 -0
  7. sycommon_python_lib-0.2.0b26/src/sycommon/agent/skills/examples/faq_handler/scripts/search.py +68 -0
  8. sycommon_python_lib-0.2.0b26/src/sycommon/agent/skills/exports.py +78 -0
  9. sycommon_python_lib-0.2.0b26/src/sycommon/agent/virtual_employee.py +774 -0
  10. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/heartbeat_process/heartbeat_process_manager.py +5 -3
  11. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon_python_lib.egg-info/PKG-INFO +11 -11
  12. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon_python_lib.egg-info/SOURCES.txt +6 -0
  13. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon_python_lib.egg-info/requires.txt +10 -10
  14. sycommon_python_lib-0.2.0b25/src/sycommon/agent/__init__.py +0 -62
  15. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/README.md +0 -0
  16. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/setup.cfg +0 -0
  17. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/command/__init__.py +0 -0
  18. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/command/cli.py +0 -0
  19. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/command/core/__init__.py +0 -0
  20. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/command/core/console.py +0 -0
  21. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/command/core/models.py +0 -0
  22. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/command/core/project.py +0 -0
  23. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/command/core/utils.py +0 -0
  24. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/command/templates/__init__.py +0 -0
  25. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/command/templates/agent/__init__.py +0 -0
  26. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/command/templates/base/__init__.py +0 -0
  27. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/command/templates/web/__init__.py +0 -0
  28. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/__init__.py +0 -0
  29. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/agent/examples/01_basic_agent.py +0 -0
  30. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/agent/examples/02_tool_agent.py +0 -0
  31. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/agent/examples/03_structured_output.py +0 -0
  32. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/agent/examples/04_memory_agent.py +0 -0
  33. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/agent/examples/05_streaming.py +0 -0
  34. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/agent/examples/06_multi_agent.py +0 -0
  35. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/agent/examples/07_skills_agent.py +0 -0
  36. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/agent/examples/08_middleware.py +0 -0
  37. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/agent/examples/09_interrupt.py +0 -0
  38. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/agent/examples/10_custom_llm.py +0 -0
  39. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/agent/examples/11_complex_workflow.py +0 -0
  40. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/agent/examples/12_batch_processing.py +0 -0
  41. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/agent/examples/__init__.py +0 -0
  42. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/agent/examples/middleware/01_basic_monitoring.py +0 -0
  43. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/agent/examples/middleware/02_permission_control.py +0 -0
  44. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/agent/examples/middleware/03_tool_skill_filter.py +0 -0
  45. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/agent/examples/middleware/04_caching_retry.py +0 -0
  46. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/agent/examples/middleware/05_sanitization.py +0 -0
  47. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/agent/examples/middleware/06_tracking.py +0 -0
  48. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/agent/examples/middleware/07_advanced.py +0 -0
  49. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/agent/examples/middleware/08_progressive_skills.py +0 -0
  50. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/agent/examples/middleware/__init__.py +0 -0
  51. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/agent/examples/middleware/override_examples.py +0 -0
  52. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/agent/get_agent.py +0 -0
  53. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/config/Config.py +0 -0
  54. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/config/DatabaseConfig.py +0 -0
  55. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/config/ElasticsearchConfig.py +0 -0
  56. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/config/EmbeddingConfig.py +0 -0
  57. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/config/LLMConfig.py +0 -0
  58. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/config/LangfuseConfig.py +0 -0
  59. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/config/MQConfig.py +0 -0
  60. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/config/RedisConfig.py +0 -0
  61. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/config/RerankerConfig.py +0 -0
  62. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/config/SentryConfig.py +0 -0
  63. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/config/__init__.py +0 -0
  64. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/database/async_base_db_service.py +0 -0
  65. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/database/async_database_service.py +0 -0
  66. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/database/base_db_service.py +0 -0
  67. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/database/database_service.py +0 -0
  68. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/database/elasticsearch_service.py +0 -0
  69. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/database/redis_service.py +0 -0
  70. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/database/token_usage_db_service.py +0 -0
  71. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/health/__init__.py +0 -0
  72. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/health/health_check.py +0 -0
  73. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/health/metrics.py +0 -0
  74. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/health/ping.py +0 -0
  75. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/heartbeat_process/__init__.py +0 -0
  76. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/heartbeat_process/heartbeat_config.py +0 -0
  77. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/heartbeat_process/heartbeat_process_worker.py +0 -0
  78. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/llm/__init__.py +0 -0
  79. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/llm/embedding.py +0 -0
  80. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/llm/get_llm.py +0 -0
  81. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/llm/llm_logger.py +0 -0
  82. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/llm/llm_tokens.py +0 -0
  83. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/llm/llm_with_token_tracking.py +0 -0
  84. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/llm/native_smart_retry_runnable.py +0 -0
  85. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/llm/smart_retry_runnable.py +0 -0
  86. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/llm/struct_token.py +0 -0
  87. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/llm/sy_langfuse.py +0 -0
  88. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/llm/token_usage_es_service.py +0 -0
  89. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/llm/token_usage_mysql_service.py +0 -0
  90. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/llm/usage_token.py +0 -0
  91. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/logging/__init__.py +0 -0
  92. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/logging/async_sql_logger.py +0 -0
  93. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/logging/kafka_log.py +0 -0
  94. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/logging/logger_levels.py +0 -0
  95. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/logging/logger_wrapper.py +0 -0
  96. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/logging/process_logger.py +0 -0
  97. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/logging/sql_logger.py +0 -0
  98. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/middleware/__init__.py +0 -0
  99. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/middleware/context.py +0 -0
  100. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/middleware/cors.py +0 -0
  101. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/middleware/docs.py +0 -0
  102. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/middleware/exception.py +0 -0
  103. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/middleware/middleware.py +0 -0
  104. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/middleware/monitor_memory.py +0 -0
  105. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/middleware/mq.py +0 -0
  106. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/middleware/timeout.py +0 -0
  107. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/middleware/traceid.py +0 -0
  108. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/models/__init__.py +0 -0
  109. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/models/base_http.py +0 -0
  110. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/models/log.py +0 -0
  111. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/models/mqlistener_config.py +0 -0
  112. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/models/mqmsg_model.py +0 -0
  113. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/models/mqsend_config.py +0 -0
  114. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/models/sso_user.py +0 -0
  115. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/models/token_usage.py +0 -0
  116. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/models/token_usage_mysql.py +0 -0
  117. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/notice/__init__.py +0 -0
  118. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/notice/uvicorn_monitor.py +0 -0
  119. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/rabbitmq/process_pool_consumer.py +0 -0
  120. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/rabbitmq/rabbitmq_client.py +0 -0
  121. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/rabbitmq/rabbitmq_pool.py +0 -0
  122. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/rabbitmq/rabbitmq_service.py +0 -0
  123. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/rabbitmq/rabbitmq_service_client_manager.py +0 -0
  124. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/rabbitmq/rabbitmq_service_connection_monitor.py +0 -0
  125. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/rabbitmq/rabbitmq_service_consumer_manager.py +0 -0
  126. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/rabbitmq/rabbitmq_service_core.py +0 -0
  127. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/rabbitmq/rabbitmq_service_producer_manager.py +0 -0
  128. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/sentry/__init__.py +0 -0
  129. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/sentry/sy_sentry.py +0 -0
  130. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/services.py +0 -0
  131. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/sse/__init__.py +0 -0
  132. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/sse/event.py +0 -0
  133. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/sse/sse.py +0 -0
  134. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/synacos/__init__.py +0 -0
  135. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/synacos/example.py +0 -0
  136. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/synacos/example2.py +0 -0
  137. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/synacos/feign.py +0 -0
  138. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/synacos/feign_client.py +0 -0
  139. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/synacos/nacos_client_base.py +0 -0
  140. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/synacos/nacos_config_manager.py +0 -0
  141. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/synacos/nacos_heartbeat_manager.py +0 -0
  142. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/synacos/nacos_service.py +0 -0
  143. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/synacos/nacos_service_discovery.py +0 -0
  144. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/synacos/nacos_service_registration.py +0 -0
  145. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/synacos/param.py +0 -0
  146. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/tests/test_email.py +0 -0
  147. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/tests/test_mq.py +0 -0
  148. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/tools/__init__.py +0 -0
  149. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/tools/async_utils.py +0 -0
  150. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/tools/docs.py +0 -0
  151. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/tools/env.py +0 -0
  152. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/tools/merge_headers.py +0 -0
  153. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/tools/snowflake.py +0 -0
  154. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/tools/syemail.py +0 -0
  155. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon/tools/timing.py +0 -0
  156. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon_python_lib.egg-info/dependency_links.txt +0 -0
  157. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon_python_lib.egg-info/entry_points.txt +0 -0
  158. {sycommon_python_lib-0.2.0b25 → sycommon_python_lib-0.2.0b26}/src/sycommon_python_lib.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sycommon-python-lib
3
- Version: 0.2.0b25
3
+ Version: 0.2.0b26
4
4
  Summary: Add your description here
5
5
  Requires-Python: >=3.11
6
6
  Description-Content-Type: text/markdown
@@ -9,27 +9,27 @@ Requires-Dist: aiohttp>=3.13.3
9
9
  Requires-Dist: aiomysql>=0.3.2
10
10
  Requires-Dist: anyio>=4.12.1
11
11
  Requires-Dist: decorator>=5.2.1
12
- Requires-Dist: deepagents>=0.4.5
12
+ Requires-Dist: deepagents>=0.4.11
13
13
  Requires-Dist: elasticsearch>=9.3.0
14
- Requires-Dist: fastapi>=0.133.1
14
+ Requires-Dist: fastapi>=0.135.1
15
15
  Requires-Dist: jinja2>=3.1.6
16
16
  Requires-Dist: kafka-python>=2.3.0
17
- Requires-Dist: langchain>=1.2.10
18
- Requires-Dist: langchain-core>=1.2.16
19
- Requires-Dist: langchain-openai>=1.1.10
20
- Requires-Dist: langfuse>=3.14.5
21
- Requires-Dist: langgraph>=1.0.9
17
+ Requires-Dist: langchain>=1.2.12
18
+ Requires-Dist: langchain-core>=1.2.19
19
+ Requires-Dist: langchain-openai>=1.1.11
20
+ Requires-Dist: langfuse>=4.0.0
21
+ Requires-Dist: langgraph>=1.1.2
22
22
  Requires-Dist: loguru>=0.7.3
23
23
  Requires-Dist: mysql-connector-python>=9.6.0
24
24
  Requires-Dist: nacos-sdk-python<3.0,>=2.0.9
25
25
  Requires-Dist: psutil>=7.2.2
26
26
  Requires-Dist: pydantic>=2.12.5
27
- Requires-Dist: python-dotenv>=1.2.1
27
+ Requires-Dist: python-dotenv>=1.2.2
28
28
  Requires-Dist: python-multipart>=0.0.22
29
29
  Requires-Dist: pyyaml>=6.0.3
30
30
  Requires-Dist: redis>=7.3.0
31
- Requires-Dist: sentry-sdk[fastapi]>=2.53.0
32
- Requires-Dist: sqlalchemy[asyncio]>=2.0.47
31
+ Requires-Dist: sentry-sdk[fastapi]>=2.54.0
32
+ Requires-Dist: sqlalchemy[asyncio]>=2.0.48
33
33
  Requires-Dist: starlette>=0.52.1
34
34
  Requires-Dist: tiktoken>=0.12.0
35
35
  Requires-Dist: uvicorn>=0.41.0
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "sycommon-python-lib"
3
- version = "0.2.0b25"
3
+ version = "0.2.0b26"
4
4
  description = "Add your description here"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -10,27 +10,27 @@ dependencies = [
10
10
  "aiomysql>=0.3.2",
11
11
  "anyio>=4.12.1",
12
12
  "decorator>=5.2.1",
13
- "deepagents>=0.4.5",
13
+ "deepagents>=0.4.11",
14
14
  "elasticsearch>=9.3.0",
15
- "fastapi>=0.133.1",
15
+ "fastapi>=0.135.1",
16
16
  "jinja2>=3.1.6",
17
17
  "kafka-python>=2.3.0",
18
- "langchain>=1.2.10",
19
- "langchain-core>=1.2.16",
20
- "langchain-openai>=1.1.10",
21
- "langfuse>=3.14.5",
22
- "langgraph>=1.0.9",
18
+ "langchain>=1.2.12",
19
+ "langchain-core>=1.2.19",
20
+ "langchain-openai>=1.1.11",
21
+ "langfuse>=4.0.0",
22
+ "langgraph>=1.1.2",
23
23
  "loguru>=0.7.3",
24
24
  "mysql-connector-python>=9.6.0",
25
25
  "nacos-sdk-python>=2.0.9,<3.0",
26
26
  "psutil>=7.2.2",
27
27
  "pydantic>=2.12.5",
28
- "python-dotenv>=1.2.1",
28
+ "python-dotenv>=1.2.2",
29
29
  "python-multipart>=0.0.22",
30
30
  "pyyaml>=6.0.3",
31
31
  "redis>=7.3.0",
32
- "sentry-sdk[fastapi]>=2.53.0",
33
- "sqlalchemy[asyncio]>=2.0.47",
32
+ "sentry-sdk[fastapi]>=2.54.0",
33
+ "sqlalchemy[asyncio]>=2.0.48",
34
34
  "starlette>=0.52.1",
35
35
  "tiktoken>=0.12.0",
36
36
  "uvicorn>=0.41.0",
@@ -0,0 +1,38 @@
1
+ """
2
+ sycommon.agent - DeepAgents 便捷封装
3
+
4
+ 提供对 deepagents 的便捷调用,自动集成 get_llm 的 Token 统计和 Langfuse 追踪
5
+ """
6
+
7
+ from sycommon.agent.exports import *
8
+
9
+ __all__ = [
10
+ # 主要接口
11
+ "get_agent",
12
+ "create_tool_agent",
13
+ "create_multi_agent",
14
+ "create_structured_agent",
15
+ # deepagents 透传
16
+ "SubAgent",
17
+ "CompiledSubAgent",
18
+ "create_deep_agent",
19
+ "MemoryMiddleware",
20
+ "FilesystemMiddleware",
21
+ "SubAgentMiddleware",
22
+ # 虚拟员工系统
23
+ "VirtualEmployee",
24
+ "VirtualTeam",
25
+ "EmployeeFactory",
26
+ "Skill",
27
+ "SkillLevel",
28
+ "SubTeamMember",
29
+ "MemoryConfig",
30
+ "MemoryType",
31
+ "EmployeeMiddleware",
32
+ "LoggingEmployeeMiddleware",
33
+ "QuotaEmployeeMiddleware",
34
+ "PermissionEmployeeMiddleware",
35
+ # 技能系统中间件
36
+ "SkillsMiddleware",
37
+ "SkillMetadata",
38
+ ]
@@ -0,0 +1,463 @@
1
+ """
2
+ 虚拟员工系统示例
3
+ ================
4
+
5
+ 展示如何使用 VirtualEmployee 封装创建业务级的虚拟员工。
6
+
7
+ 运行方式:
8
+ python -m sycommon.agent.examples.virtual_employee_demo
9
+ """
10
+ import asyncio
11
+ from typing import Optional
12
+ from pydantic import BaseModel, Field
13
+ from langchain_core.tools import tool
14
+ from langchain_core.messages import HumanMessage
15
+
16
+ from sycommon.agent import (
17
+ VirtualEmployee,
18
+ VirtualTeam,
19
+ EmployeeFactory,
20
+ Skill,
21
+ SkillLevel,
22
+ SubTeamMember,
23
+ MemoryConfig,
24
+ MemoryType,
25
+ LoggingEmployeeMiddleware,
26
+ QuotaEmployeeMiddleware,
27
+ PermissionEmployeeMiddleware,
28
+ )
29
+
30
+
31
+ # ========== 工具定义 ==========
32
+
33
+ @tool
34
+ def search_faq(keyword: str) -> str:
35
+ """搜索常见问题"""
36
+ faqs = {
37
+ "退货": "退货政策:购买后7天内可无理由退货",
38
+ "退款": "退款将在3-5个工作日内到账",
39
+ "配送": "配送时间:一线城市1-2天,其他地区3-5天"
40
+ }
41
+ for key, value in faqs.items():
42
+ if key in keyword:
43
+ return f"找到FAQ: {value}"
44
+ return f"未找到与 '{keyword}' 相关的FAQ"
45
+
46
+
47
+ @tool
48
+ def create_ticket(title: str, content: str) -> str:
49
+ """创建工单"""
50
+ return f"工单已创建: #{hash(title) % 10000} - {title}"
51
+
52
+
53
+ @tool
54
+ def search_web(query: str) -> str:
55
+ """搜索网络"""
56
+ return f"搜索结果: {query} 相关信息..."
57
+
58
+
59
+ @tool
60
+ def analyze_data(data: str) -> str:
61
+ """分析数据"""
62
+ return f"分析结果: {data}"
63
+
64
+
65
+ # ========== 示例函数 ==========
66
+
67
+ async def basic_employee():
68
+ """基础虚拟员工"""
69
+ print("=" * 60)
70
+ print("示例 1: 基础虚拟员工")
71
+ print("=" * 60)
72
+
73
+ # 创建一个简单的客服员工
74
+ employee = VirtualEmployee(
75
+ name="客服小美",
76
+ role="客户支持专员",
77
+ model="Qwen2.5-72B",
78
+ skills=[
79
+ Skill("faq", "回答常见问题", level=SkillLevel.INTERMEDIATE),
80
+ Skill("complaint", "处理客户投诉", level=SkillLevel.SENIOR),
81
+ ],
82
+ tools=[search_faq, create_ticket],
83
+ system_prompt="请用友好的语气回答客户问题。"
84
+ )
85
+
86
+ print(f"\n员工信息: {employee}")
87
+
88
+ # 执行任务
89
+ result = await employee.run("我想退货,怎么操作?")
90
+ print(f"\n用户: 我想退货,怎么操作?")
91
+ print(f"员工: {result}")
92
+
93
+
94
+ async def employee_with_subteam():
95
+ """带内部小团队的员工"""
96
+ print("\n" + "=" * 60)
97
+ print("示例 2: 带内部小团队的经理员工")
98
+ print("=" * 60)
99
+
100
+ # 创建经理员工,带有内部小团队
101
+ manager = VirtualEmployee(
102
+ name="项目经理张三",
103
+ role="项目经理",
104
+ model="Qwen2.5-72B",
105
+ subteam=[
106
+ SubTeamMember(
107
+ name="研究员",
108
+ role="负责调研和分析",
109
+ system_prompt="你是研究员,负责收集和分析信息。"
110
+ ),
111
+ SubTeamMember(
112
+ name="执行员",
113
+ role="负责具体执行",
114
+ system_prompt="你是执行员,负责落实具体任务。"
115
+ )
116
+ ],
117
+ skills=[
118
+ Skill("coordination", "协调团队成员"),
119
+ Skill("planning", "制定工作计划")
120
+ ],
121
+ system_prompt="你需要协调内部小团队完成工作。"
122
+ )
123
+
124
+ result = await manager.run("帮我规划一个新产品发布方案")
125
+ print(f"\n用户: 帮我规划一个新产品发布方案")
126
+ print(f"经理: {result[:200]}...")
127
+
128
+
129
+ async def employee_with_memory():
130
+ """带记忆的员工"""
131
+ print("\n" + "=" * 60)
132
+ print("示例 3: 带记忆的员工")
133
+ print("=" * 60)
134
+
135
+ employee = VirtualEmployee(
136
+ name="助手小明",
137
+ role="智能助手",
138
+ model="Qwen2.5-72B",
139
+ memory=MemoryConfig(
140
+ types=[MemoryType.CONVERSATION, MemoryType.EPISODIC],
141
+ max_history=50
142
+ ),
143
+ system_prompt="你需要记住用户的偏好和信息。"
144
+ )
145
+
146
+ thread_id = "user_001"
147
+
148
+ # 第一轮对话
149
+ print("\n--- 第一轮对话 ---")
150
+ result1 = await employee.run("我叫李华,我喜欢科技产品", thread_id=thread_id)
151
+ print(f"用户: 我叫李华,我喜欢科技产品")
152
+ print(f"员工: {result1}")
153
+
154
+ # 第二轮对话(有记忆)
155
+ print("\n--- 第二轮对话 ---")
156
+ result2 = await employee.run("你还记得我叫什么吗?我喜欢什么?", thread_id=thread_id)
157
+ print(f"用户: 你还记得我叫什么吗?我喜欢什么?")
158
+ print(f"员工: {result2}")
159
+
160
+
161
+ async def employee_with_middleware():
162
+ """带中间件的员工"""
163
+ print("\n" + "=" * 60)
164
+ print("示例 4: 带中间件的员工")
165
+ print("=" * 60)
166
+
167
+ # 创建带日志和配额中间件的员工
168
+ logger = LoggingEmployeeMiddleware(verbose=True)
169
+ quota = QuotaEmployeeMiddleware(max_requests=5)
170
+
171
+ employee = VirtualEmployee(
172
+ name="受限助手",
173
+ role="有使用限制的助手",
174
+ model="Qwen2.5-72B",
175
+ middleware=[logger, quota]
176
+ )
177
+
178
+ # 执行几次任务
179
+ for i in range(2):
180
+ print(f"\n--- 请求 {i+1} ---")
181
+ result = await employee.run(f"问题{i+1}")
182
+ print(f"员工: {result[:100]}...")
183
+
184
+ print(f"\n剩余配额: {quota.remaining}")
185
+
186
+
187
+ async def employee_with_permission():
188
+ """带权限控制的员工"""
189
+ print("\n" + "=" * 60)
190
+ print("示例 5: 带权限控制的员工")
191
+ print("=" * 60)
192
+
193
+ # 只允许读取操作
194
+ permission = PermissionEmployeeMiddleware(allowed_actions=["read"])
195
+
196
+ employee = VirtualEmployee(
197
+ name="只读助手",
198
+ role="只读权限的助手",
199
+ model="Qwen2.5-72B",
200
+ middleware=[permission]
201
+ )
202
+
203
+ # 读取操作(允许)
204
+ print("\n--- 读取操作 ---")
205
+ result = await employee.run("查看系统状态")
206
+ print(f"员工: {result[:100]}...")
207
+
208
+ # 删除操作(拒绝)
209
+ print("\n--- 删除操作 ---")
210
+ try:
211
+ await employee.run("删除所有数据")
212
+ except PermissionError as e:
213
+ print(f"权限错误: {e}")
214
+
215
+
216
+ async def factory_employees():
217
+ """使用工厂创建员工"""
218
+ print("\n" + "=" * 60)
219
+ print("示例 6: 使用工厂创建员工")
220
+ print("=" * 60)
221
+
222
+ # 创建客服员工
223
+ support = EmployeeFactory.create_support_agent(
224
+ name="客服小红",
225
+ tools=[search_faq, create_ticket]
226
+ )
227
+ print(f"\n客服员工: {support}")
228
+
229
+ # 创建研究员工
230
+ researcher = EmployeeFactory.create_researcher(
231
+ name="研究员小张",
232
+ tools=[search_web, analyze_data]
233
+ )
234
+ print(f"研究员工: {researcher}")
235
+
236
+ # 创建写作员工
237
+ writer = EmployeeFactory.create_writer(name="写作专家小李")
238
+ print(f"写作员工: {writer}")
239
+
240
+ # 创建经理员工
241
+ manager = EmployeeFactory.create_manager(name="经理小王")
242
+ print(f"经理员工: {manager}")
243
+
244
+ # 测试研究员工
245
+ print("\n--- 研究员工工作 ---")
246
+ result = await researcher.run("研究一下人工智能的最新发展")
247
+ print(f"研究员: {result[:200]}...")
248
+
249
+
250
+ async def chain_configuration():
251
+ """链式配置员工"""
252
+ print("\n" + "=" * 60)
253
+ print("示例 7: 链式配置员工")
254
+ print("=" * 60)
255
+
256
+ # 使用链式调用配置员工
257
+ employee = (
258
+ VirtualEmployee(
259
+ name="可配置助手",
260
+ role="灵活配置的助手",
261
+ model="Qwen2.5-72B"
262
+ )
263
+ .add_skill(Skill("chat", "日常对话"))
264
+ .add_skill(Skill("translate", "翻译服务"))
265
+ .add_tool(search_web)
266
+ .use_middleware(LoggingEmployeeMiddleware(verbose=True))
267
+ )
268
+
269
+ print(f"员工: {employee}")
270
+ print(f"技能数: {len(employee.skills)}")
271
+ print(f"工具数: {len(employee.tools)}")
272
+
273
+ result = await employee.run("你好")
274
+ print(f"\n员工: {result[:100]}...")
275
+
276
+
277
+ async def virtual_team():
278
+ """虚拟团队"""
279
+ print("\n" + "=" * 60)
280
+ print("示例 8: 虚拟团队")
281
+ print("=" * 60)
282
+
283
+ # 创建多个员工
284
+ support = EmployeeFactory.create_support_agent(name="客服小美")
285
+ researcher = EmployeeFactory.create_researcher(name="研究员小张")
286
+ writer = EmployeeFactory.create_writer(name="写作专家小李")
287
+
288
+ # 组建团队
289
+ team = VirtualTeam(
290
+ name="智能服务团队",
291
+ employees=[support, researcher, writer],
292
+ coordinator=EmployeeFactory.create_manager(name="团队经理")
293
+ )
294
+
295
+ print(f"团队: {team}")
296
+
297
+ # 委派任务给特定员工
298
+ print("\n--- 委派任务给客服 ---")
299
+ result = await team.delegate("客服小美", "我想咨询退货问题")
300
+ print(f"客服小美: {result[:150]}...")
301
+
302
+ print("\n--- 委派任务给研究员 ---")
303
+ result = await team.delegate("研究员小张", "研究市场趋势")
304
+ print(f"研究员小张: {result[:150]}...")
305
+
306
+
307
+ async def combined_example():
308
+ """综合示例"""
309
+ print("\n" + "=" * 60)
310
+ print("示例 9: 综合示例 - 完整的客服系统")
311
+ print("=" * 60)
312
+
313
+ # 创建带完整功能的客服员工
314
+ logger = LoggingEmployeeMiddleware(verbose=True)
315
+ quota = QuotaEmployeeMiddleware(max_requests=100)
316
+
317
+ support = VirtualEmployee(
318
+ name="高级客服专家",
319
+ role="高级客户支持专员",
320
+ model="Qwen2.5-72B",
321
+ skills=[
322
+ Skill("faq", "回答常见问题", level=SkillLevel.SENIOR,
323
+ examples=["退货政策", "配送时间"]),
324
+ Skill("complaint", "处理客户投诉", level=SkillLevel.EXPERT,
325
+ examples=["产品质量", "服务态度"]),
326
+ Skill("escalation", "问题升级处理", level=SkillLevel.EXPERT),
327
+ ],
328
+ tools=[search_faq, create_ticket],
329
+ subteam=[
330
+ SubTeamMember(name="技术支持", role="处理技术问题"),
331
+ SubTeamMember(name="售后专员", role="处理售后问题")
332
+ ],
333
+ memory=MemoryConfig(
334
+ types=[MemoryType.CONVERSATION],
335
+ max_history=100
336
+ ),
337
+ middleware=[logger, quota],
338
+ system_prompt="""你是一个专业、友好的高级客服专家。
339
+ 你可以:
340
+ 1. 直接回答常见问题
341
+ 2. 处理客户投诉
342
+ 3. 委派给技术支持或售后专员
343
+ 4. 创建工单跟踪问题
344
+ """
345
+ )
346
+
347
+ # 模拟客户服务场景
348
+ thread_id = "customer_001"
349
+
350
+ print("\n--- 场景1: 咨询退货 ---")
351
+ result = await support.run("我买的东西不喜欢,可以退货吗?", thread_id=thread_id)
352
+ print(f"客户: 我买的东西不喜欢,可以退货吗?")
353
+ print(f"客服: {result}")
354
+
355
+ print("\n--- 场景2: 追问细节 ---")
356
+ result = await support.run("退货需要什么条件?", thread_id=thread_id)
357
+ print(f"客户: 退货需要什么条件?")
358
+ print(f"客服: {result}")
359
+
360
+ print(f"\n剩余配额: {quota.remaining}")
361
+ print(f"日志条数: {len(logger.logs)}")
362
+
363
+
364
+ async def structured_output_example():
365
+ """结构化输出示例"""
366
+ print("\n" + "=" * 60)
367
+ print("示例 10: 结构化输出")
368
+ print("=" * 60)
369
+
370
+ # 定义输出格式
371
+ class AnalysisResult(BaseModel):
372
+ """分析结果结构"""
373
+ summary: str = Field(description="简要总结")
374
+ sentiment: str = Field(description="情感倾向: positive/negative/neutral")
375
+ confidence: float = Field(description="置信度 0-1")
376
+ keywords: list = Field(description="关键词列表")
377
+
378
+ # 创建结构化输出员工
379
+ analyst = VirtualEmployee(
380
+ name="情感分析师",
381
+ role="文本情感分析专家",
382
+ model="Qwen2.5-72B",
383
+ response_format=AnalysisResult,
384
+ system_prompt="你是情感分析专家,分析文本的情感和关键信息。"
385
+ )
386
+
387
+ print(f"\n员工: {analyst}")
388
+ print(f"输出格式: {AnalysisResult.__name__}")
389
+
390
+ result = await analyst.run("这个产品太棒了!质量好,价格合理,非常满意!")
391
+ print(f"\n用户: 这个产品太棒了!质量好,价格合理,非常满意!")
392
+ print(f"分析结果: {result}")
393
+
394
+
395
+ async def interrupt_example():
396
+ """中断控制示例(人工审核)"""
397
+ print("\n" + "=" * 60)
398
+ print("示例 11: 中断控制 - 人工审核")
399
+ print("=" * 60)
400
+
401
+ # 创建带中断控制的员工
402
+ from langgraph.checkpoint.memory import MemorySaver
403
+
404
+ approver = VirtualEmployee(
405
+ name="审批助手",
406
+ role="审批流程助手",
407
+ model="Qwen2.5-72B",
408
+ tools=[create_ticket],
409
+ checkpointer=MemorySaver(),
410
+ interrupt_on={"tool_calls": True}, # 工具调用前中断
411
+ system_prompt="你是审批助手,在执行重要操作前需要人工确认。"
412
+ )
413
+
414
+ thread_id = "approval_001"
415
+ config = {"configurable": {"thread_id": thread_id}}
416
+
417
+ print(f"\n员工: {approver}")
418
+ print("场景: 创建工单需要人工确认")
419
+
420
+ # 发起请求
421
+ print("\n--- 发起请求 ---")
422
+ result = await approver.run("帮我创建一个紧急工单,标题是系统故障", thread_id=thread_id)
423
+ print(f"用户: 帮我创建一个紧急工单,标题是系统故障")
424
+ print(f"当前状态: {result[:100]}...")
425
+
426
+ # 检查状态
427
+ print("\n--- 检查状态 ---")
428
+ state = await approver.aget_state(config)
429
+ print(f"是否需要继续: {bool(state.next)}")
430
+ print(f"下一步: {state.next}")
431
+
432
+ # 模拟人工确认后继续
433
+ if state.next:
434
+ print("\n--- 人工确认后继续 ---")
435
+ result = await approver.ainvoke(None, config=config)
436
+ print(f"最终结果: {result['messages'][-1].content[:100]}...")
437
+
438
+
439
+ async def main():
440
+ """运行所有示例"""
441
+ print("\n" + "=" * 70)
442
+ print("🚀 虚拟员工系统示例")
443
+ print("=" * 70)
444
+
445
+ await basic_employee()
446
+ await employee_with_subteam()
447
+ await employee_with_memory()
448
+ await employee_with_middleware()
449
+ await employee_with_permission()
450
+ await factory_employees()
451
+ await chain_configuration()
452
+ await virtual_team()
453
+ await combined_example()
454
+ await structured_output_example()
455
+ await interrupt_example()
456
+
457
+ print("\n" + "=" * 70)
458
+ print("✅ 所有示例完成")
459
+ print("=" * 70)
460
+
461
+
462
+ if __name__ == "__main__":
463
+ asyncio.run(main())
@@ -0,0 +1,107 @@
1
+ """
2
+ sycommon.agent 导出
3
+ =====================
4
+
5
+ 提供对 deepagents 的便捷调用,自动集成 get_llm 的 Token 统计和 Langfuse 追踪。
6
+
7
+ ## 使用示例
8
+
9
+ ```python
10
+ from sycommon.agent import get_agent, SubAgent
11
+
12
+ # 创建 Agent
13
+ agent = get_agent(
14
+ model="Qwen2.5-72B",
15
+ tools=[my_tool],
16
+ system_prompt="你是助手"
17
+ )
18
+
19
+ # 执行
20
+ result = await agent.ainvoke({"messages": ["你好"]})
21
+
22
+ # 多 Agent
23
+ agent = get_agent(
24
+ model="Qwen2.5-72B",
25
+ subagents=[
26
+ SubAgent(name="researcher", description="研究助手"),
27
+ ]
28
+ )
29
+
30
+ # 虚拟员工(业务层封装)
31
+ from sycommon.agent import VirtualEmployee, Skill, EmployeeFactory
32
+
33
+ support = EmployeeFactory.create_support_agent(name="客服小美")
34
+ result = await support.run("我需要帮助")
35
+ ```
36
+ """
37
+
38
+ # 主要接口
39
+ from sycommon.agent.get_agent import (
40
+ get_agent,
41
+ create_tool_agent,
42
+ create_multi_agent,
43
+ create_structured_agent,
44
+ )
45
+
46
+ # 透传 deepagents 的核心类,方便用户直接使用
47
+ from deepagents import (
48
+ SubAgent,
49
+ CompiledSubAgent,
50
+ create_deep_agent,
51
+ MemoryMiddleware,
52
+ FilesystemMiddleware,
53
+ SubAgentMiddleware,
54
+ )
55
+
56
+ # 虚拟员工系统(业务层封装)
57
+ from sycommon.agent.virtual_employee import (
58
+ VirtualEmployee,
59
+ VirtualTeam,
60
+ EmployeeFactory,
61
+ Skill,
62
+ SkillLevel,
63
+ SubTeamMember,
64
+ MemoryConfig,
65
+ MemoryType,
66
+ EmployeeMiddleware,
67
+ LoggingEmployeeMiddleware,
68
+ QuotaEmployeeMiddleware,
69
+ PermissionEmployeeMiddleware,
70
+ )
71
+
72
+ # 技能系统中间件(从 deepagents 导入)
73
+ from sycommon.agent.skills import (
74
+ SkillsMiddleware,
75
+ SkillMetadata,
76
+ )
77
+
78
+ __all__ = [
79
+ # 主要接口
80
+ "get_agent",
81
+ "create_tool_agent",
82
+ "create_multi_agent",
83
+ "create_structured_agent",
84
+ # deepagents 透传
85
+ "SubAgent",
86
+ "CompiledSubAgent",
87
+ "create_deep_agent",
88
+ "MemoryMiddleware",
89
+ "FilesystemMiddleware",
90
+ "SubAgentMiddleware",
91
+ # 虚拟员工系统
92
+ "VirtualEmployee",
93
+ "VirtualTeam",
94
+ "EmployeeFactory",
95
+ "Skill",
96
+ "SkillLevel",
97
+ "SubTeamMember",
98
+ "MemoryConfig",
99
+ "MemoryType",
100
+ "EmployeeMiddleware",
101
+ "LoggingEmployeeMiddleware",
102
+ "QuotaEmployeeMiddleware",
103
+ "PermissionEmployeeMiddleware",
104
+ # 技能系统中间件
105
+ "SkillsMiddleware",
106
+ "SkillMetadata",
107
+ ]