veadk-python 0.5.25__tar.gz → 0.5.26__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.25/veadk_python.egg-info → veadk_python-0.5.26}/PKG-INFO +1 -1
- {veadk_python-0.5.25 → veadk_python-0.5.26}/pyproject.toml +1 -1
- veadk_python-0.5.26/veadk/tools/vanna_tools/agent_memory.py +339 -0
- veadk_python-0.5.26/veadk/tools/vanna_tools/examples/example.py +228 -0
- veadk_python-0.5.26/veadk/tools/vanna_tools/file_system.py +512 -0
- veadk_python-0.5.26/veadk/tools/vanna_tools/python.py +246 -0
- veadk_python-0.5.26/veadk/tools/vanna_tools/run_sql.py +128 -0
- veadk_python-0.5.26/veadk/tools/vanna_tools/summarize_data.py +129 -0
- veadk_python-0.5.26/veadk/tools/vanna_tools/vanna_toolset.py +199 -0
- veadk_python-0.5.26/veadk/tools/vanna_tools/visualize_data.py +128 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/version.py +1 -1
- {veadk_python-0.5.25 → veadk_python-0.5.26/veadk_python.egg-info}/PKG-INFO +1 -1
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk_python.egg-info/SOURCES.txt +8 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/LICENSE +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/README.md +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/setup.cfg +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/tests/test_agent.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/tests/test_cloud.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/tests/test_evaluator.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/tests/test_knowledgebase.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/tests/test_long_term_memory.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/tests/test_misc.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/tests/test_multiple_agents.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/tests/test_runner.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/tests/test_runtime_data_collecting.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/tests/test_short_term_memory.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/tests/test_tracing.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/tests/test_ve_a2a_middlewares.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/tests/test_ve_identity_auth_config.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/tests/test_ve_identity_function_tool.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/tests/test_ve_identity_mcp_tool.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/tests/test_ve_identity_mcp_toolset.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/a2a/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/a2a/agent_card.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/a2a/hub/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/a2a/hub/a2a_hub_client.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/a2a/hub/a2a_hub_server.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/a2a/hub/models.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/a2a/hub/rocketmq_middleware.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/a2a/remote_ve_agent.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/a2a/utils/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/a2a/utils/agent_to_a2a.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/a2a/ve_a2a_server.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/a2a/ve_agent_executor.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/a2a/ve_middlewares.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/a2a/ve_task_store.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/agent.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/agent_builder.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/agents/loop_agent.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/agents/parallel_agent.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/agents/sequential_agent.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/agents/supervise_agent.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/auth/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/auth/base_auth.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/auth/middleware/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/auth/middleware/oauth2_auth.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/auth/ve_credential_service.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/auth/veauth/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/auth/veauth/apmplus_veauth.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/auth/veauth/ark_veauth.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/auth/veauth/base_veauth.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/auth/veauth/cozeloop_veauth.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/auth/veauth/mse_veauth.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/auth/veauth/opensearch_veauth.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/auth/veauth/postgresql_veauth.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/auth/veauth/prompt_pilot_veauth.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/auth/veauth/speech_veauth.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/auth/veauth/utils.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/auth/veauth/vesearch_veauth.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/auth/veauth/viking_mem0_veauth.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cli/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cli/cli.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cli/cli_agentkit.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cli/cli_clean.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cli/cli_create.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cli/cli_deploy.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cli/cli_eval.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cli/cli_init.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cli/cli_kb.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cli/cli_pipeline.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cli/cli_prompt.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cli/cli_rl.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cli/cli_update.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cli/cli_uploadevalset.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cli/cli_web.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cli/templates/rl/ark/README.md +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cli/templates/rl/ark/arkworkspace.toml +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cli/templates/rl/ark/data/demo_dataset.jsonl +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cli/templates/rl/ark/job.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cli/templates/rl/ark/job.yaml +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cli/templates/rl/ark/plugins/random_reward.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cli/templates/rl/ark/plugins/raw_async_veadk_rollout.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cli/templates/rl/ark/plugins/test_utils.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cli/templates/rl/ark/requirements.txt +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cli/templates/rl/ark/test_faas.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cli/templates/rl/lightning/README.md +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cli/templates/rl/lightning/data/demo_test.parquet +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cli/templates/rl/lightning/data/demo_train.parquet +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cli/templates/rl/lightning/demo_calculate_agent.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cli/templates/rl/lightning/restart_ray.sh +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cli/templates/rl/lightning/train.sh +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cloud/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cloud/cloud_agent_engine.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/cloud/cloud_app.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/community/langchain_ai/checkpoint/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/community/langchain_ai/checkpoint/memory/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/community/langchain_ai/middlewares/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/community/langchain_ai/middlewares/save_session.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/community/langchain_ai/models/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/community/langchain_ai/models/ark_model.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/community/langchain_ai/store/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/community/langchain_ai/store/memory/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/community/langchain_ai/store/memory/viking_memory.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/community/langchain_ai/tools/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/community/langchain_ai/tools/execute_skills.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/community/langchain_ai/tools/load_knowledgebase.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/community/langchain_ai/tools/load_memory.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/community/langchain_ai/tools/run_code.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/community/langchain_ai/tools/web_search.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/config.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/configs/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/configs/auth_configs.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/configs/database_configs.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/configs/dynamic_config_manager.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/configs/model_configs.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/configs/tool_configs.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/configs/tracing_configs.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/consts.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/evaluation/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/evaluation/adk_evaluator/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/evaluation/adk_evaluator/adk_evaluator.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/evaluation/base_evaluator.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/evaluation/deepeval_evaluator/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/evaluation/deepeval_evaluator/deepeval_evaluator.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/evaluation/eval_set_file_loader.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/evaluation/eval_set_recorder.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/evaluation/types.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/evaluation/utils/prometheus.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/examples/in_memory_example_store.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/examples/types.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/flows/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/flows/supervise_auto_flow.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/flows/supervise_single_flow.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_apig/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_apig/ve_apig.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_apig/ve_apig_utils.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_code_pipeline/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_code_pipeline/ve_code_pipeline.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_cozeloop/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_cozeloop/ve_cozeloop.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_cr/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_cr/ve_cr.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/template/cookiecutter.json +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/config.yaml.example +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/deploy.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/agent.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/app.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/requirements.txt +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/run.sh +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name }}/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name }}/agent.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/ve_faas.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/ve_faas_utils.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/web_template/cookiecutter.json +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/config.yaml.example +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/deploy.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/Dockerfile +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/app.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/init_db.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/models.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/requirements.txt +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/run.sh +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/static/css/style.css +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/static/js/admin.js +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/dashboard.html +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/edit_post.html +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/login.html +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/posts.html +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/base.html +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/index.html +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/post.html +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_identity/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_identity/auth_config.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_identity/auth_mixins.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_identity/auth_processor.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_identity/function_tool.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_identity/identity_client.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_identity/mcp_tool.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_identity/mcp_toolset.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_identity/models.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_identity/token_manager.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_identity/utils.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_prompt_pilot/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_prompt_pilot/ve_prompt_pilot.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_tls/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_tls/utils.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_tls/ve_tls.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_tos/ve_tos.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_viking_db_memory/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/integrations/ve_viking_db_memory/ve_viking_db_memory.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/knowledgebase/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/knowledgebase/backends/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/knowledgebase/backends/base_backend.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/knowledgebase/backends/context_search_backend.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/knowledgebase/backends/in_memory_backend.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/knowledgebase/backends/opensearch_backend.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/knowledgebase/backends/redis_backend.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/knowledgebase/backends/tos_vector_backend.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/knowledgebase/backends/utils.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/knowledgebase/backends/vikingdb_knowledge_backend.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/knowledgebase/entry.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/knowledgebase/knowledgebase.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/knowledgebase/types.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/memory/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/memory/long_term_memory.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/memory/long_term_memory_backends/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/memory/long_term_memory_backends/base_backend.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/memory/long_term_memory_backends/in_memory_backend.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/memory/long_term_memory_backends/mem0_backend.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/memory/long_term_memory_backends/opensearch_backend.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/memory/long_term_memory_backends/redis_backend.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/memory/long_term_memory_backends/vikingdb_memory_backend.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/memory/save_session_callback.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/memory/short_term_memory.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/memory/short_term_memory_backends/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/memory/short_term_memory_backends/base_backend.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/memory/short_term_memory_backends/mysql_backend.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/memory/short_term_memory_backends/postgresql_backend.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/memory/short_term_memory_backends/sqlite_backend.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/memory/short_term_memory_processor.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/memory/types.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/models/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/models/ark_embedding.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/models/ark_llm.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/processors/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/processors/base_run_processor.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/prompts/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/prompts/agent_default_prompt.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/prompts/prompt_evaluator.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/prompts/prompt_manager.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/prompts/prompt_memory_processor.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/prompts/prompt_optimization.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/realtime/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/realtime/client.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/realtime/doubao_realtime_voice_llm.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/realtime/doubao_realtime_voice_llm_connection.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/realtime/live.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/realtime/protocol.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/reflector/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/reflector/base_reflector.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/reflector/local_reflector.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/runner.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/skills/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/skills/check_skills_callback.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/skills/skill.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/skills/utils.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/toolkits/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/toolkits/apps/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/toolkits/apps/reverse_mcp/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/toolkits/apps/reverse_mcp/client_with_reverse_mcp.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/toolkits/apps/reverse_mcp/server_with_reverse_mcp.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/toolkits/audio/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/toolkits/audio/asr/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/toolkits/audio/asr/asr_client.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/toolkits/audio/tts/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/toolkits/audio/tts/protocols.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/toolkits/audio/tts/tts_client.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/toolkits/dataset_auto_gen_callback.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/builtin_tools/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/builtin_tools/agent_authorization.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/builtin_tools/execute_skills.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/builtin_tools/generate_image.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/builtin_tools/image_edit.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/builtin_tools/image_generate.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/builtin_tools/lark.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/builtin_tools/las.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/builtin_tools/link_reader.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/builtin_tools/llm_shield.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/builtin_tools/load_kb_queries.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/builtin_tools/load_knowledgebase.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/builtin_tools/mcp_router.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/builtin_tools/mobile_run.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/builtin_tools/parallel_web_search.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/builtin_tools/playwright.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/builtin_tools/run_code.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/builtin_tools/supabase_toolset.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/builtin_tools/tts.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/builtin_tools/vesearch.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/builtin_tools/video_generate.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/builtin_tools/vod.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/builtin_tools/web_scraper.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/builtin_tools/web_search.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/demo_tools.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/ghost_char.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/load_history_events.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/load_knowledgebase_tool.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/mcp_tool/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/mcp_tool/trusted_mcp_session_manager.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/mcp_tool/trusted_mcp_toolset.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/sandbox/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/sandbox/browser_sandbox.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/sandbox/code_sandbox.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/sandbox/computer_sandbox.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/skills_tools/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/skills_tools/bash_tool.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/skills_tools/download_skills_tool.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/skills_tools/file_tool.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/skills_tools/register_skills_tool.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/skills_tools/session_path.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/skills_tools/skills_tool.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tools/skills_tools/skills_toolset.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tracing/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tracing/base_tracer.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tracing/telemetry/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tracing/telemetry/attributes/attributes.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tracing/telemetry/attributes/extractors/common_attributes_extractors.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tracing/telemetry/attributes/extractors/llm_attributes_extractors.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tracing/telemetry/attributes/extractors/tool_attributes_extractors.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tracing/telemetry/attributes/extractors/types.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tracing/telemetry/exporters/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tracing/telemetry/exporters/apmplus_exporter.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tracing/telemetry/exporters/base_exporter.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tracing/telemetry/exporters/cozeloop_exporter.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tracing/telemetry/exporters/inmemory_exporter.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tracing/telemetry/exporters/tls_exporter.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tracing/telemetry/opentelemetry_tracer.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/tracing/telemetry/telemetry.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/types.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/utils/__init__.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/utils/audio_manager.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/utils/auth.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/utils/logger.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/utils/mcp_utils.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/utils/misc.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/utils/patches.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk/utils/volcengine_sign.py +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk_python.egg-info/dependency_links.txt +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk_python.egg-info/entry_points.txt +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/veadk_python.egg-info/requires.txt +0 -0
- {veadk_python-0.5.25 → veadk_python-0.5.26}/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.26
|
|
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,339 @@
|
|
|
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 typing import Any, Dict, Optional, List
|
|
16
|
+
from google.adk.tools import BaseTool, ToolContext
|
|
17
|
+
from google.genai import types
|
|
18
|
+
from vanna.tools.agent_memory import (
|
|
19
|
+
SaveQuestionToolArgsTool as VannaSaveQuestionToolArgsTool,
|
|
20
|
+
SearchSavedCorrectToolUsesTool as VannaSearchSavedCorrectToolUsesTool,
|
|
21
|
+
SaveTextMemoryTool as VannaSaveTextMemoryTool,
|
|
22
|
+
)
|
|
23
|
+
from vanna.core.user import User
|
|
24
|
+
from vanna.core.tool import ToolContext as VannaToolContext
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class SaveQuestionToolArgsTool(BaseTool):
|
|
28
|
+
"""Save successful question-tool-argument combinations for future reference."""
|
|
29
|
+
|
|
30
|
+
def __init__(
|
|
31
|
+
self,
|
|
32
|
+
agent_memory,
|
|
33
|
+
access_groups: Optional[List[str]] = None,
|
|
34
|
+
):
|
|
35
|
+
"""
|
|
36
|
+
Initialize the save tool usage tool with custom agent_memory.
|
|
37
|
+
|
|
38
|
+
Args:
|
|
39
|
+
agent_memory: A Vanna agent memory instance (e.g., DemoAgentMemory)
|
|
40
|
+
access_groups: List of user groups that can access this tool (e.g., ['admin'])
|
|
41
|
+
"""
|
|
42
|
+
self.agent_memory = agent_memory
|
|
43
|
+
self.vanna_tool = VannaSaveQuestionToolArgsTool()
|
|
44
|
+
self.access_groups = access_groups or ["admin", "user"]
|
|
45
|
+
|
|
46
|
+
super().__init__(
|
|
47
|
+
name="save_question_tool_args", # Keep the same name as Vanna
|
|
48
|
+
description="Save a successful question-tool-argument combination for future reference.",
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
def _get_declaration(self) -> types.FunctionDeclaration:
|
|
52
|
+
return types.FunctionDeclaration(
|
|
53
|
+
name=self.name,
|
|
54
|
+
description=self.description,
|
|
55
|
+
parameters=types.Schema(
|
|
56
|
+
type=types.Type.OBJECT,
|
|
57
|
+
properties={
|
|
58
|
+
"question": types.Schema(
|
|
59
|
+
type=types.Type.STRING,
|
|
60
|
+
description="The original question that was asked",
|
|
61
|
+
),
|
|
62
|
+
"tool_name": types.Schema(
|
|
63
|
+
type=types.Type.STRING,
|
|
64
|
+
description="The name of the tool that was used successfully",
|
|
65
|
+
),
|
|
66
|
+
"args": types.Schema(
|
|
67
|
+
type=types.Type.OBJECT,
|
|
68
|
+
description="The arguments that were passed to the tool",
|
|
69
|
+
),
|
|
70
|
+
},
|
|
71
|
+
required=["question", "tool_name", "args"],
|
|
72
|
+
),
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
def _get_user_groups(self, tool_context: ToolContext) -> List[str]:
|
|
76
|
+
"""Get user groups from context."""
|
|
77
|
+
user_groups = tool_context.state.get("user_groups", ["user"])
|
|
78
|
+
return user_groups
|
|
79
|
+
|
|
80
|
+
def _check_access(self, user_groups: List[str]) -> bool:
|
|
81
|
+
"""Check if user has access to this tool."""
|
|
82
|
+
return any(group in self.access_groups for group in user_groups)
|
|
83
|
+
|
|
84
|
+
def _create_vanna_context(
|
|
85
|
+
self, tool_context: ToolContext, user_groups: List[str]
|
|
86
|
+
) -> VannaToolContext:
|
|
87
|
+
"""Create Vanna context from Veadk ToolContext."""
|
|
88
|
+
user_id = tool_context.user_id
|
|
89
|
+
session_id = tool_context.session.id
|
|
90
|
+
user_email = tool_context.state.get("user_email", "user@example.com")
|
|
91
|
+
|
|
92
|
+
vanna_user = User(
|
|
93
|
+
id=user_id + "_" + session_id,
|
|
94
|
+
email=user_email,
|
|
95
|
+
group_memberships=user_groups,
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
vanna_context = VannaToolContext(
|
|
99
|
+
user=vanna_user,
|
|
100
|
+
conversation_id=session_id,
|
|
101
|
+
request_id=session_id,
|
|
102
|
+
agent_memory=self.agent_memory,
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
return vanna_context
|
|
106
|
+
|
|
107
|
+
async def run_async(
|
|
108
|
+
self, *, args: Dict[str, Any], tool_context: ToolContext
|
|
109
|
+
) -> str:
|
|
110
|
+
"""Save a tool usage pattern."""
|
|
111
|
+
question = args.get("question", "").strip()
|
|
112
|
+
tool_name = args.get("tool_name", "").strip()
|
|
113
|
+
tool_args = args.get("args", {})
|
|
114
|
+
|
|
115
|
+
if not question:
|
|
116
|
+
return "Error: No question provided"
|
|
117
|
+
|
|
118
|
+
if not tool_name:
|
|
119
|
+
return "Error: No tool name provided"
|
|
120
|
+
|
|
121
|
+
try:
|
|
122
|
+
user_groups = self._get_user_groups(tool_context)
|
|
123
|
+
|
|
124
|
+
if not self._check_access(user_groups):
|
|
125
|
+
return f"Error: Access denied. This tool requires one of the following groups: {', '.join(self.access_groups)}"
|
|
126
|
+
|
|
127
|
+
vanna_context = self._create_vanna_context(tool_context, user_groups)
|
|
128
|
+
|
|
129
|
+
args_model = self.vanna_tool.get_args_schema()(
|
|
130
|
+
question=question, tool_name=tool_name, args=tool_args
|
|
131
|
+
)
|
|
132
|
+
result = await self.vanna_tool.execute(vanna_context, args_model)
|
|
133
|
+
|
|
134
|
+
return str(result.result_for_llm)
|
|
135
|
+
except Exception as e:
|
|
136
|
+
return f"Error saving tool usage: {str(e)}"
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
class SearchSavedCorrectToolUsesTool(BaseTool):
|
|
140
|
+
"""Search for similar tool usage patterns based on a question."""
|
|
141
|
+
|
|
142
|
+
def __init__(
|
|
143
|
+
self,
|
|
144
|
+
agent_memory,
|
|
145
|
+
access_groups: Optional[List[str]] = None,
|
|
146
|
+
):
|
|
147
|
+
"""
|
|
148
|
+
Initialize the search similar tools tool with custom agent_memory.
|
|
149
|
+
|
|
150
|
+
Args:
|
|
151
|
+
agent_memory: A Vanna agent memory instance (e.g., DemoAgentMemory)
|
|
152
|
+
access_groups: List of user groups that can access this tool (e.g., ['admin', 'user'])
|
|
153
|
+
user_group_resolver: Optional callable that takes ToolContext and returns user groups
|
|
154
|
+
"""
|
|
155
|
+
self.agent_memory = agent_memory
|
|
156
|
+
self.vanna_tool = VannaSearchSavedCorrectToolUsesTool()
|
|
157
|
+
self.access_groups = access_groups or ["admin", "user"]
|
|
158
|
+
|
|
159
|
+
super().__init__(
|
|
160
|
+
name="search_saved_correct_tool_uses", # Keep the same name as Vanna
|
|
161
|
+
description="Search for similar tool usage patterns based on a question.",
|
|
162
|
+
)
|
|
163
|
+
|
|
164
|
+
def _get_declaration(self) -> types.FunctionDeclaration:
|
|
165
|
+
return types.FunctionDeclaration(
|
|
166
|
+
name=self.name,
|
|
167
|
+
description=self.description,
|
|
168
|
+
parameters=types.Schema(
|
|
169
|
+
type=types.Type.OBJECT,
|
|
170
|
+
properties={
|
|
171
|
+
"question": types.Schema(
|
|
172
|
+
type=types.Type.STRING,
|
|
173
|
+
description="The question to find similar tool usage patterns for",
|
|
174
|
+
),
|
|
175
|
+
"limit": types.Schema(
|
|
176
|
+
type=types.Type.INTEGER,
|
|
177
|
+
description="Maximum number of results to return (default: 10)",
|
|
178
|
+
),
|
|
179
|
+
},
|
|
180
|
+
required=["question"],
|
|
181
|
+
),
|
|
182
|
+
)
|
|
183
|
+
|
|
184
|
+
def _get_user_groups(self, tool_context: ToolContext) -> List[str]:
|
|
185
|
+
"""Get user groups from context."""
|
|
186
|
+
user_groups = tool_context.state.get("user_groups", ["user"])
|
|
187
|
+
return user_groups
|
|
188
|
+
|
|
189
|
+
def _check_access(self, user_groups: List[str]) -> bool:
|
|
190
|
+
"""Check if user has access to this tool."""
|
|
191
|
+
return any(group in self.access_groups for group in user_groups)
|
|
192
|
+
|
|
193
|
+
def _create_vanna_context(
|
|
194
|
+
self, tool_context: ToolContext, user_groups: List[str]
|
|
195
|
+
) -> VannaToolContext:
|
|
196
|
+
"""Create Vanna context from Veadk ToolContext."""
|
|
197
|
+
user_id = tool_context.user_id
|
|
198
|
+
session_id = tool_context.session.id
|
|
199
|
+
user_email = tool_context.state.get("user_email", "user@example.com")
|
|
200
|
+
|
|
201
|
+
vanna_user = User(
|
|
202
|
+
id=user_id + "_" + session_id,
|
|
203
|
+
email=user_email,
|
|
204
|
+
group_memberships=user_groups,
|
|
205
|
+
)
|
|
206
|
+
|
|
207
|
+
vanna_context = VannaToolContext(
|
|
208
|
+
user=vanna_user,
|
|
209
|
+
conversation_id=session_id,
|
|
210
|
+
request_id=session_id,
|
|
211
|
+
agent_memory=self.agent_memory,
|
|
212
|
+
)
|
|
213
|
+
|
|
214
|
+
return vanna_context
|
|
215
|
+
|
|
216
|
+
async def run_async(
|
|
217
|
+
self, *, args: Dict[str, Any], tool_context: ToolContext
|
|
218
|
+
) -> str:
|
|
219
|
+
"""Search for similar tool usage patterns."""
|
|
220
|
+
question = args.get("question", "").strip()
|
|
221
|
+
limit = args.get("limit", 10)
|
|
222
|
+
|
|
223
|
+
if not question:
|
|
224
|
+
return "Error: No question provided"
|
|
225
|
+
|
|
226
|
+
try:
|
|
227
|
+
user_groups = self._get_user_groups(tool_context)
|
|
228
|
+
|
|
229
|
+
if not self._check_access(user_groups):
|
|
230
|
+
return f"Error: Access denied. This tool requires one of the following groups: {', '.join(self.access_groups)}"
|
|
231
|
+
|
|
232
|
+
vanna_context = self._create_vanna_context(tool_context, user_groups)
|
|
233
|
+
|
|
234
|
+
args_model = self.vanna_tool.get_args_schema()(
|
|
235
|
+
question=question, limit=limit
|
|
236
|
+
)
|
|
237
|
+
result = await self.vanna_tool.execute(vanna_context, args_model)
|
|
238
|
+
|
|
239
|
+
return str(result.result_for_llm)
|
|
240
|
+
except Exception as e:
|
|
241
|
+
return f"Error searching similar tools: {str(e)}"
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
class SaveTextMemoryTool(BaseTool):
|
|
245
|
+
"""Save free-form text memories for important insights, observations, or context."""
|
|
246
|
+
|
|
247
|
+
def __init__(
|
|
248
|
+
self,
|
|
249
|
+
agent_memory,
|
|
250
|
+
access_groups: Optional[List[str]] = None,
|
|
251
|
+
):
|
|
252
|
+
"""
|
|
253
|
+
Initialize the save text memory tool with custom agent_memory.
|
|
254
|
+
|
|
255
|
+
Args:
|
|
256
|
+
agent_memory: A Vanna agent memory instance (e.g., DemoAgentMemory)
|
|
257
|
+
access_groups: List of user groups that can access this tool (e.g., ['admin', 'user'])
|
|
258
|
+
user_group_resolver: Optional callable that takes ToolContext and returns user groups
|
|
259
|
+
"""
|
|
260
|
+
self.agent_memory = agent_memory
|
|
261
|
+
self.vanna_tool = VannaSaveTextMemoryTool()
|
|
262
|
+
self.access_groups = access_groups or ["admin", "user"]
|
|
263
|
+
|
|
264
|
+
super().__init__(
|
|
265
|
+
name="save_text_memory", # Keep the same name as Vanna
|
|
266
|
+
description="Save free-form text memory for important insights, observations, or context.",
|
|
267
|
+
)
|
|
268
|
+
|
|
269
|
+
def _get_declaration(self) -> types.FunctionDeclaration:
|
|
270
|
+
return types.FunctionDeclaration(
|
|
271
|
+
name=self.name,
|
|
272
|
+
description=self.description,
|
|
273
|
+
parameters=types.Schema(
|
|
274
|
+
type=types.Type.OBJECT,
|
|
275
|
+
properties={
|
|
276
|
+
"content": types.Schema(
|
|
277
|
+
type=types.Type.STRING,
|
|
278
|
+
description="The text content to save as a memory",
|
|
279
|
+
),
|
|
280
|
+
},
|
|
281
|
+
required=["content"],
|
|
282
|
+
),
|
|
283
|
+
)
|
|
284
|
+
|
|
285
|
+
def _get_user_groups(self, tool_context: ToolContext) -> List[str]:
|
|
286
|
+
"""Get user groups from context."""
|
|
287
|
+
user_groups = tool_context.state.get("user_groups", ["user"])
|
|
288
|
+
return user_groups
|
|
289
|
+
|
|
290
|
+
def _check_access(self, user_groups: List[str]) -> bool:
|
|
291
|
+
"""Check if user has access to this tool."""
|
|
292
|
+
return any(group in self.access_groups for group in user_groups)
|
|
293
|
+
|
|
294
|
+
def _create_vanna_context(
|
|
295
|
+
self, tool_context: ToolContext, user_groups: List[str]
|
|
296
|
+
) -> VannaToolContext:
|
|
297
|
+
"""Create Vanna context from Veadk ToolContext."""
|
|
298
|
+
user_id = tool_context.user_id
|
|
299
|
+
session_id = tool_context.session.id
|
|
300
|
+
user_email = tool_context.state.get("user_email", "user@example.com")
|
|
301
|
+
|
|
302
|
+
vanna_user = User(
|
|
303
|
+
id=user_id + "_" + session_id,
|
|
304
|
+
email=user_email,
|
|
305
|
+
group_memberships=user_groups,
|
|
306
|
+
)
|
|
307
|
+
|
|
308
|
+
vanna_context = VannaToolContext(
|
|
309
|
+
user=vanna_user,
|
|
310
|
+
conversation_id=session_id,
|
|
311
|
+
request_id=session_id,
|
|
312
|
+
agent_memory=self.agent_memory,
|
|
313
|
+
)
|
|
314
|
+
|
|
315
|
+
return vanna_context
|
|
316
|
+
|
|
317
|
+
async def run_async(
|
|
318
|
+
self, *, args: Dict[str, Any], tool_context: ToolContext
|
|
319
|
+
) -> str:
|
|
320
|
+
"""Save a text memory."""
|
|
321
|
+
content = args.get("content", "").strip()
|
|
322
|
+
|
|
323
|
+
if not content:
|
|
324
|
+
return "Error: No content provided"
|
|
325
|
+
|
|
326
|
+
try:
|
|
327
|
+
user_groups = self._get_user_groups(tool_context)
|
|
328
|
+
|
|
329
|
+
if not self._check_access(user_groups):
|
|
330
|
+
return f"Error: Access denied. This tool requires one of the following groups: {', '.join(self.access_groups)}"
|
|
331
|
+
|
|
332
|
+
vanna_context = self._create_vanna_context(tool_context, user_groups)
|
|
333
|
+
|
|
334
|
+
args_model = self.vanna_tool.get_args_schema()(content=content)
|
|
335
|
+
result = await self.vanna_tool.execute(vanna_context, args_model)
|
|
336
|
+
|
|
337
|
+
return str(result.result_for_llm)
|
|
338
|
+
except Exception as e:
|
|
339
|
+
return f"Error saving text memory: {str(e)}"
|
|
@@ -0,0 +1,228 @@
|
|
|
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 veadk import Agent, Runner
|
|
16
|
+
from veadk.tools.vanna_tools.vanna_toolset import VannaToolSet
|
|
17
|
+
from google.adk.sessions import InMemorySessionService
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
# Create a session with user groups for access control
|
|
21
|
+
async def create_session(user_groups: list = ["user"]):
|
|
22
|
+
session_service = InMemorySessionService()
|
|
23
|
+
example_session = await session_service.create_session(
|
|
24
|
+
app_name="example_app",
|
|
25
|
+
user_id="example_user",
|
|
26
|
+
state={"user_groups": user_groups},
|
|
27
|
+
)
|
|
28
|
+
return session_service, example_session
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
vanna_toolset = VannaToolSet(
|
|
32
|
+
connection_string="sqlite:///tmp/Chinook.sqlite", file_storage="/tmp/vanna_files"
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
# Define the Veadk Agent with class-based tools
|
|
37
|
+
agent: Agent = Agent(
|
|
38
|
+
name="vanna_sql_agent",
|
|
39
|
+
description="An intelligent agent that can query databases, visualize data, and generate reports.",
|
|
40
|
+
instruction="""
|
|
41
|
+
You are a helpful assistant that can answer questions about data in the Chinook database.
|
|
42
|
+
You can execute SQL queries, visualize the results, save/search useful tool usage patterns, and generate documents.
|
|
43
|
+
|
|
44
|
+
Here is the schema of the Chinook database:
|
|
45
|
+
```sql
|
|
46
|
+
CREATE TABLE [Album]
|
|
47
|
+
(
|
|
48
|
+
[AlbumId] INTEGER NOT NULL,
|
|
49
|
+
[Title] NVARCHAR(160) NOT NULL,
|
|
50
|
+
[ArtistId] INTEGER NOT NULL,
|
|
51
|
+
CONSTRAINT [PK_Album] PRIMARY KEY ([AlbumId]),
|
|
52
|
+
FOREIGN KEY ([ArtistId]) REFERENCES [Artist] ([ArtistId])
|
|
53
|
+
ON DELETE NO ACTION ON UPDATE NO ACTION
|
|
54
|
+
);
|
|
55
|
+
CREATE TABLE [Artist]
|
|
56
|
+
(
|
|
57
|
+
[ArtistId] INTEGER NOT NULL,
|
|
58
|
+
[Name] NVARCHAR(120),
|
|
59
|
+
CONSTRAINT [PK_Artist] PRIMARY KEY ([ArtistId])
|
|
60
|
+
);
|
|
61
|
+
CREATE TABLE [Customer]
|
|
62
|
+
(
|
|
63
|
+
[CustomerId] INTEGER NOT NULL,
|
|
64
|
+
[FirstName] NVARCHAR(40) NOT NULL,
|
|
65
|
+
[LastName] NVARCHAR(20) NOT NULL,
|
|
66
|
+
[Company] NVARCHAR(80),
|
|
67
|
+
[Address] NVARCHAR(70),
|
|
68
|
+
[City] NVARCHAR(40),
|
|
69
|
+
[State] NVARCHAR(40),
|
|
70
|
+
[Country] NVARCHAR(40),
|
|
71
|
+
[PostalCode] NVARCHAR(10),
|
|
72
|
+
[Phone] NVARCHAR(24),
|
|
73
|
+
[Fax] NVARCHAR(24),
|
|
74
|
+
[Email] NVARCHAR(60) NOT NULL,
|
|
75
|
+
[SupportRepId] INTEGER,
|
|
76
|
+
CONSTRAINT [PK_Customer] PRIMARY KEY ([CustomerId]),
|
|
77
|
+
FOREIGN KEY ([SupportRepId]) REFERENCES [Employee] ([EmployeeId])
|
|
78
|
+
ON DELETE NO ACTION ON UPDATE NO ACTION
|
|
79
|
+
);
|
|
80
|
+
CREATE TABLE [Employee]
|
|
81
|
+
(
|
|
82
|
+
[EmployeeId] INTEGER NOT NULL,
|
|
83
|
+
[LastName] NVARCHAR(20) NOT NULL,
|
|
84
|
+
[FirstName] NVARCHAR(20) NOT NULL,
|
|
85
|
+
[Title] NVARCHAR(30),
|
|
86
|
+
[ReportsTo] INTEGER,
|
|
87
|
+
[BirthDate] DATETIME,
|
|
88
|
+
[HireDate] DATETIME,
|
|
89
|
+
[Address] NVARCHAR(70),
|
|
90
|
+
[City] NVARCHAR(40),
|
|
91
|
+
[State] NVARCHAR(40),
|
|
92
|
+
[Country] NVARCHAR(40),
|
|
93
|
+
[PostalCode] NVARCHAR(10),
|
|
94
|
+
[Phone] NVARCHAR(24),
|
|
95
|
+
[Fax] NVARCHAR(24),
|
|
96
|
+
[Email] NVARCHAR(60),
|
|
97
|
+
CONSTRAINT [PK_Employee] PRIMARY KEY ([EmployeeId]),
|
|
98
|
+
FOREIGN KEY ([ReportsTo]) REFERENCES [Employee] ([EmployeeId])
|
|
99
|
+
ON DELETE NO ACTION ON UPDATE NO ACTION
|
|
100
|
+
);
|
|
101
|
+
CREATE TABLE [Genre]
|
|
102
|
+
(
|
|
103
|
+
[GenreId] INTEGER NOT NULL,
|
|
104
|
+
[Name] NVARCHAR(120),
|
|
105
|
+
CONSTRAINT [PK_Genre] PRIMARY KEY ([GenreId])
|
|
106
|
+
);
|
|
107
|
+
CREATE TABLE [Invoice]
|
|
108
|
+
(
|
|
109
|
+
[InvoiceId] INTEGER NOT NULL,
|
|
110
|
+
[CustomerId] INTEGER NOT NULL,
|
|
111
|
+
[InvoiceDate] DATETIME NOT NULL,
|
|
112
|
+
[BillingAddress] NVARCHAR(70),
|
|
113
|
+
[BillingCity] NVARCHAR(40),
|
|
114
|
+
[BillingState] NVARCHAR(40),
|
|
115
|
+
[BillingCountry] NVARCHAR(40),
|
|
116
|
+
[BillingPostalCode] NVARCHAR(10),
|
|
117
|
+
[Total] NUMERIC(10,2) NOT NULL,
|
|
118
|
+
CONSTRAINT [PK_Invoice] PRIMARY KEY ([InvoiceId]),
|
|
119
|
+
FOREIGN KEY ([CustomerId]) REFERENCES [Customer] ([CustomerId])
|
|
120
|
+
ON DELETE NO ACTION ON UPDATE NO ACTION
|
|
121
|
+
);
|
|
122
|
+
CREATE TABLE [InvoiceLine]
|
|
123
|
+
(
|
|
124
|
+
[InvoiceLineId] INTEGER NOT NULL,
|
|
125
|
+
[InvoiceId] INTEGER NOT NULL,
|
|
126
|
+
[TrackId] INTEGER NOT NULL,
|
|
127
|
+
[UnitPrice] NUMERIC(10,2) NOT NULL,
|
|
128
|
+
[Quantity] INTEGER NOT NULL,
|
|
129
|
+
CONSTRAINT [PK_InvoiceLine] PRIMARY KEY ([InvoiceLineId]),
|
|
130
|
+
FOREIGN KEY ([InvoiceId]) REFERENCES [Invoice] ([InvoiceId])
|
|
131
|
+
ON DELETE NO ACTION ON UPDATE NO ACTION,
|
|
132
|
+
FOREIGN KEY ([TrackId]) REFERENCES [Track] ([TrackId])
|
|
133
|
+
ON DELETE NO ACTION ON UPDATE NO ACTION
|
|
134
|
+
);
|
|
135
|
+
CREATE TABLE [MediaType]
|
|
136
|
+
(
|
|
137
|
+
[MediaTypeId] INTEGER NOT NULL,
|
|
138
|
+
[Name] NVARCHAR(120),
|
|
139
|
+
CONSTRAINT [PK_MediaType] PRIMARY KEY ([MediaTypeId])
|
|
140
|
+
);
|
|
141
|
+
CREATE TABLE [Playlist]
|
|
142
|
+
(
|
|
143
|
+
[PlaylistId] INTEGER NOT NULL,
|
|
144
|
+
[Name] NVARCHAR(120),
|
|
145
|
+
CONSTRAINT [PK_Playlist] PRIMARY KEY ([PlaylistId])
|
|
146
|
+
);
|
|
147
|
+
CREATE TABLE [PlaylistTrack]
|
|
148
|
+
(
|
|
149
|
+
[PlaylistId] INTEGER NOT NULL,
|
|
150
|
+
[TrackId] INTEGER NOT NULL,
|
|
151
|
+
CONSTRAINT [PK_PlaylistTrack] PRIMARY KEY ([PlaylistId], [TrackId]),
|
|
152
|
+
FOREIGN KEY ([PlaylistId]) REFERENCES [Playlist] ([PlaylistId])
|
|
153
|
+
ON DELETE NO ACTION ON UPDATE NO ACTION,
|
|
154
|
+
FOREIGN KEY ([TrackId]) REFERENCES [Track] ([TrackId])
|
|
155
|
+
ON DELETE NO ACTION ON UPDATE NO ACTION
|
|
156
|
+
);
|
|
157
|
+
CREATE TABLE [Track]
|
|
158
|
+
(
|
|
159
|
+
[TrackId] INTEGER NOT NULL,
|
|
160
|
+
[Name] NVARCHAR(200) NOT NULL,
|
|
161
|
+
[AlbumId] INTEGER,
|
|
162
|
+
[MediaTypeId] INTEGER NOT NULL,
|
|
163
|
+
[GenreId] INTEGER,
|
|
164
|
+
[Composer] NVARCHAR(220),
|
|
165
|
+
[Milliseconds] INTEGER NOT NULL,
|
|
166
|
+
[Bytes] INTEGER,
|
|
167
|
+
[UnitPrice] NUMERIC(10,2) NOT NULL,
|
|
168
|
+
CONSTRAINT [PK_Track] PRIMARY KEY ([TrackId]),
|
|
169
|
+
FOREIGN KEY ([AlbumId]) REFERENCES [Album] ([AlbumId])
|
|
170
|
+
ON DELETE NO ACTION ON UPDATE NO ACTION,
|
|
171
|
+
FOREIGN KEY ([GenreId]) REFERENCES [Genre] ([GenreId])
|
|
172
|
+
ON DELETE NO ACTION ON UPDATE NO ACTION,
|
|
173
|
+
FOREIGN KEY ([MediaTypeId]) REFERENCES [MediaType] ([MediaTypeId])
|
|
174
|
+
ON DELETE NO ACTION ON UPDATE NO ACTION
|
|
175
|
+
);
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Here are some examples of how to query this database:
|
|
179
|
+
|
|
180
|
+
Q: Get all the tracks in the album 'Balls to the Wall'.
|
|
181
|
+
A: SELECT * FROM Track WHERE AlbumId = (SELECT AlbumId FROM Album WHERE Title = 'Balls to the Wall')
|
|
182
|
+
|
|
183
|
+
Q: Get the total sales for each customer.
|
|
184
|
+
A: SELECT c.FirstName, c.LastName, SUM(i.Total) as TotalSales FROM Customer c JOIN Invoice i ON c.CustomerId = i.CustomerId GROUP BY c.CustomerId
|
|
185
|
+
|
|
186
|
+
Q: How many tracks are there in each genre?
|
|
187
|
+
A: SELECT g.Name, COUNT(t.TrackId) as TrackCount FROM Genre g JOIN Track t ON g.GenreId = t.GenreId GROUP BY g.GenreId
|
|
188
|
+
|
|
189
|
+
Available tools (using Vanna's original names):
|
|
190
|
+
1. `run_sql` - Execute SQL queries
|
|
191
|
+
2. `visualize_data` - Create visualizations from CSV files
|
|
192
|
+
3. `write_file` - Save content to files
|
|
193
|
+
4. `save_question_tool_args` - Save successful tool usage patterns (admin only)
|
|
194
|
+
5. `search_saved_correct_tool_uses` - Search for similar tool usage patterns
|
|
195
|
+
6. `summarize_data` - Generate statistical summaries of CSV files
|
|
196
|
+
""",
|
|
197
|
+
tools=[vanna_toolset],
|
|
198
|
+
model_extra_config={"extra_body": {"thinking": {"type": "disabled"}}},
|
|
199
|
+
)
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
async def main(prompt: str, user_groups: list = None) -> str:
|
|
203
|
+
session_service, example_session = await create_session(
|
|
204
|
+
user_groups
|
|
205
|
+
) # Default to 'user' group if not specified
|
|
206
|
+
|
|
207
|
+
runner = Runner(
|
|
208
|
+
agent=agent,
|
|
209
|
+
app_name=example_session.app_name,
|
|
210
|
+
user_id=example_session.user_id,
|
|
211
|
+
session_service=session_service,
|
|
212
|
+
)
|
|
213
|
+
|
|
214
|
+
response = await runner.run(
|
|
215
|
+
messages=prompt,
|
|
216
|
+
session_id=example_session.id,
|
|
217
|
+
)
|
|
218
|
+
|
|
219
|
+
return response
|
|
220
|
+
|
|
221
|
+
|
|
222
|
+
if __name__ == "__main__":
|
|
223
|
+
import asyncio
|
|
224
|
+
|
|
225
|
+
print("=== Example 1: Regular User ===")
|
|
226
|
+
user_input = "What are the top 5 selling albums?"
|
|
227
|
+
response = asyncio.run(main(user_input, user_groups=["user"]))
|
|
228
|
+
print(response)
|