veadk-python 0.2.8__tar.gz → 0.2.10__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.

Potentially problematic release.


This version of veadk-python might be problematic. Click here for more details.

Files changed (202) hide show
  1. {veadk_python-0.2.8 → veadk_python-0.2.10}/PKG-INFO +15 -4
  2. {veadk_python-0.2.8 → veadk_python-0.2.10}/README.md +11 -0
  3. {veadk_python-0.2.8 → veadk_python-0.2.10}/pyproject.toml +5 -8
  4. veadk_python-0.2.10/veadk/a2a/remote_ve_agent.py +90 -0
  5. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/agent.py +6 -0
  6. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/agent_builder.py +2 -3
  7. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/cli/cli.py +2 -0
  8. veadk_python-0.2.10/veadk/cli/cli_kb.py +75 -0
  9. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/cli/cli_prompt.py +9 -2
  10. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/cli/cli_web.py +7 -0
  11. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/configs/database_configs.py +9 -0
  12. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/consts.py +7 -0
  13. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/evaluation/adk_evaluator/adk_evaluator.py +5 -2
  14. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/evaluation/base_evaluator.py +36 -25
  15. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/evaluation/deepeval_evaluator/deepeval_evaluator.py +5 -3
  16. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_prompt_pilot/ve_prompt_pilot.py +9 -3
  17. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_tls/utils.py +1 -2
  18. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_tls/ve_tls.py +9 -5
  19. veadk_python-0.2.10/veadk/integrations/ve_tos/ve_tos.py +705 -0
  20. veadk_python-0.2.10/veadk/integrations/ve_viking_db_memory/ve_viking_db_memory.py +293 -0
  21. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/knowledgebase/backends/base_backend.py +4 -4
  22. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/knowledgebase/backends/vikingdb_knowledge_backend.py +162 -50
  23. veadk_python-0.2.10/veadk/knowledgebase/entry.py +25 -0
  24. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/knowledgebase/knowledgebase.py +19 -4
  25. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/memory/__init__.py +1 -1
  26. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/memory/long_term_memory.py +45 -7
  27. veadk_python-0.2.10/veadk/memory/long_term_memory_backends/mem0_backend.py +144 -0
  28. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/memory/long_term_memory_backends/vikingdb_memory_backend.py +4 -8
  29. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/memory/short_term_memory.py +9 -3
  30. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/memory/short_term_memory_backends/postgresql_backend.py +3 -1
  31. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/runner.py +34 -26
  32. veadk_python-0.2.10/veadk/tools/builtin_tools/generate_image.py +389 -0
  33. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/tools/builtin_tools/image_edit.py +61 -16
  34. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/tools/builtin_tools/image_generate.py +56 -15
  35. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/tools/builtin_tools/video_generate.py +41 -41
  36. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/tools/builtin_tools/web_search.py +10 -3
  37. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/tools/load_knowledgebase_tool.py +14 -8
  38. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/tracing/telemetry/attributes/extractors/llm_attributes_extractors.py +6 -1
  39. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/tracing/telemetry/attributes/extractors/tool_attributes_extractors.py +7 -0
  40. veadk_python-0.2.10/veadk/tracing/telemetry/exporters/__init__.py +13 -0
  41. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/tracing/telemetry/exporters/apmplus_exporter.py +82 -2
  42. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/tracing/telemetry/exporters/inmemory_exporter.py +8 -2
  43. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/tracing/telemetry/opentelemetry_tracer.py +8 -2
  44. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/tracing/telemetry/telemetry.py +41 -5
  45. veadk_python-0.2.10/veadk/utils/__init__.py +13 -0
  46. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/version.py +1 -1
  47. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk_python.egg-info/PKG-INFO +15 -4
  48. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk_python.egg-info/SOURCES.txt +7 -0
  49. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk_python.egg-info/requires.txt +3 -3
  50. veadk_python-0.2.8/veadk/a2a/remote_ve_agent.py +0 -33
  51. veadk_python-0.2.8/veadk/integrations/ve_tos/ve_tos.py +0 -234
  52. {veadk_python-0.2.8 → veadk_python-0.2.10}/LICENSE +0 -0
  53. {veadk_python-0.2.8 → veadk_python-0.2.10}/setup.cfg +0 -0
  54. {veadk_python-0.2.8 → veadk_python-0.2.10}/tests/test_agent.py +0 -0
  55. {veadk_python-0.2.8 → veadk_python-0.2.10}/tests/test_cloud.py +0 -0
  56. {veadk_python-0.2.8 → veadk_python-0.2.10}/tests/test_evaluator.py +0 -0
  57. {veadk_python-0.2.8 → veadk_python-0.2.10}/tests/test_knowledgebase.py +0 -0
  58. {veadk_python-0.2.8 → veadk_python-0.2.10}/tests/test_long_term_memory.py +0 -0
  59. {veadk_python-0.2.8 → veadk_python-0.2.10}/tests/test_multiple_agents.py +0 -0
  60. {veadk_python-0.2.8 → veadk_python-0.2.10}/tests/test_runner.py +0 -0
  61. {veadk_python-0.2.8 → veadk_python-0.2.10}/tests/test_runtime_data_collecting.py +0 -0
  62. {veadk_python-0.2.8 → veadk_python-0.2.10}/tests/test_short_term_memory.py +0 -0
  63. {veadk_python-0.2.8 → veadk_python-0.2.10}/tests/test_tracing.py +0 -0
  64. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/__init__.py +0 -0
  65. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/a2a/__init__.py +0 -0
  66. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/a2a/agent_card.py +0 -0
  67. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/a2a/ve_a2a_server.py +0 -0
  68. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/a2a/ve_agent_executor.py +0 -0
  69. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/a2a/ve_task_store.py +0 -0
  70. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/agents/loop_agent.py +0 -0
  71. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/agents/parallel_agent.py +0 -0
  72. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/agents/sequential_agent.py +0 -0
  73. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/auth/__init__.py +0 -0
  74. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/auth/base_auth.py +0 -0
  75. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/auth/veauth/__init__.py +0 -0
  76. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/auth/veauth/apmplus_veauth.py +0 -0
  77. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/auth/veauth/ark_veauth.py +0 -0
  78. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/auth/veauth/base_veauth.py +0 -0
  79. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/auth/veauth/cozeloop_veauth.py +0 -0
  80. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/auth/veauth/opensearch_veauth.py +0 -0
  81. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/auth/veauth/postgresql_veauth.py +0 -0
  82. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/auth/veauth/prompt_pilot_veauth.py +0 -0
  83. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/auth/veauth/vesearch_veauth.py +0 -0
  84. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/cli/__init__.py +0 -0
  85. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/cli/cli_deploy.py +0 -0
  86. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/cli/cli_eval.py +0 -0
  87. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/cli/cli_init.py +0 -0
  88. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/cli/cli_pipeline.py +0 -0
  89. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/cloud/__init__.py +0 -0
  90. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/cloud/cloud_agent_engine.py +0 -0
  91. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/cloud/cloud_app.py +0 -0
  92. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/config.py +0 -0
  93. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/configs/__init__.py +0 -0
  94. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/configs/model_configs.py +0 -0
  95. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/configs/tool_configs.py +0 -0
  96. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/configs/tracing_configs.py +0 -0
  97. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/evaluation/__init__.py +0 -0
  98. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/evaluation/adk_evaluator/__init__.py +0 -0
  99. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/evaluation/deepeval_evaluator/__init__.py +0 -0
  100. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/evaluation/eval_set_file_loader.py +0 -0
  101. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/evaluation/eval_set_recorder.py +0 -0
  102. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/evaluation/types.py +0 -0
  103. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/evaluation/utils/prometheus.py +0 -0
  104. {veadk_python-0.2.8/veadk/integrations/ve_apig → veadk_python-0.2.10/veadk/integrations}/__init__.py +0 -0
  105. {veadk_python-0.2.8/veadk/integrations/ve_code_pipeline → veadk_python-0.2.10/veadk/integrations/ve_apig}/__init__.py +0 -0
  106. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_apig/ve_apig.py +0 -0
  107. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_apig/ve_apig_utils.py +0 -0
  108. {veadk_python-0.2.8/veadk/integrations/ve_cozeloop → veadk_python-0.2.10/veadk/integrations/ve_code_pipeline}/__init__.py +0 -0
  109. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_code_pipeline/ve_code_pipeline.py +0 -0
  110. {veadk_python-0.2.8/veadk/integrations/ve_cr → veadk_python-0.2.10/veadk/integrations/ve_cozeloop}/__init__.py +0 -0
  111. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_cozeloop/ve_cozeloop.py +0 -0
  112. {veadk_python-0.2.8/veadk/integrations/ve_faas → veadk_python-0.2.10/veadk/integrations/ve_cr}/__init__.py +0 -0
  113. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_cr/ve_cr.py +0 -0
  114. {veadk_python-0.2.8/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}} → veadk_python-0.2.10/veadk/integrations/ve_faas}/__init__.py +0 -0
  115. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_faas/template/cookiecutter.json +0 -0
  116. {veadk_python-0.2.8/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src → veadk_python-0.2.10/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}}/__init__.py +0 -0
  117. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
  118. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/config.yaml.example +0 -0
  119. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/deploy.py +0 -0
  120. {veadk_python-0.2.8/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}} → veadk_python-0.2.10/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src}/__init__.py +0 -0
  121. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/agent.py +0 -0
  122. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/app.py +0 -0
  123. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/requirements.txt +0 -0
  124. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/run.sh +0 -0
  125. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name }}/__init__.py +0 -0
  126. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name }}/agent.py +0 -0
  127. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_faas/ve_faas.py +0 -0
  128. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_faas/ve_faas_utils.py +0 -0
  129. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/cookiecutter.json +0 -0
  130. {veadk_python-0.2.8/veadk/integrations/ve_prompt_pilot → veadk_python-0.2.10/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}}/__init__.py +0 -0
  131. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
  132. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/config.yaml.example +0 -0
  133. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/deploy.py +0 -0
  134. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/Dockerfile +0 -0
  135. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/app.py +0 -0
  136. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/init_db.py +0 -0
  137. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/models.py +0 -0
  138. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/requirements.txt +0 -0
  139. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/run.sh +0 -0
  140. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/static/css/style.css +0 -0
  141. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/static/js/admin.js +0 -0
  142. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/dashboard.html +0 -0
  143. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/edit_post.html +0 -0
  144. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/login.html +0 -0
  145. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/posts.html +0 -0
  146. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/base.html +0 -0
  147. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/index.html +0 -0
  148. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/post.html +0 -0
  149. {veadk_python-0.2.8/veadk/integrations/ve_tls → veadk_python-0.2.10/veadk/integrations/ve_prompt_pilot}/__init__.py +0 -0
  150. {veadk_python-0.2.8/veadk/knowledgebase/backends → veadk_python-0.2.10/veadk/integrations/ve_tls}/__init__.py +0 -0
  151. {veadk_python-0.2.8/veadk/memory/long_term_memory_backends → veadk_python-0.2.10/veadk/integrations/ve_viking_db_memory}/__init__.py +0 -0
  152. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/knowledgebase/__init__.py +0 -0
  153. {veadk_python-0.2.8/veadk/memory/short_term_memory_backends → veadk_python-0.2.10/veadk/knowledgebase/backends}/__init__.py +0 -0
  154. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/knowledgebase/backends/in_memory_backend.py +0 -0
  155. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/knowledgebase/backends/opensearch_backend.py +0 -0
  156. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/knowledgebase/backends/redis_backend.py +0 -0
  157. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/knowledgebase/backends/utils.py +0 -0
  158. {veadk_python-0.2.8/veadk/prompts → veadk_python-0.2.10/veadk/memory/long_term_memory_backends}/__init__.py +0 -0
  159. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/memory/long_term_memory_backends/base_backend.py +0 -0
  160. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/memory/long_term_memory_backends/in_memory_backend.py +0 -0
  161. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/memory/long_term_memory_backends/opensearch_backend.py +0 -0
  162. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/memory/long_term_memory_backends/redis_backend.py +0 -0
  163. {veadk_python-0.2.8/veadk/tools → veadk_python-0.2.10/veadk/memory/short_term_memory_backends}/__init__.py +0 -0
  164. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/memory/short_term_memory_backends/base_backend.py +0 -0
  165. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/memory/short_term_memory_backends/mysql_backend.py +0 -0
  166. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/memory/short_term_memory_backends/sqlite_backend.py +0 -0
  167. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/memory/short_term_memory_processor.py +0 -0
  168. {veadk_python-0.2.8/veadk/tools/builtin_tools → veadk_python-0.2.10/veadk/prompts}/__init__.py +0 -0
  169. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/prompts/agent_default_prompt.py +0 -0
  170. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/prompts/prompt_evaluator.py +0 -0
  171. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/prompts/prompt_memory_processor.py +0 -0
  172. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/prompts/prompt_optimization.py +0 -0
  173. {veadk_python-0.2.8/veadk/tools/sandbox → veadk_python-0.2.10/veadk/tools}/__init__.py +0 -0
  174. {veadk_python-0.2.8/veadk/tracing → veadk_python-0.2.10/veadk/tools/builtin_tools}/__init__.py +0 -0
  175. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/tools/builtin_tools/lark.py +0 -0
  176. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/tools/builtin_tools/las.py +0 -0
  177. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/tools/builtin_tools/mcp_router.py +0 -0
  178. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/tools/builtin_tools/vesearch.py +0 -0
  179. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/tools/builtin_tools/web_scraper.py +0 -0
  180. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/tools/demo_tools.py +0 -0
  181. {veadk_python-0.2.8/veadk/tracing/telemetry → veadk_python-0.2.10/veadk/tools/sandbox}/__init__.py +0 -0
  182. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/tools/sandbox/browser_sandbox.py +0 -0
  183. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/tools/sandbox/code_sandbox.py +0 -0
  184. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/tools/sandbox/computer_sandbox.py +0 -0
  185. {veadk_python-0.2.8/veadk/tracing/telemetry/exporters → veadk_python-0.2.10/veadk/tracing}/__init__.py +0 -0
  186. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/tracing/base_tracer.py +0 -0
  187. {veadk_python-0.2.8/veadk/utils → veadk_python-0.2.10/veadk/tracing/telemetry}/__init__.py +0 -0
  188. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/tracing/telemetry/attributes/attributes.py +0 -0
  189. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/tracing/telemetry/attributes/extractors/common_attributes_extractors.py +0 -0
  190. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/tracing/telemetry/attributes/extractors/types.py +0 -0
  191. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/tracing/telemetry/exporters/base_exporter.py +0 -0
  192. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/tracing/telemetry/exporters/cozeloop_exporter.py +0 -0
  193. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/tracing/telemetry/exporters/tls_exporter.py +0 -0
  194. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/types.py +0 -0
  195. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/utils/logger.py +0 -0
  196. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/utils/mcp_utils.py +0 -0
  197. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/utils/misc.py +0 -0
  198. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/utils/patches.py +0 -0
  199. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk/utils/volcengine_sign.py +0 -0
  200. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk_python.egg-info/dependency_links.txt +0 -0
  201. {veadk_python-0.2.8 → veadk_python-0.2.10}/veadk_python.egg-info/entry_points.txt +0 -0
  202. {veadk_python-0.2.8 → veadk_python-0.2.10}/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.2.8
3
+ Version: 0.2.10
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
@@ -218,9 +218,9 @@ Requires-Dist: opentelemetry-exporter-otlp>=1.35.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.3
221
+ Requires-Dist: volcengine-python-sdk>=4.0.18
222
222
  Requires-Dist: volcengine>=1.0.193
223
- Requires-Dist: agent-pilot-sdk>=0.0.9
223
+ Requires-Dist: agent-pilot-sdk>=0.1.2
224
224
  Requires-Dist: fastmcp>=2.11.3
225
225
  Requires-Dist: cookiecutter>=2.6.0
226
226
  Requires-Dist: omegaconf>=2.3.0
@@ -235,12 +235,12 @@ Provides-Extra: extensions
235
235
  Requires-Dist: redis>=5.0; extra == "extensions"
236
236
  Requires-Dist: tos>=2.8.4; extra == "extensions"
237
237
  Requires-Dist: llama-index-vector-stores-redis>=0.6.1; extra == "extensions"
238
- Requires-Dist: mcp-server-vikingdb-memory; extra == "extensions"
239
238
  Provides-Extra: database
240
239
  Requires-Dist: redis>=5.0; extra == "database"
241
240
  Requires-Dist: pymysql>=1.1.1; extra == "database"
242
241
  Requires-Dist: volcengine>=1.0.193; extra == "database"
243
242
  Requires-Dist: tos>=2.8.4; extra == "database"
243
+ Requires-Dist: mem0ai==0.1.118; extra == "database"
244
244
  Provides-Extra: eval
245
245
  Requires-Dist: prometheus-client>=0.22.1; extra == "eval"
246
246
  Requires-Dist: deepeval>=3.2.6; extra == "eval"
@@ -270,6 +270,17 @@ A [tutorial](https://github.com/volcengine/veadk-python/blob/main/veadk_tutorial
270
270
 
271
271
  ## Installation
272
272
 
273
+ ### From PyPI
274
+
275
+ ```python
276
+ pip install veadk-python
277
+
278
+ # install extensions
279
+ pip install veadk-python[extensions]
280
+ ```
281
+
282
+ ### Build from source
283
+
273
284
  We use `uv` to build this project ([how-to-install-uv](https://docs.astral.sh/uv/getting-started/installation/)).
274
285
 
275
286
  ```bash
@@ -15,6 +15,17 @@ A [tutorial](https://github.com/volcengine/veadk-python/blob/main/veadk_tutorial
15
15
 
16
16
  ## Installation
17
17
 
18
+ ### From PyPI
19
+
20
+ ```python
21
+ pip install veadk-python
22
+
23
+ # install extensions
24
+ pip install veadk-python[extensions]
25
+ ```
26
+
27
+ ### Build from source
28
+
18
29
  We use `uv` to build this project ([how-to-install-uv](https://docs.astral.sh/uv/getting-started/installation/)).
19
30
 
20
31
  ```bash
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "veadk-python"
3
- version = "0.2.8"
3
+ version = "0.2.10"
4
4
  description = "Volcengine agent development kit, integrations with Volcengine cloud services."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -22,9 +22,9 @@ dependencies = [
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.3", # For Volcengine API
26
- "volcengine>=1.0.193", # For Volcengine sign
27
- "agent-pilot-sdk>=0.0.9", # Prompt optimization by Volcengine AgentPilot/PromptPilot toolkits
25
+ "volcengine-python-sdk>=4.0.18", # For Volcengine API
26
+ "volcengine>=1.0.193", # For Volcengine sign
27
+ "agent-pilot-sdk>=0.1.2", # Prompt optimization by Volcengine AgentPilot/PromptPilot toolkits
28
28
  "fastmcp>=2.11.3", # For running MCP
29
29
  "cookiecutter>=2.6.0", # For cloud deploy
30
30
  "omegaconf>=2.3.0", # For agent builder
@@ -45,13 +45,13 @@ extensions = [
45
45
  "redis>=5.0", # For Redis database
46
46
  "tos>=2.8.4", # For TOS storage and Viking DB
47
47
  "llama-index-vector-stores-redis>=0.6.1",
48
- "mcp-server-vikingdb-memory",
49
48
  ]
50
49
  database = [
51
50
  "redis>=5.0", # For Redis database
52
51
  "pymysql>=1.1.1", # For MySQL database
53
52
  "volcengine>=1.0.193", # For Viking DB
54
53
  "tos>=2.8.4", # For TOS storage and Viking DB
54
+ "mem0ai==0.1.118", # For mem0
55
55
  ]
56
56
  eval = [
57
57
  "prometheus-client>=0.22.1", # For exporting data to Prometheus pushgateway
@@ -91,6 +91,3 @@ exclude = [
91
91
  "veadk/integrations/ve_faas/template/*",
92
92
  "veadk/integrations/ve_faas/web_template/*"
93
93
  ]
94
-
95
- [tool.uv.sources]
96
- mcp-server-vikingdb-memory = { git = "https://github.com/volcengine/mcp-server", subdirectory = "server/mcp_server_vikingdb_memory" }
@@ -0,0 +1,90 @@
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 json
16
+ from typing import Literal
17
+
18
+ import httpx
19
+ import requests
20
+ from a2a.types import AgentCard
21
+ from google.adk.agents.remote_a2a_agent import RemoteA2aAgent
22
+
23
+ from veadk.utils.logger import get_logger
24
+
25
+ logger = get_logger(__name__)
26
+
27
+ AGENT_CARD_WELL_KNOWN_PATH = "/.well-known/agent-card.json"
28
+
29
+
30
+ def _convert_agent_card_dict_to_obj(agent_card_dict: dict) -> AgentCard:
31
+ agent_card_json_str = json.dumps(agent_card_dict, ensure_ascii=False, indent=2)
32
+ agent_card_object = AgentCard.model_validate_json(str(agent_card_json_str))
33
+ return agent_card_object
34
+
35
+
36
+ class RemoteVeAgent(RemoteA2aAgent):
37
+ """Connect to remote agent on VeFaaS platform."""
38
+
39
+ def __init__(
40
+ self,
41
+ name: str,
42
+ url: str,
43
+ auth_token: str | None = None,
44
+ auth_method: Literal["header", "querystring"] | None = None,
45
+ ):
46
+ if not auth_token:
47
+ agent_card_dict = requests.get(url + AGENT_CARD_WELL_KNOWN_PATH).json()
48
+ # replace agent_card_url with actual host
49
+ agent_card_dict["url"] = url
50
+
51
+ agent_card_object = _convert_agent_card_dict_to_obj(agent_card_dict)
52
+
53
+ logger.debug(f"Agent card of {name}: {agent_card_object}")
54
+ super().__init__(name=name, agent_card=agent_card_object)
55
+ else:
56
+ if auth_method == "header":
57
+ headers = {"Authorization": f"Bearer {auth_token}"}
58
+ agent_card_dict = requests.get(
59
+ url + AGENT_CARD_WELL_KNOWN_PATH, headers=headers
60
+ ).json()
61
+ agent_card_dict["url"] = url
62
+
63
+ agent_card_object = _convert_agent_card_dict_to_obj(agent_card_dict)
64
+ httpx_client = httpx.AsyncClient(
65
+ base_url=url, headers=headers, timeout=600
66
+ )
67
+
68
+ logger.debug(f"Agent card of {name}: {agent_card_object}")
69
+ super().__init__(
70
+ name=name, agent_card=agent_card_object, httpx_client=httpx_client
71
+ )
72
+ elif auth_method == "querystring":
73
+ agent_card_dict = requests.get(
74
+ url + AGENT_CARD_WELL_KNOWN_PATH + f"?token={auth_token}"
75
+ ).json()
76
+ agent_card_dict["url"] = url
77
+
78
+ agent_card_object = _convert_agent_card_dict_to_obj(agent_card_dict)
79
+ httpx_client = httpx.AsyncClient(
80
+ base_url=url, params={"token": auth_token}, timeout=600
81
+ )
82
+
83
+ logger.debug(f"Agent card of {name}: {agent_card_object}")
84
+ super().__init__(
85
+ name=name, agent_card=agent_card_object, httpx_client=httpx_client
86
+ )
87
+ else:
88
+ raise ValueError(
89
+ f"Unsupported auth method {auth_method}, use `header` or `querystring` instead."
90
+ )
@@ -84,6 +84,9 @@ class Agent(LlmAgent):
84
84
  knowledgebase: Optional[KnowledgeBase] = None
85
85
  """The knowledgebase provided to agent."""
86
86
 
87
+ short_term_memory: Optional[ShortTermMemory] = None
88
+ """The short term memory provided to agent."""
89
+
87
90
  long_term_memory: Optional[LongTermMemory] = None
88
91
  """The long term memory provided to agent.
89
92
 
@@ -138,6 +141,9 @@ class Agent(LlmAgent):
138
141
  if self.long_term_memory is not None:
139
142
  from google.adk.tools import load_memory
140
143
 
144
+ if not load_memory.custom_metadata:
145
+ load_memory.custom_metadata = {}
146
+ load_memory.custom_metadata["backend"] = self.long_term_memory.backend
141
147
  self.tools.append(load_memory)
142
148
 
143
149
  logger.info(f"VeADK version: {VERSION}")
@@ -52,9 +52,8 @@ class AgentBuilder:
52
52
  tools = []
53
53
  if agent_config.get("tools", []):
54
54
  for tool in agent_config["tools"]:
55
- module_name = tool["module"]
56
- func_name = tool["func"]
57
-
55
+ name = tool["name"]
56
+ module_name, func_name = name.rsplit(".", 1)
58
57
  module = importlib.import_module(module_name)
59
58
  func = getattr(module, func_name)
60
59
 
@@ -18,6 +18,7 @@ import click
18
18
  from veadk.cli.cli_deploy import deploy
19
19
  from veadk.cli.cli_eval import eval
20
20
  from veadk.cli.cli_init import init
21
+ from veadk.cli.cli_kb import kb
21
22
  from veadk.cli.cli_pipeline import pipeline
22
23
  from veadk.cli.cli_prompt import prompt
23
24
  from veadk.cli.cli_web import web
@@ -39,6 +40,7 @@ veadk.add_command(prompt)
39
40
  veadk.add_command(web)
40
41
  veadk.add_command(pipeline)
41
42
  veadk.add_command(eval)
43
+ veadk.add_command(kb)
42
44
 
43
45
  if __name__ == "__main__":
44
46
  veadk()
@@ -0,0 +1,75 @@
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
+ from pathlib import Path
16
+ from typing import Literal
17
+
18
+ import click
19
+
20
+
21
+ @click.command()
22
+ @click.option(
23
+ "--backend",
24
+ type=click.Choice(
25
+ ["local", "opensearch", "viking", "redis"],
26
+ case_sensitive=False,
27
+ ),
28
+ required=True,
29
+ )
30
+ @click.option(
31
+ "--app_name",
32
+ default="",
33
+ help="`app_name` for init your knowledgebase",
34
+ )
35
+ @click.option(
36
+ "--index",
37
+ default="",
38
+ help="Knowledgebase index",
39
+ )
40
+ @click.option(
41
+ "--path",
42
+ required=True,
43
+ help="Knowledge file or directory path",
44
+ )
45
+ def add(
46
+ backend: Literal["local", "opensearch", "viking", "redis"],
47
+ app_name: str,
48
+ index: str,
49
+ path: str,
50
+ ):
51
+ """Add files to knowledgebase"""
52
+ _path = Path(path)
53
+ assert _path.exists(), f"Path {path} not exists. Please check your input."
54
+
55
+ from veadk.knowledgebase import KnowledgeBase
56
+
57
+ knowledgebase = KnowledgeBase(backend=backend, app_name=app_name, index=index)
58
+
59
+ if _path.is_file():
60
+ knowledgebase.add_from_files(files=[path])
61
+ elif _path.is_dir():
62
+ knowledgebase.add_from_directory(directory=path)
63
+ else:
64
+ raise RuntimeError(
65
+ "Unsupported knowledgebase file type, only support a single file and a directory."
66
+ )
67
+
68
+
69
+ @click.group()
70
+ def kb():
71
+ """VeADK Knowledgebase management"""
72
+ pass
73
+
74
+
75
+ kb.add_command(add)
@@ -21,12 +21,15 @@ import click
21
21
  )
22
22
  @click.option("--feedback", default="", help="Suggestions for prompt optimization")
23
23
  @click.option("--api-key", default="", help="API Key of PromptPilot")
24
+ @click.option("--workspace-id", default="", help="Workspace ID of PromptPilot")
24
25
  @click.option(
25
26
  "--model-name",
26
27
  default="doubao-1.5-pro-32k-250115",
27
28
  help="Model name for prompt optimization",
28
29
  )
29
- def prompt(path: str, feedback: str, api_key: str, model_name: str) -> None:
30
+ def prompt(
31
+ path: str, feedback: str, api_key: str, workspace_id: str, model_name: str
32
+ ) -> None:
30
33
  """Optimize agent system prompt from a local file."""
31
34
  from pathlib import Path
32
35
 
@@ -56,7 +59,11 @@ def prompt(path: str, feedback: str, api_key: str, model_name: str) -> None:
56
59
 
57
60
  if not api_key:
58
61
  api_key = settings.prompt_pilot.api_key
59
- ve_prompt_pilot = VePromptPilot(api_key)
62
+
63
+ if not workspace_id:
64
+ raise ValueError("Please provide workspace_id for PromptPilot service.")
65
+
66
+ ve_prompt_pilot = VePromptPilot(api_key=api_key, workspace_id=workspace_id)
60
67
  ve_prompt_pilot.optimize(
61
68
  agents=agents, feedback=feedback, model_name=model_name
62
69
  )
@@ -12,6 +12,7 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
+ from typing import Optional
15
16
 
16
17
  import click
17
18
 
@@ -152,6 +153,8 @@ def web(host: str) -> None:
152
153
  eval_sets_manager: Any,
153
154
  eval_set_results_manager: Any,
154
155
  agents_dir: str,
156
+ extra_plugins: Optional[list[str]] = None,
157
+ **kwargs: Any,
155
158
  ):
156
159
  self.agent_loader = agent_loader
157
160
  self.artifact_service = artifact_service
@@ -162,6 +165,10 @@ def web(host: str) -> None:
162
165
  self.runners_to_clean = set()
163
166
  self.current_app_name_ref = SharedValue(value="")
164
167
  self.runner_dict = {}
168
+ self.extra_plugins = extra_plugins or []
169
+
170
+ for key, value in kwargs.items():
171
+ setattr(self, key, value)
165
172
 
166
173
  # parse VeADK memories
167
174
  short_term_memory, long_term_memory = _get_memory(module_path=agents_dir)
@@ -83,6 +83,15 @@ class RedisConfig(BaseSettings):
83
83
  """STS token for Redis auth, not supported yet."""
84
84
 
85
85
 
86
+ class Mem0Config(BaseSettings):
87
+ model_config = SettingsConfigDict(env_prefix="DATABASE_MEM0_")
88
+
89
+ api_key: str = ""
90
+ """Mem0 API key"""
91
+
92
+ base_url: str = "" # "https://api.mem0.ai/v1"
93
+
94
+
86
95
  class VikingKnowledgebaseConfig(BaseSettings):
87
96
  model_config = SettingsConfigDict(env_prefix="DATABASE_VIKING_")
88
97
 
@@ -27,6 +27,8 @@ DEFAULT_MODEL_EXTRA_CONFIG = {
27
27
  "x-is-encrypted": getenv("MODEL_AGENT_ENCRYPTED", "true"),
28
28
  "veadk-source": "veadk",
29
29
  "veadk-version": VERSION,
30
+ "User-Agent": f"VeADK/{VERSION}",
31
+ "X-Client-Request-Id": f"veadk/{VERSION}",
30
32
  },
31
33
  "extra_body": {
32
34
  "caching": {
@@ -59,3 +61,8 @@ DEFAULT_TLS_TRACING_INSTANCE_NAME = "veadk-tracing"
59
61
  DEFAULT_TOS_BUCKET_NAME = "ark-tutorial"
60
62
 
61
63
  DEFAULT_COZELOOP_SPACE_NAME = "VeADK Space"
64
+
65
+ DEFAULT_TEXT_TO_IMAGE_MODEL_NAME = "doubao-seedream-3-0-t2i-250415"
66
+ DEFAULT_IMAGE_EDIT_MODEL_NAME = "doubao-seededit-3-0-i2i-250628"
67
+ DEFAULT_VIDEO_MODEL_NAME = "doubao-seedance-1-0-pro-250528"
68
+ DEFAULT_IMAGE_GENERATE_MODEL_NAME = "doubao-seedream-4-0-250828"
@@ -24,6 +24,8 @@ from google.adk.evaluation.agent_evaluator import (
24
24
  )
25
25
  from google.adk.evaluation.eval_case import IntermediateData, Invocation
26
26
  from google.adk.evaluation.evaluator import EvalStatus
27
+ from google.adk.evaluation.eval_set import EvalSet
28
+ from typing import Optional
27
29
  from typing_extensions import override
28
30
  from veadk.evaluation.base_evaluator import BaseEvaluator
29
31
  from types import SimpleNamespace
@@ -52,7 +54,8 @@ class ADKEvaluator(BaseEvaluator):
52
54
  @override
53
55
  async def evaluate(
54
56
  self,
55
- eval_set_file_path: str,
57
+ eval_set: Optional[EvalSet] = None,
58
+ eval_set_file_path: Optional[str] = None,
56
59
  eval_id: str = f"test_{formatted_timestamp()}",
57
60
  tool_score_threshold: float = 1.0,
58
61
  response_match_score_threshold: float = 0.8,
@@ -104,7 +107,7 @@ class ADKEvaluator(BaseEvaluator):
104
107
  # Iterate each test file and evaluate per-case, per-metric
105
108
  for test_file in test_files:
106
109
  # Build in-memory evaluation cases via BaseEvaluator from the provided file
107
- self.build_eval_set(test_file)
110
+ self.build_eval_set(eval_set, test_file)
108
111
 
109
112
  evaluation_result_list = []
110
113
 
@@ -17,7 +17,7 @@ import json
17
17
  import time
18
18
  import uuid
19
19
  from abc import abstractmethod
20
- from typing import Any
20
+ from typing import Any, Optional
21
21
 
22
22
  from google.adk import Runner
23
23
  from google.adk.evaluation.eval_set import EvalSet
@@ -210,33 +210,43 @@ class BaseEvaluator:
210
210
 
211
211
  return evalset
212
212
 
213
- def build_eval_set(self, file_path: str):
213
+ def build_eval_set(
214
+ self, eval_set: Optional[EvalSet] = None, file_path: Optional[str] = None
215
+ ):
214
216
  """Generate evaluation data from a given file and assign it to the class attribute `invocation_list`."""
215
- eval_case_data_list: list[EvalTestCase] = []
216
217
 
217
- try:
218
- with open(file_path, "r", encoding="utf-8") as f:
219
- file_content = json.load(f)
220
- except json.JSONDecodeError as e:
221
- raise ValueError(f"Invalid JSON format in file {file_path}: {e}")
222
- except Exception as e:
223
- raise ValueError(f"Error reading file {file_path}: {e}")
224
-
225
- if isinstance(file_content, dict) and "eval_cases" in file_content:
226
- eval_cases = self._build_eval_set_from_eval_json(file_path).eval_cases
227
- elif (
228
- isinstance(file_content, list)
229
- and len(file_content) > 0
230
- and all(
231
- isinstance(span, dict) and "trace_id" in span for span in file_content
232
- )
233
- ):
234
- eval_cases = self._build_eval_set_from_tracing_json(file_path).eval_cases
218
+ if eval_set is None and file_path is None:
219
+ raise ValueError("eval_set or file_path is required")
220
+ if eval_set:
221
+ eval_cases = eval_set.eval_cases
235
222
  else:
236
- raise ValueError(
237
- f"Unsupported file format in {file_path}. Please provide a valid file."
238
- )
223
+ try:
224
+ with open(file_path, "r", encoding="utf-8") as f:
225
+ file_content = json.load(f)
226
+ except json.JSONDecodeError as e:
227
+ raise ValueError(f"Invalid JSON format in file {file_path}: {e}")
228
+ except Exception as e:
229
+ raise ValueError(f"Error reading file {file_path}: {e}")
230
+
231
+ if isinstance(file_content, dict) and "eval_cases" in file_content:
232
+ eval_cases = self._build_eval_set_from_eval_json(file_path).eval_cases
233
+ elif (
234
+ isinstance(file_content, list)
235
+ and len(file_content) > 0
236
+ and all(
237
+ isinstance(span, dict) and "trace_id" in span
238
+ for span in file_content
239
+ )
240
+ ):
241
+ eval_cases = self._build_eval_set_from_tracing_json(
242
+ file_path
243
+ ).eval_cases
244
+ else:
245
+ raise ValueError(
246
+ f"Unsupported file format in {file_path}. Please provide a valid file."
247
+ )
239
248
 
249
+ eval_case_data_list: list[EvalTestCase] = []
240
250
  for eval_case in eval_cases:
241
251
  eval_case_data = EvalTestCase(invocations=[])
242
252
  if eval_case.session_input:
@@ -384,8 +394,9 @@ class BaseEvaluator:
384
394
  @abstractmethod
385
395
  async def evaluate(
386
396
  self,
387
- eval_set_file_path: str,
388
397
  metrics: list[Any],
398
+ eval_set: Optional[EvalSet],
399
+ eval_set_file_path: Optional[str],
389
400
  eval_id: str,
390
401
  ):
391
402
  """An abstract method for evaluation based on metrics。"""
@@ -22,7 +22,8 @@ from deepeval.models import LocalModel
22
22
  from deepeval.test_case import LLMTestCase
23
23
  from deepeval.test_case.llm_test_case import ToolCall
24
24
  from typing_extensions import override
25
-
25
+ from typing import Optional
26
+ from google.adk.evaluation.eval_set import EvalSet
26
27
  from veadk.config import getenv
27
28
  from veadk.evaluation.base_evaluator import BaseEvaluator, EvalResultData, MetricResult
28
29
  from veadk.evaluation.types import EvalResultCaseData, EvalResultMetadata
@@ -77,13 +78,14 @@ class DeepevalEvaluator(BaseEvaluator):
77
78
  @override
78
79
  async def evaluate(
79
80
  self,
80
- eval_set_file_path: str,
81
81
  metrics: list[BaseMetric],
82
+ eval_set: Optional[EvalSet] = None,
83
+ eval_set_file_path: Optional[str] = None,
82
84
  eval_id: str = f"test_{formatted_timestamp()}",
83
85
  ):
84
86
  """Target to Google ADK, we will use the same evaluation case format as Google ADK."""
85
87
  # Get evaluation data by parsing eval set file
86
- self.build_eval_set(eval_set_file_path)
88
+ self.build_eval_set(eval_set, eval_set_file_path)
87
89
 
88
90
  # Get actual data by running agent
89
91
  logger.info("Start to run agent for actual data.")
@@ -16,7 +16,6 @@ from __future__ import annotations
16
16
 
17
17
  import agent_pilot as ap
18
18
  from agent_pilot.models import TaskType
19
-
20
19
  from veadk import Agent
21
20
  from veadk.prompts import prompt_optimization
22
21
  from veadk.utils.logger import get_logger
@@ -26,9 +25,15 @@ logger = get_logger(__name__)
26
25
 
27
26
  class VePromptPilot:
28
27
  def __init__(
29
- self, api_key: str, path: str = "", task_id: str | None = None
28
+ self,
29
+ api_key: str,
30
+ workspace_id: str,
31
+ path: str = "",
32
+ task_id: str | None = None,
30
33
  ) -> None:
31
34
  self.api_key = api_key
35
+ self.workspace_id = workspace_id
36
+
32
37
  self.path = path
33
38
 
34
39
  def optimize(
@@ -57,12 +62,13 @@ class VePromptPilot:
57
62
  usage = None
58
63
  for chunk in ap.generate_prompt_stream(
59
64
  task_description=task_description,
60
- current_prompt=agent.instruction,
65
+ current_prompt=str(agent.instruction),
61
66
  model_name=model_name,
62
67
  task_type=TaskType.DIALOG,
63
68
  temperature=1.0,
64
69
  top_p=0.7,
65
70
  api_key=self.api_key,
71
+ workspace_id=self.workspace_id,
66
72
  ): # stream chunks of optimized prompt
67
73
  # Process each chunk as it arrives
68
74
  optimized_prompt += chunk.data.content if chunk.data else ""
@@ -17,6 +17,7 @@ import json
17
17
  from typing import Any, Literal
18
18
 
19
19
  import httpx
20
+ from veadk.utils.logger import get_logger
20
21
  from volcengine.ApiInfo import ApiInfo
21
22
  from volcengine.auth.SignerV4 import SignerV4
22
23
  from volcengine.tls.const import (
@@ -28,8 +29,6 @@ from volcengine.tls.const import (
28
29
  )
29
30
  from volcengine.tls.TLSService import TLSService
30
31
 
31
- from veadk.utils.logger import get_logger
32
-
33
32
  logger = get_logger(__name__)
34
33
 
35
34
  HEADER_API_VERSION = "x-tls-apiversion"
@@ -28,9 +28,8 @@ class VeTLS:
28
28
  region: str = "cn-beijing",
29
29
  ):
30
30
  try:
31
- from volcengine.tls.TLSService import TLSService
32
-
33
31
  from veadk.integrations.ve_tls.utils import ve_tls_request
32
+ from volcengine.tls.TLSService import TLSService
34
33
  except ImportError:
35
34
  raise ImportError(
36
35
  "Please install volcengine SDK before init VeTLS: pip install volcengine"
@@ -162,11 +161,12 @@ class VeTLS:
162
161
  client=self._client,
163
162
  api="CreateTraceInstance",
164
163
  body=request_body,
164
+ request_headers={"TraceTag": "veadk"},
165
165
  )
166
166
 
167
- if res["ErrorCode"] == "TopicAlreadyExist":
167
+ if "ErrorCode" in res and res["ErrorCode"] == "TopicAlreadyExist":
168
168
  logger.debug(
169
- f"Log project '{trace_instance_name}' already exists. Check its ID."
169
+ f"Tracing instance '{trace_instance_name}' already exists. Check its ID."
170
170
  )
171
171
  return self.get_trace_instance_by_name(
172
172
  log_project_id, trace_instance_name
@@ -176,10 +176,14 @@ class VeTLS:
176
176
  res = self._ve_tls_request(
177
177
  client=self._client,
178
178
  api="DescribeTraceInstance",
179
- body={"TraceInstanceID": res["TraceInstanceID"]},
179
+ params={"TraceInstanceId": res["TraceInstanceId"]},
180
180
  method="GET",
181
181
  )
182
182
 
183
+ logger.info(
184
+ f"Create tracing instance finished, tracing instance ID: {res['TraceInstanceId']}"
185
+ )
186
+
183
187
  return res
184
188
  except KeyError:
185
189
  raise ValueError(f"Failed to create tracing instance: {res}")