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.
Files changed (263) hide show
  1. {veadk_python-0.2.32 → veadk_python-0.2.34}/PKG-INFO +1 -1
  2. {veadk_python-0.2.32 → veadk_python-0.2.34}/pyproject.toml +1 -1
  3. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/config.py +2 -0
  4. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/configs/model_configs.py +15 -0
  5. veadk_python-0.2.34/veadk/realtime/__init__.py +22 -0
  6. veadk_python-0.2.34/veadk/realtime/client.py +52 -0
  7. veadk_python-0.2.34/veadk/realtime/doubao_realtime_voice_llm.py +166 -0
  8. veadk_python-0.2.34/veadk/realtime/doubao_realtime_voice_llm_connection.py +50 -0
  9. veadk_python-0.2.34/veadk/realtime/live.py +471 -0
  10. veadk_python-0.2.34/veadk/realtime/protocol.py +158 -0
  11. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/execute_skills.py +107 -10
  12. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/types.py +5 -0
  13. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/version.py +1 -1
  14. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk_python.egg-info/PKG-INFO +1 -1
  15. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk_python.egg-info/SOURCES.txt +6 -0
  16. {veadk_python-0.2.32 → veadk_python-0.2.34}/LICENSE +0 -0
  17. {veadk_python-0.2.32 → veadk_python-0.2.34}/README.md +0 -0
  18. {veadk_python-0.2.32 → veadk_python-0.2.34}/setup.cfg +0 -0
  19. {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_agent.py +0 -0
  20. {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_cloud.py +0 -0
  21. {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_evaluator.py +0 -0
  22. {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_knowledgebase.py +0 -0
  23. {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_long_term_memory.py +0 -0
  24. {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_misc.py +0 -0
  25. {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_multiple_agents.py +0 -0
  26. {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_runner.py +0 -0
  27. {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_runtime_data_collecting.py +0 -0
  28. {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_short_term_memory.py +0 -0
  29. {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_tracing.py +0 -0
  30. {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_ve_a2a_middlewares.py +0 -0
  31. {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_ve_identity_auth_config.py +0 -0
  32. {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_ve_identity_function_tool.py +0 -0
  33. {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_ve_identity_mcp_tool.py +0 -0
  34. {veadk_python-0.2.32 → veadk_python-0.2.34}/tests/test_ve_identity_mcp_toolset.py +0 -0
  35. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/__init__.py +0 -0
  36. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/a2a/__init__.py +0 -0
  37. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/a2a/agent_card.py +0 -0
  38. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/a2a/remote_ve_agent.py +0 -0
  39. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/a2a/utils/__init__.py +0 -0
  40. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/a2a/utils/agent_to_a2a.py +0 -0
  41. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/a2a/ve_a2a_server.py +0 -0
  42. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/a2a/ve_agent_executor.py +0 -0
  43. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/a2a/ve_middlewares.py +0 -0
  44. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/a2a/ve_task_store.py +0 -0
  45. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/agent.py +0 -0
  46. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/agent_builder.py +0 -0
  47. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/agents/loop_agent.py +0 -0
  48. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/agents/parallel_agent.py +0 -0
  49. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/agents/sequential_agent.py +0 -0
  50. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/auth/__init__.py +0 -0
  51. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/auth/base_auth.py +0 -0
  52. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/auth/ve_credential_service.py +0 -0
  53. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/auth/veauth/__init__.py +0 -0
  54. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/auth/veauth/apmplus_veauth.py +0 -0
  55. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/auth/veauth/ark_veauth.py +0 -0
  56. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/auth/veauth/base_veauth.py +0 -0
  57. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/auth/veauth/cozeloop_veauth.py +0 -0
  58. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/auth/veauth/opensearch_veauth.py +0 -0
  59. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/auth/veauth/postgresql_veauth.py +0 -0
  60. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/auth/veauth/prompt_pilot_veauth.py +0 -0
  61. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/auth/veauth/speech_veauth.py +0 -0
  62. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/auth/veauth/utils.py +0 -0
  63. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/auth/veauth/vesearch_veauth.py +0 -0
  64. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/auth/veauth/viking_mem0_veauth.py +0 -0
  65. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/__init__.py +0 -0
  66. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/cli.py +0 -0
  67. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/cli_agentkit.py +0 -0
  68. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/cli_clean.py +0 -0
  69. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/cli_create.py +0 -0
  70. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/cli_deploy.py +0 -0
  71. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/cli_eval.py +0 -0
  72. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/cli_init.py +0 -0
  73. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/cli_kb.py +0 -0
  74. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/cli_pipeline.py +0 -0
  75. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/cli_prompt.py +0 -0
  76. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/cli_rl.py +0 -0
  77. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/cli_update.py +0 -0
  78. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/cli_uploadevalset.py +0 -0
  79. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/cli_web.py +0 -0
  80. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/templates/rl/ark/README.md +0 -0
  81. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/templates/rl/ark/arkworkspace.toml +0 -0
  82. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/templates/rl/ark/data/demo_dataset.jsonl +0 -0
  83. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/templates/rl/ark/job.py +0 -0
  84. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/templates/rl/ark/job.yaml +0 -0
  85. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/templates/rl/ark/plugins/random_reward.py +0 -0
  86. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/templates/rl/ark/plugins/raw_async_veadk_rollout.py +0 -0
  87. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/templates/rl/ark/plugins/test_utils.py +0 -0
  88. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/templates/rl/ark/requirements.txt +0 -0
  89. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cli/templates/rl/ark/test_faas.py +0 -0
  90. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cloud/__init__.py +0 -0
  91. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cloud/cloud_agent_engine.py +0 -0
  92. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/cloud/cloud_app.py +0 -0
  93. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/configs/__init__.py +0 -0
  94. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/configs/auth_configs.py +0 -0
  95. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/configs/database_configs.py +0 -0
  96. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/configs/tool_configs.py +0 -0
  97. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/configs/tracing_configs.py +0 -0
  98. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/consts.py +0 -0
  99. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/evaluation/__init__.py +0 -0
  100. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/evaluation/adk_evaluator/__init__.py +0 -0
  101. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/evaluation/adk_evaluator/adk_evaluator.py +0 -0
  102. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/evaluation/base_evaluator.py +0 -0
  103. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/evaluation/deepeval_evaluator/__init__.py +0 -0
  104. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/evaluation/deepeval_evaluator/deepeval_evaluator.py +0 -0
  105. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/evaluation/eval_set_file_loader.py +0 -0
  106. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/evaluation/eval_set_recorder.py +0 -0
  107. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/evaluation/types.py +0 -0
  108. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/evaluation/utils/prometheus.py +0 -0
  109. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/__init__.py +0 -0
  110. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_apig/__init__.py +0 -0
  111. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_apig/ve_apig.py +0 -0
  112. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_apig/ve_apig_utils.py +0 -0
  113. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_code_pipeline/__init__.py +0 -0
  114. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_code_pipeline/ve_code_pipeline.py +0 -0
  115. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_cozeloop/__init__.py +0 -0
  116. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_cozeloop/ve_cozeloop.py +0 -0
  117. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_cr/__init__.py +0 -0
  118. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_cr/ve_cr.py +0 -0
  119. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/__init__.py +0 -0
  120. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/template/cookiecutter.json +0 -0
  121. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/__init__.py +0 -0
  122. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
  123. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/config.yaml.example +0 -0
  124. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/deploy.py +0 -0
  125. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/__init__.py +0 -0
  126. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/agent.py +0 -0
  127. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/app.py +0 -0
  128. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/requirements.txt +0 -0
  129. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/run.sh +0 -0
  130. {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
  131. {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
  132. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/ve_faas.py +0 -0
  133. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/ve_faas_utils.py +0 -0
  134. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/web_template/cookiecutter.json +0 -0
  135. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/__init__.py +0 -0
  136. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
  137. {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
  138. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/deploy.py +0 -0
  139. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/Dockerfile +0 -0
  140. {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
  141. {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
  142. {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
  143. {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
  144. {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
  145. {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
  146. {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
  147. {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
  148. {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
  149. {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
  150. {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
  151. {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
  152. {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
  153. {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
  154. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_identity/__init__.py +0 -0
  155. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_identity/auth_config.py +0 -0
  156. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_identity/auth_mixins.py +0 -0
  157. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_identity/auth_processor.py +0 -0
  158. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_identity/function_tool.py +0 -0
  159. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_identity/identity_client.py +0 -0
  160. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_identity/mcp_tool.py +0 -0
  161. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_identity/mcp_toolset.py +0 -0
  162. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_identity/models.py +0 -0
  163. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_identity/token_manager.py +0 -0
  164. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_identity/utils.py +0 -0
  165. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_prompt_pilot/__init__.py +0 -0
  166. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_prompt_pilot/ve_prompt_pilot.py +0 -0
  167. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_tls/__init__.py +0 -0
  168. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_tls/utils.py +0 -0
  169. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_tls/ve_tls.py +0 -0
  170. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_tos/ve_tos.py +0 -0
  171. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_viking_db_memory/__init__.py +0 -0
  172. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/integrations/ve_viking_db_memory/ve_viking_db_memory.py +0 -0
  173. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/knowledgebase/__init__.py +0 -0
  174. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/knowledgebase/backends/__init__.py +0 -0
  175. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/knowledgebase/backends/base_backend.py +0 -0
  176. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/knowledgebase/backends/in_memory_backend.py +0 -0
  177. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/knowledgebase/backends/opensearch_backend.py +0 -0
  178. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/knowledgebase/backends/redis_backend.py +0 -0
  179. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/knowledgebase/backends/tos_vector_backend.py +0 -0
  180. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/knowledgebase/backends/utils.py +0 -0
  181. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/knowledgebase/backends/vikingdb_knowledge_backend.py +0 -0
  182. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/knowledgebase/entry.py +0 -0
  183. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/knowledgebase/knowledgebase.py +0 -0
  184. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/__init__.py +0 -0
  185. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/long_term_memory.py +0 -0
  186. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/long_term_memory_backends/__init__.py +0 -0
  187. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/long_term_memory_backends/base_backend.py +0 -0
  188. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/long_term_memory_backends/in_memory_backend.py +0 -0
  189. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/long_term_memory_backends/mem0_backend.py +0 -0
  190. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/long_term_memory_backends/opensearch_backend.py +0 -0
  191. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/long_term_memory_backends/redis_backend.py +0 -0
  192. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/long_term_memory_backends/vikingdb_memory_backend.py +0 -0
  193. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/short_term_memory.py +0 -0
  194. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/short_term_memory_backends/__init__.py +0 -0
  195. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/short_term_memory_backends/base_backend.py +0 -0
  196. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/short_term_memory_backends/mysql_backend.py +0 -0
  197. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/short_term_memory_backends/postgresql_backend.py +0 -0
  198. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/short_term_memory_backends/sqlite_backend.py +0 -0
  199. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/memory/short_term_memory_processor.py +0 -0
  200. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/processors/__init__.py +0 -0
  201. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/processors/base_run_processor.py +0 -0
  202. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/prompts/__init__.py +0 -0
  203. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/prompts/agent_default_prompt.py +0 -0
  204. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/prompts/prompt_evaluator.py +0 -0
  205. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/prompts/prompt_memory_processor.py +0 -0
  206. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/prompts/prompt_optimization.py +0 -0
  207. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/runner.py +0 -0
  208. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/__init__.py +0 -0
  209. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/__init__.py +0 -0
  210. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/agent_authorization.py +0 -0
  211. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/generate_image.py +0 -0
  212. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/image_edit.py +0 -0
  213. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/image_generate.py +0 -0
  214. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/lark.py +0 -0
  215. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/las.py +0 -0
  216. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/link_reader.py +0 -0
  217. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/llm_shield.py +0 -0
  218. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/load_knowledgebase.py +0 -0
  219. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/mcp_router.py +0 -0
  220. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/mobile_run.py +0 -0
  221. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/run_code.py +0 -0
  222. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/tts.py +0 -0
  223. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/vesearch.py +0 -0
  224. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/video_generate.py +0 -0
  225. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/web_scraper.py +0 -0
  226. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/builtin_tools/web_search.py +0 -0
  227. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/demo_tools.py +0 -0
  228. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/load_knowledgebase_tool.py +0 -0
  229. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/mcp_tool/__init__.py +0 -0
  230. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/mcp_tool/trusted_mcp_session_manager.py +0 -0
  231. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/mcp_tool/trusted_mcp_toolset.py +0 -0
  232. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/sandbox/__init__.py +0 -0
  233. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/sandbox/browser_sandbox.py +0 -0
  234. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/sandbox/code_sandbox.py +0 -0
  235. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tools/sandbox/computer_sandbox.py +0 -0
  236. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/__init__.py +0 -0
  237. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/base_tracer.py +0 -0
  238. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/telemetry/__init__.py +0 -0
  239. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/telemetry/attributes/attributes.py +0 -0
  240. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/telemetry/attributes/extractors/common_attributes_extractors.py +0 -0
  241. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/telemetry/attributes/extractors/llm_attributes_extractors.py +0 -0
  242. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/telemetry/attributes/extractors/tool_attributes_extractors.py +0 -0
  243. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/telemetry/attributes/extractors/types.py +0 -0
  244. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/telemetry/exporters/__init__.py +0 -0
  245. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/telemetry/exporters/apmplus_exporter.py +0 -0
  246. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/telemetry/exporters/base_exporter.py +0 -0
  247. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/telemetry/exporters/cozeloop_exporter.py +0 -0
  248. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/telemetry/exporters/inmemory_exporter.py +0 -0
  249. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/telemetry/exporters/tls_exporter.py +0 -0
  250. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/telemetry/opentelemetry_tracer.py +0 -0
  251. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/tracing/telemetry/telemetry.py +0 -0
  252. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/utils/__init__.py +0 -0
  253. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/utils/audio_manager.py +0 -0
  254. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/utils/auth.py +0 -0
  255. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/utils/logger.py +0 -0
  256. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/utils/mcp_utils.py +0 -0
  257. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/utils/misc.py +0 -0
  258. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/utils/patches.py +0 -0
  259. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk/utils/volcengine_sign.py +0 -0
  260. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk_python.egg-info/dependency_links.txt +0 -0
  261. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk_python.egg-info/entry_points.txt +0 -0
  262. {veadk_python-0.2.32 → veadk_python-0.2.34}/veadk_python.egg-info/requires.txt +0 -0
  263. {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.32
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
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "veadk-python"
3
- version = "0.2.32"
3
+ version = "0.2.34"
4
4
  description = "Volcengine agent development kit, integrations with Volcengine cloud services."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -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))