veadk-python 0.2.10__tar.gz → 0.2.11__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.
- {veadk_python-0.2.10 → veadk_python-0.2.11}/PKG-INFO +2 -1
- {veadk_python-0.2.10 → veadk_python-0.2.11}/pyproject.toml +2 -1
- {veadk_python-0.2.10 → veadk_python-0.2.11}/tests/test_agent.py +5 -7
- {veadk_python-0.2.10 → veadk_python-0.2.11}/tests/test_knowledgebase.py +4 -5
- {veadk_python-0.2.10 → veadk_python-0.2.11}/tests/test_long_term_memory.py +7 -9
- {veadk_python-0.2.10 → veadk_python-0.2.11}/tests/test_runner.py +5 -3
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/agent.py +7 -3
- veadk_python-0.2.11/veadk/auth/veauth/ark_veauth.py +69 -0
- veadk_python-0.2.11/veadk/auth/veauth/utils.py +57 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/configs/model_configs.py +3 -3
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/consts.py +9 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/knowledgebase/knowledgebase.py +19 -32
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/memory/long_term_memory.py +39 -92
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/memory/long_term_memory_backends/base_backend.py +4 -2
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/memory/long_term_memory_backends/in_memory_backend.py +8 -6
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/memory/long_term_memory_backends/mem0_backend.py +8 -8
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/memory/long_term_memory_backends/opensearch_backend.py +40 -36
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/memory/long_term_memory_backends/redis_backend.py +59 -46
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/memory/long_term_memory_backends/vikingdb_memory_backend.py +53 -28
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/memory/short_term_memory.py +9 -11
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/runner.py +19 -11
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tools/builtin_tools/generate_image.py +11 -6
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tools/builtin_tools/image_edit.py +9 -4
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tools/builtin_tools/image_generate.py +9 -4
- veadk_python-0.2.11/veadk/tools/builtin_tools/load_knowledgebase.py +97 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tools/builtin_tools/video_generate.py +6 -4
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/utils/misc.py +6 -10
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/utils/volcengine_sign.py +2 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/version.py +1 -1
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk_python.egg-info/PKG-INFO +2 -1
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk_python.egg-info/SOURCES.txt +2 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk_python.egg-info/requires.txt +1 -0
- veadk_python-0.2.10/veadk/auth/veauth/ark_veauth.py +0 -77
- {veadk_python-0.2.10 → veadk_python-0.2.11}/LICENSE +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/README.md +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/setup.cfg +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/tests/test_cloud.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/tests/test_evaluator.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/tests/test_multiple_agents.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/tests/test_runtime_data_collecting.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/tests/test_short_term_memory.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/tests/test_tracing.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/a2a/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/a2a/agent_card.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/a2a/remote_ve_agent.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/a2a/ve_a2a_server.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/a2a/ve_agent_executor.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/a2a/ve_task_store.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/agent_builder.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/agents/loop_agent.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/agents/parallel_agent.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/agents/sequential_agent.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/auth/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/auth/base_auth.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/auth/veauth/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/auth/veauth/apmplus_veauth.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/auth/veauth/base_veauth.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/auth/veauth/cozeloop_veauth.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/auth/veauth/opensearch_veauth.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/auth/veauth/postgresql_veauth.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/auth/veauth/prompt_pilot_veauth.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/auth/veauth/vesearch_veauth.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/cli/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/cli/cli.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/cli/cli_deploy.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/cli/cli_eval.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/cli/cli_init.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/cli/cli_kb.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/cli/cli_pipeline.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/cli/cli_prompt.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/cli/cli_web.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/cloud/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/cloud/cloud_agent_engine.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/cloud/cloud_app.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/config.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/configs/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/configs/database_configs.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/configs/tool_configs.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/configs/tracing_configs.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/evaluation/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/evaluation/adk_evaluator/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/evaluation/adk_evaluator/adk_evaluator.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/evaluation/base_evaluator.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/evaluation/deepeval_evaluator/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/evaluation/deepeval_evaluator/deepeval_evaluator.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/evaluation/eval_set_file_loader.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/evaluation/eval_set_recorder.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/evaluation/types.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/evaluation/utils/prometheus.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_apig/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_apig/ve_apig.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_apig/ve_apig_utils.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_code_pipeline/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_code_pipeline/ve_code_pipeline.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_cozeloop/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_cozeloop/ve_cozeloop.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_cr/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_cr/ve_cr.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/template/cookiecutter.json +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/config.yaml.example +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/deploy.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/agent.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/app.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/requirements.txt +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/run.sh +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name }}/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name }}/agent.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/ve_faas.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/ve_faas_utils.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/web_template/cookiecutter.json +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/config.yaml.example +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/deploy.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/Dockerfile +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/app.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/init_db.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/models.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/requirements.txt +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/run.sh +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/static/css/style.css +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/static/js/admin.js +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/dashboard.html +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/edit_post.html +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/login.html +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/posts.html +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/base.html +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/index.html +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/post.html +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_prompt_pilot/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_prompt_pilot/ve_prompt_pilot.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_tls/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_tls/utils.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_tls/ve_tls.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_tos/ve_tos.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_viking_db_memory/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/integrations/ve_viking_db_memory/ve_viking_db_memory.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/knowledgebase/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/knowledgebase/backends/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/knowledgebase/backends/base_backend.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/knowledgebase/backends/in_memory_backend.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/knowledgebase/backends/opensearch_backend.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/knowledgebase/backends/redis_backend.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/knowledgebase/backends/utils.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/knowledgebase/backends/vikingdb_knowledge_backend.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/knowledgebase/entry.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/memory/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/memory/long_term_memory_backends/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/memory/short_term_memory_backends/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/memory/short_term_memory_backends/base_backend.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/memory/short_term_memory_backends/mysql_backend.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/memory/short_term_memory_backends/postgresql_backend.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/memory/short_term_memory_backends/sqlite_backend.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/memory/short_term_memory_processor.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/prompts/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/prompts/agent_default_prompt.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/prompts/prompt_evaluator.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/prompts/prompt_memory_processor.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/prompts/prompt_optimization.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tools/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tools/builtin_tools/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tools/builtin_tools/lark.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tools/builtin_tools/las.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tools/builtin_tools/mcp_router.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tools/builtin_tools/vesearch.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tools/builtin_tools/web_scraper.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tools/builtin_tools/web_search.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tools/demo_tools.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tools/load_knowledgebase_tool.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tools/sandbox/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tools/sandbox/browser_sandbox.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tools/sandbox/code_sandbox.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tools/sandbox/computer_sandbox.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tracing/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tracing/base_tracer.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tracing/telemetry/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tracing/telemetry/attributes/attributes.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tracing/telemetry/attributes/extractors/common_attributes_extractors.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tracing/telemetry/attributes/extractors/llm_attributes_extractors.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tracing/telemetry/attributes/extractors/tool_attributes_extractors.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tracing/telemetry/attributes/extractors/types.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tracing/telemetry/exporters/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tracing/telemetry/exporters/apmplus_exporter.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tracing/telemetry/exporters/base_exporter.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tracing/telemetry/exporters/cozeloop_exporter.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tracing/telemetry/exporters/inmemory_exporter.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tracing/telemetry/exporters/tls_exporter.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tracing/telemetry/opentelemetry_tracer.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/tracing/telemetry/telemetry.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/types.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/utils/__init__.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/utils/logger.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/utils/mcp_utils.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/utils/patches.py +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk_python.egg-info/dependency_links.txt +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/veadk_python.egg-info/entry_points.txt +0 -0
- {veadk_python-0.2.10 → veadk_python-0.2.11}/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.
|
|
3
|
+
Version: 0.2.11
|
|
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
|
|
@@ -231,6 +231,7 @@ Requires-Dist: llama-index-vector-stores-opensearch>=0.6.1
|
|
|
231
231
|
Requires-Dist: psycopg2-binary>=2.9.10
|
|
232
232
|
Requires-Dist: pymysql>=1.1.1
|
|
233
233
|
Requires-Dist: opensearch-py==2.8.0
|
|
234
|
+
Requires-Dist: filetype>=1.2.0
|
|
234
235
|
Provides-Extra: extensions
|
|
235
236
|
Requires-Dist: redis>=5.0; extra == "extensions"
|
|
236
237
|
Requires-Dist: tos>=2.8.4; extra == "extensions"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "veadk-python"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.11"
|
|
4
4
|
description = "Volcengine agent development kit, integrations with Volcengine cloud services."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
@@ -35,6 +35,7 @@ dependencies = [
|
|
|
35
35
|
"psycopg2-binary>=2.9.10", # For PostgreSQL database (short term memory)
|
|
36
36
|
"pymysql>=1.1.1", # For MySQL database (short term memory)
|
|
37
37
|
"opensearch-py==2.8.0",
|
|
38
|
+
"filetype>=1.2.0",
|
|
38
39
|
]
|
|
39
40
|
|
|
40
41
|
[project.scripts]
|
|
@@ -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
|
+
import os
|
|
15
16
|
from unittest.mock import Mock, patch
|
|
16
17
|
|
|
17
18
|
from google.adk.agents.llm_agent import LlmAgent
|
|
@@ -33,11 +34,10 @@ from veadk.tracing.telemetry.opentelemetry_tracer import OpentelemetryTracer
|
|
|
33
34
|
|
|
34
35
|
|
|
35
36
|
def test_agent():
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
)
|
|
37
|
+
os.environ["MODEL_EMBEDDING_API_KEY"] = "mocked_api_key"
|
|
38
|
+
|
|
39
|
+
knowledgebase = KnowledgeBase(index="test_index", backend="local")
|
|
40
|
+
|
|
41
41
|
long_term_memory = LongTermMemory(backend="local")
|
|
42
42
|
tracer = OpentelemetryTracer()
|
|
43
43
|
|
|
@@ -69,8 +69,6 @@ def test_agent():
|
|
|
69
69
|
|
|
70
70
|
assert agent.knowledgebase == knowledgebase
|
|
71
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
72
|
|
|
75
73
|
assert agent.long_term_memory.backend == "local" # type: ignore
|
|
76
74
|
assert load_memory in agent.tools
|
|
@@ -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
|
+
import os
|
|
15
16
|
|
|
16
17
|
import pytest
|
|
17
18
|
|
|
@@ -21,11 +22,9 @@ from veadk.knowledgebase.backends.in_memory_backend import InMemoryKnowledgeBack
|
|
|
21
22
|
|
|
22
23
|
@pytest.mark.asyncio
|
|
23
24
|
async def test_knowledgebase():
|
|
25
|
+
os.environ["MODEL_EMBEDDING_API_KEY"] = "mocked_api_key"
|
|
26
|
+
|
|
24
27
|
app_name = "kb_test_app"
|
|
25
|
-
kb = KnowledgeBase(
|
|
26
|
-
backend="local",
|
|
27
|
-
app_name=app_name,
|
|
28
|
-
backend_config={"embedding_config": {"api_key": "test"}},
|
|
29
|
-
)
|
|
28
|
+
kb = KnowledgeBase(backend="local", app_name=app_name)
|
|
30
29
|
|
|
31
30
|
assert isinstance(kb._backend, InMemoryKnowledgeBackend)
|
|
@@ -13,23 +13,20 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
15
|
|
|
16
|
+
import os
|
|
17
|
+
|
|
16
18
|
import pytest
|
|
17
19
|
from google.adk.tools import load_memory
|
|
18
20
|
|
|
19
21
|
from veadk.agent import Agent
|
|
20
22
|
from veadk.memory.long_term_memory import LongTermMemory
|
|
21
23
|
|
|
22
|
-
app_name = "test_ltm"
|
|
23
|
-
user_id = "test_user"
|
|
24
|
-
|
|
25
24
|
|
|
26
25
|
@pytest.mark.asyncio
|
|
27
26
|
async def test_long_term_memory():
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
# user_id=user_id,
|
|
32
|
-
)
|
|
27
|
+
os.environ["MODEL_EMBEDDING_API_KEY"] = "mocked_api_key"
|
|
28
|
+
long_term_memory = LongTermMemory(backend="local")
|
|
29
|
+
|
|
33
30
|
agent = Agent(
|
|
34
31
|
name="all_name",
|
|
35
32
|
model_name="test_model_name",
|
|
@@ -43,7 +40,8 @@ async def test_long_term_memory():
|
|
|
43
40
|
|
|
44
41
|
assert load_memory in agent.tools, "load_memory tool not found in agent tools"
|
|
45
42
|
|
|
46
|
-
assert
|
|
43
|
+
assert agent.long_term_memory
|
|
44
|
+
assert agent.long_term_memory._backend
|
|
47
45
|
|
|
48
46
|
# assert agent.long_term_memory._backend.index == build_long_term_memory_index(
|
|
49
47
|
# app_name, user_id
|
|
@@ -12,16 +12,16 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
+
import os
|
|
16
|
+
|
|
15
17
|
from google.genai import types
|
|
16
18
|
|
|
17
19
|
from veadk.agent import Agent
|
|
18
20
|
from veadk.memory.long_term_memory import LongTermMemory
|
|
19
21
|
from veadk.memory.short_term_memory import ShortTermMemory
|
|
20
|
-
from veadk.runner import Runner
|
|
21
|
-
|
|
22
22
|
|
|
23
23
|
# Import the standalone function instead of accessing as class method
|
|
24
|
-
from veadk.runner import _convert_messages
|
|
24
|
+
from veadk.runner import Runner, _convert_messages
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
def _test_convert_messages(runner):
|
|
@@ -67,6 +67,8 @@ def _test_convert_messages(runner):
|
|
|
67
67
|
|
|
68
68
|
def test_runner():
|
|
69
69
|
"""Test Runner class initialization and core properties"""
|
|
70
|
+
os.environ["MODEL_EMBEDDING_API_KEY"] = "mocked_api_key"
|
|
71
|
+
|
|
70
72
|
short_term_memory = ShortTermMemory()
|
|
71
73
|
long_term_memory = LongTermMemory(backend="local")
|
|
72
74
|
agent = Agent(
|
|
@@ -133,10 +133,14 @@ class Agent(LlmAgent):
|
|
|
133
133
|
)
|
|
134
134
|
|
|
135
135
|
if self.knowledgebase:
|
|
136
|
-
from veadk.tools import
|
|
136
|
+
from veadk.tools.builtin_tools.load_knowledgebase import (
|
|
137
|
+
LoadKnowledgebaseTool,
|
|
138
|
+
)
|
|
137
139
|
|
|
138
|
-
load_knowledgebase_tool
|
|
139
|
-
|
|
140
|
+
load_knowledgebase_tool = LoadKnowledgebaseTool(
|
|
141
|
+
knowledgebase=self.knowledgebase
|
|
142
|
+
)
|
|
143
|
+
self.tools.append(load_knowledgebase_tool)
|
|
140
144
|
|
|
141
145
|
if self.long_term_memory is not None:
|
|
142
146
|
from google.adk.tools import load_memory
|
|
@@ -0,0 +1,69 @@
|
|
|
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 os
|
|
16
|
+
|
|
17
|
+
from veadk.auth.veauth.utils import get_credential_from_vefaas_iam
|
|
18
|
+
from veadk.utils.logger import get_logger
|
|
19
|
+
from veadk.utils.volcengine_sign import ve_request
|
|
20
|
+
|
|
21
|
+
logger = get_logger(__name__)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def get_ark_token(region: str = "cn-beijing") -> str:
|
|
25
|
+
logger.info("Fetching ARK token...")
|
|
26
|
+
|
|
27
|
+
access_key = os.getenv("VOLCENGINE_ACCESS_KEY")
|
|
28
|
+
secret_key = os.getenv("VOLCENGINE_SECRET_KEY")
|
|
29
|
+
session_token = ""
|
|
30
|
+
|
|
31
|
+
if not (access_key and secret_key):
|
|
32
|
+
# try to get from vefaas iam
|
|
33
|
+
cred = get_credential_from_vefaas_iam()
|
|
34
|
+
access_key = cred.access_key_id
|
|
35
|
+
secret_key = cred.secret_access_key
|
|
36
|
+
session_token = cred.session_token
|
|
37
|
+
|
|
38
|
+
res = ve_request(
|
|
39
|
+
request_body={"ProjectName": "default", "Filter": {}},
|
|
40
|
+
header={"X-Security-Token": session_token},
|
|
41
|
+
action="ListApiKeys",
|
|
42
|
+
ak=access_key,
|
|
43
|
+
sk=secret_key,
|
|
44
|
+
service="ark",
|
|
45
|
+
version="2024-01-01",
|
|
46
|
+
region=region,
|
|
47
|
+
host="open.volcengineapi.com",
|
|
48
|
+
)
|
|
49
|
+
try:
|
|
50
|
+
first_api_key_id = res["Result"]["Items"][0]["Id"]
|
|
51
|
+
except KeyError:
|
|
52
|
+
raise ValueError(f"Failed to get ARK api key list: {res}")
|
|
53
|
+
|
|
54
|
+
# get raw api key
|
|
55
|
+
res = ve_request(
|
|
56
|
+
request_body={"Id": first_api_key_id},
|
|
57
|
+
header={"X-Security-Token": session_token},
|
|
58
|
+
action="GetRawApiKey",
|
|
59
|
+
ak=access_key,
|
|
60
|
+
sk=secret_key,
|
|
61
|
+
service="ark",
|
|
62
|
+
version="2024-01-01",
|
|
63
|
+
region=region,
|
|
64
|
+
host="open.volcengineapi.com",
|
|
65
|
+
)
|
|
66
|
+
try:
|
|
67
|
+
return res["Result"]["ApiKey"]
|
|
68
|
+
except KeyError:
|
|
69
|
+
raise ValueError(f"Failed to get ARK api key: {res}")
|
|
@@ -0,0 +1,57 @@
|
|
|
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 pathlib import Path
|
|
17
|
+
|
|
18
|
+
from pydantic import BaseModel
|
|
19
|
+
|
|
20
|
+
from veadk.consts import VEFAAS_IAM_CRIDENTIAL_PATH
|
|
21
|
+
from veadk.utils.logger import get_logger
|
|
22
|
+
|
|
23
|
+
logger = get_logger(__name__)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class VeIAMCredential(BaseModel):
|
|
27
|
+
access_key_id: str
|
|
28
|
+
secret_access_key: str
|
|
29
|
+
session_token: str
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def get_credential_from_vefaas_iam() -> VeIAMCredential:
|
|
33
|
+
"""Get credential from VeFaaS IAM file"""
|
|
34
|
+
logger.info(
|
|
35
|
+
f"Get Volcegnine access key or secret key from environment variables failed, try to get from VeFaaS IAM file (path={VEFAAS_IAM_CRIDENTIAL_PATH})."
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
path = Path(VEFAAS_IAM_CRIDENTIAL_PATH)
|
|
39
|
+
|
|
40
|
+
if not path.exists():
|
|
41
|
+
logger.error(
|
|
42
|
+
f"Get Volcegnine access key or secret key from environment variables failed, and VeFaaS IAM file (path={VEFAAS_IAM_CRIDENTIAL_PATH}) not exists. Please check your configuration."
|
|
43
|
+
)
|
|
44
|
+
raise FileNotFoundError(
|
|
45
|
+
f"Get Volcegnine access key or secret key from environment variables failed, and VeFaaS IAM file (path={VEFAAS_IAM_CRIDENTIAL_PATH}) not exists. Please check your configuration."
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
with open(VEFAAS_IAM_CRIDENTIAL_PATH, "r") as f:
|
|
49
|
+
cred_dict = json.load(f)
|
|
50
|
+
access_key = cred_dict["access_key_id"]
|
|
51
|
+
secret_key = cred_dict["secret_access_key"]
|
|
52
|
+
session_token = cred_dict["session_token"]
|
|
53
|
+
return VeIAMCredential(
|
|
54
|
+
access_key_id=access_key,
|
|
55
|
+
secret_access_key=secret_key,
|
|
56
|
+
session_token=session_token,
|
|
57
|
+
)
|
|
@@ -17,7 +17,7 @@ from functools import cached_property
|
|
|
17
17
|
|
|
18
18
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
19
19
|
|
|
20
|
-
from veadk.auth.veauth.ark_veauth import
|
|
20
|
+
from veadk.auth.veauth.ark_veauth import get_ark_token
|
|
21
21
|
from veadk.consts import (
|
|
22
22
|
DEFAULT_MODEL_AGENT_API_BASE,
|
|
23
23
|
DEFAULT_MODEL_AGENT_NAME,
|
|
@@ -39,7 +39,7 @@ class ModelConfig(BaseSettings):
|
|
|
39
39
|
|
|
40
40
|
@cached_property
|
|
41
41
|
def api_key(self) -> str:
|
|
42
|
-
return os.getenv("MODEL_AGENT_API_KEY") or
|
|
42
|
+
return os.getenv("MODEL_AGENT_API_KEY") or get_ark_token()
|
|
43
43
|
|
|
44
44
|
|
|
45
45
|
class EmbeddingModelConfig(BaseSettings):
|
|
@@ -56,7 +56,7 @@ class EmbeddingModelConfig(BaseSettings):
|
|
|
56
56
|
|
|
57
57
|
@cached_property
|
|
58
58
|
def api_key(self) -> str:
|
|
59
|
-
return os.getenv("MODEL_EMBEDDING_API_KEY") or
|
|
59
|
+
return os.getenv("MODEL_EMBEDDING_API_KEY") or get_ark_token()
|
|
60
60
|
|
|
61
61
|
|
|
62
62
|
class NormalEmbeddingModelConfig(BaseSettings):
|
|
@@ -63,6 +63,15 @@ DEFAULT_TOS_BUCKET_NAME = "ark-tutorial"
|
|
|
63
63
|
DEFAULT_COZELOOP_SPACE_NAME = "VeADK Space"
|
|
64
64
|
|
|
65
65
|
DEFAULT_TEXT_TO_IMAGE_MODEL_NAME = "doubao-seedream-3-0-t2i-250415"
|
|
66
|
+
DEFAULT_TEXT_TO_IMAGE_MODEL_API_BASE = "https://ark.cn-beijing.volces.com/api/v3/"
|
|
67
|
+
|
|
66
68
|
DEFAULT_IMAGE_EDIT_MODEL_NAME = "doubao-seededit-3-0-i2i-250628"
|
|
69
|
+
DEFAULT_IMAGE_EDIT_MODEL_API_BASE = "https://ark.cn-beijing.volces.com/api/v3/"
|
|
70
|
+
|
|
67
71
|
DEFAULT_VIDEO_MODEL_NAME = "doubao-seedance-1-0-pro-250528"
|
|
72
|
+
DEFAULT_VIDEO_MODEL_API_BASE = "https://ark.cn-beijing.volces.com/api/v3/"
|
|
73
|
+
|
|
68
74
|
DEFAULT_IMAGE_GENERATE_MODEL_NAME = "doubao-seedream-4-0-250828"
|
|
75
|
+
DEFAULT_IMAGE_GENERATE_MODEL_API_BASE = "https://ark.cn-beijing.volces.com/api/v3/"
|
|
76
|
+
|
|
77
|
+
VEFAAS_IAM_CRIDENTIAL_PATH = "/var/run/secrets/iam/credential"
|
|
@@ -12,10 +12,11 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
|
|
17
|
+
from typing import Any, Callable, Literal, Union
|
|
16
18
|
|
|
17
19
|
from pydantic import BaseModel, Field
|
|
18
|
-
from typing_extensions import Union
|
|
19
20
|
|
|
20
21
|
from veadk.knowledgebase.backends.base_backend import BaseKnowledgebaseBackend
|
|
21
22
|
from veadk.knowledgebase.entry import KnowledgebaseEntry
|
|
@@ -54,11 +55,11 @@ def _get_backend_cls(backend: str) -> type[BaseKnowledgebaseBackend]:
|
|
|
54
55
|
raise ValueError(f"Unsupported knowledgebase backend: {backend}")
|
|
55
56
|
|
|
56
57
|
|
|
57
|
-
|
|
58
|
-
|
|
58
|
+
class KnowledgeBase(BaseModel):
|
|
59
|
+
name: str = "user_knowledgebase"
|
|
59
60
|
|
|
61
|
+
description: str = "This knowledgebase stores some user-related information."
|
|
60
62
|
|
|
61
|
-
class KnowledgeBase(BaseModel):
|
|
62
63
|
backend: Union[
|
|
63
64
|
Literal["local", "opensearch", "viking", "redis"], BaseKnowledgebaseBackend
|
|
64
65
|
] = "local"
|
|
@@ -73,9 +74,7 @@ class KnowledgeBase(BaseModel):
|
|
|
73
74
|
"""Configuration for the backend"""
|
|
74
75
|
|
|
75
76
|
top_k: int = 10
|
|
76
|
-
"""Number of top similar documents to retrieve during search
|
|
77
|
-
|
|
78
|
-
Default is 10."""
|
|
77
|
+
"""Number of top similar documents to retrieve during search"""
|
|
79
78
|
|
|
80
79
|
app_name: str = ""
|
|
81
80
|
|
|
@@ -85,38 +84,27 @@ class KnowledgeBase(BaseModel):
|
|
|
85
84
|
def model_post_init(self, __context: Any) -> None:
|
|
86
85
|
if isinstance(self.backend, BaseKnowledgebaseBackend):
|
|
87
86
|
self._backend = self.backend
|
|
87
|
+
self.index = self._backend.index
|
|
88
88
|
logger.info(
|
|
89
89
|
f"Initialized knowledgebase with provided backend instance {self._backend.__class__.__name__}"
|
|
90
90
|
)
|
|
91
91
|
return
|
|
92
92
|
|
|
93
|
-
#
|
|
94
|
-
if
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
)
|
|
98
|
-
|
|
99
|
-
# priority use index
|
|
100
|
-
if self.app_name and self.index:
|
|
101
|
-
logger.warning(
|
|
102
|
-
"`app_name` and `index` are both provided, using `index` as the knowledgebase index name."
|
|
103
|
-
)
|
|
93
|
+
# Once user define backend config, use it directly
|
|
94
|
+
if self.backend_config:
|
|
95
|
+
self._backend = _get_backend_cls(self.backend)(**self.backend_config)
|
|
96
|
+
return
|
|
104
97
|
|
|
105
|
-
|
|
106
|
-
if
|
|
107
|
-
|
|
108
|
-
logger.info(
|
|
109
|
-
f"Knowledgebase index is set to {self.index} (generated by the app_name: {self.app_name})."
|
|
110
|
-
)
|
|
98
|
+
self.index = self.index or self.app_name
|
|
99
|
+
if not self.index:
|
|
100
|
+
raise ValueError("Either `index` or `app_name` must be provided.")
|
|
111
101
|
|
|
112
102
|
logger.info(
|
|
113
|
-
f"Initializing knowledgebase: backend={self.backend} top_k={self.top_k}"
|
|
114
|
-
)
|
|
115
|
-
self._backend = _get_backend_cls(self.backend)(
|
|
116
|
-
index=self.index, **self.backend_config if self.backend_config else {}
|
|
103
|
+
f"Initializing knowledgebase: backend={self.backend} index={self.index} top_k={self.top_k}"
|
|
117
104
|
)
|
|
105
|
+
self._backend = _get_backend_cls(self.backend)(index=self.index)
|
|
118
106
|
logger.info(
|
|
119
|
-
f"Initialized knowledgebase with backend {self.
|
|
107
|
+
f"Initialized knowledgebase with backend {self.backend.__class__.__name__}"
|
|
120
108
|
)
|
|
121
109
|
|
|
122
110
|
def add_from_directory(self, directory: str, **kwargs) -> bool:
|
|
@@ -133,8 +121,7 @@ class KnowledgeBase(BaseModel):
|
|
|
133
121
|
|
|
134
122
|
def search(self, query: str, top_k: int = 0, **kwargs) -> list[KnowledgebaseEntry]:
|
|
135
123
|
"""Search knowledge from knowledgebase"""
|
|
136
|
-
if top_k
|
|
137
|
-
top_k = self.top_k
|
|
124
|
+
top_k = top_k if top_k != 0 else self.top_k
|
|
138
125
|
|
|
139
126
|
_entries = self._backend.search(query=query, top_k=top_k, **kwargs)
|
|
140
127
|
|
|
@@ -72,10 +72,6 @@ def _get_backend_cls(backend: str) -> type[BaseLongTermMemoryBackend]:
|
|
|
72
72
|
raise ValueError(f"Unsupported long term memory backend: {backend}")
|
|
73
73
|
|
|
74
74
|
|
|
75
|
-
def build_long_term_memory_index(app_name: str, user_id: str):
|
|
76
|
-
return f"{app_name}_{user_id}"
|
|
77
|
-
|
|
78
|
-
|
|
79
75
|
class LongTermMemory(BaseMemoryService, BaseModel):
|
|
80
76
|
backend: Union[
|
|
81
77
|
Literal["local", "opensearch", "redis", "viking", "viking_mem", "mem0"],
|
|
@@ -89,54 +85,48 @@ class LongTermMemory(BaseMemoryService, BaseModel):
|
|
|
89
85
|
top_k: int = 5
|
|
90
86
|
"""Number of top similar documents to retrieve during search."""
|
|
91
87
|
|
|
88
|
+
index: str = ""
|
|
89
|
+
|
|
92
90
|
app_name: str = ""
|
|
93
91
|
|
|
94
92
|
user_id: str = ""
|
|
93
|
+
"""Deprecated attribute"""
|
|
95
94
|
|
|
96
95
|
def model_post_init(self, __context: Any) -> None:
|
|
97
|
-
if self.backend == "viking_mem":
|
|
98
|
-
logger.warning(
|
|
99
|
-
"The `viking_mem` backend is deprecated, please use `viking` instead."
|
|
100
|
-
)
|
|
101
|
-
self.backend = "viking"
|
|
102
|
-
|
|
103
|
-
self._backend = None
|
|
104
|
-
|
|
105
96
|
# Once user define a backend instance, use it directly
|
|
106
97
|
if isinstance(self.backend, BaseLongTermMemoryBackend):
|
|
107
98
|
self._backend = self.backend
|
|
99
|
+
self.index = self._backend.index
|
|
108
100
|
logger.info(
|
|
109
|
-
f"Initialized long term memory with provided backend instance {self._backend.__class__.__name__}"
|
|
101
|
+
f"Initialized long term memory with provided backend instance {self._backend.__class__.__name__}, index={self.index}"
|
|
110
102
|
)
|
|
111
103
|
return
|
|
112
104
|
|
|
105
|
+
# Once user define backend config, use it directly
|
|
113
106
|
if self.backend_config:
|
|
114
|
-
logger.warning(
|
|
115
|
-
f"Initialized long term memory backend {self.backend} with config. We will ignore `app_name` and `user_id` if provided."
|
|
116
|
-
)
|
|
117
107
|
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
|
-
)
|
|
126
108
|
return
|
|
127
109
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
self._backend = _get_backend_cls(self.backend)(
|
|
134
|
-
index=self._index, **self.backend_config if self.backend_config else {}
|
|
110
|
+
# Check index
|
|
111
|
+
self.index = self.index or self.app_name
|
|
112
|
+
if not self.index:
|
|
113
|
+
logger.warning(
|
|
114
|
+
"Attribute `index` or `app_name` not provided, use `default_app` instead."
|
|
135
115
|
)
|
|
136
|
-
|
|
116
|
+
self.index = "default_app"
|
|
117
|
+
|
|
118
|
+
# Forward compliance
|
|
119
|
+
if self.backend == "viking_mem":
|
|
137
120
|
logger.warning(
|
|
138
|
-
"
|
|
121
|
+
"The `viking_mem` backend is deprecated, change to `viking` instead."
|
|
139
122
|
)
|
|
123
|
+
self.backend = "viking"
|
|
124
|
+
|
|
125
|
+
self._backend = _get_backend_cls(self.backend)(index=self.index)
|
|
126
|
+
|
|
127
|
+
logger.info(
|
|
128
|
+
f"Initialized long term memory with provided backend instance {self._backend.__class__.__name__}, index={self.index}"
|
|
129
|
+
)
|
|
140
130
|
|
|
141
131
|
def _filter_and_convert_events(self, events: list[Event]) -> list[str]:
|
|
142
132
|
final_events = []
|
|
@@ -164,75 +154,32 @@ class LongTermMemory(BaseMemoryService, BaseModel):
|
|
|
164
154
|
self,
|
|
165
155
|
session: Session,
|
|
166
156
|
):
|
|
167
|
-
app_name = session.app_name
|
|
168
157
|
user_id = session.user_id
|
|
169
|
-
|
|
170
|
-
if not self._backend and isinstance(self.backend, str):
|
|
171
|
-
self._index = build_long_term_memory_index(app_name, user_id)
|
|
172
|
-
self._backend = _get_backend_cls(self.backend)(
|
|
173
|
-
index=self._index, **self.backend_config if self.backend_config else {}
|
|
174
|
-
)
|
|
175
|
-
logger.info(
|
|
176
|
-
f"Initialize long term memory backend now, index is {self._index}"
|
|
177
|
-
)
|
|
178
|
-
|
|
179
|
-
if not self._index and self._index != build_long_term_memory_index(
|
|
180
|
-
app_name, user_id
|
|
181
|
-
):
|
|
182
|
-
logger.warning(
|
|
183
|
-
f"The `app_name` or `user_id` is different from the initialized one, skip add session to memory. Initialized index: {self._index}, current built index: {build_long_term_memory_index(app_name, user_id)}"
|
|
184
|
-
)
|
|
185
|
-
return
|
|
186
158
|
event_strings = self._filter_and_convert_events(session.events)
|
|
187
159
|
|
|
188
160
|
logger.info(
|
|
189
|
-
f"Adding {len(event_strings)} events to long term memory: index={self.
|
|
161
|
+
f"Adding {len(event_strings)} events to long term memory: index={self.index}"
|
|
162
|
+
)
|
|
163
|
+
self._backend.save_memory(user_id=user_id, event_strings=event_strings)
|
|
164
|
+
logger.info(
|
|
165
|
+
f"Added {len(event_strings)} events to long term memory: index={self.index}, user_id={user_id}"
|
|
190
166
|
)
|
|
191
|
-
|
|
192
|
-
if self._backend:
|
|
193
|
-
self._backend.save_memory(event_strings=event_strings, user_id=user_id)
|
|
194
|
-
|
|
195
|
-
logger.info(
|
|
196
|
-
f"Added {len(event_strings)} events to long term memory: index={self._index}"
|
|
197
|
-
)
|
|
198
|
-
else:
|
|
199
|
-
logger.error(
|
|
200
|
-
"Long term memory backend initialize failed, cannot add session to memory."
|
|
201
|
-
)
|
|
202
167
|
|
|
203
168
|
@override
|
|
204
|
-
async def search_memory(
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
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
|
-
)
|
|
169
|
+
async def search_memory(
|
|
170
|
+
self, *, app_name: str, user_id: str, query: str
|
|
171
|
+
) -> SearchMemoryResponse:
|
|
172
|
+
logger.info(f"Search memory with query={query}")
|
|
214
173
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
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."
|
|
174
|
+
memory_chunks = []
|
|
175
|
+
try:
|
|
176
|
+
memory_chunks = self._backend.search_memory(
|
|
177
|
+
query=query, top_k=self.top_k, user_id=user_id
|
|
220
178
|
)
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
if not self._backend:
|
|
179
|
+
except Exception as e:
|
|
224
180
|
logger.error(
|
|
225
|
-
"
|
|
181
|
+
f"Exception orrcus during memory search: {e}. Return empty memory chunks"
|
|
226
182
|
)
|
|
227
|
-
return SearchMemoryResponse(memories=[])
|
|
228
|
-
|
|
229
|
-
logger.info(
|
|
230
|
-
f"Searching long term memory: query={query} index={self._index} top_k={self.top_k}"
|
|
231
|
-
)
|
|
232
|
-
|
|
233
|
-
memory_chunks = self._backend.search_memory(
|
|
234
|
-
query=query, top_k=self.top_k, user_id=user_id
|
|
235
|
-
)
|
|
236
183
|
|
|
237
184
|
memory_events = []
|
|
238
185
|
for memory in memory_chunks:
|
|
@@ -260,6 +207,6 @@ class LongTermMemory(BaseMemoryService, BaseModel):
|
|
|
260
207
|
)
|
|
261
208
|
|
|
262
209
|
logger.info(
|
|
263
|
-
f"Return {len(memory_events)} memory events for query: {query} index={self.
|
|
210
|
+
f"Return {len(memory_events)} memory events for query: {query} index={self.index} user_id={user_id}"
|
|
264
211
|
)
|
|
265
212
|
return SearchMemoryResponse(memories=memory_events)
|
{veadk_python-0.2.10 → veadk_python-0.2.11}/veadk/memory/long_term_memory_backends/base_backend.py
RENAMED
|
@@ -25,9 +25,11 @@ class BaseLongTermMemoryBackend(ABC, BaseModel):
|
|
|
25
25
|
"""Check the index name is valid or not"""
|
|
26
26
|
|
|
27
27
|
@abstractmethod
|
|
28
|
-
def save_memory(self, event_strings: list[str], **kwargs) -> bool:
|
|
28
|
+
def save_memory(self, user_id: str, event_strings: list[str], **kwargs) -> bool:
|
|
29
29
|
"""Save memory to long term memory backend"""
|
|
30
30
|
|
|
31
31
|
@abstractmethod
|
|
32
|
-
def search_memory(
|
|
32
|
+
def search_memory(
|
|
33
|
+
self, user_id: str, query: str, top_k: int, **kwargs
|
|
34
|
+
) -> list[str]:
|
|
33
35
|
"""Retrieve memory from long term memory backend"""
|