veadk-python 0.2.9__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 (201) hide show
  1. {veadk_python-0.2.9 → veadk_python-0.2.10}/PKG-INFO +3 -3
  2. {veadk_python-0.2.9 → veadk_python-0.2.10}/pyproject.toml +4 -7
  3. veadk_python-0.2.10/veadk/a2a/remote_ve_agent.py +90 -0
  4. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/agent.py +3 -0
  5. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/agent_builder.py +2 -3
  6. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/cli/cli.py +2 -0
  7. veadk_python-0.2.10/veadk/cli/cli_kb.py +75 -0
  8. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/cli/cli_web.py +4 -0
  9. veadk_python-0.2.10/veadk/integrations/ve_viking_db_memory/ve_viking_db_memory.py +293 -0
  10. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/memory/__init__.py +1 -1
  11. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/memory/long_term_memory.py +25 -0
  12. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/memory/long_term_memory_backends/mem0_backend.py +17 -2
  13. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/memory/long_term_memory_backends/vikingdb_memory_backend.py +4 -8
  14. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/memory/short_term_memory.py +9 -3
  15. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/memory/short_term_memory_backends/postgresql_backend.py +3 -1
  16. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/runner.py +23 -8
  17. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/tools/builtin_tools/generate_image.py +50 -16
  18. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/tools/builtin_tools/image_edit.py +9 -4
  19. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/tools/builtin_tools/image_generate.py +9 -4
  20. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/tools/builtin_tools/video_generate.py +6 -6
  21. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/tools/builtin_tools/web_search.py +10 -3
  22. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/tools/load_knowledgebase_tool.py +12 -0
  23. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/tracing/telemetry/attributes/extractors/llm_attributes_extractors.py +5 -0
  24. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/tracing/telemetry/attributes/extractors/tool_attributes_extractors.py +7 -0
  25. veadk_python-0.2.10/veadk/tracing/telemetry/exporters/__init__.py +13 -0
  26. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/tracing/telemetry/exporters/apmplus_exporter.py +82 -2
  27. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/tracing/telemetry/exporters/inmemory_exporter.py +8 -2
  28. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/tracing/telemetry/telemetry.py +41 -5
  29. veadk_python-0.2.10/veadk/utils/__init__.py +13 -0
  30. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/version.py +1 -1
  31. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk_python.egg-info/PKG-INFO +3 -3
  32. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk_python.egg-info/SOURCES.txt +4 -0
  33. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk_python.egg-info/requires.txt +2 -2
  34. veadk_python-0.2.9/veadk/a2a/remote_ve_agent.py +0 -33
  35. {veadk_python-0.2.9 → veadk_python-0.2.10}/LICENSE +0 -0
  36. {veadk_python-0.2.9 → veadk_python-0.2.10}/README.md +0 -0
  37. {veadk_python-0.2.9 → veadk_python-0.2.10}/setup.cfg +0 -0
  38. {veadk_python-0.2.9 → veadk_python-0.2.10}/tests/test_agent.py +0 -0
  39. {veadk_python-0.2.9 → veadk_python-0.2.10}/tests/test_cloud.py +0 -0
  40. {veadk_python-0.2.9 → veadk_python-0.2.10}/tests/test_evaluator.py +0 -0
  41. {veadk_python-0.2.9 → veadk_python-0.2.10}/tests/test_knowledgebase.py +0 -0
  42. {veadk_python-0.2.9 → veadk_python-0.2.10}/tests/test_long_term_memory.py +0 -0
  43. {veadk_python-0.2.9 → veadk_python-0.2.10}/tests/test_multiple_agents.py +0 -0
  44. {veadk_python-0.2.9 → veadk_python-0.2.10}/tests/test_runner.py +0 -0
  45. {veadk_python-0.2.9 → veadk_python-0.2.10}/tests/test_runtime_data_collecting.py +0 -0
  46. {veadk_python-0.2.9 → veadk_python-0.2.10}/tests/test_short_term_memory.py +0 -0
  47. {veadk_python-0.2.9 → veadk_python-0.2.10}/tests/test_tracing.py +0 -0
  48. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/__init__.py +0 -0
  49. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/a2a/__init__.py +0 -0
  50. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/a2a/agent_card.py +0 -0
  51. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/a2a/ve_a2a_server.py +0 -0
  52. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/a2a/ve_agent_executor.py +0 -0
  53. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/a2a/ve_task_store.py +0 -0
  54. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/agents/loop_agent.py +0 -0
  55. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/agents/parallel_agent.py +0 -0
  56. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/agents/sequential_agent.py +0 -0
  57. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/auth/__init__.py +0 -0
  58. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/auth/base_auth.py +0 -0
  59. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/auth/veauth/__init__.py +0 -0
  60. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/auth/veauth/apmplus_veauth.py +0 -0
  61. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/auth/veauth/ark_veauth.py +0 -0
  62. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/auth/veauth/base_veauth.py +0 -0
  63. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/auth/veauth/cozeloop_veauth.py +0 -0
  64. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/auth/veauth/opensearch_veauth.py +0 -0
  65. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/auth/veauth/postgresql_veauth.py +0 -0
  66. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/auth/veauth/prompt_pilot_veauth.py +0 -0
  67. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/auth/veauth/vesearch_veauth.py +0 -0
  68. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/cli/__init__.py +0 -0
  69. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/cli/cli_deploy.py +0 -0
  70. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/cli/cli_eval.py +0 -0
  71. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/cli/cli_init.py +0 -0
  72. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/cli/cli_pipeline.py +0 -0
  73. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/cli/cli_prompt.py +0 -0
  74. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/cloud/__init__.py +0 -0
  75. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/cloud/cloud_agent_engine.py +0 -0
  76. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/cloud/cloud_app.py +0 -0
  77. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/config.py +0 -0
  78. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/configs/__init__.py +0 -0
  79. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/configs/database_configs.py +0 -0
  80. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/configs/model_configs.py +0 -0
  81. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/configs/tool_configs.py +0 -0
  82. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/configs/tracing_configs.py +0 -0
  83. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/consts.py +0 -0
  84. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/evaluation/__init__.py +0 -0
  85. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/evaluation/adk_evaluator/__init__.py +0 -0
  86. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/evaluation/adk_evaluator/adk_evaluator.py +0 -0
  87. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/evaluation/base_evaluator.py +0 -0
  88. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/evaluation/deepeval_evaluator/__init__.py +0 -0
  89. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/evaluation/deepeval_evaluator/deepeval_evaluator.py +0 -0
  90. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/evaluation/eval_set_file_loader.py +0 -0
  91. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/evaluation/eval_set_recorder.py +0 -0
  92. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/evaluation/types.py +0 -0
  93. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/evaluation/utils/prometheus.py +0 -0
  94. {veadk_python-0.2.9/veadk/integrations/ve_apig → veadk_python-0.2.10/veadk/integrations}/__init__.py +0 -0
  95. {veadk_python-0.2.9/veadk/integrations/ve_code_pipeline → veadk_python-0.2.10/veadk/integrations/ve_apig}/__init__.py +0 -0
  96. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_apig/ve_apig.py +0 -0
  97. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_apig/ve_apig_utils.py +0 -0
  98. {veadk_python-0.2.9/veadk/integrations/ve_cozeloop → veadk_python-0.2.10/veadk/integrations/ve_code_pipeline}/__init__.py +0 -0
  99. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_code_pipeline/ve_code_pipeline.py +0 -0
  100. {veadk_python-0.2.9/veadk/integrations/ve_cr → veadk_python-0.2.10/veadk/integrations/ve_cozeloop}/__init__.py +0 -0
  101. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_cozeloop/ve_cozeloop.py +0 -0
  102. {veadk_python-0.2.9/veadk/integrations/ve_faas → veadk_python-0.2.10/veadk/integrations/ve_cr}/__init__.py +0 -0
  103. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_cr/ve_cr.py +0 -0
  104. {veadk_python-0.2.9/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}} → veadk_python-0.2.10/veadk/integrations/ve_faas}/__init__.py +0 -0
  105. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_faas/template/cookiecutter.json +0 -0
  106. {veadk_python-0.2.9/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
  107. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
  108. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/config.yaml.example +0 -0
  109. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/deploy.py +0 -0
  110. {veadk_python-0.2.9/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
  111. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/agent.py +0 -0
  112. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/app.py +0 -0
  113. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/requirements.txt +0 -0
  114. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/run.sh +0 -0
  115. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name }}/__init__.py +0 -0
  116. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name }}/agent.py +0 -0
  117. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_faas/ve_faas.py +0 -0
  118. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_faas/ve_faas_utils.py +0 -0
  119. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/cookiecutter.json +0 -0
  120. {veadk_python-0.2.9/veadk/integrations/ve_prompt_pilot → veadk_python-0.2.10/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}}/__init__.py +0 -0
  121. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
  122. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/config.yaml.example +0 -0
  123. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/deploy.py +0 -0
  124. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/Dockerfile +0 -0
  125. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/app.py +0 -0
  126. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/init_db.py +0 -0
  127. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/models.py +0 -0
  128. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/requirements.txt +0 -0
  129. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/run.sh +0 -0
  130. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/static/css/style.css +0 -0
  131. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/static/js/admin.js +0 -0
  132. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/dashboard.html +0 -0
  133. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/edit_post.html +0 -0
  134. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/login.html +0 -0
  135. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/posts.html +0 -0
  136. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/base.html +0 -0
  137. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/index.html +0 -0
  138. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/post.html +0 -0
  139. {veadk_python-0.2.9/veadk/integrations/ve_tls → veadk_python-0.2.10/veadk/integrations/ve_prompt_pilot}/__init__.py +0 -0
  140. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_prompt_pilot/ve_prompt_pilot.py +0 -0
  141. {veadk_python-0.2.9/veadk/knowledgebase/backends → veadk_python-0.2.10/veadk/integrations/ve_tls}/__init__.py +0 -0
  142. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_tls/utils.py +0 -0
  143. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_tls/ve_tls.py +0 -0
  144. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/integrations/ve_tos/ve_tos.py +0 -0
  145. {veadk_python-0.2.9/veadk/memory/long_term_memory_backends → veadk_python-0.2.10/veadk/integrations/ve_viking_db_memory}/__init__.py +0 -0
  146. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/knowledgebase/__init__.py +0 -0
  147. {veadk_python-0.2.9/veadk/memory/short_term_memory_backends → veadk_python-0.2.10/veadk/knowledgebase/backends}/__init__.py +0 -0
  148. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/knowledgebase/backends/base_backend.py +0 -0
  149. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/knowledgebase/backends/in_memory_backend.py +0 -0
  150. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/knowledgebase/backends/opensearch_backend.py +0 -0
  151. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/knowledgebase/backends/redis_backend.py +0 -0
  152. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/knowledgebase/backends/utils.py +0 -0
  153. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/knowledgebase/backends/vikingdb_knowledge_backend.py +0 -0
  154. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/knowledgebase/entry.py +0 -0
  155. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/knowledgebase/knowledgebase.py +0 -0
  156. {veadk_python-0.2.9/veadk/prompts → veadk_python-0.2.10/veadk/memory/long_term_memory_backends}/__init__.py +0 -0
  157. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/memory/long_term_memory_backends/base_backend.py +0 -0
  158. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/memory/long_term_memory_backends/in_memory_backend.py +0 -0
  159. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/memory/long_term_memory_backends/opensearch_backend.py +0 -0
  160. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/memory/long_term_memory_backends/redis_backend.py +0 -0
  161. {veadk_python-0.2.9/veadk/tools → veadk_python-0.2.10/veadk/memory/short_term_memory_backends}/__init__.py +0 -0
  162. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/memory/short_term_memory_backends/base_backend.py +0 -0
  163. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/memory/short_term_memory_backends/mysql_backend.py +0 -0
  164. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/memory/short_term_memory_backends/sqlite_backend.py +0 -0
  165. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/memory/short_term_memory_processor.py +0 -0
  166. {veadk_python-0.2.9/veadk/tools/builtin_tools → veadk_python-0.2.10/veadk/prompts}/__init__.py +0 -0
  167. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/prompts/agent_default_prompt.py +0 -0
  168. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/prompts/prompt_evaluator.py +0 -0
  169. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/prompts/prompt_memory_processor.py +0 -0
  170. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/prompts/prompt_optimization.py +0 -0
  171. {veadk_python-0.2.9/veadk/tools/sandbox → veadk_python-0.2.10/veadk/tools}/__init__.py +0 -0
  172. {veadk_python-0.2.9/veadk/tracing → veadk_python-0.2.10/veadk/tools/builtin_tools}/__init__.py +0 -0
  173. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/tools/builtin_tools/lark.py +0 -0
  174. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/tools/builtin_tools/las.py +0 -0
  175. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/tools/builtin_tools/mcp_router.py +0 -0
  176. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/tools/builtin_tools/vesearch.py +0 -0
  177. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/tools/builtin_tools/web_scraper.py +0 -0
  178. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/tools/demo_tools.py +0 -0
  179. {veadk_python-0.2.9/veadk/tracing/telemetry → veadk_python-0.2.10/veadk/tools/sandbox}/__init__.py +0 -0
  180. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/tools/sandbox/browser_sandbox.py +0 -0
  181. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/tools/sandbox/code_sandbox.py +0 -0
  182. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/tools/sandbox/computer_sandbox.py +0 -0
  183. {veadk_python-0.2.9/veadk/tracing/telemetry/exporters → veadk_python-0.2.10/veadk/tracing}/__init__.py +0 -0
  184. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/tracing/base_tracer.py +0 -0
  185. {veadk_python-0.2.9/veadk/utils → veadk_python-0.2.10/veadk/tracing/telemetry}/__init__.py +0 -0
  186. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/tracing/telemetry/attributes/attributes.py +0 -0
  187. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/tracing/telemetry/attributes/extractors/common_attributes_extractors.py +0 -0
  188. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/tracing/telemetry/attributes/extractors/types.py +0 -0
  189. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/tracing/telemetry/exporters/base_exporter.py +0 -0
  190. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/tracing/telemetry/exporters/cozeloop_exporter.py +0 -0
  191. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/tracing/telemetry/exporters/tls_exporter.py +0 -0
  192. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/tracing/telemetry/opentelemetry_tracer.py +0 -0
  193. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/types.py +0 -0
  194. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/utils/logger.py +0 -0
  195. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/utils/mcp_utils.py +0 -0
  196. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/utils/misc.py +0 -0
  197. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/utils/patches.py +0 -0
  198. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk/utils/volcengine_sign.py +0 -0
  199. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk_python.egg-info/dependency_links.txt +0 -0
  200. {veadk_python-0.2.9 → veadk_python-0.2.10}/veadk_python.egg-info/entry_points.txt +0 -0
  201. {veadk_python-0.2.9 → 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.9
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,7 +218,7 @@ 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
223
  Requires-Dist: agent-pilot-sdk>=0.1.2
224
224
  Requires-Dist: fastmcp>=2.11.3
@@ -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"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "veadk-python"
3
- version = "0.2.9"
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,8 +22,8 @@ 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
25
+ "volcengine-python-sdk>=4.0.18", # 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
28
  "fastmcp>=2.11.3", # For running MCP
29
29
  "cookiecutter>=2.6.0", # For cloud deploy
@@ -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
+ )
@@ -141,6 +141,9 @@ class Agent(LlmAgent):
141
141
  if self.long_term_memory is not None:
142
142
  from google.adk.tools import load_memory
143
143
 
144
+ if not load_memory.custom_metadata:
145
+ load_memory.custom_metadata = {}
146
+ load_memory.custom_metadata["backend"] = self.long_term_memory.backend
144
147
  self.tools.append(load_memory)
145
148
 
146
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)
@@ -154,6 +154,7 @@ def web(host: str) -> None:
154
154
  eval_set_results_manager: Any,
155
155
  agents_dir: str,
156
156
  extra_plugins: Optional[list[str]] = None,
157
+ **kwargs: Any,
157
158
  ):
158
159
  self.agent_loader = agent_loader
159
160
  self.artifact_service = artifact_service
@@ -166,6 +167,9 @@ def web(host: str) -> None:
166
167
  self.runner_dict = {}
167
168
  self.extra_plugins = extra_plugins or []
168
169
 
170
+ for key, value in kwargs.items():
171
+ setattr(self, key, value)
172
+
169
173
  # parse VeADK memories
170
174
  short_term_memory, long_term_memory = _get_memory(module_path=agents_dir)
171
175
  self.session_service = short_term_memory.session_service
@@ -0,0 +1,293 @@
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
+ import threading
17
+
18
+ from volcengine.ApiInfo import ApiInfo
19
+ from volcengine.auth.SignerV4 import SignerV4
20
+ from volcengine.base.Service import Service
21
+ from volcengine.Credentials import Credentials
22
+ from volcengine.ServiceInfo import ServiceInfo
23
+
24
+
25
+ class VikingDBMemoryException(Exception):
26
+ def __init__(self, code, request_id, message=None):
27
+ self.code = code
28
+ self.request_id = request_id
29
+ self.message = "{}, code:{},request_id:{}".format(
30
+ message, self.code, self.request_id
31
+ )
32
+
33
+ def __str__(self):
34
+ return self.message
35
+
36
+
37
+ class VikingDBMemoryClient(Service):
38
+ _instance_lock = threading.Lock()
39
+
40
+ def __new__(cls, *args, **kwargs):
41
+ if not hasattr(VikingDBMemoryClient, "_instance"):
42
+ with VikingDBMemoryClient._instance_lock:
43
+ if not hasattr(VikingDBMemoryClient, "_instance"):
44
+ VikingDBMemoryClient._instance = object.__new__(cls)
45
+ return VikingDBMemoryClient._instance
46
+
47
+ def __init__(
48
+ self,
49
+ host="api-knowledgebase.mlp.cn-beijing.volces.com",
50
+ region="cn-beijing",
51
+ ak="",
52
+ sk="",
53
+ sts_token="",
54
+ scheme="http",
55
+ connection_timeout=30,
56
+ socket_timeout=30,
57
+ ):
58
+ self.service_info = VikingDBMemoryClient.get_service_info(
59
+ host, region, scheme, connection_timeout, socket_timeout
60
+ )
61
+ self.api_info = VikingDBMemoryClient.get_api_info()
62
+ super(VikingDBMemoryClient, self).__init__(self.service_info, self.api_info)
63
+ if ak:
64
+ self.set_ak(ak)
65
+ if sk:
66
+ self.set_sk(sk)
67
+ if sts_token:
68
+ self.set_session_token(session_token=sts_token)
69
+ try:
70
+ self.get_body("Ping", {}, json.dumps({}))
71
+ except Exception as e:
72
+ raise VikingDBMemoryException(
73
+ 1000028, "missed", "host or region is incorrect: {}".format(str(e))
74
+ ) from None
75
+
76
+ def setHeader(self, header):
77
+ api_info = VikingDBMemoryClient.get_api_info()
78
+ for key in api_info:
79
+ for item in header:
80
+ api_info[key].header[item] = header[item]
81
+ self.api_info = api_info
82
+
83
+ @staticmethod
84
+ def get_service_info(host, region, scheme, connection_timeout, socket_timeout):
85
+ service_info = ServiceInfo(
86
+ host,
87
+ {"Host": host},
88
+ Credentials("", "", "air", region),
89
+ connection_timeout,
90
+ socket_timeout,
91
+ scheme=scheme,
92
+ )
93
+ return service_info
94
+
95
+ @staticmethod
96
+ def get_api_info():
97
+ api_info = {
98
+ "CreateCollection": ApiInfo(
99
+ "POST",
100
+ "/api/memory/collection/create",
101
+ {},
102
+ {},
103
+ {"Accept": "application/json", "Content-Type": "application/json"},
104
+ ),
105
+ "GetCollection": ApiInfo(
106
+ "POST",
107
+ "/api/memory/collection/info",
108
+ {},
109
+ {},
110
+ {"Accept": "application/json", "Content-Type": "application/json"},
111
+ ),
112
+ "DropCollection": ApiInfo(
113
+ "POST",
114
+ "/api/memory/collection/delete",
115
+ {},
116
+ {},
117
+ {"Accept": "application/json", "Content-Type": "application/json"},
118
+ ),
119
+ "UpdateCollection": ApiInfo(
120
+ "POST",
121
+ "/api/memory/collection/update",
122
+ {},
123
+ {},
124
+ {"Accept": "application/json", "Content-Type": "application/json"},
125
+ ),
126
+ "SearchMemory": ApiInfo(
127
+ "POST",
128
+ "/api/memory/search",
129
+ {},
130
+ {},
131
+ {"Accept": "application/json", "Content-Type": "application/json"},
132
+ ),
133
+ "AddMessages": ApiInfo(
134
+ "POST",
135
+ "/api/memory/messages/add",
136
+ {},
137
+ {},
138
+ {"Accept": "application/json", "Content-Type": "application/json"},
139
+ ),
140
+ "Ping": ApiInfo(
141
+ "GET",
142
+ "/api/memory/ping",
143
+ {},
144
+ {},
145
+ {"Accept": "application/json", "Content-Type": "application/json"},
146
+ ),
147
+ }
148
+ return api_info
149
+
150
+ def get_body(self, api, params, body):
151
+ if api not in self.api_info:
152
+ raise Exception("no such api")
153
+ api_info = self.api_info[api]
154
+ r = self.prepare_request(api_info, params)
155
+ r.headers["Content-Type"] = "application/json"
156
+ r.headers["Traffic-Source"] = "SDK"
157
+ r.body = body
158
+
159
+ SignerV4.sign(r, self.service_info.credentials)
160
+
161
+ url = r.build()
162
+ resp = self.session.get(
163
+ url,
164
+ headers=r.headers,
165
+ data=r.body,
166
+ timeout=(
167
+ self.service_info.connection_timeout,
168
+ self.service_info.socket_timeout,
169
+ ),
170
+ )
171
+ if resp.status_code == 200:
172
+ return json.dumps(resp.json())
173
+ else:
174
+ raise Exception(resp.text.encode("utf-8"))
175
+
176
+ def get_body_exception(self, api, params, body):
177
+ try:
178
+ res = self.get_body(api, params, body)
179
+ except Exception as e:
180
+ try:
181
+ res_json = json.loads(e.args[0].decode("utf-8"))
182
+ except Exception as e:
183
+ raise VikingDBMemoryException(
184
+ 1000028, "missed", "json load res error, res:{}".format(str(e))
185
+ ) from None
186
+ code = res_json.get("code", 1000028)
187
+ request_id = res_json.get("request_id", 1000028)
188
+ message = res_json.get("message", None)
189
+
190
+ raise VikingDBMemoryException(code, request_id, message)
191
+
192
+ if res == "":
193
+ raise VikingDBMemoryException(
194
+ 1000028,
195
+ "missed",
196
+ "empty response due to unknown error, please contact customer service",
197
+ ) from None
198
+ return res
199
+
200
+ def get_exception(self, api, params):
201
+ try:
202
+ res = self.get(api, params)
203
+ except Exception as e:
204
+ try:
205
+ res_json = json.loads(e.args[0].decode("utf-8"))
206
+ except Exception as e:
207
+ raise VikingDBMemoryException(
208
+ 1000028, "missed", "json load res error, res:{}".format(str(e))
209
+ ) from None
210
+ code = res_json.get("code", 1000028)
211
+ request_id = res_json.get("request_id", 1000028)
212
+ message = res_json.get("message", None)
213
+ raise VikingDBMemoryException(code, request_id, message)
214
+ if res == "":
215
+ raise VikingDBMemoryException(
216
+ 1000028,
217
+ "missed",
218
+ "empty response due to unknown error, please contact customer service",
219
+ ) from None
220
+ return res
221
+
222
+ def create_collection(
223
+ self,
224
+ collection_name,
225
+ description="",
226
+ custom_event_type_schemas=[],
227
+ custom_entity_type_schemas=[],
228
+ builtin_event_types=[],
229
+ builtin_entity_types=[],
230
+ ):
231
+ params = {
232
+ "CollectionName": collection_name,
233
+ "Description": description,
234
+ "CustomEventTypeSchemas": custom_event_type_schemas,
235
+ "CustomEntityTypeSchemas": custom_entity_type_schemas,
236
+ "BuiltinEventTypes": builtin_event_types,
237
+ "BuiltinEntityTypes": builtin_entity_types,
238
+ }
239
+ res = self.json("CreateCollection", {}, json.dumps(params))
240
+ return json.loads(res)
241
+
242
+ def get_collection(self, collection_name):
243
+ params = {"CollectionName": collection_name}
244
+ res = self.json("GetCollection", {}, json.dumps(params))
245
+ return json.loads(res)
246
+
247
+ def drop_collection(self, collection_name):
248
+ params = {"CollectionName": collection_name}
249
+ res = self.json("DropCollection", {}, json.dumps(params))
250
+ return json.loads(res)
251
+
252
+ def update_collection(
253
+ self,
254
+ collection_name,
255
+ custom_event_type_schemas=[],
256
+ custom_entity_type_schemas=[],
257
+ builtin_event_types=[],
258
+ builtin_entity_types=[],
259
+ ):
260
+ params = {
261
+ "CollectionName": collection_name,
262
+ "CustomEventTypeSchemas": custom_event_type_schemas,
263
+ "CustomEntityTypeSchemas": custom_entity_type_schemas,
264
+ "BuiltinEventTypes": builtin_event_types,
265
+ "BuiltinEntityTypes": builtin_entity_types,
266
+ }
267
+ res = self.json("UpdateCollection", {}, json.dumps(params))
268
+ return json.loads(res)
269
+
270
+ def search_memory(self, collection_name, query, filter, limit=10):
271
+ params = {
272
+ "collection_name": collection_name,
273
+ "limit": limit,
274
+ "filter": filter,
275
+ }
276
+ if query:
277
+ params["query"] = query
278
+ res = self.json("SearchMemory", {}, json.dumps(params))
279
+ return json.loads(res)
280
+
281
+ def add_messages(
282
+ self, collection_name, session_id, messages, metadata, entities=None
283
+ ):
284
+ params = {
285
+ "collection_name": collection_name,
286
+ "session_id": session_id,
287
+ "messages": messages,
288
+ "metadata": metadata,
289
+ }
290
+ if entities is not None:
291
+ params["entities"] = entities
292
+ res = self.json("AddMessages", {}, json.dumps(params))
293
+ return json.loads(res)
@@ -25,7 +25,7 @@ def __getattr__(name):
25
25
  from veadk.memory.short_term_memory import ShortTermMemory
26
26
 
27
27
  return ShortTermMemory
28
- if name == "LongTeremMemory":
28
+ if name == "LongTermMemory":
29
29
  from veadk.memory.long_term_memory import LongTermMemory
30
30
 
31
31
  return LongTermMemory
@@ -115,6 +115,14 @@ class LongTermMemory(BaseMemoryService, BaseModel):
115
115
  f"Initialized long term memory backend {self.backend} with config. We will ignore `app_name` and `user_id` if provided."
116
116
  )
117
117
  self._backend = _get_backend_cls(self.backend)(**self.backend_config)
118
+ _index = self.backend_config.get("index", None)
119
+ if _index:
120
+ self._index = _index
121
+ logger.info(f"Long term memory index set to {self._index}.")
122
+ else:
123
+ logger.warning(
124
+ "Cannot find index via backend_config, please set `index` parameter."
125
+ )
118
126
  return
119
127
 
120
128
  if self.app_name and self.user_id:
@@ -195,6 +203,23 @@ class LongTermMemory(BaseMemoryService, BaseModel):
195
203
  @override
196
204
  async def search_memory(self, *, app_name: str, user_id: str, query: str):
197
205
  # prevent model invoke `load_memory` before add session to this memory
206
+ if not self._backend and isinstance(self.backend, str):
207
+ self._index = build_long_term_memory_index(app_name, user_id)
208
+ self._backend = _get_backend_cls(self.backend)(
209
+ index=self._index, **self.backend_config if self.backend_config else {}
210
+ )
211
+ logger.info(
212
+ f"Initialize long term memory backend now, index is {self._index}"
213
+ )
214
+
215
+ if not self._index and self._index != build_long_term_memory_index(
216
+ app_name, user_id
217
+ ):
218
+ logger.warning(
219
+ f"The `app_name` or `user_id` is different from the initialized one. Initialized index: {self._index}, current built index: {build_long_term_memory_index(app_name, user_id)}. Search memory return empty list."
220
+ )
221
+ return SearchMemoryResponse(memories=[])
222
+
198
223
  if not self._backend:
199
224
  logger.error(
200
225
  "Long term memory backend is not initialized, cannot search memory."
@@ -46,12 +46,17 @@ class Mem0LTMBackend(BaseLongTermMemoryBackend):
46
46
 
47
47
  try:
48
48
  self._mem0_client = MemoryClient(
49
- # base_url=self.mem0_config.base_url, # mem0 endpoint
49
+ host=self.mem0_config.base_url, # mem0 endpoint
50
50
  api_key=self.mem0_config.api_key, # mem0 API key
51
51
  )
52
+ logger.info(
53
+ f"Initialized Mem0 client for host: {self.mem0_config.base_url}"
54
+ )
52
55
  logger.info(f"Initialized Mem0 client for index: {self.index}")
53
56
  except Exception as e:
54
- logger.error(f"Failed to initialize Mem0 client: {str(e)}")
57
+ logger.error(
58
+ f"Failed to initialize Mem0 client for host {self.mem0_config.base_url} : {str(e)}"
59
+ )
55
60
  raise
56
61
 
57
62
  def precheck_index_naming(self):
@@ -84,6 +89,7 @@ class Mem0LTMBackend(BaseLongTermMemoryBackend):
84
89
  [{"role": "user", "content": event_string}],
85
90
  user_id=user_id,
86
91
  output_format="v1.1",
92
+ async_mode=True,
87
93
  )
88
94
  logger.debug(f"Saved memory result: {result}")
89
95
 
@@ -116,7 +122,16 @@ class Mem0LTMBackend(BaseLongTermMemoryBackend):
116
122
  query, user_id=user_id, output_format="v1.1", top_k=top_k
117
123
  )
118
124
 
125
+ logger.debug(f"return relevant memories: {memories}")
126
+
119
127
  memory_list = []
128
+ # 如果 memories 是列表,直接返回
129
+ if isinstance(memories, list):
130
+ for mem in memories:
131
+ if "memory" in mem:
132
+ memory_list.append(mem["memory"])
133
+ return memory_list
134
+
120
135
  if memories.get("results", []):
121
136
  for mem in memories["results"]:
122
137
  if "memory" in mem: