veadk-python 0.2.32__tar.gz → 0.2.34__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.2.32 → veadk_python-0.2.34}/PKG-INFO +1 -1
- {veadk_python-0.2.32 → veadk_python-0.2.34}/pyproject.toml +1 -1
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/config.py +2 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/configs/model_configs.py +15 -0
- veadk_python-0.2.34/veadk/realtime/__init__.py +22 -0
- veadk_python-0.2.34/veadk/realtime/client.py +52 -0
- veadk_python-0.2.34/veadk/realtime/doubao_realtime_voice_llm.py +166 -0
- veadk_python-0.2.34/veadk/realtime/doubao_realtime_voice_llm_connection.py +50 -0
- veadk_python-0.2.34/veadk/realtime/live.py +471 -0
- veadk_python-0.2.34/veadk/realtime/protocol.py +158 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/execute_skills.py +107 -10
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/types.py +5 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/version.py +1 -1
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk_python.egg-info/PKG-INFO +1 -1
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk_python.egg-info/SOURCES.txt +6 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/LICENSE +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/README.md +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/setup.cfg +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_agent.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_cloud.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_evaluator.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_knowledgebase.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_long_term_memory.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_misc.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_multiple_agents.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_runner.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_runtime_data_collecting.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_short_term_memory.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_tracing.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_ve_a2a_middlewares.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_ve_identity_auth_config.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_ve_identity_function_tool.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_ve_identity_mcp_tool.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_ve_identity_mcp_toolset.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/a2a/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/a2a/agent_card.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/a2a/remote_ve_agent.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/a2a/utils/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/a2a/utils/agent_to_a2a.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/a2a/ve_a2a_server.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/a2a/ve_agent_executor.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/a2a/ve_middlewares.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/a2a/ve_task_store.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/agent.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/agent_builder.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/agents/loop_agent.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/agents/parallel_agent.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/agents/sequential_agent.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/auth/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/auth/base_auth.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/auth/ve_credential_service.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/auth/veauth/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/auth/veauth/apmplus_veauth.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/auth/veauth/ark_veauth.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/auth/veauth/base_veauth.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/auth/veauth/cozeloop_veauth.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/auth/veauth/opensearch_veauth.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/auth/veauth/postgresql_veauth.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/auth/veauth/prompt_pilot_veauth.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/auth/veauth/speech_veauth.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/auth/veauth/utils.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/auth/veauth/vesearch_veauth.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/auth/veauth/viking_mem0_veauth.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/cli.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/cli_agentkit.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/cli_clean.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/cli_create.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/cli_deploy.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/cli_eval.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/cli_init.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/cli_kb.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/cli_pipeline.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/cli_prompt.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/cli_rl.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/cli_update.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/cli_uploadevalset.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/cli_web.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/templates/rl/ark/README.md +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/templates/rl/ark/arkworkspace.toml +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/templates/rl/ark/data/demo_dataset.jsonl +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/templates/rl/ark/job.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/templates/rl/ark/job.yaml +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/templates/rl/ark/plugins/random_reward.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/templates/rl/ark/plugins/raw_async_veadk_rollout.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/templates/rl/ark/plugins/test_utils.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/templates/rl/ark/requirements.txt +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/templates/rl/ark/test_faas.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cloud/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cloud/cloud_agent_engine.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cloud/cloud_app.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/configs/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/configs/auth_configs.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/configs/database_configs.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/configs/tool_configs.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/configs/tracing_configs.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/consts.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/evaluation/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/evaluation/adk_evaluator/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/evaluation/adk_evaluator/adk_evaluator.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/evaluation/base_evaluator.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/evaluation/deepeval_evaluator/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/evaluation/deepeval_evaluator/deepeval_evaluator.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/evaluation/eval_set_file_loader.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/evaluation/eval_set_recorder.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/evaluation/types.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/evaluation/utils/prometheus.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_apig/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_apig/ve_apig.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_apig/ve_apig_utils.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_code_pipeline/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_code_pipeline/ve_code_pipeline.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_cozeloop/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_cozeloop/ve_cozeloop.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_cr/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_cr/ve_cr.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/template/cookiecutter.json +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/config.yaml.example +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/deploy.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/agent.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/app.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/requirements.txt +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/run.sh +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name }}/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name }}/agent.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/ve_faas.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/ve_faas_utils.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/web_template/cookiecutter.json +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/config.yaml.example +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/deploy.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/Dockerfile +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/app.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/init_db.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/models.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/requirements.txt +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/run.sh +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/static/css/style.css +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/static/js/admin.js +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/dashboard.html +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/edit_post.html +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/login.html +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/posts.html +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/base.html +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/index.html +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/post.html +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_identity/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_identity/auth_config.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_identity/auth_mixins.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_identity/auth_processor.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_identity/function_tool.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_identity/identity_client.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_identity/mcp_tool.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_identity/mcp_toolset.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_identity/models.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_identity/token_manager.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_identity/utils.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_prompt_pilot/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_prompt_pilot/ve_prompt_pilot.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_tls/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_tls/utils.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_tls/ve_tls.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_tos/ve_tos.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_viking_db_memory/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_viking_db_memory/ve_viking_db_memory.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/knowledgebase/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/knowledgebase/backends/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/knowledgebase/backends/base_backend.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/knowledgebase/backends/in_memory_backend.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/knowledgebase/backends/opensearch_backend.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/knowledgebase/backends/redis_backend.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/knowledgebase/backends/tos_vector_backend.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/knowledgebase/backends/utils.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/knowledgebase/backends/vikingdb_knowledge_backend.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/knowledgebase/entry.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/knowledgebase/knowledgebase.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/long_term_memory.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/long_term_memory_backends/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/long_term_memory_backends/base_backend.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/long_term_memory_backends/in_memory_backend.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/long_term_memory_backends/mem0_backend.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/long_term_memory_backends/opensearch_backend.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/long_term_memory_backends/redis_backend.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/long_term_memory_backends/vikingdb_memory_backend.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/short_term_memory.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/short_term_memory_backends/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/short_term_memory_backends/base_backend.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/short_term_memory_backends/mysql_backend.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/short_term_memory_backends/postgresql_backend.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/short_term_memory_backends/sqlite_backend.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/short_term_memory_processor.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/processors/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/processors/base_run_processor.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/prompts/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/prompts/agent_default_prompt.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/prompts/prompt_evaluator.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/prompts/prompt_memory_processor.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/prompts/prompt_optimization.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/runner.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/agent_authorization.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/generate_image.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/image_edit.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/image_generate.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/lark.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/las.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/link_reader.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/llm_shield.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/load_knowledgebase.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/mcp_router.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/mobile_run.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/run_code.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/tts.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/vesearch.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/video_generate.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/web_scraper.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/web_search.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/demo_tools.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/load_knowledgebase_tool.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/mcp_tool/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/mcp_tool/trusted_mcp_session_manager.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/mcp_tool/trusted_mcp_toolset.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/sandbox/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/sandbox/browser_sandbox.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/sandbox/code_sandbox.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/sandbox/computer_sandbox.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/base_tracer.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/telemetry/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/telemetry/attributes/attributes.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/telemetry/attributes/extractors/common_attributes_extractors.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/telemetry/attributes/extractors/llm_attributes_extractors.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/telemetry/attributes/extractors/tool_attributes_extractors.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/telemetry/attributes/extractors/types.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/telemetry/exporters/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/telemetry/exporters/apmplus_exporter.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/telemetry/exporters/base_exporter.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/telemetry/exporters/cozeloop_exporter.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/telemetry/exporters/inmemory_exporter.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/telemetry/exporters/tls_exporter.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/telemetry/opentelemetry_tracer.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/telemetry/telemetry.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/utils/__init__.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/utils/audio_manager.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/utils/auth.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/utils/logger.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/utils/mcp_utils.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/utils/misc.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/utils/patches.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/utils/volcengine_sign.py +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk_python.egg-info/dependency_links.txt +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk_python.egg-info/entry_points.txt +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk_python.egg-info/requires.txt +0 -0
- {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk_python.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: veadk-python
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.34
|
|
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
|
|
@@ -19,6 +19,7 @@ from dotenv import find_dotenv, load_dotenv, dotenv_values
|
|
|
19
19
|
from pydantic import BaseModel, Field
|
|
20
20
|
|
|
21
21
|
from veadk.configs.auth_configs import VeIdentityConfig
|
|
22
|
+
from veadk.configs.model_configs import RealtimeModelConfig
|
|
22
23
|
from veadk.configs.database_configs import (
|
|
23
24
|
MysqlConfig,
|
|
24
25
|
OpensearchConfig,
|
|
@@ -70,6 +71,7 @@ class VeADKConfig(BaseModel):
|
|
|
70
71
|
)
|
|
71
72
|
|
|
72
73
|
veidentity: VeIdentityConfig = Field(default_factory=VeIdentityConfig)
|
|
74
|
+
realtime_model: RealtimeModelConfig = Field(default_factory=RealtimeModelConfig)
|
|
73
75
|
|
|
74
76
|
|
|
75
77
|
def getenv(
|
|
@@ -18,6 +18,7 @@ from functools import cached_property
|
|
|
18
18
|
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
19
19
|
|
|
20
20
|
from veadk.auth.veauth.ark_veauth import get_ark_token
|
|
21
|
+
from veadk.auth.veauth.speech_veauth import get_speech_token
|
|
21
22
|
from veadk.consts import (
|
|
22
23
|
DEFAULT_MODEL_AGENT_API_BASE,
|
|
23
24
|
DEFAULT_MODEL_AGENT_NAME,
|
|
@@ -76,3 +77,17 @@ class NormalEmbeddingModelConfig(BaseSettings):
|
|
|
76
77
|
"""The api base of the model for embedding."""
|
|
77
78
|
|
|
78
79
|
api_key: str
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
class RealtimeModelConfig(BaseSettings):
|
|
83
|
+
model_config = SettingsConfigDict(env_prefix="MODEL_REALTIME_")
|
|
84
|
+
|
|
85
|
+
name: str = "doubao_realtime_voice_model"
|
|
86
|
+
"""Model name for realtime."""
|
|
87
|
+
|
|
88
|
+
api_base: str = "wss://openspeech.bytedance.com/api/v3/realtime/dialogue"
|
|
89
|
+
"""The api base of the model for realtime."""
|
|
90
|
+
|
|
91
|
+
@cached_property
|
|
92
|
+
def api_key(self) -> str:
|
|
93
|
+
return os.getenv("MODEL_REALTIME_API_KEY") or get_speech_token()
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. and/or its affiliates.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
from .doubao_realtime_voice_llm import DoubaoRealtimeVoice
|
|
16
|
+
from google.adk.models.registry import LLMRegistry
|
|
17
|
+
|
|
18
|
+
__all__ = [
|
|
19
|
+
"DoubaoRealtimeVoice",
|
|
20
|
+
]
|
|
21
|
+
|
|
22
|
+
LLMRegistry.register(DoubaoRealtimeVoice)
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. and/or its affiliates.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
import os
|
|
16
|
+
from google.genai.client import Client, AsyncClient
|
|
17
|
+
from google.genai._api_client import BaseApiClient
|
|
18
|
+
from .live import DoubaoAsyncLive
|
|
19
|
+
from veadk.utils.logger import get_logger
|
|
20
|
+
|
|
21
|
+
logger = get_logger(__name__)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class DoubaoAsyncClient(AsyncClient):
|
|
25
|
+
"""Client for making asynchronous (non-blocking) requests."""
|
|
26
|
+
|
|
27
|
+
def __init__(self, api_client: BaseApiClient):
|
|
28
|
+
super().__init__(api_client)
|
|
29
|
+
self._live = DoubaoAsyncLive(self._api_client)
|
|
30
|
+
|
|
31
|
+
@property
|
|
32
|
+
def live(self) -> DoubaoAsyncLive:
|
|
33
|
+
return self._live
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class DoubaoClient(Client):
|
|
37
|
+
"""The synchronous client for doubao realtime voice model, with async support via the aio property."""
|
|
38
|
+
|
|
39
|
+
def __init__(self, *args, **kwargs):
|
|
40
|
+
# Temporary workaround to set Google API key for Gemini client
|
|
41
|
+
if not os.environ.get("GOOGLE_API_KEY"):
|
|
42
|
+
os.environ["GOOGLE_API_KEY"] = "hack_google_api_key"
|
|
43
|
+
try:
|
|
44
|
+
super().__init__(*args, **kwargs)
|
|
45
|
+
self._aio = DoubaoAsyncClient(self._api_client)
|
|
46
|
+
except Exception as e:
|
|
47
|
+
logger.info(f"Failed to initialize DoubaoAsyncClient: {e}")
|
|
48
|
+
self._aio = None
|
|
49
|
+
|
|
50
|
+
@property
|
|
51
|
+
def aio(self) -> DoubaoAsyncClient:
|
|
52
|
+
return self._aio
|
|
@@ -0,0 +1,166 @@
|
|
|
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 __future__ import annotations
|
|
16
|
+
|
|
17
|
+
import contextlib
|
|
18
|
+
from functools import cached_property
|
|
19
|
+
import os
|
|
20
|
+
import sys
|
|
21
|
+
|
|
22
|
+
from typing import Optional
|
|
23
|
+
from typing import TYPE_CHECKING
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
from .client import DoubaoClient
|
|
27
|
+
from google.genai import types
|
|
28
|
+
from typing_extensions import override
|
|
29
|
+
from google.adk import version
|
|
30
|
+
from google.adk.models.google_llm import Gemini
|
|
31
|
+
from google.adk.models.base_llm_connection import BaseLlmConnection
|
|
32
|
+
from .doubao_realtime_voice_llm_connection import DoubaoRealtimeVoiceLlmConnection
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
if TYPE_CHECKING:
|
|
36
|
+
from google.adk.models.llm_request import LlmRequest
|
|
37
|
+
|
|
38
|
+
from veadk.utils.logger import get_logger
|
|
39
|
+
|
|
40
|
+
logger = get_logger(__name__)
|
|
41
|
+
|
|
42
|
+
_NEW_LINE = "\n"
|
|
43
|
+
_EXCLUDED_PART_FIELD = {"inline_data": {"data"}}
|
|
44
|
+
_AGENT_ENGINE_TELEMETRY_TAG = "remote_reasoning_engine"
|
|
45
|
+
_AGENT_ENGINE_TELEMETRY_ENV_VARIABLE_NAME = "VOLCENGINE_CLOUD_AGENT_ENGINE_ID"
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class DoubaoRealtimeVoice(Gemini):
|
|
49
|
+
"""Integration for doubao realtime voice model.
|
|
50
|
+
|
|
51
|
+
Attributes:
|
|
52
|
+
model: The name of the doubao realtime voice model (default: 'doubao_realtime_voice').
|
|
53
|
+
speech_config: Optional speech configuration for voice input/output (type: google.genai.types.SpeechConfig).
|
|
54
|
+
retry_options: Optional HTTP retry configuration for failed requests (type: google.genai.types.HttpRetryOptions).
|
|
55
|
+
"""
|
|
56
|
+
|
|
57
|
+
model: str = "doubao_realtime_voice"
|
|
58
|
+
|
|
59
|
+
speech_config: Optional[types.SpeechConfig] = None
|
|
60
|
+
|
|
61
|
+
retry_options: Optional[types.HttpRetryOptions] = None
|
|
62
|
+
"""Allow doubao realtime voice model to retry failed responses.
|
|
63
|
+
|
|
64
|
+
Sample:
|
|
65
|
+
```python
|
|
66
|
+
from google.genai import types
|
|
67
|
+
|
|
68
|
+
# ...
|
|
69
|
+
|
|
70
|
+
agent = Agent(
|
|
71
|
+
model=DoubaoRealtimeVoice(
|
|
72
|
+
retry_options=types.HttpRetryOptions(initial_delay=1, attempts=2),
|
|
73
|
+
)
|
|
74
|
+
)
|
|
75
|
+
```
|
|
76
|
+
"""
|
|
77
|
+
|
|
78
|
+
@classmethod
|
|
79
|
+
@override
|
|
80
|
+
def supported_models(cls) -> list[str]:
|
|
81
|
+
"""Provides the list of supported models.
|
|
82
|
+
|
|
83
|
+
Returns:
|
|
84
|
+
A list of supported models.
|
|
85
|
+
"""
|
|
86
|
+
|
|
87
|
+
return [
|
|
88
|
+
r"doubao_realtime_voice.*",
|
|
89
|
+
r"Doubao_scene_SLM_Doubao_realtime_voice_model.*",
|
|
90
|
+
]
|
|
91
|
+
|
|
92
|
+
@cached_property
|
|
93
|
+
def api_client(self) -> DoubaoClient:
|
|
94
|
+
"""Provides the api client.
|
|
95
|
+
|
|
96
|
+
Returns:
|
|
97
|
+
The api client.
|
|
98
|
+
"""
|
|
99
|
+
return DoubaoClient(
|
|
100
|
+
http_options=types.HttpOptions(
|
|
101
|
+
headers=self._tracking_headers,
|
|
102
|
+
retry_options=self.retry_options,
|
|
103
|
+
)
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
@cached_property
|
|
107
|
+
def _live_api_client(self) -> DoubaoClient:
|
|
108
|
+
return DoubaoClient(
|
|
109
|
+
http_options=types.HttpOptions(
|
|
110
|
+
headers=self._tracking_headers, api_version=self._live_api_version
|
|
111
|
+
)
|
|
112
|
+
)
|
|
113
|
+
|
|
114
|
+
@cached_property
|
|
115
|
+
def _tracking_headers(self) -> dict[str, str]:
|
|
116
|
+
framework_label = f"veadk/{version.__version__}"
|
|
117
|
+
if os.environ.get(_AGENT_ENGINE_TELEMETRY_ENV_VARIABLE_NAME):
|
|
118
|
+
framework_label = f"{framework_label}+{_AGENT_ENGINE_TELEMETRY_TAG}"
|
|
119
|
+
language_label = "ve-python/" + sys.version.split()[0]
|
|
120
|
+
version_header_value = f"{framework_label} {language_label}"
|
|
121
|
+
tracking_headers = {
|
|
122
|
+
"x-volcengine-api-client": version_header_value,
|
|
123
|
+
"user-agent": version_header_value,
|
|
124
|
+
}
|
|
125
|
+
return tracking_headers
|
|
126
|
+
|
|
127
|
+
@contextlib.asynccontextmanager
|
|
128
|
+
async def connect(self, llm_request: LlmRequest) -> BaseLlmConnection:
|
|
129
|
+
"""Connects to the doubao realtime voice LLM model and returns an llm connection.
|
|
130
|
+
|
|
131
|
+
Args:
|
|
132
|
+
llm_request: LlmRequest, the request to send to the Seed LLM model.
|
|
133
|
+
|
|
134
|
+
Yields:
|
|
135
|
+
BaseLlmConnection, the connection to the Seed LLM model.
|
|
136
|
+
"""
|
|
137
|
+
# add tracking headers to custom headers and set api_version given
|
|
138
|
+
# the customized http options will override the one set in the api client
|
|
139
|
+
# constructor
|
|
140
|
+
if (
|
|
141
|
+
llm_request.live_connect_config
|
|
142
|
+
and llm_request.live_connect_config.http_options
|
|
143
|
+
):
|
|
144
|
+
if not llm_request.live_connect_config.http_options.headers:
|
|
145
|
+
llm_request.live_connect_config.http_options.headers = {}
|
|
146
|
+
llm_request.live_connect_config.http_options.headers.update(
|
|
147
|
+
self._tracking_headers
|
|
148
|
+
)
|
|
149
|
+
llm_request.live_connect_config.http_options.api_version = (
|
|
150
|
+
self._live_api_version
|
|
151
|
+
)
|
|
152
|
+
|
|
153
|
+
if self.speech_config is not None:
|
|
154
|
+
llm_request.live_connect_config.speech_config = self.speech_config
|
|
155
|
+
|
|
156
|
+
llm_request.live_connect_config.system_instruction = types.Content(
|
|
157
|
+
role="system",
|
|
158
|
+
parts=[types.Part.from_text(text=llm_request.config.system_instruction)],
|
|
159
|
+
)
|
|
160
|
+
llm_request.live_connect_config.tools = llm_request.config.tools
|
|
161
|
+
logger.info("Connecting to live with llm_request:%s", llm_request)
|
|
162
|
+
async with self._live_api_client.aio.live.connect(
|
|
163
|
+
model=llm_request.model, config=llm_request.live_connect_config
|
|
164
|
+
) as live_session:
|
|
165
|
+
# use DoubaoRealtimeVoiceLlmConnection in place of GeminiLlmConnection
|
|
166
|
+
yield DoubaoRealtimeVoiceLlmConnection(live_session)
|
|
@@ -0,0 +1,50 @@
|
|
|
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 __future__ import annotations
|
|
16
|
+
|
|
17
|
+
from typing import Union
|
|
18
|
+
|
|
19
|
+
from google.adk.models.gemini_llm_connection import GeminiLlmConnection
|
|
20
|
+
from google.genai import types
|
|
21
|
+
from veadk.utils.logger import get_logger
|
|
22
|
+
|
|
23
|
+
logger = get_logger(__name__)
|
|
24
|
+
|
|
25
|
+
RealtimeInput = Union[types.Blob, types.ActivityStart, types.ActivityEnd]
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class DoubaoRealtimeVoiceLlmConnection(GeminiLlmConnection):
|
|
29
|
+
"""The doubao realtime voice model connection."""
|
|
30
|
+
|
|
31
|
+
async def send_realtime(self, input: RealtimeInput):
|
|
32
|
+
"""Sends a chunk of audio or a frame of video to the model in realtime.
|
|
33
|
+
|
|
34
|
+
Args:
|
|
35
|
+
input: The input to send to the model.
|
|
36
|
+
"""
|
|
37
|
+
if isinstance(input, types.Blob):
|
|
38
|
+
# The blob is binary and is very large. So let's not log it.
|
|
39
|
+
# logger.debug('Sending LLM Blob.')
|
|
40
|
+
# bugfix: 'error': 'decode ws request failed: unsupported protocol version 7'
|
|
41
|
+
await self._gemini_session.send_realtime_input(media=input)
|
|
42
|
+
|
|
43
|
+
elif isinstance(input, types.ActivityStart):
|
|
44
|
+
logger.debug("Sending LLM activity start signal.")
|
|
45
|
+
await self._gemini_session.send_realtime_input(activity_start=input)
|
|
46
|
+
elif isinstance(input, types.ActivityEnd):
|
|
47
|
+
logger.debug("Sending LLM activity end signal.")
|
|
48
|
+
await self._gemini_session.send_realtime_input(activity_end=input)
|
|
49
|
+
else:
|
|
50
|
+
raise ValueError("Unsupported input type: %s" % type(input))
|