veadk-python 0.2.26__tar.gz → 0.2.28__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.26/veadk_python.egg-info → veadk_python-0.2.28}/PKG-INFO +2 -1
- {veadk_python-0.2.26 → veadk_python-0.2.28}/pyproject.toml +2 -1
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/auth/veauth/ark_veauth.py +6 -2
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/cli/cli.py +2 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/cli/cli_clean.py +4 -4
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/cli/cli_deploy.py +9 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/cli/cli_pipeline.py +4 -3
- veadk_python-0.2.28/veadk/cli/cli_rl.py +109 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/cli/cli_update.py +4 -2
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/cli/cli_uploadevalset.py +5 -4
- veadk_python-0.2.28/veadk/cli/templates/rl/ark/README.md +45 -0
- veadk_python-0.2.28/veadk/cli/templates/rl/ark/arkworkspace.toml +2 -0
- veadk_python-0.2.28/veadk/cli/templates/rl/ark/data/demo_dataset.jsonl +3 -0
- veadk_python-0.2.28/veadk/cli/templates/rl/ark/job.py +74 -0
- veadk_python-0.2.28/veadk/cli/templates/rl/ark/job.yaml +44 -0
- veadk_python-0.2.28/veadk/cli/templates/rl/ark/plugins/random_reward.py +59 -0
- veadk_python-0.2.28/veadk/cli/templates/rl/ark/plugins/raw_async_veadk_rollout.py +291 -0
- veadk_python-0.2.28/veadk/cli/templates/rl/ark/plugins/test_utils.py +103 -0
- veadk_python-0.2.28/veadk/cli/templates/rl/ark/requirements.txt +9 -0
- veadk_python-0.2.28/veadk/cli/templates/rl/ark/test_faas.py +51 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/ve_faas.py +3 -2
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/knowledgebase/backends/vikingdb_knowledge_backend.py +3 -3
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/memory/long_term_memory.py +7 -1
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/memory/long_term_memory_backends/vikingdb_memory_backend.py +2 -1
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/memory/short_term_memory.py +9 -5
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/memory/short_term_memory_backends/mysql_backend.py +2 -1
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/memory/short_term_memory_backends/postgresql_backend.py +2 -1
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/runner.py +11 -9
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tools/builtin_tools/web_search.py +6 -3
- veadk_python-0.2.28/veadk/tools/mcp_tool/trusted_mcp_session_manager.py +160 -0
- veadk_python-0.2.28/veadk/tools/mcp_tool/trusted_mcp_toolset.py +132 -0
- veadk_python-0.2.28/veadk/utils/__init__.py +13 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/utils/mcp_utils.py +12 -3
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/version.py +1 -1
- {veadk_python-0.2.26 → veadk_python-0.2.28/veadk_python.egg-info}/PKG-INFO +2 -1
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk_python.egg-info/SOURCES.txt +14 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk_python.egg-info/requires.txt +1 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/LICENSE +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/README.md +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/setup.cfg +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/tests/test_agent.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/tests/test_cloud.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/tests/test_evaluator.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/tests/test_knowledgebase.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/tests/test_long_term_memory.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/tests/test_misc.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/tests/test_multiple_agents.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/tests/test_runner.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/tests/test_runtime_data_collecting.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/tests/test_short_term_memory.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/tests/test_tracing.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/tests/test_ve_a2a_middlewares.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/tests/test_ve_identity_auth_config.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/tests/test_ve_identity_function_tool.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/tests/test_ve_identity_mcp_tool.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/tests/test_ve_identity_mcp_toolset.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/a2a/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/a2a/agent_card.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/a2a/remote_ve_agent.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/a2a/utils/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/a2a/utils/agent_to_a2a.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/a2a/ve_a2a_server.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/a2a/ve_agent_executor.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/a2a/ve_middlewares.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/a2a/ve_task_store.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/agent.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/agent_builder.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/agents/loop_agent.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/agents/parallel_agent.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/agents/sequential_agent.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/auth/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/auth/base_auth.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/auth/ve_credential_service.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/auth/veauth/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/auth/veauth/apmplus_veauth.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/auth/veauth/base_veauth.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/auth/veauth/cozeloop_veauth.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/auth/veauth/opensearch_veauth.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/auth/veauth/postgresql_veauth.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/auth/veauth/prompt_pilot_veauth.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/auth/veauth/speech_veauth.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/auth/veauth/utils.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/auth/veauth/vesearch_veauth.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/auth/veauth/viking_mem0_veauth.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/cli/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/cli/cli_create.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/cli/cli_eval.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/cli/cli_init.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/cli/cli_kb.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/cli/cli_prompt.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/cli/cli_web.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/cloud/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/cloud/cloud_agent_engine.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/cloud/cloud_app.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/config.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/configs/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/configs/auth_configs.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/configs/database_configs.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/configs/model_configs.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/configs/tool_configs.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/configs/tracing_configs.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/consts.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/evaluation/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/evaluation/adk_evaluator/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/evaluation/adk_evaluator/adk_evaluator.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/evaluation/base_evaluator.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/evaluation/deepeval_evaluator/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/evaluation/deepeval_evaluator/deepeval_evaluator.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/evaluation/eval_set_file_loader.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/evaluation/eval_set_recorder.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/evaluation/types.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/evaluation/utils/prometheus.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_apig/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_apig/ve_apig.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_apig/ve_apig_utils.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_code_pipeline/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_code_pipeline/ve_code_pipeline.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_cozeloop/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_cozeloop/ve_cozeloop.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_cr/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_cr/ve_cr.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/template/cookiecutter.json +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/config.yaml.example +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/deploy.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/agent.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/app.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/requirements.txt +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/run.sh +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name }}/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name }}/agent.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/ve_faas_utils.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/web_template/cookiecutter.json +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/clean.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/config.yaml.example +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/deploy.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/Dockerfile +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/app.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/init_db.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/models.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/requirements.txt +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/run.sh +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/static/css/style.css +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/static/js/admin.js +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/dashboard.html +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/edit_post.html +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/login.html +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/admin/posts.html +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/base.html +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/index.html +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_faas/web_template/{{cookiecutter.local_dir_name}}/src/templates/post.html +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_identity/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_identity/auth_config.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_identity/auth_mixins.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_identity/auth_processor.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_identity/function_tool.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_identity/identity_client.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_identity/mcp_tool.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_identity/mcp_toolset.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_identity/models.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_identity/token_manager.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_identity/utils.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_prompt_pilot/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_prompt_pilot/ve_prompt_pilot.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_tls/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_tls/utils.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_tls/ve_tls.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_tos/ve_tos.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_viking_db_memory/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/integrations/ve_viking_db_memory/ve_viking_db_memory.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/knowledgebase/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/knowledgebase/backends/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/knowledgebase/backends/base_backend.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/knowledgebase/backends/in_memory_backend.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/knowledgebase/backends/opensearch_backend.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/knowledgebase/backends/redis_backend.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/knowledgebase/backends/utils.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/knowledgebase/entry.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/knowledgebase/knowledgebase.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/memory/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/memory/long_term_memory_backends/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/memory/long_term_memory_backends/base_backend.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/memory/long_term_memory_backends/in_memory_backend.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/memory/long_term_memory_backends/mem0_backend.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/memory/long_term_memory_backends/opensearch_backend.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/memory/long_term_memory_backends/redis_backend.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/memory/short_term_memory_backends/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/memory/short_term_memory_backends/base_backend.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/memory/short_term_memory_backends/sqlite_backend.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/memory/short_term_memory_processor.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/processors/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/processors/base_run_processor.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/prompts/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/prompts/agent_default_prompt.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/prompts/prompt_evaluator.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/prompts/prompt_memory_processor.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/prompts/prompt_optimization.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tools/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tools/builtin_tools/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tools/builtin_tools/agent_authorization.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tools/builtin_tools/generate_image.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tools/builtin_tools/image_edit.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tools/builtin_tools/image_generate.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tools/builtin_tools/lark.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tools/builtin_tools/las.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tools/builtin_tools/link_reader.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tools/builtin_tools/llm_shield.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tools/builtin_tools/load_knowledgebase.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tools/builtin_tools/mcp_router.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tools/builtin_tools/run_code.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tools/builtin_tools/tts.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tools/builtin_tools/vesearch.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tools/builtin_tools/video_generate.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tools/builtin_tools/web_scraper.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tools/demo_tools.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tools/load_knowledgebase_tool.py +0 -0
- {veadk_python-0.2.26/veadk/tools/sandbox → veadk_python-0.2.28/veadk/tools/mcp_tool}/__init__.py +0 -0
- {veadk_python-0.2.26/veadk/tracing → veadk_python-0.2.28/veadk/tools/sandbox}/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tools/sandbox/browser_sandbox.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tools/sandbox/code_sandbox.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tools/sandbox/computer_sandbox.py +0 -0
- {veadk_python-0.2.26/veadk/tracing/telemetry → veadk_python-0.2.28/veadk/tracing}/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tracing/base_tracer.py +0 -0
- {veadk_python-0.2.26/veadk/tracing/telemetry/exporters → veadk_python-0.2.28/veadk/tracing/telemetry}/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tracing/telemetry/attributes/attributes.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tracing/telemetry/attributes/extractors/common_attributes_extractors.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tracing/telemetry/attributes/extractors/llm_attributes_extractors.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tracing/telemetry/attributes/extractors/tool_attributes_extractors.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tracing/telemetry/attributes/extractors/types.py +0 -0
- {veadk_python-0.2.26/veadk/utils → veadk_python-0.2.28/veadk/tracing/telemetry/exporters}/__init__.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tracing/telemetry/exporters/apmplus_exporter.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tracing/telemetry/exporters/base_exporter.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tracing/telemetry/exporters/cozeloop_exporter.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tracing/telemetry/exporters/inmemory_exporter.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tracing/telemetry/exporters/tls_exporter.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tracing/telemetry/opentelemetry_tracer.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/tracing/telemetry/telemetry.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/types.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/utils/audio_manager.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/utils/auth.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/utils/logger.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/utils/misc.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/utils/patches.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk/utils/volcengine_sign.py +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk_python.egg-info/dependency_links.txt +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/veadk_python.egg-info/entry_points.txt +0 -0
- {veadk_python-0.2.26 → veadk_python-0.2.28}/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.28
|
|
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
|
|
@@ -222,6 +222,7 @@ Requires-Dist: volcengine-python-sdk>=4.0.33
|
|
|
222
222
|
Requires-Dist: volcengine>=1.0.193
|
|
223
223
|
Requires-Dist: agent-pilot-sdk>=0.1.2
|
|
224
224
|
Requires-Dist: fastmcp>=2.11.3
|
|
225
|
+
Requires-Dist: trustedmcp>=0.0.4
|
|
225
226
|
Requires-Dist: cookiecutter>=2.6.0
|
|
226
227
|
Requires-Dist: omegaconf>=2.3.0
|
|
227
228
|
Requires-Dist: llama-index>=0.14.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "veadk-python"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.28"
|
|
4
4
|
description = "Volcengine agent development kit, integrations with Volcengine cloud services."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
@@ -26,6 +26,7 @@ dependencies = [
|
|
|
26
26
|
"volcengine>=1.0.193", # For Volcengine sign
|
|
27
27
|
"agent-pilot-sdk>=0.1.2", # Prompt optimization by Volcengine AgentPilot/PromptPilot toolkits
|
|
28
28
|
"fastmcp>=2.11.3", # For running MCP
|
|
29
|
+
"trustedmcp>=0.0.4", # For running TrustedMCP
|
|
29
30
|
"cookiecutter>=2.6.0", # For cloud deploy
|
|
30
31
|
"omegaconf>=2.3.0", # For agent builder
|
|
31
32
|
"llama-index>=0.14.0",
|
|
@@ -36,7 +36,7 @@ def get_ark_token(region: str = "cn-beijing") -> str:
|
|
|
36
36
|
session_token = cred.session_token
|
|
37
37
|
|
|
38
38
|
res = ve_request(
|
|
39
|
-
request_body={"ProjectName": "default", "Filter": {}},
|
|
39
|
+
request_body={"ProjectName": "default", "Filter": {"AllowAll": True}},
|
|
40
40
|
header={"X-Security-Token": session_token},
|
|
41
41
|
action="ListApiKeys",
|
|
42
42
|
ak=access_key,
|
|
@@ -48,6 +48,10 @@ def get_ark_token(region: str = "cn-beijing") -> str:
|
|
|
48
48
|
)
|
|
49
49
|
try:
|
|
50
50
|
first_api_key_id = res["Result"]["Items"][0]["Id"]
|
|
51
|
+
logger.warning("By default, VeADK fetches the first API Key in the list.")
|
|
52
|
+
logger.info(
|
|
53
|
+
f"Try to fetch ARK API Key with id={first_api_key_id}, name={res['Result']['Items'][0]['Name']}"
|
|
54
|
+
)
|
|
51
55
|
except KeyError:
|
|
52
56
|
raise ValueError(f"Failed to get ARK api key list: {res}")
|
|
53
57
|
|
|
@@ -65,7 +69,7 @@ def get_ark_token(region: str = "cn-beijing") -> str:
|
|
|
65
69
|
)
|
|
66
70
|
try:
|
|
67
71
|
api_key = res["Result"]["ApiKey"]
|
|
68
|
-
logger.info("Successfully
|
|
72
|
+
logger.info(f"Successfully fetched ARK API Key (starts with {api_key[:8]}).")
|
|
69
73
|
return api_key
|
|
70
74
|
except KeyError:
|
|
71
75
|
raise ValueError(f"Failed to get ARK api key: {res}")
|
|
@@ -26,6 +26,7 @@ from veadk.cli.cli_web import web
|
|
|
26
26
|
from veadk.cli.cli_uploadevalset import uploadevalset
|
|
27
27
|
from veadk.cli.cli_update import update
|
|
28
28
|
from veadk.cli.cli_clean import clean
|
|
29
|
+
from veadk.cli.cli_rl import rl_group
|
|
29
30
|
from veadk.version import VERSION
|
|
30
31
|
|
|
31
32
|
|
|
@@ -53,6 +54,7 @@ veadk.add_command(kb)
|
|
|
53
54
|
veadk.add_command(uploadevalset)
|
|
54
55
|
veadk.add_command(update)
|
|
55
56
|
veadk.add_command(clean)
|
|
57
|
+
veadk.add_command(rl_group)
|
|
56
58
|
|
|
57
59
|
if __name__ == "__main__":
|
|
58
60
|
veadk()
|
|
@@ -12,11 +12,7 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
import time
|
|
16
15
|
import click
|
|
17
|
-
|
|
18
|
-
from veadk.config import getenv
|
|
19
|
-
from veadk.integrations.ve_faas.ve_faas import VeFaaS
|
|
20
16
|
from veadk.utils.logger import get_logger
|
|
21
17
|
|
|
22
18
|
logger = get_logger(__name__)
|
|
@@ -58,6 +54,10 @@ def clean(
|
|
|
58
54
|
Returns:
|
|
59
55
|
None
|
|
60
56
|
"""
|
|
57
|
+
import time
|
|
58
|
+
from veadk.config import getenv
|
|
59
|
+
from veadk.integrations.ve_faas.ve_faas import VeFaaS
|
|
60
|
+
|
|
61
61
|
if not volcengine_access_key:
|
|
62
62
|
volcengine_access_key = getenv("VOLCENGINE_ACCESS_KEY")
|
|
63
63
|
if not volcengine_secret_key:
|
|
@@ -67,6 +67,7 @@ TEMP_PATH = "/tmp"
|
|
|
67
67
|
help="Expected Volcengine Identity client name",
|
|
68
68
|
)
|
|
69
69
|
@click.option("--path", default=".", help="Local project path")
|
|
70
|
+
@click.option("--iam-role", default=None, help="iam role for the vefaas function")
|
|
70
71
|
def deploy(
|
|
71
72
|
volcengine_access_key: str,
|
|
72
73
|
volcengine_secret_key: str,
|
|
@@ -80,6 +81,7 @@ def deploy(
|
|
|
80
81
|
user_pool_name: str,
|
|
81
82
|
client_name: str,
|
|
82
83
|
path: str,
|
|
84
|
+
iam_role: str,
|
|
83
85
|
) -> None:
|
|
84
86
|
"""Deploy a user project to Volcengine FaaS application.
|
|
85
87
|
|
|
@@ -131,6 +133,8 @@ def deploy(
|
|
|
131
133
|
from veadk.config import getenv
|
|
132
134
|
from veadk.utils.logger import get_logger
|
|
133
135
|
from veadk.utils.misc import formatted_timestamp, load_module_from_file
|
|
136
|
+
import os
|
|
137
|
+
from veadk.config import veadk_environments
|
|
134
138
|
|
|
135
139
|
logger = get_logger(__name__)
|
|
136
140
|
|
|
@@ -138,6 +142,11 @@ def deploy(
|
|
|
138
142
|
volcengine_access_key = getenv("VOLCENGINE_ACCESS_KEY")
|
|
139
143
|
if not volcengine_secret_key:
|
|
140
144
|
volcengine_secret_key = getenv("VOLCENGINE_SECRET_KEY")
|
|
145
|
+
if not iam_role:
|
|
146
|
+
iam_role = getenv("IAM_ROLE", None, allow_false_values=True)
|
|
147
|
+
else:
|
|
148
|
+
os.environ["IAM_ROLE"] = iam_role
|
|
149
|
+
veadk_environments["IAM_ROLE"] = iam_role
|
|
141
150
|
|
|
142
151
|
user_proj_abs_path = Path(path).resolve()
|
|
143
152
|
template_dir_path = Path(vefaas.__file__).parent / "template"
|
|
@@ -22,9 +22,6 @@ from veadk.consts import (
|
|
|
22
22
|
DEFAULT_CR_NAMESPACE_NAME,
|
|
23
23
|
DEFAULT_CR_REPO_NAME,
|
|
24
24
|
)
|
|
25
|
-
from veadk.integrations.ve_code_pipeline.ve_code_pipeline import VeCodePipeline
|
|
26
|
-
from veadk.integrations.ve_cr.ve_cr import VeCR
|
|
27
|
-
from veadk.integrations.ve_faas.ve_faas import VeFaaS
|
|
28
25
|
from veadk.utils.logger import get_logger
|
|
29
26
|
from veadk.version import VERSION
|
|
30
27
|
|
|
@@ -49,6 +46,8 @@ def _create_cr(volcengine_settings: dict[str, str], cr_settings: dict[str, str])
|
|
|
49
46
|
Raises:
|
|
50
47
|
Exception: If any of the CR resource creation operations fail
|
|
51
48
|
"""
|
|
49
|
+
from veadk.integrations.ve_cr.ve_cr import VeCR
|
|
50
|
+
|
|
52
51
|
vecr = VeCR(
|
|
53
52
|
access_key=volcengine_settings["volcengine_access_key"],
|
|
54
53
|
secret_key=volcengine_settings["volcengine_secret_key"],
|
|
@@ -203,6 +202,8 @@ def pipeline(
|
|
|
203
202
|
- The pipeline will be triggered immediately upon creation for initial deployment
|
|
204
203
|
- Subsequent deployments occur automatically when code is pushed to the monitored branch
|
|
205
204
|
"""
|
|
205
|
+
from veadk.integrations.ve_code_pipeline.ve_code_pipeline import VeCodePipeline
|
|
206
|
+
from veadk.integrations.ve_faas.ve_faas import VeFaaS
|
|
206
207
|
|
|
207
208
|
click.echo(
|
|
208
209
|
"Welcome use VeADK to integrate your project to volcengine pipeline for CI/CD."
|
|
@@ -0,0 +1,109 @@
|
|
|
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 click
|
|
16
|
+
import shutil
|
|
17
|
+
import sys
|
|
18
|
+
from pathlib import Path
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def get_rl_template_root() -> Path:
|
|
22
|
+
"""Get absolute path of RL scaffold template root (cli/templates/rl/)"""
|
|
23
|
+
current_file = Path(__file__).resolve()
|
|
24
|
+
cli_dir = current_file.parent
|
|
25
|
+
rl_template_root = cli_dir / "templates" / "rl"
|
|
26
|
+
return rl_template_root
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
@click.group(name="rl", help="RL related commands")
|
|
30
|
+
def rl_group():
|
|
31
|
+
pass
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
@rl_group.command(
|
|
35
|
+
name="init", help="Initialize RL scaffold project (specify platform/workspace)"
|
|
36
|
+
)
|
|
37
|
+
@click.option(
|
|
38
|
+
"--platform",
|
|
39
|
+
"-p",
|
|
40
|
+
required=True,
|
|
41
|
+
type=click.Choice(["ark"], case_sensitive=False),
|
|
42
|
+
help="Scaffold platform type (only support for now: ark)",
|
|
43
|
+
)
|
|
44
|
+
@click.option(
|
|
45
|
+
"--workspace", "-w", required=True, type=str, help="Target workspace directory name"
|
|
46
|
+
)
|
|
47
|
+
@click.option(
|
|
48
|
+
"--overwrite",
|
|
49
|
+
"-f",
|
|
50
|
+
is_flag=True,
|
|
51
|
+
help="Force overwrite existing workspace (default: false)",
|
|
52
|
+
)
|
|
53
|
+
def rl_init(platform: str, workspace: str, overwrite: bool):
|
|
54
|
+
"""
|
|
55
|
+
Initialize RL scaffold project for ark platform
|
|
56
|
+
Example: veadk rl init --platform ark --workspace veadk_rl_ark_project
|
|
57
|
+
"""
|
|
58
|
+
# Locate template directory
|
|
59
|
+
rl_template_root = get_rl_template_root()
|
|
60
|
+
platform_template_dir = rl_template_root / platform.lower()
|
|
61
|
+
|
|
62
|
+
# Validate template directory
|
|
63
|
+
if not platform_template_dir.exists():
|
|
64
|
+
click.secho(f"Error: Scaffold template for {platform} not found!", fg="red")
|
|
65
|
+
click.secho(f" Expected path: {platform_template_dir}", fg="yellow")
|
|
66
|
+
click.secho(
|
|
67
|
+
f" Supported platforms: {[d.name for d in rl_template_root.glob('*') if d.is_dir()]}",
|
|
68
|
+
fg="blue",
|
|
69
|
+
)
|
|
70
|
+
sys.exit(1)
|
|
71
|
+
|
|
72
|
+
# Target workspace path
|
|
73
|
+
target_workspace = Path.cwd() / workspace
|
|
74
|
+
|
|
75
|
+
# Handle existing directory
|
|
76
|
+
if target_workspace.exists():
|
|
77
|
+
if not overwrite:
|
|
78
|
+
click.secho(
|
|
79
|
+
f"\nWarning: Target directory {target_workspace} already exists!",
|
|
80
|
+
fg="yellow",
|
|
81
|
+
)
|
|
82
|
+
if not click.confirm("Overwrite?"):
|
|
83
|
+
click.secho("Operation cancelled", fg="red")
|
|
84
|
+
sys.exit(0)
|
|
85
|
+
shutil.rmtree(target_workspace)
|
|
86
|
+
click.secho(f"Cleared existing directory: {target_workspace}", fg="green")
|
|
87
|
+
|
|
88
|
+
# Copy scaffold files
|
|
89
|
+
try:
|
|
90
|
+
shutil.copytree(
|
|
91
|
+
src=platform_template_dir,
|
|
92
|
+
dst=target_workspace,
|
|
93
|
+
ignore=None,
|
|
94
|
+
dirs_exist_ok=False,
|
|
95
|
+
)
|
|
96
|
+
click.secho("\nRL scaffold initialized successfully!", fg="green")
|
|
97
|
+
click.secho(f" - Project path: {target_workspace.absolute()}", fg="green")
|
|
98
|
+
except PermissionError:
|
|
99
|
+
click.secho(
|
|
100
|
+
f"Error: Permission denied to write to {target_workspace}", fg="red"
|
|
101
|
+
)
|
|
102
|
+
sys.exit(1)
|
|
103
|
+
except Exception as e:
|
|
104
|
+
click.secho(f"Error: Failed to copy scaffold - {str(e)}", fg="red")
|
|
105
|
+
sys.exit(1)
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
if __name__ == "__main__":
|
|
109
|
+
rl_group()
|
|
@@ -14,9 +14,8 @@
|
|
|
14
14
|
|
|
15
15
|
import click
|
|
16
16
|
|
|
17
|
-
from veadk.cloud.cloud_agent_engine import CloudAgentEngine
|
|
18
17
|
from veadk.utils.logger import get_logger
|
|
19
|
-
|
|
18
|
+
|
|
20
19
|
|
|
21
20
|
logger = get_logger(__name__)
|
|
22
21
|
|
|
@@ -78,6 +77,9 @@ def update(
|
|
|
78
77
|
ValueError: If authentication fails or application not found.
|
|
79
78
|
FileNotFoundError: If local path does not exist.
|
|
80
79
|
"""
|
|
80
|
+
from veadk.cloud.cloud_agent_engine import CloudAgentEngine
|
|
81
|
+
from veadk.config import getenv
|
|
82
|
+
|
|
81
83
|
# Set environment variables if provided
|
|
82
84
|
if not volcengine_access_key:
|
|
83
85
|
volcengine_access_key = getenv("VOLCENGINE_ACCESS_KEY")
|
|
@@ -13,11 +13,8 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
15
|
import click
|
|
16
|
-
import json
|
|
17
|
-
import requests
|
|
18
16
|
from veadk.utils.logger import get_logger
|
|
19
|
-
|
|
20
|
-
from pathlib import Path
|
|
17
|
+
|
|
21
18
|
|
|
22
19
|
logger = get_logger(__name__)
|
|
23
20
|
|
|
@@ -52,6 +49,10 @@ def uploadevalset(
|
|
|
52
49
|
cozeloop_api_key: API key for authenticating with CozeLoop services.
|
|
53
50
|
If not provided, uses OBSERVABILITY_OPENTELEMETRY_COZELOOP_API_KEY environment variable.
|
|
54
51
|
"""
|
|
52
|
+
import json
|
|
53
|
+
import requests
|
|
54
|
+
from veadk.config import getenv
|
|
55
|
+
from pathlib import Path
|
|
55
56
|
|
|
56
57
|
if not cozeloop_workspace_id:
|
|
57
58
|
cozeloop_workspace_id = getenv(
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# 基于方舟平台强化学习
|
|
2
|
+
方舟 RL 将强化学习过程进行了一定程度的封装,降低了复杂度。用户主要关注 rollout 中的 agent 逻辑、奖励函数的构建、训练样本的选择即可。
|
|
3
|
+
VeADK 与方舟平台 Agent RL 集成,用户使用 VeADK 提供的脚手架,可以开发 VeADK Agent,然后提交任务到方舟平台进行强化学习优化。
|
|
4
|
+
## 准备工作
|
|
5
|
+
在你的终端中运行以下命令,初始化一个强化学习项目:
|
|
6
|
+
```shell
|
|
7
|
+
veadk rl init --platform ark --workspace veadk_rl_ark_project
|
|
8
|
+
```
|
|
9
|
+
该命令会在当前目录下创建一个名为 `veadk_rl_ark_project` 的文件夹,其中包含了一个基本的强化学习项目结构。
|
|
10
|
+
然后在终端中运行以下命令,提交任务到方舟平台:
|
|
11
|
+
```shell
|
|
12
|
+
cd veadk_rl_ark_project
|
|
13
|
+
veadk rl submit --platform ark
|
|
14
|
+
```
|
|
15
|
+
## 原理说明
|
|
16
|
+
生成后的项目结构如下,其中核心文件包括:
|
|
17
|
+
- 数据集: `data/*.jsonl`
|
|
18
|
+
- `/plugins`文件夹下的rollout和reward:
|
|
19
|
+
- rollout :用以规定agent的工作流,`raw_async_veadk_rollout.py`提供了使用在方舟rl中使用veadk agent的示例,
|
|
20
|
+
- reward:给出强化学习所需的奖励值,在`random_reward.py`给出了示例
|
|
21
|
+
- `job.py`或`job.yaml`:用以配置训练参数,并指定需要使用的rollout和reward
|
|
22
|
+
```shell
|
|
23
|
+
veadk_rl_ark_project
|
|
24
|
+
├── data
|
|
25
|
+
├── *.jsonl # 训练数据
|
|
26
|
+
└── plugins
|
|
27
|
+
├── async_weather_rollout.py #
|
|
28
|
+
├── config.yaml.example # VeADK agent 配置信息示例
|
|
29
|
+
├── random_reward.py # reward规则设定
|
|
30
|
+
├── raw_async_veadk_rollout.py # rollout工作流设定
|
|
31
|
+
├── raw_rollout.py #
|
|
32
|
+
└── test_utils.py #
|
|
33
|
+
└── weather_rollout.py #
|
|
34
|
+
├── job.py # 任务提交代码
|
|
35
|
+
├── job.yaml # 任务配置
|
|
36
|
+
├── test_agent.py # VeFaaS 测试脚本
|
|
37
|
+
```
|
|
38
|
+
## 运行
|
|
39
|
+
```bash
|
|
40
|
+
ark create mcj -f job.yaml
|
|
41
|
+
```
|
|
42
|
+
或
|
|
43
|
+
```bash
|
|
44
|
+
python job.py
|
|
45
|
+
```
|
|
@@ -0,0 +1,74 @@
|
|
|
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 ark_sdk.resources.model_customization_job import ModelCustomizationJob
|
|
16
|
+
from ark_sdk.resources.pipeline_plugin import GRPOPipeline, PipelinePluginWrapper
|
|
17
|
+
from ark_sdk.types.model_customization_job import (
|
|
18
|
+
ModelReference,
|
|
19
|
+
FoundationModelReference,
|
|
20
|
+
TrainingDataset,
|
|
21
|
+
Data,
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
from plugins.random_reward import random_reward_fn
|
|
25
|
+
from plugins.raw_async_veadk_rollout import demo_veadk_rollout
|
|
26
|
+
|
|
27
|
+
if __name__ == "__main__":
|
|
28
|
+
mcj = ModelCustomizationJob(
|
|
29
|
+
name="sdk-job",
|
|
30
|
+
model_reference=ModelReference(
|
|
31
|
+
foundation_model=FoundationModelReference(
|
|
32
|
+
name="doubao-seed-1-6-flash", model_version="250615"
|
|
33
|
+
)
|
|
34
|
+
),
|
|
35
|
+
hyperparameters={
|
|
36
|
+
"batch_size": "32",
|
|
37
|
+
"clip_ratio_high": "0.2",
|
|
38
|
+
"clip_ratio_low": "0.2",
|
|
39
|
+
"kl_coefficient": "0.001",
|
|
40
|
+
"loss_agg_mode": "seq-mean-token-mean",
|
|
41
|
+
"lr": "0.000001",
|
|
42
|
+
"lr_warmup_steps": "5",
|
|
43
|
+
"max_new_tokens": "1024",
|
|
44
|
+
"num_generations": "8",
|
|
45
|
+
"num_iterations_per_batch": "2",
|
|
46
|
+
"save_every_n_steps": "10",
|
|
47
|
+
"temperature": "1.0",
|
|
48
|
+
"test_every_n_steps": "5",
|
|
49
|
+
"test_num_generations": "1",
|
|
50
|
+
"test_top_p": "1",
|
|
51
|
+
"top_p": "1",
|
|
52
|
+
"num_steps": "10",
|
|
53
|
+
},
|
|
54
|
+
data=Data(
|
|
55
|
+
training_set=TrainingDataset(
|
|
56
|
+
local_files=[
|
|
57
|
+
"./data/mcj_rollout_test_dataset.jsonl",
|
|
58
|
+
]
|
|
59
|
+
)
|
|
60
|
+
),
|
|
61
|
+
custom_rl_pipeline=GRPOPipeline(
|
|
62
|
+
graders=[
|
|
63
|
+
PipelinePluginWrapper(
|
|
64
|
+
plugin=random_reward_fn, envs={"foo": "bar"}, weight=0.5
|
|
65
|
+
),
|
|
66
|
+
],
|
|
67
|
+
rollout=PipelinePluginWrapper(
|
|
68
|
+
plugin=demo_veadk_rollout, envs={"foo": "bar"}
|
|
69
|
+
),
|
|
70
|
+
),
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
mcj.submit()
|
|
74
|
+
print(f"Job submitted. view job at {mcj.url}")
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
name: sdk-job
|
|
2
|
+
customization_type: GRPO
|
|
3
|
+
model_reference:
|
|
4
|
+
foundation_model:
|
|
5
|
+
name: doubao-seed-1-6-flash
|
|
6
|
+
model_version: '250615'
|
|
7
|
+
hyperparameters:
|
|
8
|
+
batch_size: '128'
|
|
9
|
+
clip_ratio_high: '0.2'
|
|
10
|
+
clip_ratio_low: '0.2'
|
|
11
|
+
kl_coefficient: '0.001'
|
|
12
|
+
loss_agg_mode: seq-mean-token-mean
|
|
13
|
+
lr: '0.000001'
|
|
14
|
+
lr_warmup_steps: '5'
|
|
15
|
+
max_new_tokens: '1024'
|
|
16
|
+
num_generations: '8'
|
|
17
|
+
num_iterations_per_batch: '2'
|
|
18
|
+
save_every_n_steps: '10'
|
|
19
|
+
temperature: '1.0'
|
|
20
|
+
test_every_n_steps: '5'
|
|
21
|
+
test_num_generations: '1'
|
|
22
|
+
test_top_p: '1'
|
|
23
|
+
top_p: '1'
|
|
24
|
+
num_steps: '20'
|
|
25
|
+
custom_rl_pipeline:
|
|
26
|
+
graders:
|
|
27
|
+
- plugin:
|
|
28
|
+
name: random_reward
|
|
29
|
+
python_func: plugins.random_reward:random_reward_fn
|
|
30
|
+
envs:
|
|
31
|
+
foo: bar
|
|
32
|
+
weight: 0.5
|
|
33
|
+
rollout:
|
|
34
|
+
plugin:
|
|
35
|
+
name: demo_veadk_rollout
|
|
36
|
+
python_func: plugins.async_weather_rollout:demo_rollout
|
|
37
|
+
envs:
|
|
38
|
+
foo: bar
|
|
39
|
+
|
|
40
|
+
data:
|
|
41
|
+
training_set:
|
|
42
|
+
local_files:
|
|
43
|
+
- ./data/mcj_rollout_test_dataset.jsonl
|
|
44
|
+
save_model_limit: 1
|
|
@@ -0,0 +1,59 @@
|
|
|
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 random
|
|
16
|
+
from typing import List
|
|
17
|
+
from ark_sdk.resources.pipeline_plugin import group_grader
|
|
18
|
+
from ark_sdk.types.pipeline_plugin.pipeline_plugin import PluginStatus, PluginContext
|
|
19
|
+
from ark_sdk.types.pipeline_plugin.rollout import Trajectory, ChatCompletionSample
|
|
20
|
+
from ark_sdk.types.pipeline_plugin import (
|
|
21
|
+
Runtime,
|
|
22
|
+
PluginInstance,
|
|
23
|
+
GroupGraderResult,
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
@group_grader(
|
|
28
|
+
name="randaom_reward",
|
|
29
|
+
runtime=Runtime(
|
|
30
|
+
instance=PluginInstance.CPU1MEM2,
|
|
31
|
+
max_concurrency=100,
|
|
32
|
+
timeout=300,
|
|
33
|
+
),
|
|
34
|
+
)
|
|
35
|
+
def random_reward_fn(
|
|
36
|
+
context: PluginContext,
|
|
37
|
+
sample: ChatCompletionSample,
|
|
38
|
+
trajectories: List[Trajectory],
|
|
39
|
+
) -> GroupGraderResult:
|
|
40
|
+
"""
|
|
41
|
+
奖励函数:返回随机奖励
|
|
42
|
+
|
|
43
|
+
参数:
|
|
44
|
+
- trajectories: 完整的对话历史
|
|
45
|
+
- sample: 样本数据,包含标准答案的字典
|
|
46
|
+
|
|
47
|
+
返回:
|
|
48
|
+
- list[float]: 奖励分数列表,每个分数对应一个候选回复(1.0表示完全匹配,0.0表示不匹配)
|
|
49
|
+
|
|
50
|
+
依赖:
|
|
51
|
+
- 数据集里的字典字段 extra 内需要携带 answer 字段。
|
|
52
|
+
"""
|
|
53
|
+
rewards = [
|
|
54
|
+
t.extra["reward"] if (t.extra and "reward" in t.extra) else random.random()
|
|
55
|
+
for t in trajectories
|
|
56
|
+
]
|
|
57
|
+
return GroupGraderResult(
|
|
58
|
+
rewards=rewards, status=PluginStatus.SUCCESS, error="", metrics={}
|
|
59
|
+
)
|