veadk-python 0.2.6__tar.gz → 0.2.7__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.7}/PKG-INFO +2 -1
- {veadk_python-0.2.6 → veadk_python-0.2.7}/pyproject.toml +6 -5
- veadk_python-0.2.7/tests/test_agent.py +207 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/tests/test_runner.py +24 -9
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/agent.py +11 -16
- veadk_python-0.2.7/veadk/agent_builder.py +94 -0
- veadk_python-0.2.7/veadk/auth/base_auth.py +22 -0
- veadk_python-0.2.7/veadk/auth/veauth/apmplus_veauth.py +65 -0
- veadk_python-0.2.7/veadk/auth/veauth/ark_veauth.py +77 -0
- veadk_python-0.2.7/veadk/auth/veauth/base_veauth.py +50 -0
- veadk_python-0.2.7/veadk/auth/veauth/prompt_pilot_veauth.py +60 -0
- veadk_python-0.2.7/veadk/auth/veauth/vesearch_veauth.py +62 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/cli/cli.py +2 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/cli/cli_deploy.py +3 -2
- veadk_python-0.2.7/veadk/cli/cli_pipeline.py +220 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/cli/cli_prompt.py +4 -4
- veadk_python-0.2.7/veadk/config.py +95 -0
- veadk_python-0.2.7/veadk/configs/database_configs.py +83 -0
- veadk_python-0.2.7/veadk/configs/model_configs.py +42 -0
- veadk_python-0.2.7/veadk/configs/tool_configs.py +42 -0
- veadk_python-0.2.7/veadk/configs/tracing_configs.py +110 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/consts.py +13 -1
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/database/database_adapter.py +172 -7
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/database/local_database.py +1 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/database/viking/viking_database.py +222 -55
- veadk_python-0.2.7/veadk/integrations/ve_code_pipeline/ve_code_pipeline.py +431 -0
- veadk_python-0.2.7/veadk/integrations/ve_cozeloop/ve_cozeloop.py +96 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_cr/ve_cr.py +20 -5
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/template/cookiecutter.json +1 -1
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/deploy.py +2 -2
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/agent.py +1 -1
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/run.sh +1 -5
- veadk_python-0.2.7/veadk/integrations/ve_faas/ve_faas.py +728 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_prompt_pilot/ve_prompt_pilot.py +6 -3
- veadk_python-0.2.7/veadk/integrations/ve_tls/utils.py +117 -0
- veadk_python-0.2.7/veadk/integrations/ve_tls/ve_tls.py +208 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_tos/ve_tos.py +68 -75
- veadk_python-0.2.7/veadk/knowledgebase/knowledgebase.py +178 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/memory/long_term_memory.py +20 -21
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/memory/short_term_memory_processor.py +9 -4
- veadk_python-0.2.7/veadk/runner.py +386 -0
- veadk_python-0.2.7/veadk/tools/__init__.py +13 -0
- veadk_python-0.2.7/veadk/tools/builtin_tools/__init__.py +13 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tools/builtin_tools/vesearch.py +2 -2
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tools/builtin_tools/video_generate.py +27 -20
- veadk_python-0.2.7/veadk/tools/sandbox/__init__.py +13 -0
- veadk_python-0.2.7/veadk/tracing/__init__.py +13 -0
- veadk_python-0.2.7/veadk/tracing/telemetry/__init__.py +13 -0
- veadk_python-0.2.7/veadk/tracing/telemetry/exporters/__init__.py +13 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tracing/telemetry/exporters/apmplus_exporter.py +158 -12
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tracing/telemetry/exporters/cozeloop_exporter.py +4 -9
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tracing/telemetry/exporters/tls_exporter.py +4 -10
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tracing/telemetry/telemetry.py +4 -1
- veadk_python-0.2.7/veadk/utils/__init__.py +13 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/utils/logger.py +1 -1
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/utils/misc.py +48 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/utils/volcengine_sign.py +6 -2
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/version.py +1 -1
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk_python.egg-info/PKG-INFO +2 -1
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk_python.egg-info/SOURCES.txt +25 -4
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk_python.egg-info/requires.txt +1 -0
- 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/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/runner.py +0 -429
- {veadk_python-0.2.6 → veadk_python-0.2.7}/LICENSE +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/README.md +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/setup.cfg +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/tests/test_cloud.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/tests/test_evaluator.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/tests/test_knowledgebase.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/tests/test_long_term_memory.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/tests/test_multiple_agents.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/tests/test_runtime_data_collecting.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/tests/test_short_term_memory.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/tests/test_tracing.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/a2a/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/a2a/agent_card.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/a2a/remote_ve_agent.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/a2a/ve_a2a_server.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/a2a/ve_agent_executor.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/a2a/ve_task_store.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/agents/loop_agent.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/agents/parallel_agent.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/agents/sequential_agent.py +0 -0
- {veadk_python-0.2.6/veadk/cli → veadk_python-0.2.7/veadk/auth}/__init__.py +0 -0
- {veadk_python-0.2.6/veadk/cloud → veadk_python-0.2.7/veadk/auth/veauth}/__init__.py +0 -0
- veadk_python-0.2.6/veadk/database/kv/__init__.py → veadk_python-0.2.7/veadk/auth/veauth/cozeloop_veauth.py +0 -0
- {veadk_python-0.2.6/veadk/database/relational → veadk_python-0.2.7/veadk/cli}/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/cli/cli_init.py +1 -1
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/cli/cli_web.py +0 -0
- {veadk_python-0.2.6/veadk/database/vector → veadk_python-0.2.7/veadk/cloud}/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/cloud/cloud_agent_engine.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/cloud/cloud_app.py +0 -0
- {veadk_python-0.2.6/veadk/database/viking → veadk_python-0.2.7/veadk/configs}/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/database/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/database/base_database.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/database/database_factory.py +0 -0
- {veadk_python-0.2.6/veadk/integrations/ve_apig → veadk_python-0.2.7/veadk/database/kv}/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/database/kv/redis_database.py +0 -0
- {veadk_python-0.2.6/veadk/integrations/ve_cr → veadk_python-0.2.7/veadk/database/relational}/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/database/relational/mysql_database.py +0 -0
- {veadk_python-0.2.6/veadk/integrations/ve_faas → veadk_python-0.2.7/veadk/database/vector}/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/database/vector/opensearch_vector_database.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/database/vector/type.py +0 -0
- {veadk_python-0.2.6/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}} → veadk_python-0.2.7/veadk/database/viking}/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/database/viking/viking_memory_db.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/evaluation/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/evaluation/adk_evaluator/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/evaluation/adk_evaluator/adk_evaluator.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/evaluation/base_evaluator.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/evaluation/deepeval_evaluator/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/evaluation/deepeval_evaluator/deepeval_evaluator.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/evaluation/eval_set_file_loader.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/evaluation/eval_set_recorder.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/evaluation/types.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/evaluation/utils/prometheus.py +0 -0
- {veadk_python-0.2.6/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src → veadk_python-0.2.7/veadk/integrations/ve_apig}/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_apig/ve_apig.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_apig/ve_apig_utils.py +0 -0
- {veadk_python-0.2.6/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}} → veadk_python-0.2.7/veadk/integrations/ve_code_pipeline}/__init__.py +0 -0
- {veadk_python-0.2.6/veadk/integrations/ve_prompt_pilot → veadk_python-0.2.7/veadk/integrations/ve_cozeloop}/__init__.py +0 -0
- {veadk_python-0.2.6/veadk/memory → veadk_python-0.2.7/veadk/integrations/ve_cr}/__init__.py +0 -0
- {veadk_python-0.2.6/veadk/prompts → veadk_python-0.2.7/veadk/integrations/ve_faas}/__init__.py +0 -0
- {veadk_python-0.2.6/veadk/tools → veadk_python-0.2.7/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}}/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/config.yaml.example +0 -0
- {veadk_python-0.2.6/veadk/tools/builtin_tools → veadk_python-0.2.7/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src}/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/app.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/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.7/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.7/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.7}/veadk/integrations/ve_faas/ve_faas_utils.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/web_template/cookiecutter.json +0 -0
- {veadk_python-0.2.6/veadk/tools/sandbox → veadk_python-0.2.7/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}}/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/config.yaml.example +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/deploy.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/Dockerfile +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/app.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/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.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/models.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/requirements.txt +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/run.sh +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/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.7}/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.7}/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.7}/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.7}/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.7}/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.7}/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.7}/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.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/post.html +0 -0
- {veadk_python-0.2.6/veadk/tracing → veadk_python-0.2.7/veadk/integrations/ve_prompt_pilot}/__init__.py +0 -0
- {veadk_python-0.2.6/veadk/tracing/telemetry → veadk_python-0.2.7/veadk/integrations/ve_tls}/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/knowledgebase/__init__.py +0 -0
- {veadk_python-0.2.6/veadk/tracing/telemetry/exporters → veadk_python-0.2.7/veadk/memory}/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/memory/short_term_memory.py +0 -0
- {veadk_python-0.2.6/veadk/utils → veadk_python-0.2.7/veadk/prompts}/__init__.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/prompts/agent_default_prompt.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/prompts/prompt_evaluator.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/prompts/prompt_memory_processor.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/prompts/prompt_optimization.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tools/builtin_tools/image_edit.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tools/builtin_tools/image_generate.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tools/builtin_tools/lark.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tools/builtin_tools/las.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tools/builtin_tools/mcp_router.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tools/builtin_tools/web_scraper.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tools/builtin_tools/web_search.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tools/demo_tools.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tools/load_knowledgebase_tool.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tools/sandbox/browser_sandbox.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tools/sandbox/code_sandbox.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tools/sandbox/computer_sandbox.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tracing/base_tracer.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tracing/telemetry/attributes/attributes.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tracing/telemetry/attributes/extractors/common_attributes_extractors.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tracing/telemetry/attributes/extractors/llm_attributes_extractors.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tracing/telemetry/attributes/extractors/tool_attributes_extractors.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tracing/telemetry/attributes/extractors/types.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tracing/telemetry/exporters/base_exporter.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tracing/telemetry/exporters/inmemory_exporter.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/tracing/telemetry/opentelemetry_tracer.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/types.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/utils/mcp_utils.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk/utils/patches.py +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk_python.egg-info/dependency_links.txt +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/veadk_python.egg-info/entry_points.txt +0 -0
- {veadk_python-0.2.6 → veadk_python-0.2.7}/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.7
|
|
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
|
|
@@ -223,6 +223,7 @@ Requires-Dist: agent-pilot-sdk>=0.0.9
|
|
|
223
223
|
Requires-Dist: fastmcp>=2.11.3
|
|
224
224
|
Requires-Dist: cookiecutter>=2.6.0
|
|
225
225
|
Requires-Dist: opensearch-py==2.8.0
|
|
226
|
+
Requires-Dist: omegaconf>=2.3.0
|
|
226
227
|
Provides-Extra: database
|
|
227
228
|
Requires-Dist: redis>=6.2.0; extra == "database"
|
|
228
229
|
Requires-Dist: pymysql>=1.1.1; extra == "database"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "veadk-python"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.7"
|
|
4
4
|
description = "Volcengine agent development kit, integrations with Volcengine cloud services."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
@@ -23,10 +23,11 @@ dependencies = [
|
|
|
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
25
|
"volcengine-python-sdk==4.0.3", # For Volcengine API
|
|
26
|
-
"agent-pilot-sdk>=0.0.9",
|
|
27
|
-
"fastmcp>=2.11.3",
|
|
28
|
-
"cookiecutter>=2.6.0", # For cloud deploy
|
|
29
|
-
"opensearch-py==2.8.0"
|
|
26
|
+
"agent-pilot-sdk>=0.0.9", # Prompt optimization by Volcengine AgentPilot/PromptPilot toolkits
|
|
27
|
+
"fastmcp>=2.11.3", # For running MCP
|
|
28
|
+
"cookiecutter>=2.6.0", # For cloud deploy # For OpenSearch database
|
|
29
|
+
"opensearch-py==2.8.0",
|
|
30
|
+
"omegaconf>=2.3.0", # For agent builder
|
|
30
31
|
]
|
|
31
32
|
|
|
32
33
|
[project.scripts]
|
|
@@ -0,0 +1,207 @@
|
|
|
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
|
+
long_term_memory = LongTermMemory(backend="local")
|
|
38
|
+
tracer = OpentelemetryTracer()
|
|
39
|
+
|
|
40
|
+
extra_config = {
|
|
41
|
+
"extra_headers": {"thinking": "test"},
|
|
42
|
+
"extra_body": {"content": "test"},
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
agent = Agent(
|
|
46
|
+
model_name="test_model_name",
|
|
47
|
+
model_provider="test_model_provider",
|
|
48
|
+
model_api_key="test_model_api_key",
|
|
49
|
+
model_api_base="test_model_api_base",
|
|
50
|
+
model_extra_config=extra_config,
|
|
51
|
+
tools=[],
|
|
52
|
+
sub_agents=[],
|
|
53
|
+
knowledgebase=knowledgebase,
|
|
54
|
+
long_term_memory=long_term_memory,
|
|
55
|
+
tracers=[tracer],
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
assert agent.model.model == f"{agent.model_provider}/{agent.model_name}" # type: ignore
|
|
59
|
+
|
|
60
|
+
expected_config = DEFAULT_MODEL_EXTRA_CONFIG.copy()
|
|
61
|
+
expected_config["extra_headers"] |= extra_config["extra_headers"]
|
|
62
|
+
expected_config["extra_body"] |= extra_config["extra_body"]
|
|
63
|
+
|
|
64
|
+
assert agent.model_extra_config == expected_config
|
|
65
|
+
|
|
66
|
+
assert agent.knowledgebase == knowledgebase
|
|
67
|
+
assert agent.knowledgebase.backend == "local" # type: ignore
|
|
68
|
+
assert load_knowledgebase_tool.knowledgebase == agent.knowledgebase
|
|
69
|
+
assert load_knowledgebase_tool.load_knowledgebase_tool in agent.tools
|
|
70
|
+
|
|
71
|
+
assert agent.long_term_memory.backend == "local" # type: ignore
|
|
72
|
+
assert load_memory in agent.tools
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
@patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
|
|
76
|
+
def test_agent_default_values():
|
|
77
|
+
agent = Agent()
|
|
78
|
+
|
|
79
|
+
assert agent.name == DEFAULT_AGENT_NAME
|
|
80
|
+
|
|
81
|
+
assert agent.model_name == DEFAULT_MODEL_AGENT_NAME
|
|
82
|
+
assert agent.model_provider == DEFAULT_MODEL_AGENT_PROVIDER
|
|
83
|
+
assert agent.model_api_base == DEFAULT_MODEL_AGENT_API_BASE
|
|
84
|
+
|
|
85
|
+
assert agent.tools == []
|
|
86
|
+
assert agent.sub_agents == []
|
|
87
|
+
assert agent.knowledgebase is None
|
|
88
|
+
assert agent.long_term_memory is None
|
|
89
|
+
assert agent.tracers == []
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
@patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
|
|
93
|
+
def test_agent_without_knowledgebase():
|
|
94
|
+
agent = Agent()
|
|
95
|
+
|
|
96
|
+
assert agent.knowledgebase is None
|
|
97
|
+
assert load_knowledgebase_tool.load_knowledgebase_tool not in agent.tools
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
@patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
|
|
101
|
+
def test_agent_without_long_term_memory():
|
|
102
|
+
agent = Agent()
|
|
103
|
+
|
|
104
|
+
assert agent.long_term_memory is None
|
|
105
|
+
assert load_memory not in agent.tools
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
@patch("veadk.agent.LiteLlm")
|
|
109
|
+
def test_agent_model_creation(mock_lite_llm):
|
|
110
|
+
mock_model = Mock()
|
|
111
|
+
mock_lite_llm.return_value = mock_model
|
|
112
|
+
|
|
113
|
+
agent = Agent(
|
|
114
|
+
model_name="test_model",
|
|
115
|
+
model_provider="test_provider",
|
|
116
|
+
model_api_key="test_key",
|
|
117
|
+
model_api_base="test_base",
|
|
118
|
+
)
|
|
119
|
+
|
|
120
|
+
mock_lite_llm.assert_called_once()
|
|
121
|
+
assert agent.model == mock_model
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
@patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
|
|
125
|
+
def test_agent_with_existing_model():
|
|
126
|
+
existing_model = LiteLlm(model="test_model")
|
|
127
|
+
agent = Agent(model=existing_model)
|
|
128
|
+
|
|
129
|
+
assert agent.model == existing_model
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
@patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
|
|
133
|
+
def test_agent_model_extra_config_merge():
|
|
134
|
+
user_config = {
|
|
135
|
+
"extra_headers": {"custom": "header"},
|
|
136
|
+
"extra_body": {"custom": "body"},
|
|
137
|
+
"other_param": "value",
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
agent = Agent(model_extra_config=user_config)
|
|
141
|
+
|
|
142
|
+
expected_headers = DEFAULT_MODEL_EXTRA_CONFIG["extra_headers"].copy()
|
|
143
|
+
expected_headers["custom"] = "header"
|
|
144
|
+
|
|
145
|
+
expected_body = DEFAULT_MODEL_EXTRA_CONFIG["extra_body"].copy()
|
|
146
|
+
expected_body["custom"] = "body"
|
|
147
|
+
|
|
148
|
+
assert agent.model_extra_config["extra_headers"] == expected_headers
|
|
149
|
+
assert agent.model_extra_config["extra_body"] == expected_body
|
|
150
|
+
assert agent.model_extra_config["other_param"] == "value"
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
@patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
|
|
154
|
+
def test_agent_empty_model_extra_config():
|
|
155
|
+
agent = Agent(model_extra_config={})
|
|
156
|
+
|
|
157
|
+
assert (
|
|
158
|
+
agent.model_extra_config["extra_headers"]
|
|
159
|
+
== DEFAULT_MODEL_EXTRA_CONFIG["extra_headers"]
|
|
160
|
+
)
|
|
161
|
+
assert (
|
|
162
|
+
agent.model_extra_config["extra_body"]
|
|
163
|
+
== DEFAULT_MODEL_EXTRA_CONFIG["extra_body"]
|
|
164
|
+
)
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
@patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
|
|
168
|
+
def test_agent_with_tools():
|
|
169
|
+
mock_tool = Mock()
|
|
170
|
+
agent = Agent(tools=[mock_tool])
|
|
171
|
+
|
|
172
|
+
assert mock_tool in agent.tools
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
@patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
|
|
176
|
+
def test_agent_with_sub_agents():
|
|
177
|
+
adk_agent = LlmAgent(name="agent")
|
|
178
|
+
veadk_agent = Agent(name="agent")
|
|
179
|
+
agent = Agent(sub_agents=[adk_agent, veadk_agent])
|
|
180
|
+
|
|
181
|
+
assert adk_agent in agent.sub_agents
|
|
182
|
+
assert veadk_agent in agent.sub_agents
|
|
183
|
+
assert adk_agent.parent_agent == agent
|
|
184
|
+
assert veadk_agent.parent_agent == agent
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
@patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
|
|
188
|
+
def test_agent_with_tracers():
|
|
189
|
+
tracer1 = OpentelemetryTracer()
|
|
190
|
+
tracer2 = OpentelemetryTracer()
|
|
191
|
+
|
|
192
|
+
agent = Agent(tracers=[tracer1, tracer2])
|
|
193
|
+
|
|
194
|
+
assert len(agent.tracers) == 2
|
|
195
|
+
assert tracer1 in agent.tracers
|
|
196
|
+
assert tracer2 in agent.tracers
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
@patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
|
|
200
|
+
def test_agent_custom_name_and_description():
|
|
201
|
+
custom_name = "CustomAgent"
|
|
202
|
+
custom_description = "A custom agent for testing"
|
|
203
|
+
|
|
204
|
+
agent = Agent(name=custom_name, description=custom_description)
|
|
205
|
+
|
|
206
|
+
assert agent.name == custom_name
|
|
207
|
+
assert agent.description == custom_description
|
|
@@ -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)
|
|
@@ -14,11 +14,11 @@
|
|
|
14
14
|
|
|
15
15
|
from __future__ import annotations
|
|
16
16
|
|
|
17
|
-
from typing import Optional
|
|
17
|
+
from typing import Optional, Union
|
|
18
18
|
|
|
19
19
|
from google.adk.agents import LlmAgent, RunConfig
|
|
20
20
|
from google.adk.agents.base_agent import BaseAgent
|
|
21
|
-
from google.adk.agents.llm_agent import ToolUnion
|
|
21
|
+
from google.adk.agents.llm_agent import InstructionProvider, ToolUnion
|
|
22
22
|
from google.adk.agents.run_config import StreamingMode
|
|
23
23
|
from google.adk.models.lite_llm import LiteLlm
|
|
24
24
|
from google.adk.runners import Runner
|
|
@@ -26,11 +26,9 @@ from google.genai import types
|
|
|
26
26
|
from pydantic import ConfigDict, Field
|
|
27
27
|
from typing_extensions import Any
|
|
28
28
|
|
|
29
|
-
from veadk.config import
|
|
29
|
+
from veadk.config import settings
|
|
30
30
|
from veadk.consts import (
|
|
31
|
-
|
|
32
|
-
DEFAULT_MODEL_AGENT_NAME,
|
|
33
|
-
DEFAULT_MODEL_AGENT_PROVIDER,
|
|
31
|
+
DEFAULT_AGENT_NAME,
|
|
34
32
|
DEFAULT_MODEL_EXTRA_CONFIG,
|
|
35
33
|
)
|
|
36
34
|
from veadk.evaluation import EvalSetRecorder
|
|
@@ -53,25 +51,25 @@ class Agent(LlmAgent):
|
|
|
53
51
|
model_config = ConfigDict(arbitrary_types_allowed=True, extra="allow")
|
|
54
52
|
"""The model config"""
|
|
55
53
|
|
|
56
|
-
name: str =
|
|
54
|
+
name: str = DEFAULT_AGENT_NAME
|
|
57
55
|
"""The name of the agent."""
|
|
58
56
|
|
|
59
57
|
description: str = DEFAULT_DESCRIPTION
|
|
60
58
|
"""The description of the agent. This will be helpful in A2A scenario."""
|
|
61
59
|
|
|
62
|
-
instruction: str = DEFAULT_INSTRUCTION
|
|
63
|
-
"""The instruction for the agent
|
|
60
|
+
instruction: Union[str, InstructionProvider] = DEFAULT_INSTRUCTION
|
|
61
|
+
"""The instruction for the agent."""
|
|
64
62
|
|
|
65
|
-
model_name: str =
|
|
63
|
+
model_name: str = Field(default_factory=lambda: settings.model.name)
|
|
66
64
|
"""The name of the model for agent running."""
|
|
67
65
|
|
|
68
|
-
model_provider: str =
|
|
66
|
+
model_provider: str = Field(default_factory=lambda: settings.model.provider)
|
|
69
67
|
"""The provider of the model for agent running."""
|
|
70
68
|
|
|
71
|
-
model_api_base: str =
|
|
69
|
+
model_api_base: str = Field(default_factory=lambda: settings.model.api_base)
|
|
72
70
|
"""The api base of the model for agent running."""
|
|
73
71
|
|
|
74
|
-
model_api_key: str = Field(default_factory=lambda:
|
|
72
|
+
model_api_key: str = Field(default_factory=lambda: settings.model.api_key)
|
|
75
73
|
"""The api key of the model for agent running."""
|
|
76
74
|
|
|
77
75
|
model_extra_config: dict = Field(default_factory=dict)
|
|
@@ -95,9 +93,6 @@ class Agent(LlmAgent):
|
|
|
95
93
|
tracers: list[BaseTracer] = []
|
|
96
94
|
"""The tracers provided to agent."""
|
|
97
95
|
|
|
98
|
-
serve_url: str = ""
|
|
99
|
-
"""The url of agent serving host. Show in agent card."""
|
|
100
|
-
|
|
101
96
|
def model_post_init(self, __context: Any) -> None:
|
|
102
97
|
super().model_post_init(None) # for sub_agents init
|
|
103
98
|
|
|
@@ -0,0 +1,94 @@
|
|
|
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 importlib
|
|
16
|
+
|
|
17
|
+
from google.adk.agents import BaseAgent
|
|
18
|
+
from omegaconf import OmegaConf
|
|
19
|
+
|
|
20
|
+
from veadk.a2a.remote_ve_agent import RemoteVeAgent
|
|
21
|
+
from veadk.agent import Agent
|
|
22
|
+
from veadk.agents.loop_agent import LoopAgent
|
|
23
|
+
from veadk.agents.parallel_agent import ParallelAgent
|
|
24
|
+
from veadk.agents.sequential_agent import SequentialAgent
|
|
25
|
+
from veadk.utils.logger import get_logger
|
|
26
|
+
|
|
27
|
+
logger = get_logger(__name__)
|
|
28
|
+
|
|
29
|
+
AGENT_TYPES = {
|
|
30
|
+
"Agent": Agent,
|
|
31
|
+
"SequentialAgent": SequentialAgent,
|
|
32
|
+
"ParallelAgent": ParallelAgent,
|
|
33
|
+
"LoopAgent": LoopAgent,
|
|
34
|
+
"RemoteVeAgent": RemoteVeAgent,
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
class AgentBuilder:
|
|
39
|
+
def __init__(self) -> None:
|
|
40
|
+
pass
|
|
41
|
+
|
|
42
|
+
def _build(self, agent_config: dict) -> BaseAgent:
|
|
43
|
+
logger.info(f"Building agent with config: {agent_config}")
|
|
44
|
+
|
|
45
|
+
sub_agents = []
|
|
46
|
+
if agent_config.get("sub_agents", None):
|
|
47
|
+
for sub_agent_config in agent_config["sub_agents"]:
|
|
48
|
+
agent = self._build(sub_agent_config)
|
|
49
|
+
sub_agents.append(agent)
|
|
50
|
+
agent_config.pop("sub_agents")
|
|
51
|
+
|
|
52
|
+
tools = []
|
|
53
|
+
if agent_config.get("tools", []):
|
|
54
|
+
for tool in agent_config["tools"]:
|
|
55
|
+
module_name = tool["module"]
|
|
56
|
+
func_name = tool["func"]
|
|
57
|
+
|
|
58
|
+
module = importlib.import_module(module_name)
|
|
59
|
+
func = getattr(module, func_name)
|
|
60
|
+
|
|
61
|
+
tools.append(func)
|
|
62
|
+
agent_config.pop("tools")
|
|
63
|
+
|
|
64
|
+
agent_cls = AGENT_TYPES[agent_config["type"]]
|
|
65
|
+
agent = agent_cls(**agent_config, sub_agents=sub_agents, tools=tools)
|
|
66
|
+
|
|
67
|
+
logger.debug("Build agent done.")
|
|
68
|
+
|
|
69
|
+
return agent
|
|
70
|
+
|
|
71
|
+
def _read_config(self, path: str) -> dict:
|
|
72
|
+
"""Read config file (from `path`) to a in-memory dict."""
|
|
73
|
+
assert path.endswith(".yaml"), "Agent config file must be a `.yaml` file."
|
|
74
|
+
|
|
75
|
+
config = OmegaConf.load(path)
|
|
76
|
+
config_dict = OmegaConf.to_container(config, resolve=True)
|
|
77
|
+
|
|
78
|
+
assert isinstance(config_dict, dict), (
|
|
79
|
+
"Parsed config must in `dict` format. Pls check your building file format."
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
return config_dict
|
|
83
|
+
|
|
84
|
+
def build(
|
|
85
|
+
self,
|
|
86
|
+
path: str,
|
|
87
|
+
root_agent_identifier: str = "root_agent",
|
|
88
|
+
) -> BaseAgent:
|
|
89
|
+
config = self._read_config(path)
|
|
90
|
+
|
|
91
|
+
agent_config = config[root_agent_identifier]
|
|
92
|
+
agent = self._build(agent_config)
|
|
93
|
+
|
|
94
|
+
return agent
|
|
@@ -0,0 +1,22 @@
|
|
|
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
|
+
|
|
16
|
+
class BaseAuth:
|
|
17
|
+
def __init__(self) -> None: ...
|
|
18
|
+
|
|
19
|
+
def _fetch_token(self) -> str | dict: ...
|
|
20
|
+
|
|
21
|
+
@property
|
|
22
|
+
def token(self) -> str | dict: ...
|
|
@@ -0,0 +1,65 @@
|
|
|
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 typing_extensions import override
|
|
18
|
+
|
|
19
|
+
from veadk.auth.veauth.base_veauth import BaseVeAuth
|
|
20
|
+
from veadk.utils.logger import get_logger
|
|
21
|
+
from veadk.utils.volcengine_sign import ve_request
|
|
22
|
+
|
|
23
|
+
logger = get_logger(__name__)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class APMPlusVeAuth(BaseVeAuth):
|
|
27
|
+
def __init__(
|
|
28
|
+
self,
|
|
29
|
+
access_key: str = os.getenv("VOLCENGINE_ACCESS_KEY", ""),
|
|
30
|
+
secret_key: str = os.getenv("VOLCENGINE_SECRET_KEY", ""),
|
|
31
|
+
region: str = "cn-beijing",
|
|
32
|
+
) -> None:
|
|
33
|
+
super().__init__(access_key, secret_key)
|
|
34
|
+
|
|
35
|
+
self.region = region
|
|
36
|
+
|
|
37
|
+
self._token: str = ""
|
|
38
|
+
|
|
39
|
+
@override
|
|
40
|
+
def _fetch_token(self) -> None:
|
|
41
|
+
logger.info("Fetching APMPlus token...")
|
|
42
|
+
|
|
43
|
+
res = ve_request(
|
|
44
|
+
request_body={},
|
|
45
|
+
action="GetAppKey",
|
|
46
|
+
ak=self.access_key,
|
|
47
|
+
sk=self.secret_key,
|
|
48
|
+
service="apmplus_server",
|
|
49
|
+
version="2024-07-30",
|
|
50
|
+
region=self.region,
|
|
51
|
+
host="open.volcengineapi.com",
|
|
52
|
+
# APMPlus frontend required
|
|
53
|
+
header={"X-Apmplus-Region": self.region.replace("-", "_")},
|
|
54
|
+
)
|
|
55
|
+
try:
|
|
56
|
+
self._token = res["data"]["app_key"]
|
|
57
|
+
except KeyError:
|
|
58
|
+
raise ValueError(f"Failed to get APMPlus token: {res}")
|
|
59
|
+
|
|
60
|
+
@property
|
|
61
|
+
def token(self) -> str:
|
|
62
|
+
if self._token:
|
|
63
|
+
return self._token
|
|
64
|
+
self._fetch_token()
|
|
65
|
+
return self._token
|
|
@@ -0,0 +1,77 @@
|
|
|
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 typing_extensions import override
|
|
18
|
+
|
|
19
|
+
from veadk.auth.veauth.base_veauth import BaseVeAuth
|
|
20
|
+
from veadk.utils.logger import get_logger
|
|
21
|
+
from veadk.utils.volcengine_sign import ve_request
|
|
22
|
+
|
|
23
|
+
logger = get_logger(__name__)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class ARKVeAuth(BaseVeAuth):
|
|
27
|
+
def __init__(
|
|
28
|
+
self,
|
|
29
|
+
access_key: str = os.getenv("VOLCENGINE_ACCESS_KEY", ""),
|
|
30
|
+
secret_key: str = os.getenv("VOLCENGINE_SECRET_KEY", ""),
|
|
31
|
+
) -> None:
|
|
32
|
+
super().__init__(access_key, secret_key)
|
|
33
|
+
|
|
34
|
+
self._token: str = ""
|
|
35
|
+
|
|
36
|
+
@override
|
|
37
|
+
def _fetch_token(self) -> None:
|
|
38
|
+
logger.info("Fetching ARK token...")
|
|
39
|
+
# list api keys
|
|
40
|
+
first_api_key_id = ""
|
|
41
|
+
res = ve_request(
|
|
42
|
+
request_body={"ProjectName": "default", "Filter": {}},
|
|
43
|
+
action="ListApiKeys",
|
|
44
|
+
ak=self.access_key,
|
|
45
|
+
sk=self.secret_key,
|
|
46
|
+
service="ark",
|
|
47
|
+
version="2024-01-01",
|
|
48
|
+
region="cn-beijing",
|
|
49
|
+
host="open.volcengineapi.com",
|
|
50
|
+
)
|
|
51
|
+
try:
|
|
52
|
+
first_api_key_id = res["Result"]["Items"][0]["Id"]
|
|
53
|
+
except KeyError:
|
|
54
|
+
raise ValueError(f"Failed to get ARK api key list: {res}")
|
|
55
|
+
|
|
56
|
+
# get raw api key
|
|
57
|
+
res = ve_request(
|
|
58
|
+
request_body={"Id": first_api_key_id},
|
|
59
|
+
action="GetRawApiKey",
|
|
60
|
+
ak=self.access_key,
|
|
61
|
+
sk=self.secret_key,
|
|
62
|
+
service="ark",
|
|
63
|
+
version="2024-01-01",
|
|
64
|
+
region="cn-beijing",
|
|
65
|
+
host="open.volcengineapi.com",
|
|
66
|
+
)
|
|
67
|
+
try:
|
|
68
|
+
self._token = res["Result"]["ApiKey"]
|
|
69
|
+
except KeyError:
|
|
70
|
+
raise ValueError(f"Failed to get ARK api key: {res}")
|
|
71
|
+
|
|
72
|
+
@property
|
|
73
|
+
def token(self) -> str:
|
|
74
|
+
if self._token:
|
|
75
|
+
return self._token
|
|
76
|
+
self._fetch_token()
|
|
77
|
+
return self._token
|