veadk-python 0.5.1__tar.gz → 0.5.2__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 (274) hide show
  1. {veadk_python-0.5.1/veadk_python.egg-info → veadk_python-0.5.2}/PKG-INFO +9 -8
  2. {veadk_python-0.5.1 → veadk_python-0.5.2}/pyproject.toml +9 -8
  3. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/agent.py +27 -0
  4. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/cli/cli_rl.py +4 -3
  5. veadk_python-0.5.2/veadk/cli/templates/rl/lightning/README.md +58 -0
  6. veadk_python-0.5.2/veadk/cli/templates/rl/lightning/data/demo_test.parquet +0 -0
  7. veadk_python-0.5.2/veadk/cli/templates/rl/lightning/data/demo_train.parquet +0 -0
  8. veadk_python-0.5.2/veadk/cli/templates/rl/lightning/demo_calculate_agent.py +148 -0
  9. veadk_python-0.5.2/veadk/cli/templates/rl/lightning/restart_ray.sh +7 -0
  10. veadk_python-0.5.2/veadk/cli/templates/rl/lightning/train.sh +53 -0
  11. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/consts.py +1 -1
  12. veadk_python-0.5.2/veadk/memory/save_session_callback.py +159 -0
  13. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tools/builtin_tools/image_generate.py +13 -4
  14. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tools/builtin_tools/llm_shield.py +2 -3
  15. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tools/builtin_tools/video_generate.py +66 -7
  16. veadk_python-0.5.2/veadk/tools/builtin_tools/vod.py +71 -0
  17. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tracing/telemetry/attributes/extractors/common_attributes_extractors.py +18 -0
  18. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tracing/telemetry/telemetry.py +7 -2
  19. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/version.py +1 -1
  20. {veadk_python-0.5.1 → veadk_python-0.5.2/veadk_python.egg-info}/PKG-INFO +9 -8
  21. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk_python.egg-info/SOURCES.txt +8 -0
  22. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk_python.egg-info/requires.txt +8 -7
  23. {veadk_python-0.5.1 → veadk_python-0.5.2}/LICENSE +0 -0
  24. {veadk_python-0.5.1 → veadk_python-0.5.2}/README.md +0 -0
  25. {veadk_python-0.5.1 → veadk_python-0.5.2}/setup.cfg +0 -0
  26. {veadk_python-0.5.1 → veadk_python-0.5.2}/tests/test_agent.py +0 -0
  27. {veadk_python-0.5.1 → veadk_python-0.5.2}/tests/test_cloud.py +0 -0
  28. {veadk_python-0.5.1 → veadk_python-0.5.2}/tests/test_evaluator.py +0 -0
  29. {veadk_python-0.5.1 → veadk_python-0.5.2}/tests/test_knowledgebase.py +0 -0
  30. {veadk_python-0.5.1 → veadk_python-0.5.2}/tests/test_long_term_memory.py +0 -0
  31. {veadk_python-0.5.1 → veadk_python-0.5.2}/tests/test_misc.py +0 -0
  32. {veadk_python-0.5.1 → veadk_python-0.5.2}/tests/test_multiple_agents.py +0 -0
  33. {veadk_python-0.5.1 → veadk_python-0.5.2}/tests/test_runner.py +0 -0
  34. {veadk_python-0.5.1 → veadk_python-0.5.2}/tests/test_runtime_data_collecting.py +0 -0
  35. {veadk_python-0.5.1 → veadk_python-0.5.2}/tests/test_short_term_memory.py +0 -0
  36. {veadk_python-0.5.1 → veadk_python-0.5.2}/tests/test_tracing.py +0 -0
  37. {veadk_python-0.5.1 → veadk_python-0.5.2}/tests/test_ve_a2a_middlewares.py +0 -0
  38. {veadk_python-0.5.1 → veadk_python-0.5.2}/tests/test_ve_identity_auth_config.py +0 -0
  39. {veadk_python-0.5.1 → veadk_python-0.5.2}/tests/test_ve_identity_function_tool.py +0 -0
  40. {veadk_python-0.5.1 → veadk_python-0.5.2}/tests/test_ve_identity_mcp_tool.py +0 -0
  41. {veadk_python-0.5.1 → veadk_python-0.5.2}/tests/test_ve_identity_mcp_toolset.py +0 -0
  42. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/__init__.py +0 -0
  43. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/a2a/__init__.py +0 -0
  44. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/a2a/agent_card.py +0 -0
  45. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/a2a/remote_ve_agent.py +0 -0
  46. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/a2a/utils/__init__.py +0 -0
  47. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/a2a/utils/agent_to_a2a.py +0 -0
  48. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/a2a/ve_a2a_server.py +0 -0
  49. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/a2a/ve_agent_executor.py +0 -0
  50. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/a2a/ve_middlewares.py +0 -0
  51. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/a2a/ve_task_store.py +0 -0
  52. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/agent_builder.py +0 -0
  53. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/agents/loop_agent.py +0 -0
  54. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/agents/parallel_agent.py +0 -0
  55. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/agents/sequential_agent.py +0 -0
  56. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/auth/__init__.py +0 -0
  57. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/auth/base_auth.py +0 -0
  58. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/auth/ve_credential_service.py +0 -0
  59. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/auth/veauth/__init__.py +0 -0
  60. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/auth/veauth/apmplus_veauth.py +0 -0
  61. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/auth/veauth/ark_veauth.py +0 -0
  62. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/auth/veauth/base_veauth.py +0 -0
  63. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/auth/veauth/cozeloop_veauth.py +0 -0
  64. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/auth/veauth/opensearch_veauth.py +0 -0
  65. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/auth/veauth/postgresql_veauth.py +0 -0
  66. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/auth/veauth/prompt_pilot_veauth.py +0 -0
  67. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/auth/veauth/speech_veauth.py +0 -0
  68. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/auth/veauth/utils.py +0 -0
  69. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/auth/veauth/vesearch_veauth.py +0 -0
  70. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/auth/veauth/viking_mem0_veauth.py +0 -0
  71. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/cli/__init__.py +0 -0
  72. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/cli/cli.py +0 -0
  73. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/cli/cli_agentkit.py +0 -0
  74. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/cli/cli_clean.py +0 -0
  75. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/cli/cli_create.py +0 -0
  76. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/cli/cli_deploy.py +0 -0
  77. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/cli/cli_eval.py +0 -0
  78. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/cli/cli_init.py +0 -0
  79. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/cli/cli_kb.py +0 -0
  80. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/cli/cli_pipeline.py +0 -0
  81. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/cli/cli_prompt.py +0 -0
  82. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/cli/cli_update.py +0 -0
  83. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/cli/cli_uploadevalset.py +0 -0
  84. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/cli/cli_web.py +0 -0
  85. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/cli/templates/rl/ark/README.md +0 -0
  86. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/cli/templates/rl/ark/arkworkspace.toml +0 -0
  87. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/cli/templates/rl/ark/data/demo_dataset.jsonl +0 -0
  88. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/cli/templates/rl/ark/job.py +0 -0
  89. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/cli/templates/rl/ark/job.yaml +0 -0
  90. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/cli/templates/rl/ark/plugins/random_reward.py +0 -0
  91. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/cli/templates/rl/ark/plugins/raw_async_veadk_rollout.py +0 -0
  92. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/cli/templates/rl/ark/plugins/test_utils.py +0 -0
  93. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/cli/templates/rl/ark/requirements.txt +0 -0
  94. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/cli/templates/rl/ark/test_faas.py +0 -0
  95. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/cloud/__init__.py +0 -0
  96. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/cloud/cloud_agent_engine.py +0 -0
  97. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/cloud/cloud_app.py +0 -0
  98. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/config.py +0 -0
  99. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/configs/__init__.py +0 -0
  100. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/configs/auth_configs.py +0 -0
  101. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/configs/database_configs.py +0 -0
  102. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/configs/model_configs.py +0 -0
  103. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/configs/tool_configs.py +0 -0
  104. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/configs/tracing_configs.py +0 -0
  105. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/evaluation/__init__.py +0 -0
  106. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/evaluation/adk_evaluator/__init__.py +0 -0
  107. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/evaluation/adk_evaluator/adk_evaluator.py +0 -0
  108. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/evaluation/base_evaluator.py +0 -0
  109. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/evaluation/deepeval_evaluator/__init__.py +0 -0
  110. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/evaluation/deepeval_evaluator/deepeval_evaluator.py +0 -0
  111. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/evaluation/eval_set_file_loader.py +0 -0
  112. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/evaluation/eval_set_recorder.py +0 -0
  113. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/evaluation/types.py +0 -0
  114. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/evaluation/utils/prometheus.py +0 -0
  115. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/__init__.py +0 -0
  116. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_apig/__init__.py +0 -0
  117. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_apig/ve_apig.py +0 -0
  118. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_apig/ve_apig_utils.py +0 -0
  119. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_code_pipeline/__init__.py +0 -0
  120. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_code_pipeline/ve_code_pipeline.py +0 -0
  121. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_cozeloop/__init__.py +0 -0
  122. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_cozeloop/ve_cozeloop.py +0 -0
  123. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_cr/__init__.py +0 -0
  124. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_cr/ve_cr.py +0 -0
  125. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/__init__.py +0 -0
  126. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/template/cookiecutter.json +0 -0
  127. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/__init__.py +0 -0
  128. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
  129. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/config.yaml.example +0 -0
  130. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/deploy.py +0 -0
  131. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/__init__.py +0 -0
  132. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/agent.py +0 -0
  133. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/app.py +0 -0
  134. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/requirements.txt +0 -0
  135. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/run.sh +0 -0
  136. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name }}/__init__.py +0 -0
  137. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name }}/agent.py +0 -0
  138. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/ve_faas.py +0 -0
  139. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/ve_faas_utils.py +0 -0
  140. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/web_template/cookiecutter.json +0 -0
  141. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/__init__.py +0 -0
  142. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
  143. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/config.yaml.example +0 -0
  144. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/deploy.py +0 -0
  145. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/Dockerfile +0 -0
  146. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/app.py +0 -0
  147. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/init_db.py +0 -0
  148. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/models.py +0 -0
  149. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/requirements.txt +0 -0
  150. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/run.sh +0 -0
  151. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/static/css/style.css +0 -0
  152. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/static/js/admin.js +0 -0
  153. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/dashboard.html +0 -0
  154. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/edit_post.html +0 -0
  155. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/login.html +0 -0
  156. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/posts.html +0 -0
  157. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/base.html +0 -0
  158. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/index.html +0 -0
  159. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/post.html +0 -0
  160. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_identity/__init__.py +0 -0
  161. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_identity/auth_config.py +0 -0
  162. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_identity/auth_mixins.py +0 -0
  163. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_identity/auth_processor.py +0 -0
  164. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_identity/function_tool.py +0 -0
  165. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_identity/identity_client.py +0 -0
  166. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_identity/mcp_tool.py +0 -0
  167. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_identity/mcp_toolset.py +0 -0
  168. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_identity/models.py +0 -0
  169. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_identity/token_manager.py +0 -0
  170. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_identity/utils.py +0 -0
  171. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_prompt_pilot/__init__.py +0 -0
  172. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_prompt_pilot/ve_prompt_pilot.py +0 -0
  173. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_tls/__init__.py +0 -0
  174. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_tls/utils.py +0 -0
  175. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_tls/ve_tls.py +0 -0
  176. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_tos/ve_tos.py +0 -0
  177. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_viking_db_memory/__init__.py +0 -0
  178. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/integrations/ve_viking_db_memory/ve_viking_db_memory.py +0 -0
  179. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/knowledgebase/__init__.py +0 -0
  180. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/knowledgebase/backends/__init__.py +0 -0
  181. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/knowledgebase/backends/base_backend.py +0 -0
  182. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/knowledgebase/backends/in_memory_backend.py +0 -0
  183. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/knowledgebase/backends/opensearch_backend.py +0 -0
  184. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/knowledgebase/backends/redis_backend.py +0 -0
  185. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/knowledgebase/backends/tos_vector_backend.py +0 -0
  186. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/knowledgebase/backends/utils.py +0 -0
  187. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/knowledgebase/backends/vikingdb_knowledge_backend.py +0 -0
  188. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/knowledgebase/entry.py +0 -0
  189. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/knowledgebase/knowledgebase.py +0 -0
  190. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/memory/__init__.py +0 -0
  191. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/memory/long_term_memory.py +0 -0
  192. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/memory/long_term_memory_backends/__init__.py +0 -0
  193. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/memory/long_term_memory_backends/base_backend.py +0 -0
  194. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/memory/long_term_memory_backends/in_memory_backend.py +0 -0
  195. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/memory/long_term_memory_backends/mem0_backend.py +0 -0
  196. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/memory/long_term_memory_backends/opensearch_backend.py +0 -0
  197. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/memory/long_term_memory_backends/redis_backend.py +0 -0
  198. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/memory/long_term_memory_backends/vikingdb_memory_backend.py +0 -0
  199. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/memory/short_term_memory.py +0 -0
  200. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/memory/short_term_memory_backends/__init__.py +0 -0
  201. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/memory/short_term_memory_backends/base_backend.py +0 -0
  202. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/memory/short_term_memory_backends/mysql_backend.py +0 -0
  203. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/memory/short_term_memory_backends/postgresql_backend.py +0 -0
  204. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/memory/short_term_memory_backends/sqlite_backend.py +0 -0
  205. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/memory/short_term_memory_processor.py +0 -0
  206. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/models/ark_llm.py +0 -0
  207. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/models/ark_transform.py +0 -0
  208. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/processors/__init__.py +0 -0
  209. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/processors/base_run_processor.py +0 -0
  210. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/prompts/__init__.py +0 -0
  211. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/prompts/agent_default_prompt.py +0 -0
  212. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/prompts/prompt_evaluator.py +0 -0
  213. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/prompts/prompt_manager.py +0 -0
  214. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/prompts/prompt_memory_processor.py +0 -0
  215. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/prompts/prompt_optimization.py +0 -0
  216. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/realtime/__init__.py +0 -0
  217. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/realtime/client.py +0 -0
  218. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/realtime/doubao_realtime_voice_llm.py +0 -0
  219. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/realtime/doubao_realtime_voice_llm_connection.py +0 -0
  220. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/realtime/live.py +0 -0
  221. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/realtime/protocol.py +0 -0
  222. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/runner.py +0 -0
  223. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tools/__init__.py +0 -0
  224. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tools/builtin_tools/__init__.py +0 -0
  225. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tools/builtin_tools/agent_authorization.py +0 -0
  226. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tools/builtin_tools/execute_skills.py +0 -0
  227. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tools/builtin_tools/generate_image.py +0 -0
  228. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tools/builtin_tools/image_edit.py +0 -0
  229. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tools/builtin_tools/lark.py +0 -0
  230. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tools/builtin_tools/las.py +0 -0
  231. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tools/builtin_tools/link_reader.py +0 -0
  232. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tools/builtin_tools/load_knowledgebase.py +0 -0
  233. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tools/builtin_tools/mcp_router.py +0 -0
  234. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tools/builtin_tools/mobile_run.py +0 -0
  235. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tools/builtin_tools/run_code.py +0 -0
  236. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tools/builtin_tools/tts.py +0 -0
  237. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tools/builtin_tools/vesearch.py +0 -0
  238. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tools/builtin_tools/web_scraper.py +0 -0
  239. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tools/builtin_tools/web_search.py +0 -0
  240. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tools/demo_tools.py +0 -0
  241. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tools/load_knowledgebase_tool.py +0 -0
  242. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tools/mcp_tool/__init__.py +0 -0
  243. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tools/mcp_tool/trusted_mcp_session_manager.py +0 -0
  244. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tools/mcp_tool/trusted_mcp_toolset.py +0 -0
  245. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tools/sandbox/__init__.py +0 -0
  246. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tools/sandbox/browser_sandbox.py +0 -0
  247. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tools/sandbox/code_sandbox.py +0 -0
  248. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tools/sandbox/computer_sandbox.py +0 -0
  249. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tracing/__init__.py +0 -0
  250. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tracing/base_tracer.py +0 -0
  251. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tracing/telemetry/__init__.py +0 -0
  252. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tracing/telemetry/attributes/attributes.py +0 -0
  253. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tracing/telemetry/attributes/extractors/llm_attributes_extractors.py +0 -0
  254. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tracing/telemetry/attributes/extractors/tool_attributes_extractors.py +0 -0
  255. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tracing/telemetry/attributes/extractors/types.py +0 -0
  256. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tracing/telemetry/exporters/__init__.py +0 -0
  257. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tracing/telemetry/exporters/apmplus_exporter.py +0 -0
  258. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tracing/telemetry/exporters/base_exporter.py +0 -0
  259. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tracing/telemetry/exporters/cozeloop_exporter.py +0 -0
  260. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tracing/telemetry/exporters/inmemory_exporter.py +0 -0
  261. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tracing/telemetry/exporters/tls_exporter.py +0 -0
  262. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/tracing/telemetry/opentelemetry_tracer.py +0 -0
  263. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/types.py +0 -0
  264. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/utils/__init__.py +0 -0
  265. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/utils/audio_manager.py +0 -0
  266. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/utils/auth.py +0 -0
  267. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/utils/logger.py +0 -0
  268. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/utils/mcp_utils.py +0 -0
  269. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/utils/misc.py +0 -0
  270. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/utils/patches.py +0 -0
  271. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk/utils/volcengine_sign.py +0 -0
  272. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk_python.egg-info/dependency_links.txt +0 -0
  273. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk_python.egg-info/entry_points.txt +0 -0
  274. {veadk_python-0.5.1 → veadk_python-0.5.2}/veadk_python.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: veadk-python
3
- Version: 0.5.1
3
+ Version: 0.5.2
4
4
  Summary: Volcengine agent development kit, integrations with Volcengine cloud services.
5
5
  Author-email: Yaozheng Fang <fangyozheng@gmail.com>, Guodong Li <cu.eric.lee@gmail.com>, Zhi Han <sliverydayday@gmail.com>, Meng Wang <mengwangwm@gmail.com>
6
6
  License: Apache License
@@ -211,18 +211,18 @@ License-File: LICENSE
211
211
  Requires-Dist: pydantic-settings==2.10.1
212
212
  Requires-Dist: a2a-sdk==0.3.7
213
213
  Requires-Dist: deprecated==1.2.18
214
- Requires-Dist: google-adk==1.19.0
215
- Requires-Dist: litellm==1.74.3
214
+ Requires-Dist: google-adk>=1.19.0
215
+ Requires-Dist: litellm>=1.74.3
216
216
  Requires-Dist: loguru==0.7.3
217
217
  Requires-Dist: opentelemetry-exporter-otlp==1.37.0
218
218
  Requires-Dist: opentelemetry-instrumentation-logging>=0.56b0
219
219
  Requires-Dist: wrapt==1.17.2
220
220
  Requires-Dist: openai<1.100
221
- Requires-Dist: volcengine-python-sdk==4.0.33
222
- Requires-Dist: volcengine==1.0.193
221
+ Requires-Dist: volcengine-python-sdk>=5.0.1
222
+ Requires-Dist: volcengine>=1.0.193
223
223
  Requires-Dist: agent-pilot-sdk==0.1.2
224
- Requires-Dist: fastmcp==2.12.3
225
- Requires-Dist: trustedmcp==0.0.4
224
+ Requires-Dist: fastmcp>=2.12.3
225
+ Requires-Dist: trustedmcp==0.0.5
226
226
  Requires-Dist: cookiecutter==2.6.0
227
227
  Requires-Dist: omegaconf==2.3.0
228
228
  Requires-Dist: llama-index==0.14.0
@@ -230,7 +230,7 @@ Requires-Dist: llama-index-embeddings-openai-like==0.2.2
230
230
  Requires-Dist: llama-index-llms-openai-like==0.5.1
231
231
  Requires-Dist: llama-index-vector-stores-opensearch==0.6.1
232
232
  Requires-Dist: psycopg2-binary==2.9.10
233
- Requires-Dist: asyncpg==0.29.0
233
+ Requires-Dist: asyncpg>=0.29.0
234
234
  Requires-Dist: pymysql==1.1.1
235
235
  Requires-Dist: aiomysql==0.3.2
236
236
  Requires-Dist: opensearch-py==2.8.0
@@ -241,6 +241,7 @@ Provides-Extra: extensions
241
241
  Requires-Dist: redis>=5.0; extra == "extensions"
242
242
  Requires-Dist: tos>=2.8.4; extra == "extensions"
243
243
  Requires-Dist: llama-index-vector-stores-redis>=0.6.1; extra == "extensions"
244
+ Requires-Dist: cozeloop>=0.1.21; extra == "extensions"
244
245
  Provides-Extra: database
245
246
  Requires-Dist: redis>=5.0; extra == "database"
246
247
  Requires-Dist: pymysql>=1.1.1; extra == "database"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "veadk-python"
3
- version = "0.5.1"
3
+ version = "0.5.2"
4
4
  description = "Volcengine agent development kit, integrations with Volcengine cloud services."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -15,18 +15,18 @@ dependencies = [
15
15
  "pydantic-settings==2.10.1", # Config management
16
16
  "a2a-sdk==0.3.7", # For Google Agent2Agent protocol
17
17
  "deprecated==1.2.18",
18
- "google-adk==1.19.0", # For basic agent architecture
19
- "litellm==1.74.3", # For model inference
18
+ "google-adk>=1.19.0", # For basic agent architecture
19
+ "litellm>=1.74.3", # For model inference
20
20
  "loguru==0.7.3", # For better logging
21
21
  "opentelemetry-exporter-otlp==1.37.0",
22
22
  "opentelemetry-instrumentation-logging>=0.56b0",
23
23
  "wrapt==1.17.2", # For patching built-in functions
24
24
  "openai<1.100", # For fix https://github.com/BerriAI/litellm/issues/13710
25
- "volcengine-python-sdk==4.0.33", # For Volcengine API
26
- "volcengine==1.0.193", # For Volcengine sign
25
+ "volcengine-python-sdk>=5.0.1", # For Volcengine API
26
+ "volcengine>=1.0.193", # For Volcengine sign
27
27
  "agent-pilot-sdk==0.1.2", # Prompt optimization by Volcengine AgentPilot/PromptPilot toolkits
28
- "fastmcp==2.12.3", # For running MCP
29
- "trustedmcp==0.0.4", # For running TrustedMCP
28
+ "fastmcp>=2.12.3", # For running MCP
29
+ "trustedmcp==0.0.5", # For running TrustedMCP
30
30
  "cookiecutter==2.6.0", # For cloud deploy
31
31
  "omegaconf==2.3.0", # For agent builder
32
32
  "llama-index==0.14.0",
@@ -34,7 +34,7 @@ dependencies = [
34
34
  "llama-index-llms-openai-like==0.5.1",
35
35
  "llama-index-vector-stores-opensearch==0.6.1",
36
36
  "psycopg2-binary==2.9.10", # For PostgreSQL database (short term memory)
37
- "asyncpg==0.29.0", # For async PostgreSQL database (short term memory)
37
+ "asyncpg>=0.29.0", # For async PostgreSQL database (short term memory)
38
38
  "pymysql==1.1.1", # For MySQL database (short term memory)
39
39
  "aiomysql==0.3.2", # For async MySQL database (short term memory)
40
40
  "opensearch-py==2.8.0",
@@ -51,6 +51,7 @@ extensions = [
51
51
  "redis>=5.0", # For Redis database
52
52
  "tos>=2.8.4", # For TOS storage and Viking DB
53
53
  "llama-index-vector-stores-redis>=0.6.1",
54
+ "cozeloop>=0.1.21", #For Cozeloop Prompt manager
54
55
  ]
55
56
  database = [
56
57
  "redis>=5.0", # For Redis database
@@ -85,6 +85,8 @@ class Agent(LlmAgent):
85
85
  short_term_memory (Optional[ShortTermMemory]): Session-based memory for temporary context.
86
86
  long_term_memory (Optional[LongTermMemory]): Cross-session memory for persistent user context.
87
87
  tracers (list[BaseTracer]): List of tracers used for telemetry and monitoring.
88
+ enable_authz (bool): Whether to enable agent authorization checks.
89
+ auto_save_session (bool): Whether to automatically save sessions to long-term memory.
88
90
  """
89
91
 
90
92
  model_config = ConfigDict(arbitrary_types_allowed=True, extra="allow")
@@ -140,6 +142,8 @@ class Agent(LlmAgent):
140
142
 
141
143
  enable_authz: bool = False
142
144
 
145
+ auto_save_session: bool = False
146
+
143
147
  def model_post_init(self, __context: Any) -> None:
144
148
  super().model_post_init(None) # for sub_agents init
145
149
 
@@ -258,6 +262,29 @@ class Agent(LlmAgent):
258
262
  if self.prompt_manager:
259
263
  self.instruction = self.prompt_manager.get_prompt
260
264
 
265
+ if self.auto_save_session:
266
+ if self.long_term_memory is None:
267
+ logger.warning(
268
+ "auto_save_session is enabled, but long_term_memory is not initialized."
269
+ )
270
+ else:
271
+ from veadk.memory.save_session_callback import (
272
+ save_session_to_long_term_memory,
273
+ )
274
+
275
+ if self.after_agent_callback:
276
+ if isinstance(self.after_agent_callback, list):
277
+ self.after_agent_callback.append(
278
+ save_session_to_long_term_memory
279
+ )
280
+ else:
281
+ self.after_agent_callback = [
282
+ self.after_agent_callback,
283
+ save_session_to_long_term_memory,
284
+ ]
285
+ else:
286
+ self.after_agent_callback = save_session_to_long_term_memory
287
+
261
288
  logger.info(f"VeADK version: {VERSION}")
262
289
 
263
290
  logger.info(f"{self.__class__.__name__} `{self.name}` init done.")
@@ -38,8 +38,8 @@ def rl_group():
38
38
  "--platform",
39
39
  "-p",
40
40
  required=True,
41
- type=click.Choice(["ark"], case_sensitive=False),
42
- help="Scaffold platform type (only support for now: ark)",
41
+ type=click.Choice(["ark", "lightning"], case_sensitive=False),
42
+ help="Scaffold platform type (supported: ark, lightning)",
43
43
  )
44
44
  @click.option(
45
45
  "--workspace", "-w", required=True, type=str, help="Target workspace directory name"
@@ -52,8 +52,9 @@ def rl_group():
52
52
  )
53
53
  def rl_init(platform: str, workspace: str, overwrite: bool):
54
54
  """
55
- Initialize RL scaffold project for ark platform
55
+ Initialize RL scaffold project for ark or lightning platform
56
56
  Example: veadk rl init --platform ark --workspace veadk_rl_ark_project
57
+ Example: veadk rl init --platform lightning --workspace veadk_rl_lightning_project
57
58
  """
58
59
  # Locate template directory
59
60
  rl_template_root = get_rl_template_root()
@@ -0,0 +1,58 @@
1
+ # Agent Lightning
2
+
3
+ Agent Lightning 提供了灵活且可扩展的框架,实现了智能体(client)和训练(server)的完全解耦。
4
+ VeADK 与 Agent Lightning 集成,用户使用 VeADK 提供的脚手架,可以开发 VeADK Agent,然后运行 client 与 server 进行强化学习优化。
5
+
6
+ ## 准备工作
7
+
8
+ 在你的终端中运行以下命令,初始化一个 Agent Lightning 项目:
9
+
10
+ ```bash
11
+ veadk rl init --platform lightning --workspace veadk_rl_lightning_project
12
+ ```
13
+
14
+ 该命令会在当前目录下创建一个名为 `veadk_rl_lightning_project` 的文件夹,其中包含了一个基本的基于 VeADK 和 Agent Lightning 的强化学习项目结构。
15
+ 然后在终端1中运行以下命令,启动 client:
16
+
17
+ ```bash
18
+ cd veadk_rl_lightning_project
19
+ python veadk_agent.py
20
+ ```
21
+
22
+ 然后在终端2中运行以下命令
23
+
24
+ - 首先重启 ray 集群:
25
+
26
+ ```bash
27
+ cd veadk_rl_lightning_project
28
+ bash restart_ray.sh
29
+ ```
30
+
31
+ - 启动 server:
32
+
33
+ ```bash
34
+ cd veadk_rl_lightning_project
35
+ bash train.sh
36
+ ```
37
+
38
+ ## 原理说明
39
+
40
+ 生成后的项目结构如下,其中核心文件包括:
41
+
42
+ - agent_client: `*_agent.py` 中定义了agent的rollout逻辑和reward规则
43
+ - training_server: `train.sh` 定义了训练相关参数,用于启动训练服务器
44
+
45
+ ```shell
46
+ veadk_rl_lightning_project
47
+ ├── data
48
+ ├── demo_train.parquet # 训练数据,必须为 parquet 格式
49
+ ├── demo_test.parquet # 测试数据,必须为 parquet 格式
50
+ └── demo_calculate_agent.py # agent的rollout逻辑和reward设定
51
+ └── train.sh # 训练服务器启动脚本,设定训练相关参数
52
+ └── restart_ray.sh # 重启 ray 集群脚本
53
+ ```
54
+
55
+ ## 最佳实践案例
56
+
57
+ 1. 脚手架中,基于 VeADK 的算术 Agent 进行强化学习优化
58
+ 2. 启动 client (python demo_calculate_agent.py), 重启ray集群(bash restart_ray.sh), 最后启动训练服务器server (bash train.sh),分别在终端1与终端2中运行以上命令
@@ -0,0 +1,148 @@
1
+ # Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. and/or its affiliates.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ import math
16
+ import re
17
+ import string
18
+ import sympy
19
+ from typing import Any, cast
20
+ from veadk.agent import Agent
21
+ from veadk.runner import Runner
22
+ from veadk.memory.short_term_memory import ShortTermMemory
23
+ from agentlightning import (
24
+ LLM,
25
+ LitAgent,
26
+ NamedResources,
27
+ Trainer,
28
+ reward,
29
+ )
30
+
31
+
32
+ def normalize_option(option: str) -> str:
33
+ """
34
+ >>> normalize_option(" (A) \n")
35
+ 'A'
36
+ """
37
+ return re.sub(r"(\s+|\(|\))", "", option)
38
+
39
+
40
+ def is_option_result(result: str) -> bool:
41
+ """
42
+ >>> is_option_result(" A) \n")
43
+ True
44
+ >>> is_option_result(" 23/7 ")
45
+ False
46
+ """
47
+ return normalize_option(result) in list(string.ascii_letters)
48
+
49
+
50
+ def float_eval(input_str: str) -> float:
51
+ if " = around " in input_str:
52
+ input_str = input_str.split(" = around ")[0]
53
+ expr = sympy.parse_expr(input_str, evaluate=True)
54
+ return float(expr.evalf())
55
+
56
+
57
+ def scalar_are_results_same(pred_result: str, true_result: str, rel_tol: float) -> bool:
58
+ pred_result = str(pred_result) if pred_result is not None else "" # type: ignore
59
+ true_result = str(true_result) if true_result is not None else "" # type: ignore
60
+
61
+ if pred_result.strip() == true_result.strip():
62
+ return True
63
+
64
+ if is_option_result(true_result):
65
+ # The task is to select correct option
66
+ true_result = normalize_option(true_result)
67
+ pred_result = normalize_option(pred_result)
68
+ return pred_result == true_result
69
+
70
+ # The task is to calculate the result as a number
71
+ try:
72
+ pred_float = float_eval(pred_result)
73
+ true_float = float_eval(true_result)
74
+ return math.isclose(pred_float, true_float, rel_tol=rel_tol)
75
+ except Exception:
76
+ pass
77
+
78
+ return False
79
+
80
+
81
+ @reward
82
+ async def eval(prediction: str, ground_truth: str) -> float:
83
+ return float(scalar_are_results_same(prediction, ground_truth, 1e-2))
84
+
85
+
86
+ class CalcAgent(LitAgent[Any]):
87
+ async def training_rollout_async(
88
+ self, task: Any, rollout_id: str, resources: NamedResources
89
+ ) -> Any: # type: ignore
90
+ llm: LLM = cast(LLM, resources.get("main_llm"))
91
+ calc_agent = Agent(
92
+ name="CalcAgent",
93
+ description="An agent that can perform calculations to answer questions.",
94
+ instruction="You are a helpful assistant that can perform mathematical calculations to answer questions accurately.",
95
+ model_provider="openai",
96
+ model=llm.model,
97
+ api_base=llm.endpoint,
98
+ api_key="",
99
+ )
100
+ runner = Runner(
101
+ agent=calc_agent,
102
+ short_term_memory=ShortTermMemory(),
103
+ app_name="calc_agent",
104
+ user_id="veadk_default_user",
105
+ )
106
+ try:
107
+ output_format = "Output the answer when you are ready. The answer should be surrounded by three sharps (`###`), in the form of ### ANSWER: <answer> ###."
108
+ prompt = task["question"] + " " + output_format
109
+ result = await runner.run(
110
+ session_id=rollout_id,
111
+ messages=prompt,
112
+ )
113
+ # evaluate
114
+ answer = re.search(
115
+ r"###\s*ANSWER:\s*(.+?)(\s*###|$)", result.messages[-1].content
116
+ ) # type: ignore
117
+ if answer:
118
+ answer = answer.group(1)
119
+ else:
120
+ answer = result.messages[-1].content # type: ignore
121
+ except Exception as e:
122
+ print("Failure:", str(e))
123
+ answer = "None"
124
+ reward = await eval(
125
+ answer, str(task["result"])
126
+ ) # reward is tracked with the decorator # type: ignore
127
+ print(
128
+ "answer: {} ground_truth: {} reward: {}".format(
129
+ answer, task["result"], reward
130
+ )
131
+ ) # type: ignore
132
+
133
+ async def validation_rollout_async(
134
+ self, task: Any, rollout_id: str, resources: NamedResources
135
+ ) -> Any: # type: ignore
136
+ llm: LLM = cast(LLM, resources.get("main_llm"))
137
+ resources = {
138
+ "main_llm": LLM(
139
+ endpoint=llm.endpoint,
140
+ model=llm.model,
141
+ sampling_parameters={"temperature": 0},
142
+ )
143
+ }
144
+ return await self.training_rollout_async(task, rollout_id, resources)
145
+
146
+
147
+ if __name__ == "__main__":
148
+ Trainer(n_workers=10).fit(CalcAgent(), "http://localhost:9999/")
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+
3
+ set -ex
4
+
5
+ ray stop -v --force --grace-period 60
6
+ ps aux
7
+ env RAY_DEBUG=legacy HYDRA_FULL_ERROR=1 VLLM_USE_V1=1 ray start --head --dashboard-host=0.0.0.0 --port 6380 --dashboard-port 8266
@@ -0,0 +1,53 @@
1
+ #!/bin/bash
2
+
3
+ set -e
4
+
5
+ export N_GPUS=1
6
+ export BASE_MODEL=Qwen/Qwen2.5-1.5B-Instruct
7
+ export DATA_DIR=data
8
+ export ROLLOUT_TP_SIZE=1
9
+ export EXPERIMENT_NAME=calc_x
10
+ export PROJECT_NAME=AgentLightning
11
+
12
+ echo "Starting training script..."
13
+
14
+ python -m agentlightning.verl \
15
+ algorithm.adv_estimator=grpo \
16
+ data.train_files=${DATA_DIR}/train.parquet \
17
+ data.val_files=${DATA_DIR}/test.parquet \
18
+ actor_rollout_ref.rollout.tensor_model_parallel_size=$ROLLOUT_TP_SIZE \
19
+ trainer.n_gpus_per_node=${N_GPUS} \
20
+ data.train_batch_size=32 \
21
+ actor_rollout_ref.rollout.n=4 \
22
+ actor_rollout_ref.actor.ppo_mini_batch_size=32 \
23
+ actor_rollout_ref.actor.ppo_micro_batch_size_per_gpu=4 \
24
+ actor_rollout_ref.rollout.log_prob_micro_batch_size_per_gpu=4 \
25
+ actor_rollout_ref.rollout.multi_turn.format=hermes \
26
+ actor_rollout_ref.model.path=${BASE_MODEL} \
27
+ data.max_prompt_length=4096 \
28
+ data.max_response_length=2048 \
29
+ data.truncation='error' \
30
+ trainer.val_before_train=True \
31
+ actor_rollout_ref.actor.optim.lr=1e-6 \
32
+ actor_rollout_ref.model.use_remove_padding=True \
33
+ actor_rollout_ref.actor.use_kl_loss=False \
34
+ actor_rollout_ref.actor.kl_loss_coef=0.000 \
35
+ actor_rollout_ref.actor.entropy_coeff=0 \
36
+ actor_rollout_ref.actor.clip_ratio_low=0.2 \
37
+ actor_rollout_ref.actor.clip_ratio_high=0.3 \
38
+ actor_rollout_ref.model.enable_gradient_checkpointing=True \
39
+ actor_rollout_ref.actor.fsdp_config.param_offload=True \
40
+ actor_rollout_ref.actor.fsdp_config.optimizer_offload=True \
41
+ actor_rollout_ref.rollout.name=vllm \
42
+ actor_rollout_ref.rollout.gpu_memory_utilization=0.8 \
43
+ actor_rollout_ref.ref.log_prob_micro_batch_size_per_gpu=8 \
44
+ actor_rollout_ref.ref.fsdp_config.param_offload=True \
45
+ algorithm.use_kl_in_reward=False \
46
+ trainer.critic_warmup=0 \
47
+ trainer.logger=['console','wandb'] \
48
+ trainer.project_name=${PROJECT_NAME} \
49
+ trainer.experiment_name=${EXPERIMENT_NAME} \
50
+ trainer.nnodes=1 \
51
+ trainer.save_freq=256 \
52
+ trainer.test_freq=32 \
53
+ trainer.total_epochs=2 $@
@@ -65,7 +65,7 @@ DEFAULT_COZELOOP_SPACE_NAME = "VeADK Space"
65
65
  DEFAULT_IMAGE_EDIT_MODEL_NAME = "doubao-seededit-3-0-i2i-250628"
66
66
  DEFAULT_IMAGE_EDIT_MODEL_API_BASE = "https://ark.cn-beijing.volces.com/api/v3/"
67
67
 
68
- DEFAULT_VIDEO_MODEL_NAME = "doubao-seedance-1-0-pro-250528"
68
+ DEFAULT_VIDEO_MODEL_NAME = "doubao-seedance-1-5-pro-251215"
69
69
  DEFAULT_VIDEO_MODEL_API_BASE = "https://ark.cn-beijing.volces.com/api/v3/"
70
70
 
71
71
  DEFAULT_IMAGE_GENERATE_MODEL_NAME = "doubao-seedream-4-5-251128"
@@ -0,0 +1,159 @@
1
+ # Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. and/or its affiliates.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ import time
16
+ from google.adk.agents.callback_context import CallbackContext
17
+ from veadk.config import getenv
18
+ from veadk.utils.logger import get_logger
19
+
20
+ logger = get_logger(__name__)
21
+
22
+ # Session-level cache for tracking save state
23
+ # Format: {(app_name, user_id, session_id): {'last_save_time': float, 'last_event_count': int}}
24
+ _session_save_cache: dict = {}
25
+
26
+ # Track active session per user to detect session switches
27
+ # Format: {(app_name, user_id): session_id}
28
+ _active_sessions: dict = {}
29
+
30
+ # Configurable thresholds
31
+ MIN_MESSAGES_THRESHOLD = getenv(
32
+ "MIN_MESSAGES_THRESHOLD", 10
33
+ ) # Minimum number of new messages before saving
34
+ MIN_TIME_THRESHOLD = getenv(
35
+ "MIN_TIME_THRESHOLD", 60
36
+ ) # Minimum seconds between saves (1 minute)
37
+
38
+
39
+ async def save_session_to_long_term_memory(
40
+ callback_context: CallbackContext,
41
+ ) -> None:
42
+ """Save the current session to long-term memory.
43
+
44
+ Args:
45
+ callback_context: The callback context containing invocation information.
46
+
47
+ Returns:
48
+ None
49
+ """
50
+ try:
51
+ agent = callback_context._invocation_context.agent
52
+
53
+ long_term_memory = getattr(agent, "long_term_memory", None)
54
+ if not long_term_memory:
55
+ logger.error(
56
+ "Long-term memory is not initialized in agent, cannot save session to memory."
57
+ )
58
+ return None
59
+
60
+ app_name = callback_context._invocation_context.app_name
61
+ user_id = callback_context._invocation_context.user_id
62
+ session_id = callback_context._invocation_context.session.id
63
+ session_service = callback_context._invocation_context.session_service
64
+
65
+ current_time = time.time()
66
+
67
+ # Detect session switch and force save previous session
68
+ user_key = (app_name, user_id)
69
+ previous_session_id = _active_sessions.get(user_key)
70
+
71
+ if previous_session_id and previous_session_id != session_id:
72
+ logger.info(
73
+ f"Session switch detected for user {user_id}: "
74
+ f"{previous_session_id} -> {session_id}. "
75
+ f"Force saving previous session."
76
+ )
77
+ old_session = await session_service.get_session(
78
+ app_name=app_name,
79
+ user_id=user_id,
80
+ session_id=previous_session_id,
81
+ )
82
+ if old_session:
83
+ old_events = getattr(old_session, "events", [])
84
+ old_event_count = len(old_events)
85
+ await long_term_memory.add_session_to_memory(old_session)
86
+ old_cache_key = (app_name, user_id, previous_session_id)
87
+
88
+ _session_save_cache[old_cache_key] = {
89
+ "last_save_time": current_time,
90
+ "last_event_count": old_event_count,
91
+ }
92
+ logger.info(
93
+ f"Previous session `{old_session.id}` saved to long term memory due to session switch."
94
+ )
95
+
96
+ # Update active session
97
+ _active_sessions[user_key] = session_id
98
+
99
+ session = await session_service.get_session(
100
+ app_name=app_name,
101
+ user_id=user_id,
102
+ session_id=session_id,
103
+ )
104
+
105
+ if not session:
106
+ logger.error(
107
+ f"Session {session_id} (app_name={app_name}, user_id={user_id}) not found in session service, cannot save to long-term memory."
108
+ )
109
+ return None
110
+
111
+ current_events = getattr(session, "events", [])
112
+ current_event_count = len(current_events)
113
+ # logger.debug(f"Current event count: {current_event_count}")
114
+
115
+ # Create cache key
116
+ cache_key = (app_name, user_id, session_id)
117
+
118
+ cache_info = _session_save_cache.get(cache_key)
119
+
120
+ if cache_info:
121
+ last_save_time = cache_info.get("last_save_time", 0)
122
+ last_event_count = cache_info.get("last_event_count", 0)
123
+
124
+ time_elapsed = current_time - last_save_time
125
+ new_events_count = current_event_count - last_event_count
126
+
127
+ # Check if we should skip save
128
+ if (
129
+ time_elapsed < MIN_TIME_THRESHOLD
130
+ and new_events_count < MIN_MESSAGES_THRESHOLD
131
+ ):
132
+ logger.info(
133
+ f"Skipping save for session {session_id}: "
134
+ f"only {new_events_count} new events (need {MIN_MESSAGES_THRESHOLD}) "
135
+ f"and {time_elapsed:.1f}s elapsed (need {MIN_TIME_THRESHOLD}s)"
136
+ )
137
+ return None
138
+ else:
139
+ logger.info(f"First save for session {session_id}.")
140
+
141
+ # Save to long-term memory
142
+ await long_term_memory.add_session_to_memory(session)
143
+
144
+ # Update cache
145
+ _session_save_cache[cache_key] = {
146
+ "last_save_time": current_time,
147
+ "last_event_count": current_event_count,
148
+ }
149
+
150
+ logger.info(f"Add session `{session.id}` to long term memory.")
151
+
152
+ return None
153
+
154
+ except AttributeError as e:
155
+ logger.error(f"AttributeError while saving session to memory: {e}")
156
+ return None
157
+ except Exception as e:
158
+ logger.error(f"Unexpected error while saving session to memory: {e}")
159
+ return None
@@ -83,7 +83,10 @@ def _build_input_parts(item: dict, task_type: str, image_field):
83
83
 
84
84
 
85
85
  def handle_single_task_sync(
86
- idx: int, item: dict, tool_context
86
+ idx: int,
87
+ item: dict,
88
+ timeout: int,
89
+ tool_context,
87
90
  ) -> tuple[list[dict], list[str]]:
88
91
  logger.debug(f"handle_single_task_sync item {idx}: {item}")
89
92
  success_list: list[dict] = []
@@ -139,6 +142,7 @@ def handle_single_task_sync(
139
142
  "MODEL_AGENT_CLIENT_REQ_ID", f"veadk/{VERSION}"
140
143
  ),
141
144
  },
145
+ timeout=timeout,
142
146
  )
143
147
  else:
144
148
  response = client.images.generate(
@@ -152,6 +156,7 @@ def handle_single_task_sync(
152
156
  "MODEL_AGENT_CLIENT_REQ_ID", f"veadk/{VERSION}"
153
157
  ),
154
158
  },
159
+ timeout=timeout,
155
160
  )
156
161
 
157
162
  if not response.error:
@@ -228,14 +233,16 @@ def handle_single_task_sync(
228
233
  return success_list, error_list
229
234
 
230
235
 
231
- async def image_generate(tasks: list[dict], tool_context) -> Dict:
232
- """Generate images with Seedream 4.0.
236
+ async def image_generate(tasks: list[dict], tool_context, timeout: int = 600) -> Dict:
237
+ """Generate images with Seedream 4.0 / 4.5
233
238
 
234
239
  Commit batch image generation requests via tasks.
235
240
 
236
241
  Args:
237
242
  tasks (list[dict]):
238
243
  A list of image-generation tasks. Each task is a dict.
244
+ timeout (int)
245
+ The timeout limit for the image generation task request, in seconds, with a default value of 600 seconds.
239
246
  Per-task schema
240
247
  ---------------
241
248
  Required:
@@ -336,7 +343,9 @@ async def image_generate(tasks: list[dict], tool_context) -> Dict:
336
343
 
337
344
  def make_task(idx, item):
338
345
  ctx = base_ctx.copy()
339
- return lambda: ctx.run(handle_single_task_sync, idx, item, tool_context)
346
+ return lambda: ctx.run(
347
+ handle_single_task_sync, idx, item, timeout, tool_context
348
+ )
340
349
 
341
350
  loop = asyncio.get_event_loop()
342
351
  futures = [