veadk-python 0.5.5__tar.gz → 0.5.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.
- {veadk_python-0.5.5/veadk_python.egg-info → veadk_python-0.5.7}/PKG-INFO +1 -1
- {veadk_python-0.5.5 → veadk_python-0.5.7}/pyproject.toml +1 -1
- veadk_python-0.5.7/veadk/a2a/hub/a2a_hub_client.py +76 -0
- veadk_python-0.5.7/veadk/a2a/hub/a2a_hub_server.py +104 -0
- veadk_python-0.5.7/veadk/a2a/hub/models.py +78 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/agent.py +46 -165
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cli/cli_create.py +1 -1
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/consts.py +1 -1
- veadk_python-0.5.7/veadk/examples/in_memory_example_store.py +108 -0
- veadk_python-0.5.7/veadk/examples/types.py +28 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/knowledgebase/backends/vikingdb_knowledge_backend.py +70 -41
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/models/ark_llm.py +57 -6
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/runner.py +5 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/skills/skill.py +4 -1
- veadk_python-0.5.7/veadk/skills/utils.py +139 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tools/builtin_tools/execute_skills.py +10 -29
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tools/mcp_tool/trusted_mcp_session_manager.py +1 -1
- veadk_python-0.5.7/veadk/tools/skills_tools/__init__.py +32 -0
- veadk_python-0.5.7/veadk/tools/skills_tools/bash_tool.py +158 -0
- veadk_python-0.5.7/veadk/tools/skills_tools/file_tool.py +234 -0
- veadk_python-0.5.7/veadk/tools/skills_tools/register_skills_tool.py +176 -0
- veadk_python-0.5.7/veadk/tools/skills_tools/session_path.py +113 -0
- veadk_python-0.5.7/veadk/tools/skills_tools/skills_tool.py +235 -0
- veadk_python-0.5.7/veadk/utils/__init__.py +13 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/version.py +1 -1
- {veadk_python-0.5.5 → veadk_python-0.5.7/veadk_python.egg-info}/PKG-INFO +1 -1
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk_python.egg-info/SOURCES.txt +12 -0
- veadk_python-0.5.5/veadk/skills/utils.py +0 -61
- {veadk_python-0.5.5 → veadk_python-0.5.7}/LICENSE +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/README.md +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/setup.cfg +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/tests/test_agent.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/tests/test_cloud.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/tests/test_evaluator.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/tests/test_knowledgebase.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/tests/test_long_term_memory.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/tests/test_misc.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/tests/test_multiple_agents.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/tests/test_runner.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/tests/test_runtime_data_collecting.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/tests/test_short_term_memory.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/tests/test_tracing.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/tests/test_ve_a2a_middlewares.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/tests/test_ve_identity_auth_config.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/tests/test_ve_identity_function_tool.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/tests/test_ve_identity_mcp_tool.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/tests/test_ve_identity_mcp_toolset.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/a2a/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/a2a/agent_card.py +0 -0
- {veadk_python-0.5.5/veadk/a2a/utils → veadk_python-0.5.7/veadk/a2a/hub}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/a2a/remote_ve_agent.py +0 -0
- {veadk_python-0.5.5/veadk/auth → veadk_python-0.5.7/veadk/a2a/utils}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/a2a/utils/agent_to_a2a.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/a2a/ve_a2a_server.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/a2a/ve_agent_executor.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/a2a/ve_middlewares.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/a2a/ve_task_store.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/agent_builder.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/agents/loop_agent.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/agents/parallel_agent.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/agents/sequential_agent.py +0 -0
- {veadk_python-0.5.5/veadk/auth/veauth → veadk_python-0.5.7/veadk/auth}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/auth/base_auth.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/auth/ve_credential_service.py +0 -0
- {veadk_python-0.5.5/veadk/cli → veadk_python-0.5.7/veadk/auth/veauth}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/auth/veauth/apmplus_veauth.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/auth/veauth/ark_veauth.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/auth/veauth/base_veauth.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/auth/veauth/cozeloop_veauth.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/auth/veauth/mse_veauth.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/auth/veauth/opensearch_veauth.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/auth/veauth/postgresql_veauth.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/auth/veauth/prompt_pilot_veauth.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/auth/veauth/speech_veauth.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/auth/veauth/utils.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/auth/veauth/vesearch_veauth.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/auth/veauth/viking_mem0_veauth.py +0 -0
- {veadk_python-0.5.5/veadk/cloud → veadk_python-0.5.7/veadk/cli}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cli/cli.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cli/cli_agentkit.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cli/cli_clean.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cli/cli_deploy.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cli/cli_eval.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cli/cli_init.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cli/cli_kb.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cli/cli_pipeline.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cli/cli_prompt.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cli/cli_rl.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cli/cli_update.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cli/cli_uploadevalset.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cli/cli_web.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cli/templates/rl/ark/README.md +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cli/templates/rl/ark/arkworkspace.toml +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cli/templates/rl/ark/data/demo_dataset.jsonl +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cli/templates/rl/ark/job.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cli/templates/rl/ark/job.yaml +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cli/templates/rl/ark/plugins/random_reward.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cli/templates/rl/ark/plugins/raw_async_veadk_rollout.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cli/templates/rl/ark/plugins/test_utils.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cli/templates/rl/ark/requirements.txt +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cli/templates/rl/ark/test_faas.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cli/templates/rl/lightning/README.md +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cli/templates/rl/lightning/data/demo_test.parquet +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cli/templates/rl/lightning/data/demo_train.parquet +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cli/templates/rl/lightning/demo_calculate_agent.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cli/templates/rl/lightning/restart_ray.sh +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cli/templates/rl/lightning/train.sh +0 -0
- {veadk_python-0.5.5/veadk/community/langchain_ai/checkpoint → veadk_python-0.5.7/veadk/cloud}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cloud/cloud_agent_engine.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/cloud/cloud_app.py +0 -0
- {veadk_python-0.5.5/veadk/community/langchain_ai/checkpoint/memory → veadk_python-0.5.7/veadk/community/langchain_ai/checkpoint}/__init__.py +0 -0
- {veadk_python-0.5.5/veadk/community/langchain_ai/middlewares → veadk_python-0.5.7/veadk/community/langchain_ai/checkpoint/memory}/__init__.py +0 -0
- {veadk_python-0.5.5/veadk/community/langchain_ai/models → veadk_python-0.5.7/veadk/community/langchain_ai/middlewares}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/community/langchain_ai/middlewares/save_session.py +0 -0
- {veadk_python-0.5.5/veadk/community/langchain_ai/store → veadk_python-0.5.7/veadk/community/langchain_ai/models}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/community/langchain_ai/models/ark_model.py +0 -0
- {veadk_python-0.5.5/veadk/community/langchain_ai/store/memory → veadk_python-0.5.7/veadk/community/langchain_ai/store}/__init__.py +0 -0
- {veadk_python-0.5.5/veadk/community/langchain_ai/tools → veadk_python-0.5.7/veadk/community/langchain_ai/store/memory}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/community/langchain_ai/store/memory/viking_memory.py +0 -0
- {veadk_python-0.5.5/veadk/configs → veadk_python-0.5.7/veadk/community/langchain_ai/tools}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/community/langchain_ai/tools/load_knowledgebase.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/community/langchain_ai/tools/load_memory.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/config.py +0 -0
- {veadk_python-0.5.5/veadk/integrations → veadk_python-0.5.7/veadk/configs}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/configs/auth_configs.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/configs/database_configs.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/configs/dynamic_config_manager.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/configs/model_configs.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/configs/tool_configs.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/configs/tracing_configs.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/evaluation/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/evaluation/adk_evaluator/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/evaluation/adk_evaluator/adk_evaluator.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/evaluation/base_evaluator.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/evaluation/deepeval_evaluator/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/evaluation/deepeval_evaluator/deepeval_evaluator.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/evaluation/eval_set_file_loader.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/evaluation/eval_set_recorder.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/evaluation/types.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/evaluation/utils/prometheus.py +0 -0
- {veadk_python-0.5.5/veadk/integrations/ve_apig → veadk_python-0.5.7/veadk/integrations}/__init__.py +0 -0
- {veadk_python-0.5.5/veadk/integrations/ve_code_pipeline → veadk_python-0.5.7/veadk/integrations/ve_apig}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_apig/ve_apig.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_apig/ve_apig_utils.py +0 -0
- {veadk_python-0.5.5/veadk/integrations/ve_cozeloop → veadk_python-0.5.7/veadk/integrations/ve_code_pipeline}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_code_pipeline/ve_code_pipeline.py +0 -0
- {veadk_python-0.5.5/veadk/integrations/ve_cr → veadk_python-0.5.7/veadk/integrations/ve_cozeloop}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_cozeloop/ve_cozeloop.py +0 -0
- {veadk_python-0.5.5/veadk/integrations/ve_faas → veadk_python-0.5.7/veadk/integrations/ve_cr}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_cr/ve_cr.py +0 -0
- {veadk_python-0.5.5/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}} → veadk_python-0.5.7/veadk/integrations/ve_faas}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_faas/template/cookiecutter.json +0 -0
- {veadk_python-0.5.5/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src → veadk_python-0.5.7/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/config.yaml.example +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/deploy.py +0 -0
- {veadk_python-0.5.5/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}} → veadk_python-0.5.7/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/agent.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/app.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/requirements.txt +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/run.sh +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name }}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name }}/agent.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_faas/ve_faas.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_faas/ve_faas_utils.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_faas/web_template/cookiecutter.json +0 -0
- {veadk_python-0.5.5/veadk/integrations/ve_prompt_pilot → veadk_python-0.5.7/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/config.yaml.example +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/deploy.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/Dockerfile +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/app.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/init_db.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/models.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/requirements.txt +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/run.sh +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/static/css/style.css +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/static/js/admin.js +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/dashboard.html +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/edit_post.html +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/login.html +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/posts.html +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/base.html +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/index.html +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/post.html +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_identity/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_identity/auth_config.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_identity/auth_mixins.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_identity/auth_processor.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_identity/function_tool.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_identity/identity_client.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_identity/mcp_tool.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_identity/mcp_toolset.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_identity/models.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_identity/token_manager.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_identity/utils.py +0 -0
- {veadk_python-0.5.5/veadk/integrations/ve_tls → veadk_python-0.5.7/veadk/integrations/ve_prompt_pilot}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_prompt_pilot/ve_prompt_pilot.py +0 -0
- {veadk_python-0.5.5/veadk/integrations/ve_viking_db_memory → veadk_python-0.5.7/veadk/integrations/ve_tls}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_tls/utils.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_tls/ve_tls.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_tos/ve_tos.py +0 -0
- {veadk_python-0.5.5/veadk/knowledgebase/backends → veadk_python-0.5.7/veadk/integrations/ve_viking_db_memory}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/integrations/ve_viking_db_memory/ve_viking_db_memory.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/knowledgebase/__init__.py +0 -0
- {veadk_python-0.5.5/veadk/memory/long_term_memory_backends → veadk_python-0.5.7/veadk/knowledgebase/backends}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/knowledgebase/backends/base_backend.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/knowledgebase/backends/in_memory_backend.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/knowledgebase/backends/opensearch_backend.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/knowledgebase/backends/redis_backend.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/knowledgebase/backends/tos_vector_backend.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/knowledgebase/backends/utils.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/knowledgebase/entry.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/knowledgebase/knowledgebase.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/memory/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/memory/long_term_memory.py +0 -0
- {veadk_python-0.5.5/veadk/memory/short_term_memory_backends → veadk_python-0.5.7/veadk/memory/long_term_memory_backends}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/memory/long_term_memory_backends/base_backend.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/memory/long_term_memory_backends/in_memory_backend.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/memory/long_term_memory_backends/mem0_backend.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/memory/long_term_memory_backends/opensearch_backend.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/memory/long_term_memory_backends/redis_backend.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/memory/long_term_memory_backends/vikingdb_memory_backend.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/memory/save_session_callback.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/memory/short_term_memory.py +0 -0
- {veadk_python-0.5.5/veadk/models → veadk_python-0.5.7/veadk/memory/short_term_memory_backends}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/memory/short_term_memory_backends/base_backend.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/memory/short_term_memory_backends/mysql_backend.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/memory/short_term_memory_backends/postgresql_backend.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/memory/short_term_memory_backends/sqlite_backend.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/memory/short_term_memory_processor.py +0 -0
- {veadk_python-0.5.5/veadk/prompts → veadk_python-0.5.7/veadk/models}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/processors/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/processors/base_run_processor.py +0 -0
- {veadk_python-0.5.5/veadk/reflector → veadk_python-0.5.7/veadk/prompts}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/prompts/agent_default_prompt.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/prompts/prompt_evaluator.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/prompts/prompt_manager.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/prompts/prompt_memory_processor.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/prompts/prompt_optimization.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/realtime/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/realtime/client.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/realtime/doubao_realtime_voice_llm.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/realtime/doubao_realtime_voice_llm_connection.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/realtime/live.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/realtime/protocol.py +0 -0
- {veadk_python-0.5.5/veadk/skills → veadk_python-0.5.7/veadk/reflector}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/reflector/base_reflector.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/reflector/local_reflector.py +0 -0
- {veadk_python-0.5.5/veadk/tools → veadk_python-0.5.7/veadk/skills}/__init__.py +0 -0
- {veadk_python-0.5.5/veadk/tools/builtin_tools → veadk_python-0.5.7/veadk/tools}/__init__.py +0 -0
- {veadk_python-0.5.5/veadk/tools/mcp_tool → veadk_python-0.5.7/veadk/tools/builtin_tools}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tools/builtin_tools/agent_authorization.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tools/builtin_tools/generate_image.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tools/builtin_tools/image_edit.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tools/builtin_tools/image_generate.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tools/builtin_tools/lark.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tools/builtin_tools/las.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tools/builtin_tools/link_reader.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tools/builtin_tools/llm_shield.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tools/builtin_tools/load_knowledgebase.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tools/builtin_tools/mcp_router.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tools/builtin_tools/mobile_run.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tools/builtin_tools/playwright.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tools/builtin_tools/run_code.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tools/builtin_tools/tts.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tools/builtin_tools/vesearch.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tools/builtin_tools/video_generate.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tools/builtin_tools/vod.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tools/builtin_tools/web_scraper.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tools/builtin_tools/web_search.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tools/demo_tools.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tools/load_knowledgebase_tool.py +0 -0
- {veadk_python-0.5.5/veadk/tools/sandbox → veadk_python-0.5.7/veadk/tools/mcp_tool}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tools/mcp_tool/trusted_mcp_toolset.py +0 -0
- {veadk_python-0.5.5/veadk/tracing → veadk_python-0.5.7/veadk/tools/sandbox}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tools/sandbox/browser_sandbox.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tools/sandbox/code_sandbox.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tools/sandbox/computer_sandbox.py +0 -0
- {veadk_python-0.5.5/veadk/tracing/telemetry → veadk_python-0.5.7/veadk/tracing}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tracing/base_tracer.py +0 -0
- {veadk_python-0.5.5/veadk/tracing/telemetry/exporters → veadk_python-0.5.7/veadk/tracing/telemetry}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tracing/telemetry/attributes/attributes.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tracing/telemetry/attributes/extractors/common_attributes_extractors.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tracing/telemetry/attributes/extractors/llm_attributes_extractors.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tracing/telemetry/attributes/extractors/tool_attributes_extractors.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tracing/telemetry/attributes/extractors/types.py +0 -0
- {veadk_python-0.5.5/veadk/utils → veadk_python-0.5.7/veadk/tracing/telemetry/exporters}/__init__.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tracing/telemetry/exporters/apmplus_exporter.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tracing/telemetry/exporters/base_exporter.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tracing/telemetry/exporters/cozeloop_exporter.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tracing/telemetry/exporters/inmemory_exporter.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tracing/telemetry/exporters/tls_exporter.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tracing/telemetry/opentelemetry_tracer.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/tracing/telemetry/telemetry.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/types.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/utils/audio_manager.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/utils/auth.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/utils/logger.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/utils/mcp_utils.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/utils/misc.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/utils/patches.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk/utils/volcengine_sign.py +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk_python.egg-info/dependency_links.txt +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk_python.egg-info/entry_points.txt +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.7}/veadk_python.egg-info/requires.txt +0 -0
- {veadk_python-0.5.5 → veadk_python-0.5.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.5.
|
|
3
|
+
Version: 0.5.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
|
|
@@ -0,0 +1,76 @@
|
|
|
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 requests
|
|
16
|
+
from a2a.types import AgentCard
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class A2AHubClient:
|
|
20
|
+
def __init__(self, server_host: str, server_port: int):
|
|
21
|
+
self.server_host = server_host
|
|
22
|
+
self.server_port = server_port
|
|
23
|
+
self.health_check()
|
|
24
|
+
|
|
25
|
+
def health_check(self) -> None:
|
|
26
|
+
"""Check the health of the server."""
|
|
27
|
+
response = requests.get(f"http://{self.server_host}:{self.server_port}/ping")
|
|
28
|
+
assert response.status_code == 200, (
|
|
29
|
+
f"unexpected status code from A2A hub server: {response.status_code}"
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
def get_agent_cards(
|
|
33
|
+
self, group_id: str, target_agents: list[str] = []
|
|
34
|
+
) -> list[dict]:
|
|
35
|
+
"""Get the agent cards of the agents in the group."""
|
|
36
|
+
ret = []
|
|
37
|
+
|
|
38
|
+
response = requests.get(
|
|
39
|
+
f"http://{self.server_host}:{self.server_port}/group/{group_id}/agents"
|
|
40
|
+
).json()
|
|
41
|
+
agent_infos = response["agent_infos"]
|
|
42
|
+
for agent_info in agent_infos:
|
|
43
|
+
agent_id = agent_info["agent_id"]
|
|
44
|
+
if target_agents:
|
|
45
|
+
if agent_id in target_agents:
|
|
46
|
+
ret.append(agent_info)
|
|
47
|
+
else:
|
|
48
|
+
ret.append(agent_info)
|
|
49
|
+
|
|
50
|
+
return ret
|
|
51
|
+
|
|
52
|
+
def register_agent(self, group_id: str, agent_id: str, agent_card: AgentCard):
|
|
53
|
+
response = requests.post(
|
|
54
|
+
f"http://{self.server_host}:{self.server_port}/register_agent",
|
|
55
|
+
json={
|
|
56
|
+
"group_id": group_id,
|
|
57
|
+
"agent_id": agent_id,
|
|
58
|
+
"agent_card": agent_card.model_dump(),
|
|
59
|
+
},
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
assert response.status_code == 200, (
|
|
63
|
+
f"unexpected status code from A2A hub server: {response.status_code}"
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
def create_group(self, group_id: str):
|
|
67
|
+
response = requests.post(
|
|
68
|
+
f"http://{self.server_host}:{self.server_port}/create_group",
|
|
69
|
+
params={
|
|
70
|
+
"group_id": group_id,
|
|
71
|
+
},
|
|
72
|
+
)
|
|
73
|
+
|
|
74
|
+
assert response.status_code == 200, (
|
|
75
|
+
f"unexpected status code from A2A hub server: {response.status_code}"
|
|
76
|
+
)
|
|
@@ -0,0 +1,104 @@
|
|
|
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 uvicorn
|
|
16
|
+
from fastapi import FastAPI
|
|
17
|
+
from fastapi.responses import JSONResponse
|
|
18
|
+
|
|
19
|
+
from veadk.a2a.hub.models import (
|
|
20
|
+
AgentInformation,
|
|
21
|
+
GetAgentResponse,
|
|
22
|
+
GetAgentsResponse,
|
|
23
|
+
GetGroupsResponse,
|
|
24
|
+
RegisterAgentRequest,
|
|
25
|
+
RegisterAgentResponse,
|
|
26
|
+
RegisterGroupResponse,
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class A2AHubServer:
|
|
31
|
+
def __init__(self):
|
|
32
|
+
self.app = FastAPI()
|
|
33
|
+
|
|
34
|
+
self.groups: list[str] = []
|
|
35
|
+
|
|
36
|
+
# group_id -> agent_id -> agent_card
|
|
37
|
+
self.agent_cards: dict[str, dict[str, dict]] = {}
|
|
38
|
+
|
|
39
|
+
@self.app.get("/ping")
|
|
40
|
+
def ping() -> JSONResponse:
|
|
41
|
+
return JSONResponse(content={"msg": "pong!"})
|
|
42
|
+
|
|
43
|
+
@self.app.post("/create_group")
|
|
44
|
+
def create_group(group_id: str) -> RegisterGroupResponse:
|
|
45
|
+
"""Create a group."""
|
|
46
|
+
self.groups.append(group_id)
|
|
47
|
+
self.agent_cards[group_id] = {}
|
|
48
|
+
return RegisterGroupResponse(group_id=group_id)
|
|
49
|
+
|
|
50
|
+
@self.app.post("/register_agent")
|
|
51
|
+
def register_agent(
|
|
52
|
+
request: RegisterAgentRequest,
|
|
53
|
+
) -> RegisterAgentResponse:
|
|
54
|
+
"""Register an agent to a specified group."""
|
|
55
|
+
if request.group_id not in self.groups:
|
|
56
|
+
return RegisterAgentResponse(
|
|
57
|
+
err_code=1, msg=f"group {request.group_id} not exist"
|
|
58
|
+
)
|
|
59
|
+
if request.agent_id in self.agent_cards[request.group_id]:
|
|
60
|
+
return RegisterAgentResponse(
|
|
61
|
+
err_code=1, msg=f"agent {request.agent_id} already exist"
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
self.agent_cards[request.group_id][request.agent_id] = request.agent_card
|
|
65
|
+
return RegisterAgentResponse(
|
|
66
|
+
group_id=request.group_id,
|
|
67
|
+
agent_id=request.agent_id,
|
|
68
|
+
agent_card=self.agent_cards[request.group_id][request.agent_id],
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
@self.app.get("/group/{group_id}/agents")
|
|
72
|
+
def agents(group_id: str) -> GetAgentsResponse:
|
|
73
|
+
"""Get all agents in a specified group."""
|
|
74
|
+
if group_id not in self.groups:
|
|
75
|
+
return GetAgentsResponse(err_code=1, msg=f"group {group_id} not exist")
|
|
76
|
+
|
|
77
|
+
agent_infos = [
|
|
78
|
+
AgentInformation(agent_id=agent_id, agent_card=agent_card)
|
|
79
|
+
for agent_id, agent_card in self.agent_cards[group_id].items()
|
|
80
|
+
]
|
|
81
|
+
return GetAgentsResponse(group_id=group_id, agent_infos=agent_infos)
|
|
82
|
+
|
|
83
|
+
@self.app.get("/group/{group_id}/agent/{agent_id}")
|
|
84
|
+
def agent(group_id: str, agent_id: str) -> GetAgentResponse:
|
|
85
|
+
"""Get the agent card of a specified agent in a specified group."""
|
|
86
|
+
if group_id not in self.groups:
|
|
87
|
+
return GetAgentResponse(err_code=1, msg=f"group {group_id} not exist")
|
|
88
|
+
if agent_id not in self.agent_cards[group_id]:
|
|
89
|
+
return GetAgentResponse(
|
|
90
|
+
err_code=1,
|
|
91
|
+
msg=f"agent {agent_id} in group {group_id} not exist",
|
|
92
|
+
)
|
|
93
|
+
return GetAgentResponse(
|
|
94
|
+
agent_id=agent_id,
|
|
95
|
+
agent_card=self.agent_cards[group_id][agent_id],
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
@self.app.get("/groups")
|
|
99
|
+
def groups() -> GetGroupsResponse:
|
|
100
|
+
"""Get all registered groups."""
|
|
101
|
+
return GetGroupsResponse(group_ids=self.groups)
|
|
102
|
+
|
|
103
|
+
def serve(self, **kwargs):
|
|
104
|
+
uvicorn.run(self.app, **kwargs)
|
|
@@ -0,0 +1,78 @@
|
|
|
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 pydantic import BaseModel, Field
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class BaseResponse(BaseModel):
|
|
19
|
+
err_code: int = 0
|
|
20
|
+
|
|
21
|
+
msg: str = ""
|
|
22
|
+
"""The message of the response."""
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class RegisterGroupResponse(BaseResponse):
|
|
26
|
+
group_id: str = ""
|
|
27
|
+
"""The id of the group."""
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class RegisterAgentRequest(BaseResponse):
|
|
31
|
+
group_id: str
|
|
32
|
+
"""Target group id."""
|
|
33
|
+
|
|
34
|
+
agent_id: str
|
|
35
|
+
"""The id of the agent."""
|
|
36
|
+
|
|
37
|
+
agent_card: dict
|
|
38
|
+
"""The agent card of the agent in json format."""
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class RegisterAgentResponse(BaseResponse):
|
|
42
|
+
group_id: str = ""
|
|
43
|
+
"""Target group id."""
|
|
44
|
+
|
|
45
|
+
agent_id: str = ""
|
|
46
|
+
"""The id of the agent."""
|
|
47
|
+
|
|
48
|
+
agent_card: dict = Field(default_factory=dict)
|
|
49
|
+
"""The agent card of the agent in json format."""
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
class AgentInformation(BaseModel):
|
|
53
|
+
agent_id: str = ""
|
|
54
|
+
"""The id of the agent."""
|
|
55
|
+
|
|
56
|
+
agent_card: dict = Field(default_factory=dict)
|
|
57
|
+
"""The agent card of the agent in json format."""
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
class GetAgentsResponse(BaseResponse):
|
|
61
|
+
group_id: str = ""
|
|
62
|
+
"""Target group id."""
|
|
63
|
+
|
|
64
|
+
agent_infos: list[AgentInformation] = Field(default_factory=list)
|
|
65
|
+
"""The agent cards of the agents in json format."""
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
class GetAgentResponse(BaseResponse):
|
|
69
|
+
agent_id: str = ""
|
|
70
|
+
"""The id of the agent."""
|
|
71
|
+
|
|
72
|
+
agent_card: dict = Field(default_factory=dict)
|
|
73
|
+
"""The agent card of the agent in json format."""
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
class GetGroupsResponse(BaseResponse):
|
|
77
|
+
group_ids: list[str] = Field(default_factory=list)
|
|
78
|
+
"""The ids of the groups."""
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
from __future__ import annotations
|
|
16
16
|
|
|
17
17
|
import os
|
|
18
|
-
from typing import Optional, Union
|
|
18
|
+
from typing import Dict, Optional, Union
|
|
19
19
|
|
|
20
20
|
# If user didn't set LITELLM_LOCAL_MODEL_COST_MAP, set it to True
|
|
21
21
|
# to enable local model cost map.
|
|
@@ -26,14 +26,12 @@ if not os.getenv("LITELLM_LOCAL_MODEL_COST_MAP"):
|
|
|
26
26
|
|
|
27
27
|
import uuid
|
|
28
28
|
|
|
29
|
-
from google.adk.agents import LlmAgent
|
|
29
|
+
from google.adk.agents import LlmAgent
|
|
30
30
|
from google.adk.agents.base_agent import BaseAgent
|
|
31
31
|
from google.adk.agents.context_cache_config import ContextCacheConfig
|
|
32
32
|
from google.adk.agents.llm_agent import InstructionProvider, ToolUnion
|
|
33
|
-
from google.adk.
|
|
33
|
+
from google.adk.examples.base_example_provider import BaseExampleProvider
|
|
34
34
|
from google.adk.models.lite_llm import LiteLlm
|
|
35
|
-
from google.adk.runners import Runner
|
|
36
|
-
from google.genai import types
|
|
37
35
|
from pydantic import ConfigDict, Field
|
|
38
36
|
from typing_extensions import Any
|
|
39
37
|
|
|
@@ -42,7 +40,6 @@ from veadk.consts import (
|
|
|
42
40
|
DEFAULT_AGENT_NAME,
|
|
43
41
|
DEFAULT_MODEL_EXTRA_CONFIG,
|
|
44
42
|
)
|
|
45
|
-
from veadk.evaluation import EvalSetRecorder
|
|
46
43
|
from veadk.knowledgebase import KnowledgeBase
|
|
47
44
|
from veadk.memory.long_term_memory import LongTermMemory
|
|
48
45
|
from veadk.memory.short_term_memory import ShortTermMemory
|
|
@@ -87,6 +84,8 @@ class Agent(LlmAgent):
|
|
|
87
84
|
tracers (list[BaseTracer]): List of tracers used for telemetry and monitoring.
|
|
88
85
|
enable_authz (bool): Whether to enable agent authorization checks.
|
|
89
86
|
auto_save_session (bool): Whether to automatically save sessions to long-term memory.
|
|
87
|
+
skills (list[str]): List of skills that equip the agent with specific capabilities.
|
|
88
|
+
example_store (Optional[BaseExampleProvider]): Example store for providing example Q/A.
|
|
90
89
|
"""
|
|
91
90
|
|
|
92
91
|
model_config = ConfigDict(arbitrary_types_allowed=True, extra="allow")
|
|
@@ -147,6 +146,8 @@ class Agent(LlmAgent):
|
|
|
147
146
|
|
|
148
147
|
skills: list[str] = Field(default_factory=list)
|
|
149
148
|
|
|
149
|
+
example_store: Optional[BaseExampleProvider] = None
|
|
150
|
+
|
|
150
151
|
def model_post_init(self, __context: Any) -> None:
|
|
151
152
|
super().model_post_init(None) # for sub_agents init
|
|
152
153
|
|
|
@@ -282,6 +283,11 @@ class Agent(LlmAgent):
|
|
|
282
283
|
if self.skills:
|
|
283
284
|
self.load_skills()
|
|
284
285
|
|
|
286
|
+
if self.example_store:
|
|
287
|
+
from google.adk.tools.example_tool import ExampleTool
|
|
288
|
+
|
|
289
|
+
self.tools.append(ExampleTool(examples=self.example_store))
|
|
290
|
+
|
|
285
291
|
logger.info(f"VeADK version: {VERSION}")
|
|
286
292
|
|
|
287
293
|
logger.info(f"{self.__class__.__name__} `{self.name}` init done.")
|
|
@@ -298,79 +304,46 @@ class Agent(LlmAgent):
|
|
|
298
304
|
def load_skills(self):
|
|
299
305
|
from pathlib import Path
|
|
300
306
|
|
|
301
|
-
from veadk.skills.
|
|
307
|
+
from veadk.skills.skill import Skill
|
|
308
|
+
from veadk.skills.utils import (
|
|
309
|
+
load_skills_from_cloud,
|
|
310
|
+
load_skills_from_directory,
|
|
311
|
+
)
|
|
312
|
+
from veadk.tools.skills_tools import (
|
|
313
|
+
SkillsTool,
|
|
314
|
+
bash_tool,
|
|
315
|
+
edit_file_tool,
|
|
316
|
+
read_file_tool,
|
|
317
|
+
write_file_tool,
|
|
318
|
+
register_skills_tool,
|
|
319
|
+
)
|
|
320
|
+
|
|
321
|
+
skills: Dict[str, Skill] = {}
|
|
302
322
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
323
|
+
for item in self.skills:
|
|
324
|
+
if not item or str(item).strip() == "":
|
|
325
|
+
continue
|
|
326
|
+
path = Path(item)
|
|
327
|
+
if path.exists() and path.is_dir():
|
|
328
|
+
for skill in load_skills_from_directory(path):
|
|
329
|
+
skills[skill.name] = skill
|
|
308
330
|
else:
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
)
|
|
331
|
+
for skill in load_skills_from_cloud(item):
|
|
332
|
+
skills[skill.name] = skill
|
|
312
333
|
if skills:
|
|
313
334
|
self.instruction += "\nYou have the following skills:\n"
|
|
314
335
|
|
|
315
|
-
for skill in skills:
|
|
336
|
+
for skill in skills.values():
|
|
316
337
|
self.instruction += (
|
|
317
338
|
f"- name: {skill.name}\n- description: {skill.description}\n\n"
|
|
318
339
|
)
|
|
319
340
|
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
stream: bool,
|
|
327
|
-
run_processor: Optional[BaseRunProcessor] = None,
|
|
328
|
-
):
|
|
329
|
-
"""Internal run method with run processor support.
|
|
330
|
-
|
|
331
|
-
Args:
|
|
332
|
-
runner: The Runner instance.
|
|
333
|
-
user_id: User ID for the session.
|
|
334
|
-
session_id: Session ID.
|
|
335
|
-
message: The message to send.
|
|
336
|
-
stream: Whether to stream the output.
|
|
337
|
-
run_processor: Optional run processor to use. If not provided, uses self.run_processor.
|
|
338
|
-
|
|
339
|
-
Returns:
|
|
340
|
-
The final output string.
|
|
341
|
-
"""
|
|
342
|
-
stream_mode = StreamingMode.SSE if stream else StreamingMode.NONE
|
|
343
|
-
|
|
344
|
-
# Use provided run_processor or fall back to instance's run_processor
|
|
345
|
-
processor = run_processor or self.run_processor
|
|
346
|
-
|
|
347
|
-
@processor.process_run(runner=runner, message=message)
|
|
348
|
-
async def event_generator():
|
|
349
|
-
async for event in runner.run_async(
|
|
350
|
-
user_id=user_id,
|
|
351
|
-
session_id=session_id,
|
|
352
|
-
new_message=message,
|
|
353
|
-
run_config=RunConfig(streaming_mode=stream_mode),
|
|
354
|
-
):
|
|
355
|
-
if event.get_function_calls():
|
|
356
|
-
for function_call in event.get_function_calls():
|
|
357
|
-
logger.debug(f"Function call: {function_call}")
|
|
358
|
-
elif (
|
|
359
|
-
event.content is not None
|
|
360
|
-
and event.content.parts[0].text is not None
|
|
361
|
-
and len(event.content.parts[0].text.strip()) > 0
|
|
362
|
-
):
|
|
363
|
-
yield event.content.parts[0].text
|
|
364
|
-
|
|
365
|
-
final_output = ""
|
|
366
|
-
async for chunk in event_generator():
|
|
367
|
-
if stream:
|
|
368
|
-
print(chunk, end="", flush=True)
|
|
369
|
-
final_output += chunk
|
|
370
|
-
if stream:
|
|
371
|
-
print() # end with a new line
|
|
372
|
-
|
|
373
|
-
return final_output
|
|
341
|
+
self.tools.append(SkillsTool(skills))
|
|
342
|
+
self.tools.append(read_file_tool)
|
|
343
|
+
self.tools.append(write_file_tool)
|
|
344
|
+
self.tools.append(edit_file_tool)
|
|
345
|
+
self.tools.append(bash_tool)
|
|
346
|
+
self.tools.append(register_skills_tool)
|
|
374
347
|
|
|
375
348
|
def _prepare_tracers(self):
|
|
376
349
|
enable_apmplus_tracer = os.getenv("ENABLE_APMPLUS", "false").lower() == "true"
|
|
@@ -418,99 +391,7 @@ class Agent(LlmAgent):
|
|
|
418
391
|
f"Opentelemetry Tracer init {len(self.tracers[0].exporters)} exporters" # type: ignore
|
|
419
392
|
)
|
|
420
393
|
|
|
421
|
-
async def run(
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
stream: bool = False,
|
|
425
|
-
app_name: str = "veadk_app",
|
|
426
|
-
user_id: str = "veadk_user",
|
|
427
|
-
session_id="veadk_session",
|
|
428
|
-
load_history_sessions_from_db: bool = False,
|
|
429
|
-
db_url: str = "",
|
|
430
|
-
collect_runtime_data: bool = False,
|
|
431
|
-
eval_set_id: str = "",
|
|
432
|
-
save_session_to_memory: bool = False,
|
|
433
|
-
run_processor: Optional[BaseRunProcessor] = None,
|
|
434
|
-
):
|
|
435
|
-
"""Running the agent. The runner and session service will be created automatically.
|
|
436
|
-
|
|
437
|
-
For production, consider using Google-ADK runner to run agent, rather than invoking this method.
|
|
438
|
-
|
|
439
|
-
Args:
|
|
440
|
-
prompt (str | list[str]): The prompt to run the agent.
|
|
441
|
-
stream (bool, optional): Whether to stream the output. Defaults to False.
|
|
442
|
-
app_name (str, optional): The name of the application. Defaults to "veadk_app".
|
|
443
|
-
user_id (str, optional): The id of the user. Defaults to "veadk_user".
|
|
444
|
-
session_id (str, optional): The id of the session. Defaults to "veadk_session".
|
|
445
|
-
load_history_sessions_from_db (bool, optional): Whether to load history sessions from database. Defaults to False.
|
|
446
|
-
db_url (str, optional): The url of the database. Defaults to "".
|
|
447
|
-
collect_runtime_data (bool, optional): Whether to collect runtime data. Defaults to False.
|
|
448
|
-
eval_set_id (str, optional): The id of the eval set. Defaults to "".
|
|
449
|
-
save_session_to_memory (bool, optional): Whether to save this turn session to memory. Defaults to False.
|
|
450
|
-
run_processor (Optional[BaseRunProcessor], optional): Optional run processor to use for this run.
|
|
451
|
-
If not provided, uses the agent's default run_processor. Defaults to None.
|
|
452
|
-
"""
|
|
453
|
-
|
|
454
|
-
logger.warning(
|
|
455
|
-
"Running agent in this function is only for development and testing, do not use this function in production. For production, consider using `Google ADK Runner` to run agent, rather than invoking this method."
|
|
456
|
-
)
|
|
457
|
-
logger.info(
|
|
458
|
-
f"Run agent {self.name}: app_name: {app_name}, user_id: {user_id}, session_id: {session_id}."
|
|
459
|
-
)
|
|
460
|
-
prompt = [prompt] if isinstance(prompt, str) else prompt
|
|
461
|
-
|
|
462
|
-
# memory service
|
|
463
|
-
short_term_memory = ShortTermMemory(
|
|
464
|
-
backend="database" if load_history_sessions_from_db else "local",
|
|
465
|
-
db_url=db_url,
|
|
466
|
-
)
|
|
467
|
-
session_service = short_term_memory.session_service
|
|
468
|
-
await short_term_memory.create_session(
|
|
469
|
-
app_name=app_name, user_id=user_id, session_id=session_id
|
|
394
|
+
async def run(self, **kwargs):
|
|
395
|
+
raise NotImplementedError(
|
|
396
|
+
"Run method in VeADK agent is deprecated since version 0.5.6. Please use runner.run_async instead. Ref: https://agentkit.gitbook.io/docs/runner/overview"
|
|
470
397
|
)
|
|
471
|
-
|
|
472
|
-
# runner
|
|
473
|
-
runner = Runner(
|
|
474
|
-
agent=self,
|
|
475
|
-
app_name=app_name,
|
|
476
|
-
session_service=session_service,
|
|
477
|
-
memory_service=self.long_term_memory,
|
|
478
|
-
)
|
|
479
|
-
|
|
480
|
-
logger.info(f"Begin to process prompt {prompt}")
|
|
481
|
-
# run
|
|
482
|
-
final_output = ""
|
|
483
|
-
for _prompt in prompt:
|
|
484
|
-
message = types.Content(role="user", parts=[types.Part(text=_prompt)])
|
|
485
|
-
final_output = await self._run(
|
|
486
|
-
runner, user_id, session_id, message, stream, run_processor
|
|
487
|
-
)
|
|
488
|
-
|
|
489
|
-
# VeADK features
|
|
490
|
-
if save_session_to_memory:
|
|
491
|
-
assert self.long_term_memory is not None, (
|
|
492
|
-
"Long-term memory is not initialized in agent"
|
|
493
|
-
)
|
|
494
|
-
session = await session_service.get_session(
|
|
495
|
-
app_name=app_name,
|
|
496
|
-
user_id=user_id,
|
|
497
|
-
session_id=session_id,
|
|
498
|
-
)
|
|
499
|
-
if session:
|
|
500
|
-
await self.long_term_memory.add_session_to_memory(session)
|
|
501
|
-
logger.info(f"Add session `{session.id}` to your long-term memory.")
|
|
502
|
-
else:
|
|
503
|
-
logger.error(
|
|
504
|
-
f"Session {session_id} not found in session service, cannot save to long-term memory."
|
|
505
|
-
)
|
|
506
|
-
|
|
507
|
-
if collect_runtime_data:
|
|
508
|
-
eval_set_recorder = EvalSetRecorder(session_service, eval_set_id)
|
|
509
|
-
dump_path = await eval_set_recorder.dump(app_name, user_id, session_id)
|
|
510
|
-
self._dump_path = dump_path # just for test/debug/instrumentation
|
|
511
|
-
|
|
512
|
-
if self.tracers:
|
|
513
|
-
for tracer in self.tracers:
|
|
514
|
-
tracer.dump(user_id=user_id, session_id=session_id)
|
|
515
|
-
|
|
516
|
-
return final_output
|
|
@@ -32,7 +32,7 @@ root_agent = Agent(
|
|
|
32
32
|
name="root_agent",
|
|
33
33
|
description="A helpful assistant for user questions.",
|
|
34
34
|
instruction="Answer user questions to the best of your knowledge",
|
|
35
|
-
model_name="doubao-seed-1-8-
|
|
35
|
+
model_name="doubao-seed-1-8-251228", # <---- change model here
|
|
36
36
|
)
|
|
37
37
|
"""
|
|
38
38
|
|
|
@@ -19,7 +19,7 @@ from veadk.version import VERSION
|
|
|
19
19
|
|
|
20
20
|
DEFAULT_AGENT_NAME = "veAgent"
|
|
21
21
|
|
|
22
|
-
DEFAULT_MODEL_AGENT_NAME = "doubao-seed-1-
|
|
22
|
+
DEFAULT_MODEL_AGENT_NAME = "doubao-seed-1-8-251228"
|
|
23
23
|
DEFAULT_MODEL_AGENT_PROVIDER = "openai"
|
|
24
24
|
DEFAULT_MODEL_AGENT_API_BASE = "https://ark.cn-beijing.volces.com/api/v3/"
|
|
25
25
|
DEFAULT_MODEL_EXTRA_CONFIG = {
|
|
@@ -0,0 +1,108 @@
|
|
|
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
|
+
from google.adk.examples.base_example_provider import BaseExampleProvider
|
|
17
|
+
from google.adk.examples.example import Example as ADKExample
|
|
18
|
+
from google.genai.types import Content, FunctionCall, Part
|
|
19
|
+
from typing_extensions import override
|
|
20
|
+
|
|
21
|
+
from veadk.examples.types import Example
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class InMemoryExampleStore(BaseExampleProvider):
|
|
25
|
+
def __init__(
|
|
26
|
+
self,
|
|
27
|
+
name: str = "in_memory_example_store",
|
|
28
|
+
examples: list[Example | ADKExample] | None = None,
|
|
29
|
+
):
|
|
30
|
+
self.name = name
|
|
31
|
+
if examples:
|
|
32
|
+
self.examples: list[ADKExample] = self.convert_examples_to_adk_examples(
|
|
33
|
+
examples
|
|
34
|
+
)
|
|
35
|
+
else:
|
|
36
|
+
self.examples: list[ADKExample] = []
|
|
37
|
+
|
|
38
|
+
def add_example(self, example: Example | ADKExample):
|
|
39
|
+
"""Add an example to the provider.
|
|
40
|
+
|
|
41
|
+
Args:
|
|
42
|
+
example: A VeADK example or ADK example.
|
|
43
|
+
"""
|
|
44
|
+
self.examples.append(self.convert_examples_to_adk_examples([example])[0])
|
|
45
|
+
|
|
46
|
+
def convert_examples_to_adk_examples(
|
|
47
|
+
self,
|
|
48
|
+
examples: list[Example | ADKExample],
|
|
49
|
+
) -> list[ADKExample]:
|
|
50
|
+
"""Convert VeADK example to ADK example.
|
|
51
|
+
|
|
52
|
+
Args:
|
|
53
|
+
examples: A list of VeADK example or ADK example.
|
|
54
|
+
|
|
55
|
+
Returns:
|
|
56
|
+
A list of ADK example.
|
|
57
|
+
"""
|
|
58
|
+
adk_examples = []
|
|
59
|
+
for example in examples:
|
|
60
|
+
if isinstance(example, ADKExample):
|
|
61
|
+
adk_examples.append(example)
|
|
62
|
+
else:
|
|
63
|
+
output_string_content = (
|
|
64
|
+
Content(parts=[Part(text=example.expected_output)], role="model")
|
|
65
|
+
if example.expected_output
|
|
66
|
+
else None
|
|
67
|
+
)
|
|
68
|
+
output_fc_content = (
|
|
69
|
+
Content(
|
|
70
|
+
parts=[
|
|
71
|
+
Part(
|
|
72
|
+
function_call=FunctionCall(
|
|
73
|
+
name=example.expected_function_call.function_name,
|
|
74
|
+
args=example.expected_function_call.arguments,
|
|
75
|
+
)
|
|
76
|
+
)
|
|
77
|
+
],
|
|
78
|
+
role="model",
|
|
79
|
+
)
|
|
80
|
+
if example.expected_function_call
|
|
81
|
+
else None
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
output = []
|
|
85
|
+
if output_string_content:
|
|
86
|
+
output.append(output_string_content)
|
|
87
|
+
if output_fc_content:
|
|
88
|
+
output.append(output_fc_content)
|
|
89
|
+
|
|
90
|
+
adk_examples.append(
|
|
91
|
+
ADKExample(
|
|
92
|
+
input=Content(parts=[Part(text=example.input)], role="user"),
|
|
93
|
+
output=output,
|
|
94
|
+
)
|
|
95
|
+
)
|
|
96
|
+
return adk_examples
|
|
97
|
+
|
|
98
|
+
@override
|
|
99
|
+
def get_examples(self, query: str) -> list[ADKExample]:
|
|
100
|
+
"""Simply return all examples.
|
|
101
|
+
|
|
102
|
+
Args:
|
|
103
|
+
query: The query to get examples for.
|
|
104
|
+
|
|
105
|
+
Returns:
|
|
106
|
+
A list of Example objects.
|
|
107
|
+
"""
|
|
108
|
+
return self.examples
|