veadk-python 0.2.6__tar.gz → 0.2.8__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 (212) hide show
  1. {veadk_python-0.2.6 → veadk_python-0.2.8}/PKG-INFO +16 -3
  2. {veadk_python-0.2.6 → veadk_python-0.2.8}/pyproject.toml +23 -6
  3. veadk_python-0.2.8/tests/test_agent.py +211 -0
  4. {veadk_python-0.2.6 → veadk_python-0.2.8}/tests/test_evaluator.py +39 -38
  5. {veadk_python-0.2.6 → veadk_python-0.2.8}/tests/test_knowledgebase.py +7 -11
  6. {veadk_python-0.2.6 → veadk_python-0.2.8}/tests/test_long_term_memory.py +10 -31
  7. {veadk_python-0.2.6 → veadk_python-0.2.8}/tests/test_runner.py +24 -9
  8. {veadk_python-0.2.6 → veadk_python-0.2.8}/tests/test_short_term_memory.py +6 -7
  9. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/agent.py +11 -18
  10. veadk_python-0.2.8/veadk/agent_builder.py +94 -0
  11. veadk_python-0.2.6/veadk/database/__init__.py → veadk_python-0.2.8/veadk/auth/base_auth.py +7 -2
  12. veadk_python-0.2.8/veadk/auth/veauth/apmplus_veauth.py +65 -0
  13. veadk_python-0.2.8/veadk/auth/veauth/ark_veauth.py +77 -0
  14. veadk_python-0.2.8/veadk/auth/veauth/base_veauth.py +50 -0
  15. veadk_python-0.2.8/veadk/auth/veauth/opensearch_veauth.py +75 -0
  16. veadk_python-0.2.8/veadk/auth/veauth/postgresql_veauth.py +75 -0
  17. veadk_python-0.2.8/veadk/auth/veauth/prompt_pilot_veauth.py +60 -0
  18. veadk_python-0.2.8/veadk/auth/veauth/vesearch_veauth.py +62 -0
  19. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/cli/cli.py +4 -0
  20. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/cli/cli_deploy.py +3 -2
  21. veadk_python-0.2.8/veadk/cli/cli_eval.py +160 -0
  22. veadk_python-0.2.8/veadk/cli/cli_pipeline.py +220 -0
  23. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/cli/cli_prompt.py +4 -4
  24. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/cli/cli_web.py +3 -1
  25. veadk_python-0.2.8/veadk/config.py +95 -0
  26. veadk_python-0.2.8/veadk/configs/database_configs.py +117 -0
  27. veadk_python-0.2.8/veadk/configs/model_configs.py +74 -0
  28. veadk_python-0.2.8/veadk/configs/tool_configs.py +42 -0
  29. veadk_python-0.2.8/veadk/configs/tracing_configs.py +110 -0
  30. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/consts.py +13 -1
  31. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/evaluation/base_evaluator.py +60 -44
  32. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/evaluation/deepeval_evaluator/deepeval_evaluator.py +18 -12
  33. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/evaluation/eval_set_recorder.py +2 -2
  34. veadk_python-0.2.8/veadk/integrations/ve_code_pipeline/ve_code_pipeline.py +431 -0
  35. veadk_python-0.2.8/veadk/integrations/ve_cozeloop/ve_cozeloop.py +96 -0
  36. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_cr/ve_cr.py +20 -5
  37. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/template/cookiecutter.json +1 -1
  38. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/deploy.py +2 -2
  39. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/agent.py +1 -1
  40. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/run.sh +1 -5
  41. veadk_python-0.2.8/veadk/integrations/ve_faas/ve_faas.py +728 -0
  42. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_prompt_pilot/ve_prompt_pilot.py +6 -3
  43. veadk_python-0.2.8/veadk/integrations/ve_tls/utils.py +117 -0
  44. veadk_python-0.2.8/veadk/integrations/ve_tls/ve_tls.py +208 -0
  45. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_tos/ve_tos.py +71 -75
  46. veadk_python-0.2.8/veadk/knowledgebase/backends/base_backend.py +59 -0
  47. veadk_python-0.2.8/veadk/knowledgebase/backends/in_memory_backend.py +82 -0
  48. veadk_python-0.2.8/veadk/knowledgebase/backends/opensearch_backend.py +136 -0
  49. veadk_python-0.2.8/veadk/knowledgebase/backends/redis_backend.py +144 -0
  50. veadk_python-0.2.8/veadk/knowledgebase/backends/utils.py +91 -0
  51. veadk_python-0.2.8/veadk/knowledgebase/backends/vikingdb_knowledge_backend.py +412 -0
  52. veadk_python-0.2.8/veadk/knowledgebase/knowledgebase.py +144 -0
  53. veadk_python-0.2.8/veadk/memory/__init__.py +35 -0
  54. veadk_python-0.2.8/veadk/memory/long_term_memory.py +227 -0
  55. veadk_python-0.2.6/veadk/database/base_database.py → veadk_python-0.2.8/veadk/memory/long_term_memory_backends/base_backend.py +10 -22
  56. veadk_python-0.2.8/veadk/memory/long_term_memory_backends/in_memory_backend.py +65 -0
  57. veadk_python-0.2.8/veadk/memory/long_term_memory_backends/opensearch_backend.py +120 -0
  58. veadk_python-0.2.8/veadk/memory/long_term_memory_backends/redis_backend.py +127 -0
  59. veadk_python-0.2.8/veadk/memory/long_term_memory_backends/vikingdb_memory_backend.py +148 -0
  60. veadk_python-0.2.8/veadk/memory/short_term_memory.py +128 -0
  61. veadk_python-0.2.8/veadk/memory/short_term_memory_backends/base_backend.py +31 -0
  62. veadk_python-0.2.8/veadk/memory/short_term_memory_backends/mysql_backend.py +41 -0
  63. veadk_python-0.2.8/veadk/memory/short_term_memory_backends/postgresql_backend.py +41 -0
  64. veadk_python-0.2.8/veadk/memory/short_term_memory_backends/sqlite_backend.py +48 -0
  65. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/memory/short_term_memory_processor.py +9 -4
  66. veadk_python-0.2.8/veadk/runner.py +386 -0
  67. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tools/builtin_tools/vesearch.py +2 -2
  68. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tools/builtin_tools/video_generate.py +27 -20
  69. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tools/builtin_tools/web_scraper.py +1 -1
  70. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tools/builtin_tools/web_search.py +7 -7
  71. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tools/load_knowledgebase_tool.py +1 -1
  72. veadk_python-0.2.8/veadk/tools/sandbox/__init__.py +13 -0
  73. veadk_python-0.2.8/veadk/tracing/__init__.py +13 -0
  74. veadk_python-0.2.8/veadk/tracing/telemetry/__init__.py +13 -0
  75. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tracing/telemetry/attributes/extractors/llm_attributes_extractors.py +20 -2
  76. veadk_python-0.2.8/veadk/tracing/telemetry/exporters/__init__.py +13 -0
  77. veadk_python-0.2.8/veadk/tracing/telemetry/exporters/apmplus_exporter.py +321 -0
  78. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tracing/telemetry/exporters/cozeloop_exporter.py +6 -9
  79. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tracing/telemetry/exporters/inmemory_exporter.py +22 -8
  80. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tracing/telemetry/exporters/tls_exporter.py +6 -10
  81. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tracing/telemetry/opentelemetry_tracer.py +5 -8
  82. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tracing/telemetry/telemetry.py +66 -60
  83. veadk_python-0.2.8/veadk/utils/__init__.py +13 -0
  84. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/utils/logger.py +1 -1
  85. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/utils/misc.py +63 -0
  86. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/utils/volcengine_sign.py +6 -2
  87. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/version.py +1 -1
  88. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk_python.egg-info/PKG-INFO +16 -3
  89. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk_python.egg-info/SOURCES.txt +46 -19
  90. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk_python.egg-info/requires.txt +16 -2
  91. veadk_python-0.2.6/tests/test_agent.py +0 -63
  92. veadk_python-0.2.6/tests/test_agent_card.py +0 -33
  93. veadk_python-0.2.6/tests/test_tos.py +0 -169
  94. veadk_python-0.2.6/veadk/config.py +0 -131
  95. veadk_python-0.2.6/veadk/database/database_adapter.py +0 -368
  96. veadk_python-0.2.6/veadk/database/database_factory.py +0 -80
  97. veadk_python-0.2.6/veadk/database/kv/redis_database.py +0 -159
  98. veadk_python-0.2.6/veadk/database/local_database.py +0 -61
  99. veadk_python-0.2.6/veadk/database/relational/mysql_database.py +0 -173
  100. veadk_python-0.2.6/veadk/database/vector/opensearch_vector_database.py +0 -263
  101. veadk_python-0.2.6/veadk/database/vector/type.py +0 -50
  102. veadk_python-0.2.6/veadk/database/viking/viking_database.py +0 -471
  103. veadk_python-0.2.6/veadk/database/viking/viking_memory_db.py +0 -525
  104. veadk_python-0.2.6/veadk/integrations/ve_faas/ve_faas.py +0 -413
  105. veadk_python-0.2.6/veadk/knowledgebase/knowledgebase.py +0 -90
  106. veadk_python-0.2.6/veadk/memory/long_term_memory.py +0 -158
  107. veadk_python-0.2.6/veadk/memory/short_term_memory.py +0 -120
  108. veadk_python-0.2.6/veadk/runner.py +0 -429
  109. veadk_python-0.2.6/veadk/tracing/telemetry/exporters/apmplus_exporter.py +0 -157
  110. {veadk_python-0.2.6 → veadk_python-0.2.8}/LICENSE +0 -0
  111. {veadk_python-0.2.6 → veadk_python-0.2.8}/README.md +0 -0
  112. {veadk_python-0.2.6 → veadk_python-0.2.8}/setup.cfg +0 -0
  113. {veadk_python-0.2.6 → veadk_python-0.2.8}/tests/test_cloud.py +0 -0
  114. {veadk_python-0.2.6 → veadk_python-0.2.8}/tests/test_multiple_agents.py +0 -0
  115. {veadk_python-0.2.6 → veadk_python-0.2.8}/tests/test_runtime_data_collecting.py +0 -0
  116. {veadk_python-0.2.6 → veadk_python-0.2.8}/tests/test_tracing.py +0 -0
  117. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/__init__.py +0 -0
  118. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/a2a/__init__.py +0 -0
  119. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/a2a/agent_card.py +0 -0
  120. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/a2a/remote_ve_agent.py +0 -0
  121. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/a2a/ve_a2a_server.py +0 -0
  122. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/a2a/ve_agent_executor.py +0 -0
  123. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/a2a/ve_task_store.py +0 -0
  124. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/agents/loop_agent.py +0 -0
  125. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/agents/parallel_agent.py +0 -0
  126. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/agents/sequential_agent.py +0 -0
  127. {veadk_python-0.2.6/veadk/cli → veadk_python-0.2.8/veadk/auth}/__init__.py +0 -0
  128. {veadk_python-0.2.6/veadk/cloud → veadk_python-0.2.8/veadk/auth/veauth}/__init__.py +0 -0
  129. veadk_python-0.2.6/veadk/database/kv/__init__.py → veadk_python-0.2.8/veadk/auth/veauth/cozeloop_veauth.py +0 -0
  130. {veadk_python-0.2.6/veadk/database/relational → veadk_python-0.2.8/veadk/cli}/__init__.py +0 -0
  131. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/cli/cli_init.py +1 -1
  132. {veadk_python-0.2.6/veadk/database/vector → veadk_python-0.2.8/veadk/cloud}/__init__.py +0 -0
  133. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/cloud/cloud_agent_engine.py +0 -0
  134. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/cloud/cloud_app.py +0 -0
  135. {veadk_python-0.2.6/veadk/database/viking → veadk_python-0.2.8/veadk/configs}/__init__.py +0 -0
  136. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/evaluation/__init__.py +0 -0
  137. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/evaluation/adk_evaluator/__init__.py +0 -0
  138. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/evaluation/adk_evaluator/adk_evaluator.py +0 -0
  139. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/evaluation/deepeval_evaluator/__init__.py +0 -0
  140. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/evaluation/eval_set_file_loader.py +0 -0
  141. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/evaluation/types.py +0 -0
  142. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/evaluation/utils/prometheus.py +0 -0
  143. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_apig/__init__.py +0 -0
  144. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_apig/ve_apig.py +0 -0
  145. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_apig/ve_apig_utils.py +0 -0
  146. {veadk_python-0.2.6/veadk/integrations/ve_cr → veadk_python-0.2.8/veadk/integrations/ve_code_pipeline}/__init__.py +0 -0
  147. {veadk_python-0.2.6/veadk/integrations/ve_faas → veadk_python-0.2.8/veadk/integrations/ve_cozeloop}/__init__.py +0 -0
  148. {veadk_python-0.2.6/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}} → veadk_python-0.2.8/veadk/integrations/ve_cr}/__init__.py +0 -0
  149. {veadk_python-0.2.6/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src → veadk_python-0.2.8/veadk/integrations/ve_faas}/__init__.py +0 -0
  150. {veadk_python-0.2.6/veadk/integrations/ve_faas/web_template → veadk_python-0.2.8/veadk/integrations/ve_faas/template}/{{cookiecutter.local_dir_name}}/__init__.py +0 -0
  151. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
  152. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/config.yaml.example +0 -0
  153. {veadk_python-0.2.6/veadk/integrations/ve_prompt_pilot → veadk_python-0.2.8/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src}/__init__.py +0 -0
  154. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/app.py +0 -0
  155. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/requirements.txt +0 -0
  156. {veadk_python-0.2.6/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name|replace('-', '_') }} → veadk_python-0.2.8/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name }}}/__init__.py +0 -0
  157. {veadk_python-0.2.6/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name|replace('-', '_') }} → veadk_python-0.2.8/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name }}}/agent.py +0 -0
  158. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/ve_faas_utils.py +0 -0
  159. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/web_template/cookiecutter.json +0 -0
  160. {veadk_python-0.2.6/veadk/memory → veadk_python-0.2.8/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}}/__init__.py +0 -0
  161. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
  162. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/config.yaml.example +0 -0
  163. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/deploy.py +0 -0
  164. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/Dockerfile +0 -0
  165. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/app.py +0 -0
  166. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/init_db.py +0 -0
  167. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/models.py +0 -0
  168. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/requirements.txt +0 -0
  169. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/run.sh +0 -0
  170. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/static/css/style.css +0 -0
  171. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/static/js/admin.js +0 -0
  172. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/dashboard.html +0 -0
  173. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/edit_post.html +0 -0
  174. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/login.html +0 -0
  175. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/posts.html +0 -0
  176. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/base.html +0 -0
  177. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/index.html +0 -0
  178. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/post.html +0 -0
  179. {veadk_python-0.2.6/veadk/prompts → veadk_python-0.2.8/veadk/integrations/ve_prompt_pilot}/__init__.py +0 -0
  180. {veadk_python-0.2.6/veadk/tools → veadk_python-0.2.8/veadk/integrations/ve_tls}/__init__.py +0 -0
  181. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/knowledgebase/__init__.py +0 -0
  182. {veadk_python-0.2.6/veadk/tools/builtin_tools → veadk_python-0.2.8/veadk/knowledgebase/backends}/__init__.py +0 -0
  183. {veadk_python-0.2.6/veadk/tools/sandbox → veadk_python-0.2.8/veadk/memory/long_term_memory_backends}/__init__.py +0 -0
  184. {veadk_python-0.2.6/veadk/tracing → veadk_python-0.2.8/veadk/memory/short_term_memory_backends}/__init__.py +0 -0
  185. {veadk_python-0.2.6/veadk/tracing/telemetry → veadk_python-0.2.8/veadk/prompts}/__init__.py +0 -0
  186. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/prompts/agent_default_prompt.py +0 -0
  187. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/prompts/prompt_evaluator.py +0 -0
  188. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/prompts/prompt_memory_processor.py +0 -0
  189. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/prompts/prompt_optimization.py +0 -0
  190. {veadk_python-0.2.6/veadk/tracing/telemetry/exporters → veadk_python-0.2.8/veadk/tools}/__init__.py +0 -0
  191. {veadk_python-0.2.6/veadk/utils → veadk_python-0.2.8/veadk/tools/builtin_tools}/__init__.py +0 -0
  192. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tools/builtin_tools/image_edit.py +0 -0
  193. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tools/builtin_tools/image_generate.py +0 -0
  194. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tools/builtin_tools/lark.py +0 -0
  195. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tools/builtin_tools/las.py +0 -0
  196. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tools/builtin_tools/mcp_router.py +0 -0
  197. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tools/demo_tools.py +0 -0
  198. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tools/sandbox/browser_sandbox.py +0 -0
  199. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tools/sandbox/code_sandbox.py +0 -0
  200. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tools/sandbox/computer_sandbox.py +0 -0
  201. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tracing/base_tracer.py +0 -0
  202. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tracing/telemetry/attributes/attributes.py +0 -0
  203. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tracing/telemetry/attributes/extractors/common_attributes_extractors.py +0 -0
  204. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tracing/telemetry/attributes/extractors/tool_attributes_extractors.py +0 -0
  205. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tracing/telemetry/attributes/extractors/types.py +0 -0
  206. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tracing/telemetry/exporters/base_exporter.py +0 -0
  207. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/types.py +0 -0
  208. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/utils/mcp_utils.py +0 -0
  209. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/utils/patches.py +0 -0
  210. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk_python.egg-info/dependency_links.txt +0 -0
  211. {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk_python.egg-info/entry_points.txt +0 -0
  212. {veadk_python-0.2.6 → veadk_python-0.2.8}/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.6
3
+ Version: 0.2.8
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,13 +218,26 @@ 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.3
222
+ Requires-Dist: volcengine>=1.0.193
222
223
  Requires-Dist: agent-pilot-sdk>=0.0.9
223
224
  Requires-Dist: fastmcp>=2.11.3
224
225
  Requires-Dist: cookiecutter>=2.6.0
226
+ Requires-Dist: omegaconf>=2.3.0
227
+ Requires-Dist: llama-index>=0.14.0
228
+ Requires-Dist: llama-index-embeddings-openai-like>=0.2.2
229
+ Requires-Dist: llama-index-llms-openai-like>=0.5.1
230
+ Requires-Dist: llama-index-vector-stores-opensearch>=0.6.1
231
+ Requires-Dist: psycopg2-binary>=2.9.10
232
+ Requires-Dist: pymysql>=1.1.1
225
233
  Requires-Dist: opensearch-py==2.8.0
234
+ Provides-Extra: extensions
235
+ Requires-Dist: redis>=5.0; extra == "extensions"
236
+ Requires-Dist: tos>=2.8.4; extra == "extensions"
237
+ Requires-Dist: llama-index-vector-stores-redis>=0.6.1; extra == "extensions"
238
+ Requires-Dist: mcp-server-vikingdb-memory; extra == "extensions"
226
239
  Provides-Extra: database
227
- Requires-Dist: redis>=6.2.0; extra == "database"
240
+ Requires-Dist: redis>=5.0; extra == "database"
228
241
  Requires-Dist: pymysql>=1.1.1; extra == "database"
229
242
  Requires-Dist: volcengine>=1.0.193; extra == "database"
230
243
  Requires-Dist: tos>=2.8.4; extra == "database"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "veadk-python"
3
- version = "0.2.6"
3
+ version = "0.2.8"
4
4
  description = "Volcengine agent development kit, integrations with Volcengine cloud services."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -22,19 +22,33 @@ 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
- "agent-pilot-sdk>=0.0.9", # Prompt optimization by Volcengine AgentPilot/PromptPilot toolkits
27
- "fastmcp>=2.11.3", # For running MCP
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
28
+ "fastmcp>=2.11.3", # For running MCP
28
29
  "cookiecutter>=2.6.0", # For cloud deploy
29
- "opensearch-py==2.8.0" # For OpenSearch database
30
+ "omegaconf>=2.3.0", # For agent builder
31
+ "llama-index>=0.14.0",
32
+ "llama-index-embeddings-openai-like>=0.2.2",
33
+ "llama-index-llms-openai-like>=0.5.1",
34
+ "llama-index-vector-stores-opensearch>=0.6.1",
35
+ "psycopg2-binary>=2.9.10", # For PostgreSQL database (short term memory)
36
+ "pymysql>=1.1.1", # For MySQL database (short term memory)
37
+ "opensearch-py==2.8.0",
30
38
  ]
31
39
 
32
40
  [project.scripts]
33
41
  veadk = "veadk.cli.cli:veadk"
34
42
 
35
43
  [project.optional-dependencies]
44
+ extensions = [
45
+ "redis>=5.0", # For Redis database
46
+ "tos>=2.8.4", # For TOS storage and Viking DB
47
+ "llama-index-vector-stores-redis>=0.6.1",
48
+ "mcp-server-vikingdb-memory",
49
+ ]
36
50
  database = [
37
- "redis>=6.2.0", # For Redis database
51
+ "redis>=5.0", # For Redis database
38
52
  "pymysql>=1.1.1", # For MySQL database
39
53
  "volcengine>=1.0.193", # For Viking DB
40
54
  "tos>=2.8.4", # For TOS storage and Viking DB
@@ -77,3 +91,6 @@ exclude = [
77
91
  "veadk/integrations/ve_faas/template/*",
78
92
  "veadk/integrations/ve_faas/web_template/*"
79
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,211 @@
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 unittest.mock import Mock, patch
16
+
17
+ from google.adk.agents.llm_agent import LlmAgent
18
+ from google.adk.models.lite_llm import LiteLlm
19
+ from google.adk.tools import load_memory
20
+
21
+ from veadk import Agent
22
+ from veadk.consts import (
23
+ DEFAULT_AGENT_NAME,
24
+ DEFAULT_MODEL_AGENT_API_BASE,
25
+ DEFAULT_MODEL_AGENT_NAME,
26
+ DEFAULT_MODEL_AGENT_PROVIDER,
27
+ DEFAULT_MODEL_EXTRA_CONFIG,
28
+ )
29
+ from veadk.knowledgebase import KnowledgeBase
30
+ from veadk.memory.long_term_memory import LongTermMemory
31
+ from veadk.tools import load_knowledgebase_tool
32
+ from veadk.tracing.telemetry.opentelemetry_tracer import OpentelemetryTracer
33
+
34
+
35
+ def test_agent():
36
+ knowledgebase = KnowledgeBase(
37
+ index="test_index",
38
+ backend="local",
39
+ backend_config={"embedding_config": {"api_key": "test"}},
40
+ )
41
+ long_term_memory = LongTermMemory(backend="local")
42
+ tracer = OpentelemetryTracer()
43
+
44
+ extra_config = {
45
+ "extra_headers": {"thinking": "test"},
46
+ "extra_body": {"content": "test"},
47
+ }
48
+
49
+ agent = Agent(
50
+ model_name="test_model_name",
51
+ model_provider="test_model_provider",
52
+ model_api_key="test_model_api_key",
53
+ model_api_base="test_model_api_base",
54
+ model_extra_config=extra_config,
55
+ tools=[],
56
+ sub_agents=[],
57
+ knowledgebase=knowledgebase,
58
+ long_term_memory=long_term_memory,
59
+ tracers=[tracer],
60
+ )
61
+
62
+ assert agent.model.model == f"{agent.model_provider}/{agent.model_name}" # type: ignore
63
+
64
+ expected_config = DEFAULT_MODEL_EXTRA_CONFIG.copy()
65
+ expected_config["extra_headers"] |= extra_config["extra_headers"]
66
+ expected_config["extra_body"] |= extra_config["extra_body"]
67
+
68
+ assert agent.model_extra_config == expected_config
69
+
70
+ assert agent.knowledgebase == knowledgebase
71
+ assert agent.knowledgebase.backend == "local" # type: ignore
72
+ assert load_knowledgebase_tool.knowledgebase == agent.knowledgebase
73
+ assert load_knowledgebase_tool.load_knowledgebase_tool in agent.tools
74
+
75
+ assert agent.long_term_memory.backend == "local" # type: ignore
76
+ assert load_memory in agent.tools
77
+
78
+
79
+ @patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
80
+ def test_agent_default_values():
81
+ agent = Agent()
82
+
83
+ assert agent.name == DEFAULT_AGENT_NAME
84
+
85
+ assert agent.model_name == DEFAULT_MODEL_AGENT_NAME
86
+ assert agent.model_provider == DEFAULT_MODEL_AGENT_PROVIDER
87
+ assert agent.model_api_base == DEFAULT_MODEL_AGENT_API_BASE
88
+
89
+ assert agent.tools == []
90
+ assert agent.sub_agents == []
91
+ assert agent.knowledgebase is None
92
+ assert agent.long_term_memory is None
93
+ assert agent.tracers == []
94
+
95
+
96
+ @patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
97
+ def test_agent_without_knowledgebase():
98
+ agent = Agent()
99
+
100
+ assert agent.knowledgebase is None
101
+ assert load_knowledgebase_tool.load_knowledgebase_tool not in agent.tools
102
+
103
+
104
+ @patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
105
+ def test_agent_without_long_term_memory():
106
+ agent = Agent()
107
+
108
+ assert agent.long_term_memory is None
109
+ assert load_memory not in agent.tools
110
+
111
+
112
+ @patch("veadk.agent.LiteLlm")
113
+ def test_agent_model_creation(mock_lite_llm):
114
+ mock_model = Mock()
115
+ mock_lite_llm.return_value = mock_model
116
+
117
+ agent = Agent(
118
+ model_name="test_model",
119
+ model_provider="test_provider",
120
+ model_api_key="test_key",
121
+ model_api_base="test_base",
122
+ )
123
+
124
+ mock_lite_llm.assert_called_once()
125
+ assert agent.model == mock_model
126
+
127
+
128
+ @patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
129
+ def test_agent_with_existing_model():
130
+ existing_model = LiteLlm(model="test_model")
131
+ agent = Agent(model=existing_model)
132
+
133
+ assert agent.model == existing_model
134
+
135
+
136
+ @patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
137
+ def test_agent_model_extra_config_merge():
138
+ user_config = {
139
+ "extra_headers": {"custom": "header"},
140
+ "extra_body": {"custom": "body"},
141
+ "other_param": "value",
142
+ }
143
+
144
+ agent = Agent(model_extra_config=user_config)
145
+
146
+ expected_headers = DEFAULT_MODEL_EXTRA_CONFIG["extra_headers"].copy()
147
+ expected_headers["custom"] = "header"
148
+
149
+ expected_body = DEFAULT_MODEL_EXTRA_CONFIG["extra_body"].copy()
150
+ expected_body["custom"] = "body"
151
+
152
+ assert agent.model_extra_config["extra_headers"] == expected_headers
153
+ assert agent.model_extra_config["extra_body"] == expected_body
154
+ assert agent.model_extra_config["other_param"] == "value"
155
+
156
+
157
+ @patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
158
+ def test_agent_empty_model_extra_config():
159
+ agent = Agent(model_extra_config={})
160
+
161
+ assert (
162
+ agent.model_extra_config["extra_headers"]
163
+ == DEFAULT_MODEL_EXTRA_CONFIG["extra_headers"]
164
+ )
165
+ assert (
166
+ agent.model_extra_config["extra_body"]
167
+ == DEFAULT_MODEL_EXTRA_CONFIG["extra_body"]
168
+ )
169
+
170
+
171
+ @patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
172
+ def test_agent_with_tools():
173
+ mock_tool = Mock()
174
+ agent = Agent(tools=[mock_tool])
175
+
176
+ assert mock_tool in agent.tools
177
+
178
+
179
+ @patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
180
+ def test_agent_with_sub_agents():
181
+ adk_agent = LlmAgent(name="agent")
182
+ veadk_agent = Agent(name="agent")
183
+ agent = Agent(sub_agents=[adk_agent, veadk_agent])
184
+
185
+ assert adk_agent in agent.sub_agents
186
+ assert veadk_agent in agent.sub_agents
187
+ assert adk_agent.parent_agent == agent
188
+ assert veadk_agent.parent_agent == agent
189
+
190
+
191
+ @patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
192
+ def test_agent_with_tracers():
193
+ tracer1 = OpentelemetryTracer()
194
+ tracer2 = OpentelemetryTracer()
195
+
196
+ agent = Agent(tracers=[tracer1, tracer2])
197
+
198
+ assert len(agent.tracers) == 2
199
+ assert tracer1 in agent.tracers
200
+ assert tracer2 in agent.tracers
201
+
202
+
203
+ @patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
204
+ def test_agent_custom_name_and_description():
205
+ custom_name = "CustomAgent"
206
+ custom_description = "A custom agent for testing"
207
+
208
+ agent = Agent(name=custom_name, description=custom_description)
209
+
210
+ assert agent.name == custom_name
211
+ assert agent.description == custom_description
@@ -62,60 +62,61 @@ EVAL_SET_DATA = {
62
62
  TRACE_SET_DATA = [
63
63
  {
64
64
  "name": "execute_tool get_city_weather",
65
- "span_id": 5421848634094108689,
66
- "trace_id": 115143748123782151752771111946932434777,
67
- "start_time": 1754884672226444000,
68
- "end_time": 1754884672226993000,
65
+ "span_id": 4497348974122733469,
66
+ "trace_id": 142655176138954930885272077198014871976,
67
+ "start_time": 1758158957162250000,
68
+ "end_time": 1758158957162426000,
69
69
  "attributes": {
70
70
  "gen_ai.tool.name": "get_city_weather",
71
- "gen_ai.tool.description": "Retrieves the weather information of a given city. the args must in English",
72
- "gen_ai.tool.call.id": "call_6ow5622pvcouw3tpvr7rfqtl",
73
- "gcp.vertex.agent.tool_call_args": '{"city": "Xi\'an"}',
71
+ "gen_ai.tool.input": '{"name": "get_city_weather", "description": "Retrieves the weather information of a given city. the args must in English", "parameters": {"city": "Beijing"}}',
72
+ "gen_ai.tool.output": '{"id": "call_w4bj25flpvs74zgyyiquqh5s", "name": "get_city_weather", "response": {"result": "Sunny, 25°C"}}',
74
73
  },
75
- "parent_span_id": 7997784243558253239,
74
+ "parent_span_id": 574819447039686650,
76
75
  },
77
76
  {
78
77
  "name": "call_llm",
79
- "span_id": 7997784243558253239,
80
- "trace_id": 115143748123782151752771111946932434777,
78
+ "span_id": 574819447039686650,
79
+ "trace_id": 142655176138954930885272077198014871976,
80
+ "start_time": 1758158945807630000,
81
+ "end_time": 1758158957171304000,
81
82
  "attributes": {
82
- "session.id": "veadk_example_session",
83
- "user.id": "veadk_default_user",
83
+ "gen_ai.app.name": "veadk_default_app",
84
+ "gen_ai.user.id": "veadk_default_user",
85
+ "gen_ai.prompt.0.role": "user",
86
+ "gen_ai.prompt.0.content": "How is the weather like in BeiJing?",
84
87
  },
85
- "parent_span_id": 14844888006539887900,
88
+ "parent_span_id": 13789664766018020416,
86
89
  },
87
90
  {
88
91
  "name": "call_llm",
89
- "span_id": 7789424022423491416,
90
- "trace_id": 115143748123782151752771111946932434777,
92
+ "span_id": 9007934154052797946,
93
+ "trace_id": 142655176138954930885272077198014871976,
94
+ "start_time": 1758158957171713000,
95
+ "end_time": 1758158964035230000,
91
96
  "attributes": {
92
- "session.id": "veadk_example_session",
93
- "user.id": "veadk_default_user",
97
+ "gen_ai.app.name": "veadk_default_app",
98
+ "gen_ai.user.id": "veadk_default_user",
99
+ "gen_ai.prompt.0.content": "How is the weather like in BeiJing?",
100
+ "gen_ai.completion.0.content": "The weather in Beijing is sunny with a temperature of 25°C.",
94
101
  },
95
- "parent_span_id": 14844888006539887900,
102
+ "parent_span_id": 13789664766018020416,
96
103
  },
97
104
  {
98
105
  "name": "agent_run [chat_robot]",
99
- "span_id": 14844888006539887900,
100
- "trace_id": 115143748123782151752771111946932434777,
101
- "attributes": {
102
- "session.id": "veadk_example_session",
103
- "user.id": "veadk_default_user",
104
- },
105
- "parent_span_id": 2943363177785645047,
106
+ "span_id": 13789664766018020416,
107
+ "trace_id": 142655176138954930885272077198014871976,
108
+ "start_time": 1758158945807350000,
109
+ "end_time": 1758158964035291000,
110
+ "attributes": {},
111
+ "parent_span_id": 5589459087402275636,
106
112
  },
107
113
  {
108
- "name": "invocation [veadk_default_app]",
109
- "span_id": 2943363177785645047,
110
- "trace_id": 115143748123782151752771111946932434777,
111
- "start_time": 1754884660687962000,
112
- "end_time": 1754884676664833000,
113
- "attributes": {
114
- "input.value": '{"user_id": "veadk_default_user", "session_id": "veadk_example_session", "new_message": "{\\"parts\\": [{\\"video_metadata\\": null, \\"thought\\": null, \\"inline_data\\": null, \\"file_data\\": null, \\"thought_signature\\": null, \\"code_execution_result\\": null, \\"executable_code\\": null, \\"function_call\\": null, \\"function_response\\": null, \\"text\\": \\"How is the weather like in Xi\'an?\\"}], \\"role\\": \\"user\\"}", "run_config": "{\\"speech_config\\": null, \\"response_modalities\\": null, \\"save_input_blobs_as_artifacts\\": false, \\"support_cfc\\": false, \\"streaming_mode\\": \\"StreamingMode.NONE\\", \\"output_audio_transcription\\": null, \\"input_audio_transcription\\": null, \\"realtime_input_config\\": null, \\"enable_affective_dialog\\": null, \\"proactivity\\": null, \\"max_llm_calls\\": 500}"}',
115
- "user.id": "veadk_default_user",
116
- "session.id": "veadk_example_session",
117
- "output.value": '{"content":{"parts":[{"text":"The weather in Xi\'an is cool, with a temperature of 18\u00b0C."}],"role":"model"},"partial":false,"usage_metadata":{"candidates_token_count":132,"prompt_token_count":547,"total_token_count":679},"invocation_id":"e-ea6bb35b-c3f0-4c5c-b127-c71c7d6d6441","author":"chat_robot","actions":{"state_delta":{},"artifact_delta":{},"requested_auth_configs":{}},"id":"c0929124-9be0-4f75-a6ba-f7a531c9ccb6","timestamp":1754884672.227546}',
118
- },
114
+ "name": "invocation",
115
+ "span_id": 5589459087402275636,
116
+ "trace_id": 142655176138954930885272077198014871976,
117
+ "start_time": 1758158945807233000,
118
+ "end_time": 1758158964035304000,
119
+ "attributes": {},
119
120
  "parent_span_id": None,
120
121
  },
121
122
  ]
@@ -154,8 +155,8 @@ def test_tracing_file_to_evalset():
154
155
  assert len(base_evaluator.invocation_list) == 1
155
156
  assert len(base_evaluator.invocation_list[0].invocations) == 1
156
157
  assert (
157
- base_evaluator.invocation_list[0].invocations[0].invocation_id
158
- == "e-ea6bb35b-c3f0-4c5c-b127-c71c7d6d6441"
158
+ base_evaluator.invocation_list[0].invocations[0].expected_output
159
+ == "The weather in Beijing is sunny with a temperature of 25°C."
159
160
  )
160
161
 
161
162
  os.remove(tracing_file_path)
@@ -12,24 +12,20 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
+
15
16
  import pytest
16
17
 
17
18
  from veadk.knowledgebase import KnowledgeBase
19
+ from veadk.knowledgebase.backends.in_memory_backend import InMemoryKnowledgeBackend
18
20
 
19
21
 
20
22
  @pytest.mark.asyncio
21
23
  async def test_knowledgebase():
22
24
  app_name = "kb_test_app"
23
- key = "Supercalifragilisticexpialidocious"
24
- kb = KnowledgeBase(backend="local")
25
- # Attempt to delete any existing data for the app_name before adding new data
26
- kb.add(
27
- data=[f"knowledgebase_id is {key}"],
28
- app_name=app_name,
29
- )
30
- res_list = kb.search(
31
- query="knowledgebase_id",
25
+ kb = KnowledgeBase(
26
+ backend="local",
32
27
  app_name=app_name,
28
+ backend_config={"embedding_config": {"api_key": "test"}},
33
29
  )
34
- res = "".join(res_list)
35
- assert key in res, f"Test failed for backend local res is {res}"
30
+
31
+ assert isinstance(kb._backend, InMemoryKnowledgeBackend)
@@ -12,11 +12,9 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
+
15
16
  import pytest
16
- from google.adk.events import Event
17
- from google.adk.sessions import Session
18
17
  from google.adk.tools import load_memory
19
- from google.genai import types
20
18
 
21
19
  from veadk.agent import Agent
22
20
  from veadk.memory.long_term_memory import LongTermMemory
@@ -27,7 +25,11 @@ user_id = "test_user"
27
25
 
28
26
  @pytest.mark.asyncio
29
27
  async def test_long_term_memory():
30
- long_term_memory = LongTermMemory(backend="local")
28
+ long_term_memory = LongTermMemory(
29
+ backend="local",
30
+ # app_name=app_name,
31
+ # user_id=user_id,
32
+ )
31
33
  agent = Agent(
32
34
  name="all_name",
33
35
  model_name="test_model_name",
@@ -41,31 +43,8 @@ async def test_long_term_memory():
41
43
 
42
44
  assert load_memory in agent.tools, "load_memory tool not found in agent tools"
43
45
 
44
- # mock session
45
- session = Session(
46
- id="test_session_id",
47
- app_name=app_name,
48
- user_id=user_id,
49
- events=[
50
- Event(
51
- invocation_id="test_invocation_id",
52
- author="user",
53
- branch=None,
54
- content=types.Content(
55
- parts=[types.Part(text="My name is Alice.")],
56
- role="user",
57
- ),
58
- )
59
- ],
60
- )
61
-
62
- await long_term_memory.add_session_to_memory(session)
46
+ assert not agent.long_term_memory._backend
63
47
 
64
- memories = await long_term_memory.search_memory(
65
- app_name=app_name,
66
- user_id=user_id,
67
- query="Alice",
68
- )
69
- assert (
70
- "Alice" in memories.model_dump()["memories"][0]["content"]["parts"][0]["text"]
71
- )
48
+ # assert agent.long_term_memory._backend.index == build_long_term_memory_index(
49
+ # app_name, user_id
50
+ # )
@@ -20,7 +20,13 @@ from veadk.memory.short_term_memory import ShortTermMemory
20
20
  from veadk.runner import Runner
21
21
 
22
22
 
23
+ # Import the standalone function instead of accessing as class method
24
+ from veadk.runner import _convert_messages
25
+
26
+
23
27
  def _test_convert_messages(runner):
28
+ """Test message conversion logic using standalone _convert_messages function"""
29
+ # Test single text message conversion
24
30
  message = "test message"
25
31
  expected_message = [
26
32
  types.Content(
@@ -28,11 +34,16 @@ def _test_convert_messages(runner):
28
34
  role="user",
29
35
  )
30
36
  ]
31
- actual_message = runner._convert_messages(
32
- message, session_id="test_session_id", upload_inline_data_to_tos=True
37
+ # Modified: Call _convert_messages directly (not as runner method)
38
+ actual_message = _convert_messages(
39
+ message,
40
+ app_name=runner.app_name,
41
+ user_id=runner.user_id,
42
+ session_id="test_session_id",
33
43
  )
34
44
  assert actual_message == expected_message
35
45
 
46
+ # Test multiple text messages conversion
36
47
  message = ["test message 1", "test message 2"]
37
48
  expected_message = [
38
49
  types.Content(
@@ -44,13 +55,18 @@ def _test_convert_messages(runner):
44
55
  role="user",
45
56
  ),
46
57
  ]
47
- actual_message = runner._convert_messages(
48
- message, session_id="test_session_id", upload_inline_data_to_tos=True
58
+ # Modified: Call _convert_messages directly (not as runner method)
59
+ actual_message = _convert_messages(
60
+ message,
61
+ app_name=runner.app_name,
62
+ user_id=runner.user_id,
63
+ session_id="test_session_id",
49
64
  )
50
65
  assert actual_message == expected_message
51
66
 
52
67
 
53
68
  def test_runner():
69
+ """Test Runner class initialization and core properties"""
54
70
  short_term_memory = ShortTermMemory()
55
71
  long_term_memory = LongTermMemory(backend="local")
56
72
  agent = Agent(
@@ -64,10 +80,9 @@ def test_runner():
64
80
  runner = Runner(agent=agent, short_term_memory=short_term_memory)
65
81
  assert runner.long_term_memory == agent.long_term_memory
66
82
 
67
- adk_runner = runner.runner
68
- assert adk_runner.memory_service == agent.long_term_memory
69
- assert adk_runner.session_service == runner.short_term_memory.session_service
83
+ # Verify inherited ADKRunner properties
84
+ assert runner.memory_service == agent.long_term_memory
85
+ assert runner.session_service == runner.short_term_memory.session_service
70
86
 
71
- _test_convert_messages(runner)
72
- _test_convert_messages(runner)
87
+ # Run message conversion tests
73
88
  _test_convert_messages(runner)
@@ -15,7 +15,6 @@
15
15
  import asyncio
16
16
  import os
17
17
 
18
- import veadk.memory.short_term_memory
19
18
  from veadk.memory.short_term_memory import ShortTermMemory
20
19
  from veadk.utils.misc import formatted_timestamp
21
20
 
@@ -35,11 +34,11 @@ def test_short_term_memory():
35
34
  )
36
35
  assert session is not None
37
36
 
38
- # database - local
39
- veadk.memory.short_term_memory.DEFAULT_LOCAL_DATABASE_PATH = (
40
- f"/tmp/tmp_for_test_{formatted_timestamp()}.db"
37
+ # sqlite
38
+ memory = ShortTermMemory(
39
+ backend="sqlite",
40
+ local_database_path=f"/tmp/tmp_for_test_{formatted_timestamp()}.db",
41
41
  )
42
- memory = ShortTermMemory(backend="database")
43
42
  asyncio.run(
44
43
  memory.session_service.create_session(
45
44
  app_name="app", user_id="user", session_id="session"
@@ -51,5 +50,5 @@ def test_short_term_memory():
51
50
  )
52
51
  )
53
52
  assert session is not None
54
- assert os.path.exists(veadk.memory.short_term_memory.DEFAULT_LOCAL_DATABASE_PATH)
55
- os.remove(veadk.memory.short_term_memory.DEFAULT_LOCAL_DATABASE_PATH)
53
+ assert os.path.exists(memory.local_database_path)
54
+ os.remove(memory.local_database_path)