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.
- {veadk_python-0.2.6 → veadk_python-0.2.8}/PKG-INFO +16 -3
- {veadk_python-0.2.6 → veadk_python-0.2.8}/pyproject.toml +23 -6
- veadk_python-0.2.8/tests/test_agent.py +211 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/tests/test_evaluator.py +39 -38
- {veadk_python-0.2.6 → veadk_python-0.2.8}/tests/test_knowledgebase.py +7 -11
- {veadk_python-0.2.6 → veadk_python-0.2.8}/tests/test_long_term_memory.py +10 -31
- {veadk_python-0.2.6 → veadk_python-0.2.8}/tests/test_runner.py +24 -9
- {veadk_python-0.2.6 → veadk_python-0.2.8}/tests/test_short_term_memory.py +6 -7
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/agent.py +11 -18
- veadk_python-0.2.8/veadk/agent_builder.py +94 -0
- veadk_python-0.2.6/veadk/database/__init__.py → veadk_python-0.2.8/veadk/auth/base_auth.py +7 -2
- veadk_python-0.2.8/veadk/auth/veauth/apmplus_veauth.py +65 -0
- veadk_python-0.2.8/veadk/auth/veauth/ark_veauth.py +77 -0
- veadk_python-0.2.8/veadk/auth/veauth/base_veauth.py +50 -0
- veadk_python-0.2.8/veadk/auth/veauth/opensearch_veauth.py +75 -0
- veadk_python-0.2.8/veadk/auth/veauth/postgresql_veauth.py +75 -0
- veadk_python-0.2.8/veadk/auth/veauth/prompt_pilot_veauth.py +60 -0
- veadk_python-0.2.8/veadk/auth/veauth/vesearch_veauth.py +62 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/cli/cli.py +4 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/cli/cli_deploy.py +3 -2
- veadk_python-0.2.8/veadk/cli/cli_eval.py +160 -0
- veadk_python-0.2.8/veadk/cli/cli_pipeline.py +220 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/cli/cli_prompt.py +4 -4
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/cli/cli_web.py +3 -1
- veadk_python-0.2.8/veadk/config.py +95 -0
- veadk_python-0.2.8/veadk/configs/database_configs.py +117 -0
- veadk_python-0.2.8/veadk/configs/model_configs.py +74 -0
- veadk_python-0.2.8/veadk/configs/tool_configs.py +42 -0
- veadk_python-0.2.8/veadk/configs/tracing_configs.py +110 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/consts.py +13 -1
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/evaluation/base_evaluator.py +60 -44
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/evaluation/deepeval_evaluator/deepeval_evaluator.py +18 -12
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/evaluation/eval_set_recorder.py +2 -2
- veadk_python-0.2.8/veadk/integrations/ve_code_pipeline/ve_code_pipeline.py +431 -0
- veadk_python-0.2.8/veadk/integrations/ve_cozeloop/ve_cozeloop.py +96 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_cr/ve_cr.py +20 -5
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/template/cookiecutter.json +1 -1
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/deploy.py +2 -2
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/agent.py +1 -1
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/run.sh +1 -5
- veadk_python-0.2.8/veadk/integrations/ve_faas/ve_faas.py +728 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_prompt_pilot/ve_prompt_pilot.py +6 -3
- veadk_python-0.2.8/veadk/integrations/ve_tls/utils.py +117 -0
- veadk_python-0.2.8/veadk/integrations/ve_tls/ve_tls.py +208 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_tos/ve_tos.py +71 -75
- veadk_python-0.2.8/veadk/knowledgebase/backends/base_backend.py +59 -0
- veadk_python-0.2.8/veadk/knowledgebase/backends/in_memory_backend.py +82 -0
- veadk_python-0.2.8/veadk/knowledgebase/backends/opensearch_backend.py +136 -0
- veadk_python-0.2.8/veadk/knowledgebase/backends/redis_backend.py +144 -0
- veadk_python-0.2.8/veadk/knowledgebase/backends/utils.py +91 -0
- veadk_python-0.2.8/veadk/knowledgebase/backends/vikingdb_knowledge_backend.py +412 -0
- veadk_python-0.2.8/veadk/knowledgebase/knowledgebase.py +144 -0
- veadk_python-0.2.8/veadk/memory/__init__.py +35 -0
- veadk_python-0.2.8/veadk/memory/long_term_memory.py +227 -0
- 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
- veadk_python-0.2.8/veadk/memory/long_term_memory_backends/in_memory_backend.py +65 -0
- veadk_python-0.2.8/veadk/memory/long_term_memory_backends/opensearch_backend.py +120 -0
- veadk_python-0.2.8/veadk/memory/long_term_memory_backends/redis_backend.py +127 -0
- veadk_python-0.2.8/veadk/memory/long_term_memory_backends/vikingdb_memory_backend.py +148 -0
- veadk_python-0.2.8/veadk/memory/short_term_memory.py +128 -0
- veadk_python-0.2.8/veadk/memory/short_term_memory_backends/base_backend.py +31 -0
- veadk_python-0.2.8/veadk/memory/short_term_memory_backends/mysql_backend.py +41 -0
- veadk_python-0.2.8/veadk/memory/short_term_memory_backends/postgresql_backend.py +41 -0
- veadk_python-0.2.8/veadk/memory/short_term_memory_backends/sqlite_backend.py +48 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/memory/short_term_memory_processor.py +9 -4
- veadk_python-0.2.8/veadk/runner.py +386 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tools/builtin_tools/vesearch.py +2 -2
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tools/builtin_tools/video_generate.py +27 -20
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tools/builtin_tools/web_scraper.py +1 -1
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tools/builtin_tools/web_search.py +7 -7
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tools/load_knowledgebase_tool.py +1 -1
- veadk_python-0.2.8/veadk/tools/sandbox/__init__.py +13 -0
- veadk_python-0.2.8/veadk/tracing/__init__.py +13 -0
- veadk_python-0.2.8/veadk/tracing/telemetry/__init__.py +13 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tracing/telemetry/attributes/extractors/llm_attributes_extractors.py +20 -2
- veadk_python-0.2.8/veadk/tracing/telemetry/exporters/__init__.py +13 -0
- veadk_python-0.2.8/veadk/tracing/telemetry/exporters/apmplus_exporter.py +321 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tracing/telemetry/exporters/cozeloop_exporter.py +6 -9
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tracing/telemetry/exporters/inmemory_exporter.py +22 -8
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tracing/telemetry/exporters/tls_exporter.py +6 -10
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tracing/telemetry/opentelemetry_tracer.py +5 -8
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tracing/telemetry/telemetry.py +66 -60
- veadk_python-0.2.8/veadk/utils/__init__.py +13 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/utils/logger.py +1 -1
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/utils/misc.py +63 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/utils/volcengine_sign.py +6 -2
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/version.py +1 -1
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk_python.egg-info/PKG-INFO +16 -3
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk_python.egg-info/SOURCES.txt +46 -19
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk_python.egg-info/requires.txt +16 -2
- veadk_python-0.2.6/tests/test_agent.py +0 -63
- veadk_python-0.2.6/tests/test_agent_card.py +0 -33
- veadk_python-0.2.6/tests/test_tos.py +0 -169
- veadk_python-0.2.6/veadk/config.py +0 -131
- veadk_python-0.2.6/veadk/database/database_adapter.py +0 -368
- veadk_python-0.2.6/veadk/database/database_factory.py +0 -80
- veadk_python-0.2.6/veadk/database/kv/redis_database.py +0 -159
- veadk_python-0.2.6/veadk/database/local_database.py +0 -61
- veadk_python-0.2.6/veadk/database/relational/mysql_database.py +0 -173
- veadk_python-0.2.6/veadk/database/vector/opensearch_vector_database.py +0 -263
- veadk_python-0.2.6/veadk/database/vector/type.py +0 -50
- veadk_python-0.2.6/veadk/database/viking/viking_database.py +0 -471
- veadk_python-0.2.6/veadk/database/viking/viking_memory_db.py +0 -525
- veadk_python-0.2.6/veadk/integrations/ve_faas/ve_faas.py +0 -413
- veadk_python-0.2.6/veadk/knowledgebase/knowledgebase.py +0 -90
- veadk_python-0.2.6/veadk/memory/long_term_memory.py +0 -158
- veadk_python-0.2.6/veadk/memory/short_term_memory.py +0 -120
- veadk_python-0.2.6/veadk/runner.py +0 -429
- veadk_python-0.2.6/veadk/tracing/telemetry/exporters/apmplus_exporter.py +0 -157
- {veadk_python-0.2.6 → veadk_python-0.2.8}/LICENSE +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/README.md +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/setup.cfg +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/tests/test_cloud.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/tests/test_multiple_agents.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/tests/test_runtime_data_collecting.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/tests/test_tracing.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/a2a/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/a2a/agent_card.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/a2a/remote_ve_agent.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/a2a/ve_a2a_server.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/a2a/ve_agent_executor.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/a2a/ve_task_store.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/agents/loop_agent.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/agents/parallel_agent.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/agents/sequential_agent.py +0 -0
- {veadk_python-0.2.6/veadk/cli → veadk_python-0.2.8/veadk/auth}/__init__.py +0 -0
- {veadk_python-0.2.6/veadk/cloud → veadk_python-0.2.8/veadk/auth/veauth}/__init__.py +0 -0
- veadk_python-0.2.6/veadk/database/kv/__init__.py → veadk_python-0.2.8/veadk/auth/veauth/cozeloop_veauth.py +0 -0
- {veadk_python-0.2.6/veadk/database/relational → veadk_python-0.2.8/veadk/cli}/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/cli/cli_init.py +1 -1
- {veadk_python-0.2.6/veadk/database/vector → veadk_python-0.2.8/veadk/cloud}/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/cloud/cloud_agent_engine.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/cloud/cloud_app.py +0 -0
- {veadk_python-0.2.6/veadk/database/viking → veadk_python-0.2.8/veadk/configs}/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/evaluation/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/evaluation/adk_evaluator/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/evaluation/adk_evaluator/adk_evaluator.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/evaluation/deepeval_evaluator/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/evaluation/eval_set_file_loader.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/evaluation/types.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/evaluation/utils/prometheus.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_apig/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_apig/ve_apig.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_apig/ve_apig_utils.py +0 -0
- {veadk_python-0.2.6/veadk/integrations/ve_cr → veadk_python-0.2.8/veadk/integrations/ve_code_pipeline}/__init__.py +0 -0
- {veadk_python-0.2.6/veadk/integrations/ve_faas → veadk_python-0.2.8/veadk/integrations/ve_cozeloop}/__init__.py +0 -0
- {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
- {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
- {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
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/config.yaml.example +0 -0
- {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
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/app.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/requirements.txt +0 -0
- {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
- {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
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/ve_faas_utils.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/web_template/cookiecutter.json +0 -0
- {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
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
- {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
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/deploy.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/Dockerfile +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {veadk_python-0.2.6/veadk/prompts → veadk_python-0.2.8/veadk/integrations/ve_prompt_pilot}/__init__.py +0 -0
- {veadk_python-0.2.6/veadk/tools → veadk_python-0.2.8/veadk/integrations/ve_tls}/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/knowledgebase/__init__.py +0 -0
- {veadk_python-0.2.6/veadk/tools/builtin_tools → veadk_python-0.2.8/veadk/knowledgebase/backends}/__init__.py +0 -0
- {veadk_python-0.2.6/veadk/tools/sandbox → veadk_python-0.2.8/veadk/memory/long_term_memory_backends}/__init__.py +0 -0
- {veadk_python-0.2.6/veadk/tracing → veadk_python-0.2.8/veadk/memory/short_term_memory_backends}/__init__.py +0 -0
- {veadk_python-0.2.6/veadk/tracing/telemetry → veadk_python-0.2.8/veadk/prompts}/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/prompts/agent_default_prompt.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/prompts/prompt_evaluator.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/prompts/prompt_memory_processor.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/prompts/prompt_optimization.py +0 -0
- {veadk_python-0.2.6/veadk/tracing/telemetry/exporters → veadk_python-0.2.8/veadk/tools}/__init__.py +0 -0
- {veadk_python-0.2.6/veadk/utils → veadk_python-0.2.8/veadk/tools/builtin_tools}/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tools/builtin_tools/image_edit.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tools/builtin_tools/image_generate.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tools/builtin_tools/lark.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tools/builtin_tools/las.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tools/builtin_tools/mcp_router.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tools/demo_tools.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tools/sandbox/browser_sandbox.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tools/sandbox/code_sandbox.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tools/sandbox/computer_sandbox.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tracing/base_tracer.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tracing/telemetry/attributes/attributes.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tracing/telemetry/attributes/extractors/common_attributes_extractors.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tracing/telemetry/attributes/extractors/tool_attributes_extractors.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tracing/telemetry/attributes/extractors/types.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/tracing/telemetry/exporters/base_exporter.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/types.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/utils/mcp_utils.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk/utils/patches.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk_python.egg-info/dependency_links.txt +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.8}/veadk_python.egg-info/entry_points.txt +0 -0
- {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.
|
|
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
|
|
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>=
|
|
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.
|
|
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
|
|
26
|
-
"
|
|
27
|
-
"
|
|
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
|
-
"
|
|
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>=
|
|
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":
|
|
66
|
-
"trace_id":
|
|
67
|
-
"start_time":
|
|
68
|
-
"end_time":
|
|
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.
|
|
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":
|
|
74
|
+
"parent_span_id": 574819447039686650,
|
|
76
75
|
},
|
|
77
76
|
{
|
|
78
77
|
"name": "call_llm",
|
|
79
|
-
"span_id":
|
|
80
|
-
"trace_id":
|
|
78
|
+
"span_id": 574819447039686650,
|
|
79
|
+
"trace_id": 142655176138954930885272077198014871976,
|
|
80
|
+
"start_time": 1758158945807630000,
|
|
81
|
+
"end_time": 1758158957171304000,
|
|
81
82
|
"attributes": {
|
|
82
|
-
"
|
|
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":
|
|
88
|
+
"parent_span_id": 13789664766018020416,
|
|
86
89
|
},
|
|
87
90
|
{
|
|
88
91
|
"name": "call_llm",
|
|
89
|
-
"span_id":
|
|
90
|
-
"trace_id":
|
|
92
|
+
"span_id": 9007934154052797946,
|
|
93
|
+
"trace_id": 142655176138954930885272077198014871976,
|
|
94
|
+
"start_time": 1758158957171713000,
|
|
95
|
+
"end_time": 1758158964035230000,
|
|
91
96
|
"attributes": {
|
|
92
|
-
"
|
|
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":
|
|
102
|
+
"parent_span_id": 13789664766018020416,
|
|
96
103
|
},
|
|
97
104
|
{
|
|
98
105
|
"name": "agent_run [chat_robot]",
|
|
99
|
-
"span_id":
|
|
100
|
-
"trace_id":
|
|
101
|
-
"
|
|
102
|
-
|
|
103
|
-
|
|
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
|
|
109
|
-
"span_id":
|
|
110
|
-
"trace_id":
|
|
111
|
-
"start_time":
|
|
112
|
-
"end_time":
|
|
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].
|
|
158
|
-
== "
|
|
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
|
-
|
|
24
|
-
|
|
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
|
-
|
|
35
|
-
assert
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
65
|
-
|
|
66
|
-
|
|
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
|
-
|
|
32
|
-
|
|
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
|
-
|
|
48
|
-
|
|
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
|
-
|
|
68
|
-
assert
|
|
69
|
-
assert
|
|
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
|
-
|
|
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
|
-
#
|
|
39
|
-
|
|
40
|
-
|
|
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(
|
|
55
|
-
os.remove(
|
|
53
|
+
assert os.path.exists(memory.local_database_path)
|
|
54
|
+
os.remove(memory.local_database_path)
|