veadk-python 0.2.15__tar.gz → 0.2.17__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.15 → veadk_python-0.2.17}/PKG-INFO +1 -1
- {veadk_python-0.2.15 → veadk_python-0.2.17}/pyproject.toml +1 -1
- {veadk_python-0.2.15 → veadk_python-0.2.17}/tests/test_agent.py +1 -1
- {veadk_python-0.2.15 → veadk_python-0.2.17}/tests/test_tracing.py +4 -4
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/a2a/remote_ve_agent.py +56 -1
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/agent.py +118 -26
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/agents/loop_agent.py +22 -9
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/agents/parallel_agent.py +21 -9
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/agents/sequential_agent.py +18 -9
- veadk_python-0.2.17/veadk/auth/veauth/apmplus_veauth.py +58 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/auth/veauth/ark_veauth.py +3 -1
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/auth/veauth/utils.py +12 -0
- veadk_python-0.2.17/veadk/auth/veauth/viking_mem0_veauth.py +91 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/cli/cli.py +5 -1
- veadk_python-0.2.17/veadk/cli/cli_create.py +163 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/cli/cli_deploy.py +36 -1
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/cli/cli_eval.py +55 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/cli/cli_init.py +44 -3
- veadk_python-0.2.17/veadk/cli/cli_kb.py +110 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/cli/cli_pipeline.py +66 -1
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/cli/cli_prompt.py +16 -1
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/cli/cli_uploadevalset.py +15 -1
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/cli/cli_web.py +35 -4
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/cloud/cloud_agent_engine.py +142 -25
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/cloud/cloud_app.py +219 -12
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/config.py +12 -1
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/configs/database_configs.py +4 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/configs/model_configs.py +5 -1
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/configs/tracing_configs.py +2 -2
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/evaluation/adk_evaluator/adk_evaluator.py +77 -17
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/evaluation/base_evaluator.py +219 -3
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/evaluation/deepeval_evaluator/deepeval_evaluator.py +116 -1
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/evaluation/eval_set_file_loader.py +20 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/evaluation/eval_set_recorder.py +54 -0
- veadk_python-0.2.17/veadk/evaluation/types.py +65 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/evaluation/utils/prometheus.py +61 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/knowledgebase/backends/base_backend.py +14 -1
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/knowledgebase/backends/in_memory_backend.py +10 -1
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/knowledgebase/backends/opensearch_backend.py +26 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/knowledgebase/backends/redis_backend.py +29 -2
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/knowledgebase/backends/vikingdb_knowledge_backend.py +43 -5
- veadk_python-0.2.17/veadk/knowledgebase/knowledgebase.py +307 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/memory/long_term_memory.py +148 -4
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/memory/long_term_memory_backends/mem0_backend.py +11 -0
- veadk_python-0.2.17/veadk/memory/short_term_memory.py +246 -0
- veadk_python-0.2.17/veadk/runner.py +813 -0
- veadk_python-0.2.17/veadk/tools/builtin_tools/llm_shield.py +381 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/tools/builtin_tools/mcp_router.py +9 -2
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/tools/builtin_tools/run_code.py +30 -6
- veadk_python-0.2.17/veadk/tools/builtin_tools/web_search.py +83 -0
- veadk_python-0.2.17/veadk/tracing/base_tracer.py +58 -0
- veadk_python-0.2.17/veadk/tracing/telemetry/attributes/extractors/common_attributes_extractors.py +180 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/tracing/telemetry/attributes/extractors/llm_attributes_extractors.py +260 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/tracing/telemetry/attributes/extractors/tool_attributes_extractors.py +69 -0
- veadk_python-0.2.17/veadk/tracing/telemetry/attributes/extractors/types.py +164 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/tracing/telemetry/exporters/apmplus_exporter.py +157 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/tracing/telemetry/exporters/base_exporter.py +8 -0
- veadk_python-0.2.17/veadk/tracing/telemetry/exporters/cozeloop_exporter.py +129 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/tracing/telemetry/exporters/inmemory_exporter.py +118 -1
- veadk_python-0.2.17/veadk/tracing/telemetry/exporters/tls_exporter.py +139 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/tracing/telemetry/opentelemetry_tracer.py +117 -4
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/tracing/telemetry/telemetry.py +118 -2
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/utils/misc.py +7 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/version.py +1 -1
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk_python.egg-info/PKG-INFO +1 -1
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk_python.egg-info/SOURCES.txt +2 -0
- veadk_python-0.2.15/veadk/auth/veauth/apmplus_veauth.py +0 -65
- veadk_python-0.2.15/veadk/cli/cli_create.py +0 -122
- veadk_python-0.2.15/veadk/cli/cli_kb.py +0 -75
- veadk_python-0.2.15/veadk/evaluation/types.py +0 -33
- veadk_python-0.2.15/veadk/knowledgebase/knowledgebase.py +0 -146
- veadk_python-0.2.15/veadk/memory/short_term_memory.py +0 -132
- veadk_python-0.2.15/veadk/runner.py +0 -402
- veadk_python-0.2.15/veadk/tools/builtin_tools/web_search.py +0 -199
- veadk_python-0.2.15/veadk/tracing/base_tracer.py +0 -31
- veadk_python-0.2.15/veadk/tracing/telemetry/attributes/extractors/common_attributes_extractors.py +0 -76
- veadk_python-0.2.15/veadk/tracing/telemetry/attributes/extractors/types.py +0 -86
- veadk_python-0.2.15/veadk/tracing/telemetry/exporters/cozeloop_exporter.py +0 -70
- veadk_python-0.2.15/veadk/tracing/telemetry/exporters/tls_exporter.py +0 -73
- {veadk_python-0.2.15 → veadk_python-0.2.17}/LICENSE +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/README.md +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/setup.cfg +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/tests/test_cloud.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/tests/test_evaluator.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/tests/test_knowledgebase.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/tests/test_long_term_memory.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/tests/test_multiple_agents.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/tests/test_runner.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/tests/test_runtime_data_collecting.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/tests/test_short_term_memory.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/__init__.py +0 -0
- {veadk_python-0.2.15/veadk/utils → veadk_python-0.2.17/veadk/a2a}/__init__.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/a2a/agent_card.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/a2a/ve_a2a_server.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/a2a/ve_agent_executor.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/a2a/ve_task_store.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/agent_builder.py +0 -0
- {veadk_python-0.2.15/veadk/tracing/telemetry/exporters → veadk_python-0.2.17/veadk/auth}/__init__.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/auth/base_auth.py +0 -0
- {veadk_python-0.2.15/veadk/tracing/telemetry → veadk_python-0.2.17/veadk/auth/veauth}/__init__.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/auth/veauth/base_veauth.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/auth/veauth/cozeloop_veauth.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/auth/veauth/opensearch_veauth.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/auth/veauth/postgresql_veauth.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/auth/veauth/prompt_pilot_veauth.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/auth/veauth/vesearch_veauth.py +0 -0
- {veadk_python-0.2.15/veadk/tracing → veadk_python-0.2.17/veadk/cli}/__init__.py +0 -0
- {veadk_python-0.2.15/veadk/tools/sandbox → veadk_python-0.2.17/veadk/cloud}/__init__.py +0 -0
- {veadk_python-0.2.15/veadk/tools/builtin_tools → veadk_python-0.2.17/veadk/configs}/__init__.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/configs/tool_configs.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/consts.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/evaluation/__init__.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/evaluation/adk_evaluator/__init__.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/evaluation/deepeval_evaluator/__init__.py +0 -0
- {veadk_python-0.2.15/veadk/tools → veadk_python-0.2.17/veadk/integrations}/__init__.py +0 -0
- {veadk_python-0.2.15/veadk/prompts → veadk_python-0.2.17/veadk/integrations/ve_apig}/__init__.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_apig/ve_apig.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_apig/ve_apig_utils.py +0 -0
- {veadk_python-0.2.15/veadk/memory/short_term_memory_backends → veadk_python-0.2.17/veadk/integrations/ve_code_pipeline}/__init__.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_code_pipeline/ve_code_pipeline.py +0 -0
- {veadk_python-0.2.15/veadk/memory/long_term_memory_backends → veadk_python-0.2.17/veadk/integrations/ve_cozeloop}/__init__.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_cozeloop/ve_cozeloop.py +0 -0
- {veadk_python-0.2.15/veadk/knowledgebase/backends → veadk_python-0.2.17/veadk/integrations/ve_cr}/__init__.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_cr/ve_cr.py +0 -0
- {veadk_python-0.2.15/veadk/integrations/ve_viking_db_memory → veadk_python-0.2.17/veadk/integrations/ve_faas}/__init__.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_faas/template/cookiecutter.json +0 -0
- {veadk_python-0.2.15/veadk/integrations/ve_tls → veadk_python-0.2.17/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}}/__init__.py +0 -0
- {veadk_python-0.2.15/veadk/integrations/ve_faas/web_template → veadk_python-0.2.17/veadk/integrations/ve_faas/template}/{{cookiecutter.local_dir_name}}/clean.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/config.yaml.example +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/deploy.py +0 -0
- {veadk_python-0.2.15/veadk/integrations/ve_prompt_pilot → veadk_python-0.2.17/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src}/__init__.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/agent.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/app.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/requirements.txt +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/run.sh +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name }}/__init__.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name }}/agent.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_faas/ve_faas.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_faas/ve_faas_utils.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_faas/web_template/cookiecutter.json +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/__init__.py +0 -0
- {veadk_python-0.2.15/veadk/integrations/ve_faas/template → veadk_python-0.2.17/veadk/integrations/ve_faas/web_template}/{{cookiecutter.local_dir_name}}/clean.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/config.yaml.example +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/deploy.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/Dockerfile +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/app.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/init_db.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/models.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/requirements.txt +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/run.sh +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/static/css/style.css +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/static/js/admin.js +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/dashboard.html +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/edit_post.html +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/login.html +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/posts.html +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/base.html +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/index.html +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/post.html +0 -0
- {veadk_python-0.2.15/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src → veadk_python-0.2.17/veadk/integrations/ve_prompt_pilot}/__init__.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_prompt_pilot/ve_prompt_pilot.py +0 -0
- {veadk_python-0.2.15/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}} → veadk_python-0.2.17/veadk/integrations/ve_tls}/__init__.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_tls/utils.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_tls/ve_tls.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_tos/ve_tos.py +0 -0
- {veadk_python-0.2.15/veadk/integrations/ve_faas → veadk_python-0.2.17/veadk/integrations/ve_viking_db_memory}/__init__.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/integrations/ve_viking_db_memory/ve_viking_db_memory.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/knowledgebase/__init__.py +0 -0
- {veadk_python-0.2.15/veadk/integrations/ve_cr → veadk_python-0.2.17/veadk/knowledgebase/backends}/__init__.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/knowledgebase/backends/utils.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/knowledgebase/entry.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/memory/__init__.py +0 -0
- {veadk_python-0.2.15/veadk/integrations/ve_cozeloop → veadk_python-0.2.17/veadk/memory/long_term_memory_backends}/__init__.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/memory/long_term_memory_backends/base_backend.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/memory/long_term_memory_backends/in_memory_backend.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/memory/long_term_memory_backends/opensearch_backend.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/memory/long_term_memory_backends/redis_backend.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/memory/long_term_memory_backends/vikingdb_memory_backend.py +0 -0
- {veadk_python-0.2.15/veadk/integrations/ve_code_pipeline → veadk_python-0.2.17/veadk/memory/short_term_memory_backends}/__init__.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/memory/short_term_memory_backends/base_backend.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/memory/short_term_memory_backends/mysql_backend.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/memory/short_term_memory_backends/postgresql_backend.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/memory/short_term_memory_backends/sqlite_backend.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/memory/short_term_memory_processor.py +0 -0
- {veadk_python-0.2.15/veadk/integrations/ve_apig → veadk_python-0.2.17/veadk/prompts}/__init__.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/prompts/agent_default_prompt.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/prompts/prompt_evaluator.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/prompts/prompt_memory_processor.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/prompts/prompt_optimization.py +0 -0
- {veadk_python-0.2.15/veadk/integrations → veadk_python-0.2.17/veadk/tools}/__init__.py +0 -0
- {veadk_python-0.2.15/veadk/configs → veadk_python-0.2.17/veadk/tools/builtin_tools}/__init__.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/tools/builtin_tools/generate_image.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/tools/builtin_tools/image_edit.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/tools/builtin_tools/image_generate.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/tools/builtin_tools/lark.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/tools/builtin_tools/las.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/tools/builtin_tools/load_knowledgebase.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/tools/builtin_tools/vesearch.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/tools/builtin_tools/video_generate.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/tools/builtin_tools/web_scraper.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/tools/demo_tools.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/tools/load_knowledgebase_tool.py +0 -0
- {veadk_python-0.2.15/veadk/cloud → veadk_python-0.2.17/veadk/tools/sandbox}/__init__.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/tools/sandbox/browser_sandbox.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/tools/sandbox/code_sandbox.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/tools/sandbox/computer_sandbox.py +0 -0
- {veadk_python-0.2.15/veadk/cli → veadk_python-0.2.17/veadk/tracing}/__init__.py +0 -0
- {veadk_python-0.2.15/veadk/auth/veauth → veadk_python-0.2.17/veadk/tracing/telemetry}/__init__.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/tracing/telemetry/attributes/attributes.py +0 -0
- {veadk_python-0.2.15/veadk/auth → veadk_python-0.2.17/veadk/tracing/telemetry/exporters}/__init__.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/types.py +0 -0
- {veadk_python-0.2.15/veadk/a2a → veadk_python-0.2.17/veadk/utils}/__init__.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/utils/logger.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/utils/mcp_utils.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/utils/patches.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk/utils/volcengine_sign.py +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk_python.egg-info/dependency_links.txt +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk_python.egg-info/entry_points.txt +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/veadk_python.egg-info/requires.txt +0 -0
- {veadk_python-0.2.15 → veadk_python-0.2.17}/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.17
|
|
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
|
|
@@ -88,7 +88,7 @@ def test_agent_default_values():
|
|
|
88
88
|
assert agent.sub_agents == []
|
|
89
89
|
assert agent.knowledgebase is None
|
|
90
90
|
assert agent.long_term_memory is None
|
|
91
|
-
assert agent.tracers == []
|
|
91
|
+
# assert agent.tracers == []
|
|
92
92
|
|
|
93
93
|
|
|
94
94
|
@patch.dict("os.environ", {"MODEL_AGENT_API_KEY": "mock_api_key"})
|
|
@@ -82,7 +82,7 @@ async def test_tracing():
|
|
|
82
82
|
exporters = init_exporters()
|
|
83
83
|
tracer = OpentelemetryTracer(exporters=exporters)
|
|
84
84
|
|
|
85
|
-
assert len(tracer.exporters) ==
|
|
85
|
+
assert len(tracer.exporters) == 4 # with extra 1 built-in exporters
|
|
86
86
|
|
|
87
87
|
# TODO: Ensure the tracing provider is set correctly after loading SDK
|
|
88
88
|
|
|
@@ -98,7 +98,7 @@ async def test_tracing_with_global_provider():
|
|
|
98
98
|
#
|
|
99
99
|
tracer = OpentelemetryTracer(exporters=exporters)
|
|
100
100
|
|
|
101
|
-
assert len(tracer.exporters) ==
|
|
101
|
+
assert len(tracer.exporters) == 4 # with extra 1 built-in exporters
|
|
102
102
|
|
|
103
103
|
|
|
104
104
|
@pytest.mark.asyncio
|
|
@@ -112,5 +112,5 @@ async def test_tracing_with_apmplus_global_provider():
|
|
|
112
112
|
# init OpentelemetryTracer
|
|
113
113
|
tracer = OpentelemetryTracer(exporters=exporters)
|
|
114
114
|
|
|
115
|
-
# apmplus exporter won't init again
|
|
116
|
-
assert len(tracer.exporters) ==
|
|
115
|
+
# apmplus exporter won't init again, so there are cozeloop, tls, in_memory exporter
|
|
116
|
+
assert len(tracer.exporters) == 3 # with extra 1 built-in exporters
|
|
@@ -34,7 +34,62 @@ def _convert_agent_card_dict_to_obj(agent_card_dict: dict) -> AgentCard:
|
|
|
34
34
|
|
|
35
35
|
|
|
36
36
|
class RemoteVeAgent(RemoteA2aAgent):
|
|
37
|
-
"""Connect to remote agent on VeFaaS platform.
|
|
37
|
+
"""Connect to a remote agent on the VeFaaS platform.
|
|
38
|
+
|
|
39
|
+
This class provides an interface to remotely connect with an agent deployed on the VeFaaS platform. It automatically fetches the agent card (metadata) and configures an HTTP client for secure communication. Authentication can be handled either via a bearer token in the HTTP header or via a query string parameter.
|
|
40
|
+
|
|
41
|
+
The class extends `RemoteA2aAgent` to provide compatibility with the A2A (Agent-to-Agent) communication layer.
|
|
42
|
+
|
|
43
|
+
This constructor connects to a remote VeFaaS agent endpoint, retrieves its metadata (`agent_card`), and sets up an asynchronous HTTP client (`httpx.AsyncClient`) for subsequent communication. Depending on the provided authentication parameters, it supports three connection modes:
|
|
44
|
+
- **No authentication:** Directly fetches the agent card.
|
|
45
|
+
- **Header authentication:** Sends a bearer token in the `Authorization` header.
|
|
46
|
+
- **Query string authentication:** Appends the token to the URL query.
|
|
47
|
+
|
|
48
|
+
Attributes:
|
|
49
|
+
name (str):
|
|
50
|
+
A unique name identifying this remote agent instance.
|
|
51
|
+
url (str):
|
|
52
|
+
The base URL of the remote agent on the VeFaaS platform.
|
|
53
|
+
auth_token (str | None):
|
|
54
|
+
Optional authentication token used for secure access.
|
|
55
|
+
If not provided, the agent will be accessed without authentication.
|
|
56
|
+
auth_method (Literal["header", "querystring"] | None):
|
|
57
|
+
The method of attaching the authentication token.
|
|
58
|
+
- `"header"`: Token is passed via HTTP `Authorization` header.
|
|
59
|
+
- `"querystring"`: Token is passed as a query parameter.
|
|
60
|
+
- `None`: No authentication used.
|
|
61
|
+
|
|
62
|
+
Raises:
|
|
63
|
+
ValueError:
|
|
64
|
+
If an unsupported `auth_method` is provided when `auth_token` is set.
|
|
65
|
+
requests.RequestException:
|
|
66
|
+
If fetching the agent card from the remote URL fails.
|
|
67
|
+
|
|
68
|
+
Examples:
|
|
69
|
+
```python
|
|
70
|
+
# Example 1: No authentication
|
|
71
|
+
agent = RemoteVeAgent(
|
|
72
|
+
name="public_agent",
|
|
73
|
+
url="https://vefaas.example.com/agents/public"
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
# Example 2: Using Bearer token in header
|
|
77
|
+
agent = RemoteVeAgent(
|
|
78
|
+
name="secured_agent",
|
|
79
|
+
url="https://vefaas.example.com/agents/secure",
|
|
80
|
+
auth_token="my_secret_token",
|
|
81
|
+
auth_method="header"
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
# Example 3: Using token in query string
|
|
85
|
+
agent = RemoteVeAgent(
|
|
86
|
+
name="query_agent",
|
|
87
|
+
url="https://vefaas.example.com/agents/query",
|
|
88
|
+
auth_token="my_secret_token",
|
|
89
|
+
auth_method="querystring"
|
|
90
|
+
)
|
|
91
|
+
```
|
|
92
|
+
"""
|
|
38
93
|
|
|
39
94
|
def __init__(
|
|
40
95
|
self,
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
from __future__ import annotations
|
|
16
16
|
|
|
17
|
+
import os
|
|
17
18
|
from typing import Optional, Union
|
|
18
19
|
|
|
19
20
|
from google.adk.agents import LlmAgent, RunConfig
|
|
@@ -46,55 +47,108 @@ logger = get_logger(__name__)
|
|
|
46
47
|
|
|
47
48
|
|
|
48
49
|
class Agent(LlmAgent):
|
|
49
|
-
"""LLM-based Agent with Volcengine capabilities.
|
|
50
|
+
"""LLM-based Agent with Volcengine capabilities.
|
|
51
|
+
|
|
52
|
+
This class represents an intelligent agent powered by LLMs (Large Language Models),
|
|
53
|
+
integrated with Volcengine's AI framework. It supports memory modules, sub-agents,
|
|
54
|
+
tracers, knowledge bases, and other advanced features for A2A (Agent-to-Agent)
|
|
55
|
+
or user-facing scenarios.
|
|
56
|
+
|
|
57
|
+
Attributes:
|
|
58
|
+
name (str): The name of the agent.
|
|
59
|
+
description (str): A description of the agent, useful in A2A scenarios.
|
|
60
|
+
instruction (Union[str, InstructionProvider]): The instruction or instruction provider.
|
|
61
|
+
model_name (str): Name of the model used by the agent.
|
|
62
|
+
model_provider (str): Provider of the model (e.g., openai).
|
|
63
|
+
model_api_base (str): The base URL of the model API.
|
|
64
|
+
model_api_key (str): The API key for accessing the model.
|
|
65
|
+
model_extra_config (dict): Extra configurations to include in model requests.
|
|
66
|
+
tools (list[ToolUnion]): Tools available to the agent.
|
|
67
|
+
sub_agents (list[BaseAgent]): Sub-agents managed by this agent.
|
|
68
|
+
knowledgebase (Optional[KnowledgeBase]): Knowledge base attached to the agent.
|
|
69
|
+
short_term_memory (Optional[ShortTermMemory]): Session-based memory for temporary context.
|
|
70
|
+
long_term_memory (Optional[LongTermMemory]): Cross-session memory for persistent user context.
|
|
71
|
+
tracers (list[BaseTracer]): List of tracers used for telemetry and monitoring.
|
|
72
|
+
|
|
73
|
+
Notes:
|
|
74
|
+
Before creating your agent, you should get the API Key for your model.
|
|
75
|
+
|
|
76
|
+
Examples:
|
|
77
|
+
### Simple agent
|
|
78
|
+
|
|
79
|
+
Create a simplest agent without any extra settings. All agent attributes are come from environment variables and default values. Like:
|
|
80
|
+
|
|
81
|
+
```python
|
|
82
|
+
import asyncio
|
|
83
|
+
|
|
84
|
+
from veadk import Agent, Runner
|
|
85
|
+
|
|
86
|
+
root_agent = Agent()
|
|
87
|
+
|
|
88
|
+
runner = Runner(agent=root_agent)
|
|
89
|
+
|
|
90
|
+
response = asyncio.run(runner.run("hello"))
|
|
91
|
+
print(response)
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
You can set some agent metadata attributes by the following code:
|
|
95
|
+
|
|
96
|
+
```python
|
|
97
|
+
from veadk import Agent
|
|
98
|
+
|
|
99
|
+
from veadk import Agent, Runner
|
|
100
|
+
|
|
101
|
+
root_agent = Agent(
|
|
102
|
+
name="meeting_assistant",
|
|
103
|
+
description="An assistant that helps user to make meetings.",
|
|
104
|
+
# system prompt
|
|
105
|
+
instruction="First learn about user's meeting time, location, and other key informations, and give out a meeting plan.",
|
|
106
|
+
)
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Or, once you want to use your local-serving model or models from other provider, you can specify some model-related configurations in initiation arguments:
|
|
110
|
+
|
|
111
|
+
```python
|
|
112
|
+
agent = Agent(model_name="", model_api_key="", model_api_base="")
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Besides, you can specify some extra options by ARK requirements, such as:
|
|
116
|
+
|
|
117
|
+
```python
|
|
118
|
+
# disable thinking
|
|
119
|
+
model_extra_config = {}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
In some systems, mulitple-agent based design is necessary, you can implement a multiple-agent system by `sub_agent` argument:
|
|
123
|
+
|
|
124
|
+
```python
|
|
125
|
+
from veadk import Agent
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
"""
|
|
50
129
|
|
|
51
130
|
model_config = ConfigDict(arbitrary_types_allowed=True, extra="allow")
|
|
52
|
-
"""The model config"""
|
|
53
131
|
|
|
54
132
|
name: str = DEFAULT_AGENT_NAME
|
|
55
|
-
"""The name of the agent."""
|
|
56
|
-
|
|
57
133
|
description: str = DEFAULT_DESCRIPTION
|
|
58
|
-
"""The description of the agent. This will be helpful in A2A scenario."""
|
|
59
|
-
|
|
60
134
|
instruction: Union[str, InstructionProvider] = DEFAULT_INSTRUCTION
|
|
61
|
-
"""The instruction for the agent."""
|
|
62
135
|
|
|
63
136
|
model_name: str = Field(default_factory=lambda: settings.model.name)
|
|
64
|
-
"""The name of the model for agent running."""
|
|
65
|
-
|
|
66
137
|
model_provider: str = Field(default_factory=lambda: settings.model.provider)
|
|
67
|
-
"""The provider of the model for agent running."""
|
|
68
|
-
|
|
69
138
|
model_api_base: str = Field(default_factory=lambda: settings.model.api_base)
|
|
70
|
-
"""The api base of the model for agent running."""
|
|
71
|
-
|
|
72
139
|
model_api_key: str = Field(default_factory=lambda: settings.model.api_key)
|
|
73
|
-
"""The api key of the model for agent running."""
|
|
74
|
-
|
|
75
140
|
model_extra_config: dict = Field(default_factory=dict)
|
|
76
|
-
"""The extra config to include in the model requests."""
|
|
77
141
|
|
|
78
142
|
tools: list[ToolUnion] = []
|
|
79
|
-
"""The tools provided to agent."""
|
|
80
143
|
|
|
81
144
|
sub_agents: list[BaseAgent] = Field(default_factory=list, exclude=True)
|
|
82
|
-
"""The sub agents provided to agent."""
|
|
83
145
|
|
|
84
146
|
knowledgebase: Optional[KnowledgeBase] = None
|
|
85
|
-
"""The knowledgebase provided to agent."""
|
|
86
147
|
|
|
87
148
|
short_term_memory: Optional[ShortTermMemory] = None
|
|
88
|
-
"""The short term memory provided to agent."""
|
|
89
|
-
|
|
90
149
|
long_term_memory: Optional[LongTermMemory] = None
|
|
91
|
-
"""The long term memory provided to agent.
|
|
92
|
-
|
|
93
|
-
In VeADK, the `long_term_memory` refers to cross-session memory under the same user.
|
|
94
|
-
"""
|
|
95
150
|
|
|
96
151
|
tracers: list[BaseTracer] = []
|
|
97
|
-
"""The tracers provided to agent."""
|
|
98
152
|
|
|
99
153
|
def model_post_init(self, __context: Any) -> None:
|
|
100
154
|
super().model_post_init(None) # for sub_agents init
|
|
@@ -132,6 +186,8 @@ class Agent(LlmAgent):
|
|
|
132
186
|
"You are trying to use your own LiteLLM client, some default request headers may be missing."
|
|
133
187
|
)
|
|
134
188
|
|
|
189
|
+
self._prepare_tracers()
|
|
190
|
+
|
|
135
191
|
if self.knowledgebase:
|
|
136
192
|
from veadk.tools.builtin_tools.load_knowledgebase import (
|
|
137
193
|
LoadKnowledgebaseTool,
|
|
@@ -194,6 +250,42 @@ class Agent(LlmAgent):
|
|
|
194
250
|
|
|
195
251
|
return final_output
|
|
196
252
|
|
|
253
|
+
def _prepare_tracers(self):
|
|
254
|
+
enable_apmplus_tracer = os.getenv("ENABLE_APMPLUS", "false").lower() == "true"
|
|
255
|
+
enable_cozeloop_tracer = os.getenv("ENABLE_COZELOOP", "false").lower() == "true"
|
|
256
|
+
enable_tls_tracer = os.getenv("ENABLE_TLS", "false").lower() == "true"
|
|
257
|
+
|
|
258
|
+
if not self.tracers:
|
|
259
|
+
from veadk.tracing.telemetry.opentelemetry_tracer import OpentelemetryTracer
|
|
260
|
+
|
|
261
|
+
self.tracers.append(OpentelemetryTracer())
|
|
262
|
+
|
|
263
|
+
exporters = self.tracers[0].exporters # type: ignore
|
|
264
|
+
|
|
265
|
+
from veadk.tracing.telemetry.exporters.apmplus_exporter import APMPlusExporter
|
|
266
|
+
from veadk.tracing.telemetry.exporters.cozeloop_exporter import CozeloopExporter
|
|
267
|
+
from veadk.tracing.telemetry.exporters.tls_exporter import TLSExporter
|
|
268
|
+
|
|
269
|
+
if enable_apmplus_tracer and not any(
|
|
270
|
+
isinstance(e, APMPlusExporter) for e in exporters
|
|
271
|
+
):
|
|
272
|
+
self.tracers[0].exporters.append(APMPlusExporter()) # type: ignore
|
|
273
|
+
logger.info("Enable APMPlus exporter by env.")
|
|
274
|
+
|
|
275
|
+
if enable_cozeloop_tracer and not any(
|
|
276
|
+
isinstance(e, CozeloopExporter) for e in exporters
|
|
277
|
+
):
|
|
278
|
+
self.tracers[0].exporters.append(CozeloopExporter()) # type: ignore
|
|
279
|
+
logger.info("Enable CozeLoop exporter by env.")
|
|
280
|
+
|
|
281
|
+
if enable_tls_tracer and not any(isinstance(e, TLSExporter) for e in exporters):
|
|
282
|
+
self.tracers[0].exporters.append(TLSExporter()) # type: ignore
|
|
283
|
+
logger.info("Enable TLS exporter by env.")
|
|
284
|
+
|
|
285
|
+
logger.debug(
|
|
286
|
+
f"Opentelemetry Tracer init {len(self.tracers[0].exporters)} exporters" # type: ignore
|
|
287
|
+
)
|
|
288
|
+
|
|
197
289
|
async def run(
|
|
198
290
|
self,
|
|
199
291
|
prompt: str | list[str],
|
|
@@ -29,25 +29,38 @@ logger = get_logger(__name__)
|
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
class LoopAgent(GoogleADKLoopAgent):
|
|
32
|
-
"""Loop Agent with
|
|
32
|
+
"""Loop Agent with several sub agents.
|
|
33
|
+
|
|
34
|
+
This agent is capable of looping through and executing all sub-agents sequentially
|
|
35
|
+
or based on specific conditions. It is designed to operate in environments where
|
|
36
|
+
multiple agents need to work together in a looped execution flow, such as handling
|
|
37
|
+
complex, multi-step tasks or workflows. The agent integrates Volcengine’s AI
|
|
38
|
+
capabilities and supports a variety of tools and tracers for enhanced functionality
|
|
39
|
+
and performance monitoring.
|
|
40
|
+
|
|
41
|
+
Attributes:
|
|
42
|
+
model_config (ConfigDict): Configuration dictionary for the model.
|
|
43
|
+
name (str): The name of the agent, default is "veLoopAgent".
|
|
44
|
+
description (str): A description of the agent, helpful in A2A scenarios.
|
|
45
|
+
instruction (str): Instructions or principles for function calling and agent execution.
|
|
46
|
+
sub_agents (list[BaseAgent]): A list of sub-agents managed by the loop agent. Each sub-agent
|
|
47
|
+
is executed in a looped sequence based on the agent's logic.
|
|
48
|
+
tracers (list[BaseTracer]): A list of tracers used for monitoring the agent's performance
|
|
49
|
+
and behavior during execution.
|
|
50
|
+
|
|
51
|
+
Examples:
|
|
52
|
+
|
|
53
|
+
"""
|
|
33
54
|
|
|
34
55
|
model_config = ConfigDict(arbitrary_types_allowed=True, extra="allow")
|
|
35
|
-
"""The model config"""
|
|
36
56
|
|
|
37
57
|
name: str = "veLoopAgent"
|
|
38
|
-
"""The name of the agent."""
|
|
39
|
-
|
|
40
58
|
description: str = DEFAULT_DESCRIPTION
|
|
41
|
-
"""The description of the agent. This will be helpful in A2A scenario."""
|
|
42
|
-
|
|
43
59
|
instruction: str = DEFAULT_INSTRUCTION
|
|
44
|
-
"""The instruction for the agent, such as principles of function calling."""
|
|
45
60
|
|
|
46
61
|
sub_agents: list[BaseAgent] = Field(default_factory=list, exclude=True)
|
|
47
|
-
"""The sub agents provided to agent."""
|
|
48
62
|
|
|
49
63
|
tracers: list[BaseTracer] = []
|
|
50
|
-
"""The tracers provided to agent."""
|
|
51
64
|
|
|
52
65
|
def model_post_init(self, __context: Any) -> None:
|
|
53
66
|
super().model_post_init(None) # for sub_agents init
|
|
@@ -29,25 +29,37 @@ logger = get_logger(__name__)
|
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
class ParallelAgent(GoogleADKParallelAgent):
|
|
32
|
-
"""LLM-based Agent
|
|
32
|
+
"""LLM-based Agent that can execute sub-agents in parallel.
|
|
33
|
+
|
|
34
|
+
This agent is capable of executing multiple sub-agents concurrently, making it suitable
|
|
35
|
+
for scenarios that require parallel execution of multiple tasks or operations. By leveraging
|
|
36
|
+
parallelism, the agent can handle more complex workflows and improve efficiency by performing
|
|
37
|
+
independent tasks simultaneously. This design is ideal for scenarios where tasks are independent
|
|
38
|
+
and can benefit from reduced execution time.
|
|
39
|
+
|
|
40
|
+
Attributes:
|
|
41
|
+
model_config (ConfigDict): Configuration dictionary for the model.
|
|
42
|
+
name (str): The name of the agent, default is "veParallelAgent".
|
|
43
|
+
description (str): A description of the agent, useful in A2A scenarios.
|
|
44
|
+
instruction (str): Instructions or principles for function calling and agent execution.
|
|
45
|
+
sub_agents (list[BaseAgent]): A list of sub-agents managed by the parallel agent.
|
|
46
|
+
Each sub-agent is executed concurrently.
|
|
47
|
+
tracers (list[BaseTracer]): A list of tracers used for monitoring the agent's performance
|
|
48
|
+
and behavior during parallel execution.
|
|
49
|
+
|
|
50
|
+
Examples:
|
|
51
|
+
|
|
52
|
+
"""
|
|
33
53
|
|
|
34
54
|
model_config = ConfigDict(arbitrary_types_allowed=True, extra="allow")
|
|
35
|
-
"""The model config"""
|
|
36
55
|
|
|
37
56
|
name: str = "veParallelAgent"
|
|
38
|
-
"""The name of the agent."""
|
|
39
|
-
|
|
40
57
|
description: str = DEFAULT_DESCRIPTION
|
|
41
|
-
"""The description of the agent. This will be helpful in A2A scenario."""
|
|
42
|
-
|
|
43
58
|
instruction: str = DEFAULT_INSTRUCTION
|
|
44
|
-
"""The instruction for the agent, such as principles of function calling."""
|
|
45
59
|
|
|
46
60
|
sub_agents: list[BaseAgent] = Field(default_factory=list, exclude=True)
|
|
47
|
-
"""The sub agents provided to agent."""
|
|
48
61
|
|
|
49
62
|
tracers: list[BaseTracer] = []
|
|
50
|
-
"""The tracers provided to agent."""
|
|
51
63
|
|
|
52
64
|
def model_post_init(self, __context: Any) -> None:
|
|
53
65
|
super().model_post_init(None) # for sub_agents init
|
|
@@ -29,25 +29,34 @@ logger = get_logger(__name__)
|
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
class SequentialAgent(GoogleADKSequentialAgent):
|
|
32
|
-
"""Sequential Agent
|
|
32
|
+
"""Sequential Agent that executes sub-agents sequentially.
|
|
33
|
+
|
|
34
|
+
This agent is designed to execute multiple sub-agents in a predefined sequential order.
|
|
35
|
+
It ensures that each sub-agent is executed one after the other, making it suitable for
|
|
36
|
+
workflows where the output of one sub-agent is needed as input for the next. The agent
|
|
37
|
+
is well-suited for tasks that require a linear progression of steps or operations, ensuring
|
|
38
|
+
that the execution flow is maintained.
|
|
39
|
+
|
|
40
|
+
Attributes:
|
|
41
|
+
model_config (ConfigDict): Configuration dictionary for the model.
|
|
42
|
+
name (str): The name of the agent, default is "veSequentialAgent".
|
|
43
|
+
description (str): A description of the agent, useful in A2A scenarios.
|
|
44
|
+
instruction (str): Instructions or principles for function calling and agent execution.
|
|
45
|
+
sub_agents (list[BaseAgent]): A list of sub-agents managed by the sequential agent.
|
|
46
|
+
Each sub-agent is executed in the order they are listed.
|
|
47
|
+
tracers (list[BaseTracer]): A list of tracers used for monitoring the agent's performance
|
|
48
|
+
and behavior during sequential execution.
|
|
49
|
+
"""
|
|
33
50
|
|
|
34
51
|
model_config = ConfigDict(arbitrary_types_allowed=True, extra="allow")
|
|
35
|
-
"""The model config"""
|
|
36
52
|
|
|
37
53
|
name: str = "veSequentialAgent"
|
|
38
|
-
"""The name of the agent."""
|
|
39
|
-
|
|
40
54
|
description: str = DEFAULT_DESCRIPTION
|
|
41
|
-
"""The description of the agent. This will be helpful in A2A scenario."""
|
|
42
|
-
|
|
43
55
|
instruction: str = DEFAULT_INSTRUCTION
|
|
44
|
-
"""The instruction for the agent, such as principles of function calling."""
|
|
45
56
|
|
|
46
57
|
sub_agents: list[BaseAgent] = Field(default_factory=list, exclude=True)
|
|
47
|
-
"""The sub agents provided to agent."""
|
|
48
58
|
|
|
49
59
|
tracers: list[BaseTracer] = []
|
|
50
|
-
"""The tracers provided to agent."""
|
|
51
60
|
|
|
52
61
|
def model_post_init(self, __context: Any) -> None:
|
|
53
62
|
super().model_post_init(None) # for sub_agents init
|
|
@@ -0,0 +1,58 @@
|
|
|
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_apmplus_token(region: str = "cn-beijing") -> str:
|
|
25
|
+
logger.info("Fetching APMPlus 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={},
|
|
40
|
+
header={
|
|
41
|
+
"X-Security-Token": session_token,
|
|
42
|
+
# APMPlus frontend required
|
|
43
|
+
"X-Apmplus-Region": region.replace("-", "_"),
|
|
44
|
+
},
|
|
45
|
+
action="GetAppKey",
|
|
46
|
+
ak=access_key,
|
|
47
|
+
sk=secret_key,
|
|
48
|
+
service="apmplus_server",
|
|
49
|
+
version="2024-07-30",
|
|
50
|
+
region=region,
|
|
51
|
+
host="open.volcengineapi.com",
|
|
52
|
+
)
|
|
53
|
+
try:
|
|
54
|
+
api_key = res["data"]["app_key"]
|
|
55
|
+
logger.info("Successfully fetching APMPlus API Key.")
|
|
56
|
+
return api_key
|
|
57
|
+
except KeyError:
|
|
58
|
+
raise ValueError(f"Failed to get APMPlus token: {res}")
|
|
@@ -64,6 +64,8 @@ def get_ark_token(region: str = "cn-beijing") -> str:
|
|
|
64
64
|
host="open.volcengineapi.com",
|
|
65
65
|
)
|
|
66
66
|
try:
|
|
67
|
-
|
|
67
|
+
api_key = res["Result"]["ApiKey"]
|
|
68
|
+
logger.info("Successfully fetching ARK API Key.")
|
|
69
|
+
return api_key
|
|
68
70
|
except KeyError:
|
|
69
71
|
raise ValueError(f"Failed to get ARK api key: {res}")
|
|
@@ -50,8 +50,20 @@ def get_credential_from_vefaas_iam() -> VeIAMCredential:
|
|
|
50
50
|
access_key = cred_dict["access_key_id"]
|
|
51
51
|
secret_key = cred_dict["secret_access_key"]
|
|
52
52
|
session_token = cred_dict["session_token"]
|
|
53
|
+
|
|
54
|
+
logger.info("Get credential from IAM file successfully.")
|
|
55
|
+
|
|
53
56
|
return VeIAMCredential(
|
|
54
57
|
access_key_id=access_key,
|
|
55
58
|
secret_access_key=secret_key,
|
|
56
59
|
session_token=session_token,
|
|
57
60
|
)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def refresh_ak_sk(access_key: str, secret_key: str) -> VeIAMCredential:
|
|
64
|
+
if access_key and secret_key:
|
|
65
|
+
return VeIAMCredential(
|
|
66
|
+
access_key_id=access_key, secret_access_key=secret_key, session_token=""
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
return get_credential_from_vefaas_iam()
|
|
@@ -0,0 +1,91 @@
|
|
|
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_api_key_id_by_project_id(
|
|
25
|
+
project_id: str, access_key: str, secret_key: str, session_token: str, region: str
|
|
26
|
+
):
|
|
27
|
+
res = ve_request(
|
|
28
|
+
request_body={"MemoryProjectId": project_id},
|
|
29
|
+
header={"X-Security-Token": session_token},
|
|
30
|
+
action="DescribeMemoryProjectDetail",
|
|
31
|
+
ak=access_key,
|
|
32
|
+
sk=secret_key,
|
|
33
|
+
service="mem0",
|
|
34
|
+
version="2025-10-10",
|
|
35
|
+
region=region,
|
|
36
|
+
host="open.volcengineapi.com",
|
|
37
|
+
)
|
|
38
|
+
try:
|
|
39
|
+
api_key_id = res["Result"]["APIKeyInfos"]["APIKeyId"]
|
|
40
|
+
except KeyError:
|
|
41
|
+
raise ValueError(f"Failed to get mem0 api key id: {res}")
|
|
42
|
+
|
|
43
|
+
return api_key_id
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def _get_api_key_by_api_key_id(
|
|
47
|
+
api_key_id: str, access_key: str, secret_key: str, session_token: str, region: str
|
|
48
|
+
) -> str:
|
|
49
|
+
res = ve_request(
|
|
50
|
+
request_body={"APIKeyId": api_key_id},
|
|
51
|
+
header={"X-Security-Token": session_token},
|
|
52
|
+
action="DescribeAPIKeyDetail",
|
|
53
|
+
ak=access_key,
|
|
54
|
+
sk=secret_key,
|
|
55
|
+
service="mem0",
|
|
56
|
+
version="2025-10-10",
|
|
57
|
+
region=region,
|
|
58
|
+
host="open.volcengineapi.com",
|
|
59
|
+
)
|
|
60
|
+
try:
|
|
61
|
+
api_key = res["Result"]["APIKeyValue"]
|
|
62
|
+
except KeyError:
|
|
63
|
+
raise ValueError(f"Failed to get mem0 api key: {res}")
|
|
64
|
+
|
|
65
|
+
return api_key
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def get_viking_mem0_token(
|
|
69
|
+
api_key_id: str, memory_project_id: str, region: str = "cn-beijing"
|
|
70
|
+
) -> str:
|
|
71
|
+
logger.info("Fetching Viking mem0 token...")
|
|
72
|
+
|
|
73
|
+
access_key = os.getenv("VOLCENGINE_ACCESS_KEY")
|
|
74
|
+
secret_key = os.getenv("VOLCENGINE_SECRET_KEY")
|
|
75
|
+
session_token = ""
|
|
76
|
+
|
|
77
|
+
if not (access_key and secret_key):
|
|
78
|
+
# try to get from vefaas iam
|
|
79
|
+
cred = get_credential_from_vefaas_iam()
|
|
80
|
+
access_key = cred.access_key_id
|
|
81
|
+
secret_key = cred.secret_access_key
|
|
82
|
+
session_token = cred.session_token
|
|
83
|
+
|
|
84
|
+
if not api_key_id:
|
|
85
|
+
api_key_id = _get_api_key_id_by_project_id(
|
|
86
|
+
memory_project_id, access_key, secret_key, session_token, region
|
|
87
|
+
)
|
|
88
|
+
|
|
89
|
+
return _get_api_key_by_api_key_id(
|
|
90
|
+
api_key_id, access_key, secret_key, session_token, region
|
|
91
|
+
)
|
|
@@ -32,7 +32,11 @@ from veadk.version import VERSION
|
|
|
32
32
|
version=VERSION, prog_name="Volcengine Agent Development Kit (VeADK)"
|
|
33
33
|
)
|
|
34
34
|
def veadk():
|
|
35
|
-
"""Volcengine
|
|
35
|
+
"""Volcengine Agent Development Kit (VeADK) command line interface.
|
|
36
|
+
|
|
37
|
+
This is the main entry point for all VeADK CLI commands. VeADK provides
|
|
38
|
+
tools for developing, deploying, and managing AI agents on the Volcengine platform.
|
|
39
|
+
"""
|
|
36
40
|
pass
|
|
37
41
|
|
|
38
42
|
|