veadk-python 0.2.1__py3-none-any.whl → 0.2.2__py3-none-any.whl
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.
Potentially problematic release.
This version of veadk-python might be problematic. Click here for more details.
- veadk/__init__.py +9 -3
- veadk/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/__pycache__/agent.cpython-310.pyc +0 -0
- veadk/__pycache__/runner.cpython-310.pyc +0 -0
- veadk/__pycache__/types.cpython-310.pyc +0 -0
- veadk/__pycache__/version.cpython-310.pyc +0 -0
- veadk/a2a/__pycache__/remote_ve_agent.cpython-310.pyc +0 -0
- veadk/a2a/__pycache__/ve_a2a_server.cpython-310.pyc +0 -0
- veadk/a2a/__pycache__/ve_agent_executor.cpython-310.pyc +0 -0
- veadk/a2a/remote_ve_agent.py +1 -1
- veadk/a2a/ve_a2a_server.py +0 -2
- veadk/agent.py +10 -7
- veadk/cli/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/cli/__pycache__/cli.cpython-310.pyc +0 -0
- veadk/cli/__pycache__/cli_deploy.cpython-310.pyc +0 -0
- veadk/cli/__pycache__/cli_init.cpython-310.pyc +0 -0
- veadk/cli/__pycache__/cli_prompt.cpython-310.pyc +0 -0
- veadk/cli/__pycache__/cli_studio.cpython-310.pyc +0 -0
- veadk/cli/__pycache__/cli_web.cpython-310.pyc +0 -0
- veadk/cli/__pycache__/main.cpython-310.pyc +0 -0
- veadk/cli/{services/agentpilot/__init__.py → cli.py} +25 -2
- veadk/cli/cli_deploy.py +147 -0
- veadk/cli/cli_init.py +106 -0
- veadk/cli/cli_prompt.py +64 -0
- veadk/cli/cli_web.py +154 -0
- veadk/cloud/__pycache__/cloud_agent_engine.cpython-310.pyc +0 -0
- veadk/cloud/__pycache__/cloud_app.cpython-310.pyc +0 -0
- veadk/cloud/cloud_agent_engine.py +77 -42
- veadk/cloud/cloud_app.py +37 -6
- veadk/database/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/database/__pycache__/database_adapter.cpython-310.pyc +0 -0
- veadk/database/database_adapter.py +2 -2
- veadk/database/kv/redis_database.py +12 -9
- veadk/database/relational/mysql_database.py +10 -9
- veadk/database/vector/opensearch_vector_database.py +14 -7
- veadk/database/viking/viking_database.py +23 -17
- veadk/database/viking/viking_memory_db.py +9 -9
- veadk/evaluation/__pycache__/base_evaluator.cpython-310.pyc +0 -0
- veadk/evaluation/adk_evaluator/adk_evaluator.py +12 -17
- veadk/evaluation/base_evaluator.py +10 -9
- veadk/evaluation/utils/prometheus.py +1 -4
- veadk/integrations/ve_apig/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/integrations/ve_apig/__pycache__/ve_apig.cpython-310.pyc +0 -0
- veadk/integrations/ve_faas/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/integrations/ve_faas/__pycache__/types.cpython-310.pyc +0 -0
- veadk/integrations/ve_faas/__pycache__/ve_faas.cpython-310.pyc +0 -0
- veadk/integrations/ve_faas/__pycache__/ve_faas_utils.cpython-310.pyc +0 -0
- veadk/{cli/services/vefaas → integrations/ve_faas}/__pycache__/vefaas.cpython-310.pyc +0 -0
- veadk/integrations/ve_faas/template/cookiecutter.json +11 -0
- veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/config.yaml.example +6 -0
- veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/deploy.py +103 -0
- veadk/{cli/services/vefaas/template → integrations/ve_faas/template/{{cookiecutter.local_dir_name}}}/src/__init__.py +0 -1
- veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/__pycache__/agent.cpython-310.pyc +0 -0
- veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/__pycache__/app.cpython-310.pyc +0 -0
- veadk/{cli/services/veapig/__init__.py → integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/agent.py} +10 -2
- veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/app.py +146 -0
- veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/requirements.txt +1 -0
- veadk/{cli/services/vefaas/template → integrations/ve_faas/template/{{cookiecutter.local_dir_name}}}/src/run.sh +10 -19
- veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name|replace('-', '_') }}/__init__.py +14 -0
- veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name|replace('-', '_') }}/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name|replace('-', '_') }}/__pycache__/agent.cpython-310.pyc +0 -0
- veadk/{cli/services/vefaas/template/src/agent.py → integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/{{ cookiecutter.app_name|replace('-', '_') }}/agent.py } +8 -6
- veadk/{cli/services/vefaas/vefaas.py → integrations/ve_faas/ve_faas.py} +15 -6
- veadk/integrations/ve_prompt_pilot/__init__.py +13 -0
- veadk/{cli/services/agentpilot → integrations/ve_prompt_pilot}/__pycache__/agentpilot.cpython-310.pyc +0 -0
- veadk/{cli/services/agentpilot/agentpilot.py → integrations/ve_prompt_pilot/ve_prompt_pilot.py} +5 -6
- veadk/knowledgebase/__pycache__/knowledgebase.cpython-310.pyc +0 -0
- veadk/knowledgebase/knowledgebase.py +3 -5
- veadk/memory/__pycache__/long_term_memory.cpython-310.pyc +0 -0
- veadk/memory/__pycache__/short_term_memory.cpython-310.pyc +0 -0
- veadk/memory/__pycache__/short_term_memory_processor.cpython-310.pyc +0 -0
- veadk/memory/long_term_memory.py +5 -2
- veadk/memory/short_term_memory.py +3 -7
- veadk/memory/short_term_memory_processor.py +7 -2
- veadk/prompts/prompt_optimization.py +11 -19
- veadk/runner.py +85 -68
- veadk/tools/__pycache__/load_knowledgebase_tool.cpython-310.pyc +0 -0
- veadk/tools/builtin_tools/__pycache__/vesearch.cpython-310.pyc +0 -0
- veadk/tools/load_knowledgebase_tool.py +3 -2
- veadk/tracing/__pycache__/base_tracer.cpython-310.pyc +0 -0
- veadk/tracing/base_tracer.py +27 -15
- veadk/tracing/telemetry/__pycache__/opentelemetry_tracer.cpython-310.pyc +0 -0
- veadk/tracing/telemetry/exporters/__pycache__/apmplus_exporter.cpython-310.pyc +0 -0
- veadk/tracing/telemetry/exporters/__pycache__/base_exporter.cpython-310.pyc +0 -0
- veadk/tracing/telemetry/exporters/__pycache__/cozeloop_exporter.cpython-310.pyc +0 -0
- veadk/tracing/telemetry/exporters/__pycache__/inmemory_exporter.cpython-310.pyc +0 -0
- veadk/tracing/telemetry/exporters/__pycache__/tls_exporter.cpython-310.pyc +0 -0
- veadk/tracing/telemetry/exporters/apmplus_exporter.py +0 -3
- veadk/tracing/telemetry/exporters/base_exporter.py +3 -0
- veadk/tracing/telemetry/exporters/cozeloop_exporter.py +0 -3
- veadk/tracing/telemetry/exporters/inmemory_exporter.py +13 -4
- veadk/tracing/telemetry/exporters/tls_exporter.py +2 -9
- veadk/tracing/telemetry/opentelemetry_tracer.py +14 -30
- veadk/types.py +20 -1
- veadk/utils/__pycache__/logger.cpython-310.pyc +0 -0
- veadk/utils/__pycache__/misc.cpython-310.pyc +0 -0
- veadk/utils/__pycache__/patches.cpython-310.pyc +0 -0
- veadk/utils/mcp_utils.py +1 -1
- veadk/utils/misc.py +31 -2
- veadk/utils/patches.py +0 -30
- veadk/version.py +1 -1
- {veadk_python-0.2.1.dist-info → veadk_python-0.2.2.dist-info}/METADATA +16 -5
- veadk_python-0.2.2.dist-info/RECORD +213 -0
- veadk_python-0.2.2.dist-info/entry_points.txt +2 -0
- veadk/cli/main.py +0 -379
- veadk/cli/services/veapig/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/cli/services/vefaas/__init__.py +0 -17
- veadk/cli/services/vefaas/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/cli/services/vefaas/template/README.md +0 -37
- veadk/cli/services/vefaas/template/config.yaml.example +0 -19
- veadk/cli/services/vefaas/template/deploy.py +0 -58
- veadk/cli/services/vefaas/template/src/__pycache__/agent.cpython-310.pyc +0 -0
- veadk/cli/services/vefaas/template/src/app.py +0 -70
- veadk/cli/services/vefaas/template/src/requirements.txt +0 -6
- veadk/cli/services/vefaas/template/src/studio_app.py +0 -47
- veadk/cli/services/vetls/__init__.py +0 -17
- veadk/cli/services/vetls/vetls.py +0 -87
- veadk/cli/studio/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/cli/studio/__pycache__/fast_api.cpython-310.pyc +0 -0
- veadk/cli/studio/__pycache__/models.cpython-310.pyc +0 -0
- veadk/cli/studio/__pycache__/studio_processor.cpython-310.pyc +0 -0
- veadk/cli/studio/fast_api.py +0 -392
- veadk/cli/studio/models.py +0 -76
- veadk/cli/studio/studio_processor.py +0 -127
- veadk/cli/studio/web/404.html +0 -1
- veadk/cli/studio/web/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/cli/studio/web/_next/static/chunks/1012.1c22f40693022876.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/1017.577d2551c3a2b396.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/1044.7c49605a0f9b5d5c.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/1067.71aee8d185b3a9d7.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/1088.8f7f3c71458d301b.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/1092.7b553ab1ec1737bf.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/1117.8c537e259adccbe2.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/1142.1faf8d46ccf4030c.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/1146.25bf08c82f4ad1c5.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/1192.55e7712b3dc8b6a8.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/1200.1038681512a9f69a.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/1265.e055670c82b2d131.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/1275.322d8bf8a580b859.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/140.d7e90f5e12cf288c.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/1421.7fff0e9f0677f79b.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/1469.16c1e07a7c0f9817.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/1480.3c94a6d6d61c4f56.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/1507.4c7617217de3bef8.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/1523.1740f3d9d913fe76.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/1526.5fb34657a70589b5.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/1563.6c364e96b33f3328.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/157.2e3f508bc115c15c.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/1577.b6cebda169ac9c75.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/1622.a611b4dab478587d.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/1685.db5d4efe2f0e3767.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/1687.a10254d4e1dd84c0.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/1826.da2ac0fcfb59cfae.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/1832.f81112d6166a9563.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/1851.1d0bdfdf5fa89313.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/189.c602a68aadf321e4.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/1899.dd303f08095745bc.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/193.1e81c5b253db2ee7.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/1936.8fad6d3898c86483.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/1942.165056b632c269d4.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/1974.ee28ba5ac111af70.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2.c2afe2e24520b5de.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2006.298ac00a777dc313.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2063.69ba443b7901194c.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2067-e02b0bc96d886930.js +0 -91
- veadk/cli/studio/web/_next/static/chunks/2119.4595d21bc0340c5b.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/212.0a8d6163667d9369.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2190.5549f7a57901bd46.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2193.51ce38cc9e965abd.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2202.a6c08676680e55ad.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2247.af410bd18c38e538.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2313.6932520daf0fa88c.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2316.c9eafa57971eebc8.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2324.766859688506ac0d.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2328.131b0296bc19ba4e.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2332.b9b7ac0b386a4a28.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2344.cc417c70cb6dbc51.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2347.9f442b75b11de668.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2356.f6b4ac7eb50edb44.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2370.044b34646bc58363.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2378.2005af4d2bf100dd.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2437.68534e42d45c5c61.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2449.db460ea54b851bc1.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2455.153b04863d2ae9dc.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2484.139843b3f1cc8ea5.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2500.e2b8da0d1401bd5f.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2513.a7056ff98b04c4cd.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2533.5e35d247414428d0.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2541.3e5a23b461d7a9fd.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2545.0e4e3a784391205b.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2558.17eda1052d7c8c1f.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2559.7432df2540cfff07.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2578.1be0687e71bc7731.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2601.aa7e57bdf472372c.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/261-19b52c2c85aefb5d.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2642.9ea0966ca6bd8ace.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2669.e90ab188be48154e.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2737.4f5c7f7b9293ae65.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2804.b801cadc26133d92.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2817.8584109b4bc979e8.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/282.cfff86fab979470f.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2822.12cdf0520b2d321a.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/288.5c1053dbdc74212b.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2964.a531dbf5eb867f3d.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/2f7605f3.0531565b22967bb4.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/3080.9aada68cdc9ad5c2.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/3090.a9e7f71df818f607.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/3103.b7cdb76d87ac0fdd.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/311.2737abd09304ba1b.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/3110.84511591e516221b.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/3126.307ac469edcf6ec9.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/320.a3c0085ebf05b7da.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/322.668c1a20cc012c68.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/3341.a0f06b1edc2332fb.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/3357.ced93e6bf8e56762.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/3386.53f3aa4ff0dd0170.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/3391.402e02fd7c297ff8.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/3392.5172b1d190ff0e8c.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/33fb68d2.aacf24a5979288bd.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/3429.74dcaa985d188e43.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/3433.737c3d948bdda1da.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/3435.1798454b9a5b69ca.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/3481.a916f933c4e534b8.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/3602.bdf28129f1569554.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/3607.49cec7e9330d1f4d.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/3615.3280752d551adf2d.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/3721.f660b5b05621f5e4.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/3786.ae0824e683556d37.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/3805.ec0340f0f6e61bbc.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/4045.42a3c9fb7d932ebc.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/4052.86cc820c95ad25a8.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/4058.3cea468f5370b7c9.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/4068.ff830b92579f6b7f.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/411.5679da8e6a856022.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/4118.e2544434642f6640.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/4139.80b0aab26d9a4601.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/423.da4e0abf5fd408dc.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/4262.9d5532cb76a86371.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/431.ef6d705ac627958f.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/4337.3c94a6d6d61c4f56.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/4357-39eb6b5934ac97db.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/4382.64908590e0a18d66.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/4489.7a9b45fb6f6bf491.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/450.76880cb957b128fa.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/452.14fb00ee415ad32b.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/4577.d1cbd95a87e2adb2.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/4626.0866c7ee38885775.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/4627.3d7df52a668a6b57.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/4713.3891f7d347513ef5.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/4749.25fd94a8ed476b13.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/4836.afe027e38fb9a7e8.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/483e0093.2a09b17ad5d1b3ed.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/4852.cac6e9c5032df796.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/4860.94324451a00fadc0.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/4869.091903cb36ad77ad.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/4888.e248e212b002f5df.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/492.ac958937dd36300f.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/4958.85e0dbc8b2319776.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/4968.1477e29640b2deb8.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/4980.1300ab7d9c76e523.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/4aa6d3c9.dade76a8ff4112d3.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5006.8ee1d611f529da11.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5018.c34d2a9f82e24c51.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5050.c06b2d8e12720555.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5084.9b554002148843ea.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5097.2e9a097ccfb70707.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5113.fa5291624248676b.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5115.ff49cf5e2be16db4.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/521.98b7995e15b59075.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5213.1a7618fcae8c5282.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/522.56063fbcf9aa8699.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5247.b304f94eb3132618.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5248.f9faaff2f0d7631f.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/527-1c65afbb202752bd.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/529.7d231c2076b6d77a.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5305.9323b5f7efaa005e.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5317.fce75000492e9db4.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5326.3be5b04850f0a2f2.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5329.415b43aacdd9a471.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5331.77f0493c99857944.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5341.1fff90ab37947f62.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/541.04d938e895b7f678.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5428.fa789e4b0d61cd0d.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5460.cee07b9411c5c5ca.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5472.f645717ad2edd28f.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5503.75093ef3870b655f.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5567.44555d5da6ed19b7.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5572.3c35c26a4867ca56.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5579.b3be6028d1833118.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5631.b8a2c0dc65737269.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5656.b743b6ab9a61eec0.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5677.c063822912e55a25.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5779.0b1a3c7d1c018a1d.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5817.ae1fb69a154fbf4c.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5860.7154866a5d2dd82f.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5865.645e44e8e171ba9f.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5906.30cce16ed88f920a.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5942.cd6dfaad76581849.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/5958.e2f981fa3cba5d99.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/60f90b65.d526f39688baa769.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/6128.3da302fb50769250.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/62.5408e55d383a8078.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/624.7c7198473a8877d8.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/6264.e7bdd878d9e7a249.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/6266.97409ca00a3c32d9.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/6269.668be917daafccaa.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/630.87a6f22ac3e8956b.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/6341.35afa02112051be8.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/6353.93869a804ffe525b.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/6375.46d2897cb2526abd.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/6395.f113970ceec6ba91.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/63d31579-18fb2181524a9c6f.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/6423.d4cf9eb5b2ae6336.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/6437.5eeaa7320bce1872.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/6438.1c8486cc62da4117.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/6451.f56cce0a07138982.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/6456.f263b33ea51e4f54.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/6504.0e6ae8d5bb987be6.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/6560.b08504c0d99d71d4.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/6563.e6d3bdba9860590d.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/6621.639e4057d9c15bea.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/6625.c0233245d2c1ef25.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/6641.5487a2d68b0c52f2.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/6644.74de9f2de2dc75f5.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/6730.aac5bd02aab8258f.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/6824.8c40dbd3eb390403.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/6831.74b4a9b75f4ff9d1.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/688.9a27292bd19bc993.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/6899.ac4207b9a778bd0e.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/6901.4755ed550912589c.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/6910.5d45b17e287dba94.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/6928.d0a540480df90930.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/6958.c58e8e991b201429.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/6d60d248-1bbd761ee88ab2e4.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/70207789-862965aac548ab2a.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/7046.60a892c1e506cf5f.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/7068.6639b51e828de233.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/7172.aeda2e49d81fc0fd.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/7185.0210768f3918ec41.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/7200.86e672d8e2c1a920.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/730.2c5e46bf8fd29fcc.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/7301.43929cd9c2a5d2ea.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/7335.68692b193fa0dff6.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/7412.98554f6ee574e288.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/7422.e4a69fce6694ba90.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/7448.63e7b8d5fd090bd1.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/7479.97f696c6ada04b29.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/7482.ab6a217c34f6934a.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/7484.b91675bd38b250f8.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/7522.84dac217ae0701ac.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/7540-38c13446d29f43f2.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/7556.ae47807e378de233.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/761.2ce77249f8d3a1ce.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/7678.ceea70830f2dd7ff.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/7684.c43e4b5ad1f9b0af.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/7698.44201098b212aee8.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/76ff44ea.8322bdedaee78e2d.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/7725.b15cb8b6e1d15403.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/7855.513a507852c649f2.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/7910.266df3f992c16215.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/7940.f490f3d5e6590e54.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/7960.491bd15bef82755c.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/8020.795778775ed5c387.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/8107.fbb6017b3e909da5.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/8169.4d7fd139784eb935.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/8196.6c5c3dfe86e1c3ca.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/8257.ee682bc2599473cb.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/8305.d2c965e56fe9350c.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/8324.8c3edcc756f5e2f3.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/8388.cc59fb03d62a71cf.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/8394.d5ca17ce8f6fffb0.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/8419.b11c64d18dc580b5.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/8478.5f4272ae9afa4061.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/8480.a071150cb4eddc29.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/8535.0ab856b7bf0e161b.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/8571.8af7983b03c09f86.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/8583.4afa8c68cb867b2d.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/8601.520cbfc8abbfb5f8.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/8656.5f8b6212d2b35257.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/8665.7f24febc4a78ff5e.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/8687.c94010eb559245b6.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/8815.81a5c5700763ca02.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/8878.28a43a5fe23f5bd0.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/8884.e4e411c7978b2552.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/8962.db5c7728bef5ff0b.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/8984.dfcb15f115089c4a.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/9022.d161e32a6b1bcc61.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/9099.8ba5be825d17456a.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/914.72991ff6c9332951.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/9217.40b78a38cadcd268.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/925.0cc74592f03b10e9.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/9275.ac60c49c68c86e51.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/92a17e6d.da4fba322f70cd46.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/92b95f17.39f98387a9867b4a.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/9361.d3535e4d87c1c527.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/9433.55eb6e4ea7edb262.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/9436.5b2462fa3ddebb27.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/9445.e29312f685c22eff.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/9471.646bdfb962cdd5c2.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/9473.efa6db413edc23d1.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/9484.e9f1cd4e3f8e75df.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/9545.61026f3c11f914f2.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/9555.287e4e4a50087d62.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/963.da40bca273fb82c6.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/9636.4d3678b9a4e0b46e.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/9657.459d6300b0bc8ef8.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/9676.cef4d87274c64417.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/97.15df9ee2f6270421.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/9754.76a3ea33dc0e9a07.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/9790.7e01549d70279760.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/9871.994068e90ef076a5.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/9887.0fbd7c3721a3c1d1.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/9923.14c88b64d7749eaa.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/997.193727d4b2eede68.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/9971.36f503837f73d3c2.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/9976.ab4ec59ede08f398.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/9990.13e025853b0250b6.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/9997.a844d058b46bb680.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/app/_not-found/page-ce05b36a67c37396.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/app/layout-b0d50d105c55fd6d.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/app/page-7b51d29c96f44f61.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/app/run/page-c2cd4dca690d6d29.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/c06218ab.b1da50a91b579a52.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/c911d7bd.bcca2e3dda67a7a6.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/d386b14e.c746c93eac03a58e.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/e925550e.ff706051f5223d26.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/fc645be4-662fd2da08676daa.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/framework-2b8e4864be10152d.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/main-33072985ea766514.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/main-app-4a8ccba13aa7606b.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/pages/_app-c0ae3ec92f260128.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/pages/_error-899a04d491d7df58.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/polyfills-42372ed130431b0a.js +0 -1
- veadk/cli/studio/web/_next/static/chunks/webpack-14afc8861a1fe293.js +0 -1
- veadk/cli/studio/web/_next/static/css/366cfdd7fdd8bcac.css +0 -1
- veadk/cli/studio/web/_next/static/gvLvin_lQcpkhQupQqPu1/_buildManifest.js +0 -1
- veadk/cli/studio/web/_next/static/gvLvin_lQcpkhQupQqPu1/_ssgManifest.js +0 -1
- veadk/cli/studio/web/_next/static/media/569ce4b8f30dc480-s.p.woff2 +0 -0
- veadk/cli/studio/web/_next/static/media/747892c23ea88013-s.woff2 +0 -0
- veadk/cli/studio/web/_next/static/media/8d697b304b401681-s.woff2 +0 -0
- veadk/cli/studio/web/_next/static/media/93f479601ee12b01-s.p.woff2 +0 -0
- veadk/cli/studio/web/_next/static/media/9610d9e46709d722-s.woff2 +0 -0
- veadk/cli/studio/web/_next/static/media/ba015fad6dcf6784-s.woff2 +0 -0
- veadk/cli/studio/web/favicon.ico +0 -0
- veadk/cli/studio/web/file.svg +0 -1
- veadk/cli/studio/web/globe.svg +0 -1
- veadk/cli/studio/web/index.html +0 -1
- veadk/cli/studio/web/index.txt +0 -43
- veadk/cli/studio/web/next.svg +0 -1
- veadk/cli/studio/web/run.html +0 -1
- veadk/cli/studio/web/run.txt +0 -44
- veadk/cli/studio/web/veadk-logo.png +0 -0
- veadk/cli/studio/web/vercel.svg +0 -1
- veadk/cli/studio/web/window.svg +0 -1
- veadk/tracing/telemetry/exporters/apiserver_exporter.py +0 -60
- veadk_python-0.2.1.dist-info/RECORD +0 -534
- veadk_python-0.2.1.dist-info/entry_points.txt +0 -2
- /veadk/{cli/services/vefaas/template → integrations/ve_apig}/__init__.py +0 -0
- /veadk/{cli/services/veapig → integrations/ve_apig}/__pycache__/apig.cpython-310.pyc +0 -0
- /veadk/{cli/services/veapig/apig.py → integrations/ve_apig/ve_apig.py} +0 -0
- /veadk/{cli/services/veapig/apig_utils.py → integrations/ve_apig/ve_apig_utils.py} +0 -0
- /veadk/{cli/studio → integrations/ve_faas}/__init__.py +0 -0
- /veadk/{cli/services/vefaas → integrations/ve_faas}/__pycache__/vefaas_utils.cpython-310.pyc +0 -0
- /veadk/{cli/studio/web → integrations/ve_faas/template/{{cookiecutter.local_dir_name}}}/__init__.py +0 -0
- /veadk/{cli/services/vefaas/template → integrations/ve_faas/template/{{cookiecutter.local_dir_name}}}/src/__pycache__/studio_app.cpython-310.pyc +0 -0
- /veadk/{cli/services/vefaas/vefaas_utils.py → integrations/ve_faas/ve_faas_utils.py} +0 -0
- /veadk/{cli/services/agentpilot → integrations/ve_prompt_pilot}/__pycache__/__init__.cpython-310.pyc +0 -0
- {veadk_python-0.2.1.dist-info → veadk_python-0.2.2.dist-info}/WHEEL +0 -0
- {veadk_python-0.2.1.dist-info → veadk_python-0.2.2.dist-info}/licenses/LICENSE +0 -0
- {veadk_python-0.2.1.dist-info → veadk_python-0.2.2.dist-info}/top_level.txt +0 -0
|
@@ -1,87 +0,0 @@
|
|
|
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 absolute_import, division, print_function
|
|
16
|
-
|
|
17
|
-
import ast
|
|
18
|
-
import json
|
|
19
|
-
from collections import defaultdict
|
|
20
|
-
from datetime import datetime, timedelta
|
|
21
|
-
|
|
22
|
-
from volcengine.tls.tls_requests import SearchLogsRequest
|
|
23
|
-
from volcengine.tls.TLSService import TLSService
|
|
24
|
-
|
|
25
|
-
from veadk.utils.logger import get_logger
|
|
26
|
-
|
|
27
|
-
logger = get_logger(__name__)
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
class VeTLS:
|
|
31
|
-
def __init__(
|
|
32
|
-
self,
|
|
33
|
-
access_key: str,
|
|
34
|
-
secret_key: str,
|
|
35
|
-
dump_path: str,
|
|
36
|
-
endpoint: str = "https://tls-cn-beijing.volces.com",
|
|
37
|
-
region: str = "cn-beijing",
|
|
38
|
-
):
|
|
39
|
-
self.client = TLSService(endpoint, access_key, secret_key, region)
|
|
40
|
-
self.dump_path: str = dump_path
|
|
41
|
-
|
|
42
|
-
def query(self, topic_id: str, query: str):
|
|
43
|
-
logger.warning("Currently, we only search the logs in the last 24 hours.")
|
|
44
|
-
now = datetime.now()
|
|
45
|
-
one_day_ago = now - timedelta(days=1)
|
|
46
|
-
one_day_ago = int(one_day_ago.timestamp() * 1000)
|
|
47
|
-
now = int(now.timestamp() * 1000)
|
|
48
|
-
|
|
49
|
-
search_logs_request = SearchLogsRequest(
|
|
50
|
-
topic_id=topic_id,
|
|
51
|
-
query=query,
|
|
52
|
-
limit=100,
|
|
53
|
-
start_time=one_day_ago,
|
|
54
|
-
end_time=now,
|
|
55
|
-
)
|
|
56
|
-
|
|
57
|
-
search_logs_response = self.client.search_logs_v2(search_logs_request)
|
|
58
|
-
log_str_list = search_logs_response.get_search_result().get_logs()
|
|
59
|
-
log_dict_list = []
|
|
60
|
-
for log in log_str_list:
|
|
61
|
-
# message: str -> dict
|
|
62
|
-
message = ast.literal_eval(log["message"])
|
|
63
|
-
trace_id = log.get("trace_id")
|
|
64
|
-
log_dict_list.append(
|
|
65
|
-
{
|
|
66
|
-
"trace_id": trace_id,
|
|
67
|
-
"message": message,
|
|
68
|
-
}
|
|
69
|
-
)
|
|
70
|
-
log_dict_list = log_dict_list[::-1]
|
|
71
|
-
|
|
72
|
-
# 创建一个默认为 list 的字典来聚合
|
|
73
|
-
grouped = defaultdict(list)
|
|
74
|
-
|
|
75
|
-
# 遍历原始数据,按 key 分组
|
|
76
|
-
for item in log_dict_list:
|
|
77
|
-
grouped[item["trace_id"]].append(item["message"])
|
|
78
|
-
result = [{"trace_id": k, "data": v} for k, v in grouped.items()]
|
|
79
|
-
|
|
80
|
-
self.dump_to_file(result)
|
|
81
|
-
|
|
82
|
-
def dump_to_file(self, logs: list[dict]):
|
|
83
|
-
with open(f"{self.dump_path}/logs.json", "w", encoding="utf-8") as f:
|
|
84
|
-
json.dump(logs, f, ensure_ascii=False, indent=4)
|
|
85
|
-
logger.info(f"VeTLS dumps log list to {self.dump_path}/logs.json")
|
|
86
|
-
logger.info(f"VeTLS dumps log list to {self.dump_path}/logs.json")
|
|
87
|
-
logger.info(f"VeTLS dumps log list to {self.dump_path}/logs.json")
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
veadk/cli/studio/fast_api.py
DELETED
|
@@ -1,392 +0,0 @@
|
|
|
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 json
|
|
16
|
-
import os
|
|
17
|
-
import uuid
|
|
18
|
-
|
|
19
|
-
from fastapi import FastAPI, Request
|
|
20
|
-
from fastapi.middleware.cors import CORSMiddleware
|
|
21
|
-
from fastapi.responses import FileResponse, StreamingResponse
|
|
22
|
-
from fastapi.staticfiles import StaticFiles
|
|
23
|
-
from google.adk.agents.run_config import RunConfig, StreamingMode
|
|
24
|
-
from google.genai import types
|
|
25
|
-
from pydantic import BaseModel
|
|
26
|
-
|
|
27
|
-
from veadk.cli.studio.models import (
|
|
28
|
-
GetAgentResponse,
|
|
29
|
-
GetEventResponse,
|
|
30
|
-
GetHistoryMessagesResponse,
|
|
31
|
-
GetTracingResponse,
|
|
32
|
-
Message,
|
|
33
|
-
RunnerConfig,
|
|
34
|
-
SpanItem,
|
|
35
|
-
TextPart,
|
|
36
|
-
ToolPart,
|
|
37
|
-
)
|
|
38
|
-
from veadk.cli.studio.studio_processor import StudioProcessor
|
|
39
|
-
from veadk.utils.logger import get_logger
|
|
40
|
-
|
|
41
|
-
logger = get_logger(__name__)
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
processor = None
|
|
45
|
-
|
|
46
|
-
app = FastAPI()
|
|
47
|
-
|
|
48
|
-
app.add_middleware(
|
|
49
|
-
CORSMiddleware,
|
|
50
|
-
allow_origins=["*"],
|
|
51
|
-
allow_credentials=True,
|
|
52
|
-
allow_methods=["*"],
|
|
53
|
-
allow_headers=["*"],
|
|
54
|
-
)
|
|
55
|
-
|
|
56
|
-
NEXT_STATIC_DIR = os.path.join(os.path.dirname(__file__), "web")
|
|
57
|
-
NEXT_HTML_DIR = NEXT_STATIC_DIR
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
@app.get("/")
|
|
61
|
-
async def read_root():
|
|
62
|
-
index_path = os.path.join(NEXT_HTML_DIR, "index.html")
|
|
63
|
-
if os.path.exists(index_path):
|
|
64
|
-
return FileResponse(index_path, media_type="text/html")
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
@app.get("/get_history_messages")
|
|
68
|
-
async def get_history_messages() -> GetHistoryMessagesResponse:
|
|
69
|
-
session_service = processor.short_term_memory.session_service
|
|
70
|
-
session = await session_service.get_session(
|
|
71
|
-
app_name=processor.runner.app_name,
|
|
72
|
-
user_id=processor.runner.user_id,
|
|
73
|
-
session_id=processor.session_id,
|
|
74
|
-
)
|
|
75
|
-
|
|
76
|
-
# prevent no session created
|
|
77
|
-
if session:
|
|
78
|
-
messages = []
|
|
79
|
-
tool_mapping = {}
|
|
80
|
-
for event in session.events:
|
|
81
|
-
formatted_parts = []
|
|
82
|
-
for part in event.content.parts:
|
|
83
|
-
if part.text:
|
|
84
|
-
formatted_part = TextPart(text=part.text)
|
|
85
|
-
formatted_parts.append(formatted_part)
|
|
86
|
-
if part.function_call:
|
|
87
|
-
formatted_part = ToolPart(
|
|
88
|
-
type="tool-" + part.function_call.name,
|
|
89
|
-
state="input-available",
|
|
90
|
-
toolCallId=part.function_call.id,
|
|
91
|
-
input=part.function_call.args,
|
|
92
|
-
)
|
|
93
|
-
tool_mapping[part.function_call.id] = formatted_part
|
|
94
|
-
formatted_parts.append(formatted_part)
|
|
95
|
-
if part.function_response:
|
|
96
|
-
formatted_part = tool_mapping[part.function_response.id]
|
|
97
|
-
formatted_part.output = part.function_response.response
|
|
98
|
-
formatted_part.state = "output-available"
|
|
99
|
-
|
|
100
|
-
if formatted_parts: # prevent only function_response in event
|
|
101
|
-
session_message = Message(
|
|
102
|
-
id=event.id,
|
|
103
|
-
role=event.author if event.author == "user" else "assistant",
|
|
104
|
-
parts=formatted_parts,
|
|
105
|
-
)
|
|
106
|
-
messages.append(session_message)
|
|
107
|
-
return GetHistoryMessagesResponse(messages=messages)
|
|
108
|
-
else:
|
|
109
|
-
return GetHistoryMessagesResponse(messages=[])
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
async def runner_run_sse(user_text: str):
|
|
113
|
-
message = types.Content(role="user", parts=[types.Part(text=user_text)])
|
|
114
|
-
|
|
115
|
-
await processor.runner.short_term_memory.create_session(
|
|
116
|
-
app_name=processor.runner.app_name,
|
|
117
|
-
user_id=processor.runner.user_id,
|
|
118
|
-
session_id=processor.session_id,
|
|
119
|
-
)
|
|
120
|
-
|
|
121
|
-
logger.info("Begin to process user message under SSE method.")
|
|
122
|
-
|
|
123
|
-
# message begin
|
|
124
|
-
msg_id = f"msg-{str(uuid.uuid4())}"
|
|
125
|
-
MESSAGE_START = {"type": "start", "messageId": msg_id}
|
|
126
|
-
yield f"data: {json.dumps(MESSAGE_START)}\n\n"
|
|
127
|
-
|
|
128
|
-
text_id = f"text-{str(uuid.uuid4())}"
|
|
129
|
-
TEXT_START = {"type": "text-start", "id": text_id}
|
|
130
|
-
yield f"data: {json.dumps(TEXT_START)}\n\n"
|
|
131
|
-
|
|
132
|
-
async for event in processor.runner.runner.run_async(
|
|
133
|
-
user_id=processor.runner.user_id,
|
|
134
|
-
session_id=processor.session_id,
|
|
135
|
-
new_message=message,
|
|
136
|
-
run_config=RunConfig(streaming_mode=StreamingMode.SSE),
|
|
137
|
-
):
|
|
138
|
-
for function_call in event.get_function_calls():
|
|
139
|
-
TOOL_INPUT_START = {
|
|
140
|
-
"type": "tool-input-start",
|
|
141
|
-
"toolCallId": function_call.id,
|
|
142
|
-
"toolName": function_call.name,
|
|
143
|
-
}
|
|
144
|
-
yield f"data: {json.dumps(TOOL_INPUT_START)}\n\n"
|
|
145
|
-
|
|
146
|
-
TOOL_INPUT_AVAILABLE = {
|
|
147
|
-
"type": "tool-input-available",
|
|
148
|
-
"toolCallId": function_call.id,
|
|
149
|
-
"toolName": function_call.name,
|
|
150
|
-
"input": function_call.args,
|
|
151
|
-
}
|
|
152
|
-
yield f"data: {json.dumps(TOOL_INPUT_AVAILABLE)}\n\n"
|
|
153
|
-
|
|
154
|
-
for function_response in event.get_function_responses():
|
|
155
|
-
# for load_memory and load_knowledgebase tools, the output is based BaseModel
|
|
156
|
-
# we have to convert it
|
|
157
|
-
for key, value in function_response.response.items():
|
|
158
|
-
if isinstance(value, BaseModel):
|
|
159
|
-
function_response.response[key] = value.model_dump(
|
|
160
|
-
exclude_none=False
|
|
161
|
-
)
|
|
162
|
-
|
|
163
|
-
TOOL_OUTPUT_AVAILABLE = {
|
|
164
|
-
"type": "tool-output-available",
|
|
165
|
-
"toolCallId": function_response.id,
|
|
166
|
-
"output": function_response.response,
|
|
167
|
-
}
|
|
168
|
-
yield f"data: {json.dumps(TOOL_OUTPUT_AVAILABLE)}\n\n"
|
|
169
|
-
|
|
170
|
-
if (
|
|
171
|
-
not event.is_final_response()
|
|
172
|
-
and len(event.content.parts) > 0
|
|
173
|
-
and event.content.parts[0].text
|
|
174
|
-
):
|
|
175
|
-
TEXT_DELTA = {
|
|
176
|
-
"type": "text-delta",
|
|
177
|
-
"delta": event.content.parts[0].text,
|
|
178
|
-
"id": text_id,
|
|
179
|
-
}
|
|
180
|
-
yield f"data: {json.dumps(TEXT_DELTA)}\n\n"
|
|
181
|
-
|
|
182
|
-
if event.is_final_response():
|
|
183
|
-
TEXT_END = {"type": "text-end", "id": text_id}
|
|
184
|
-
yield f"data: {json.dumps(TEXT_END)}\n\n"
|
|
185
|
-
|
|
186
|
-
TEXT_FINISH = {"type": "finish", "finishReason": "stop"}
|
|
187
|
-
yield f"data: {json.dumps(TEXT_FINISH)}\n\n"
|
|
188
|
-
|
|
189
|
-
DONE = "[DONE]"
|
|
190
|
-
yield f"data: {DONE}\n\n"
|
|
191
|
-
|
|
192
|
-
logger.info("SSE Stream Completed.")
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
@app.post("/run_sse")
|
|
196
|
-
async def run_sse(request: Request):
|
|
197
|
-
data = await request.json()
|
|
198
|
-
user_text = data["messages"][-1]["parts"][0]["text"]
|
|
199
|
-
|
|
200
|
-
response = StreamingResponse(runner_run_sse(user_text=user_text))
|
|
201
|
-
response.headers["x-vercel-ai-ui-message-stream"] = "v1"
|
|
202
|
-
response.headers["Content-Type"] = "text/event-stream"
|
|
203
|
-
return response
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
@app.get("/get_agent")
|
|
207
|
-
def get_agent() -> GetAgentResponse:
|
|
208
|
-
return GetAgentResponse(
|
|
209
|
-
name=processor.agent.name,
|
|
210
|
-
description=processor.agent.description,
|
|
211
|
-
instruction=processor.agent.instruction,
|
|
212
|
-
model_name=processor.agent.model_name,
|
|
213
|
-
short_term_memory_backend="",
|
|
214
|
-
short_term_memory_db_url="",
|
|
215
|
-
long_term_memory_backend="",
|
|
216
|
-
knowledgebase_backend="",
|
|
217
|
-
)
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
def parse_tracing_file(filepath: str):
|
|
221
|
-
with open(filepath, "r") as f:
|
|
222
|
-
spans = json.load(f)
|
|
223
|
-
|
|
224
|
-
max_latency = -1
|
|
225
|
-
# 1. generate span mapping
|
|
226
|
-
store: dict[str, SpanItem] = {}
|
|
227
|
-
for span in spans:
|
|
228
|
-
event_id = ""
|
|
229
|
-
# in case of root node
|
|
230
|
-
if "gcp.vertex.agent.event_id" in span["attributes"]:
|
|
231
|
-
event_id = str(span["attributes"]["gcp.vertex.agent.event_id"])
|
|
232
|
-
|
|
233
|
-
latency = (span["end_time"] - span["start_time"]) / 1000000
|
|
234
|
-
max_latency = max(max_latency, latency)
|
|
235
|
-
span_item = SpanItem(
|
|
236
|
-
name=span["name"],
|
|
237
|
-
span_id=str(span["span_id"]),
|
|
238
|
-
trace_id=str(span["trace_id"]),
|
|
239
|
-
event_id=event_id,
|
|
240
|
-
parent_span_id=str(span["parent_span_id"])
|
|
241
|
-
if span["parent_span_id"]
|
|
242
|
-
else "",
|
|
243
|
-
latency=f"{latency:.2f}",
|
|
244
|
-
latency_proportion="0",
|
|
245
|
-
attributes=span["attributes"],
|
|
246
|
-
childs=[],
|
|
247
|
-
)
|
|
248
|
-
store[str(span["span_id"])] = span_item
|
|
249
|
-
|
|
250
|
-
# normalize latency
|
|
251
|
-
for span_item in store.values():
|
|
252
|
-
span_item.latency_proportion = (
|
|
253
|
-
f"{float(span_item.latency) / max_latency * 100:.2f}"
|
|
254
|
-
)
|
|
255
|
-
|
|
256
|
-
# 2. build sequencial spans
|
|
257
|
-
root_items = []
|
|
258
|
-
for span_item in store.values():
|
|
259
|
-
if span_item.parent_span_id == "":
|
|
260
|
-
root_items.append(span_item)
|
|
261
|
-
else:
|
|
262
|
-
parent_span = store[span_item.parent_span_id]
|
|
263
|
-
parent_span.childs.append(span_item)
|
|
264
|
-
|
|
265
|
-
return root_items
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
@app.get("/get_tracing")
|
|
269
|
-
async def get_tracing() -> GetTracingResponse:
|
|
270
|
-
session_service = processor.short_term_memory.session_service
|
|
271
|
-
session = await session_service.get_session(
|
|
272
|
-
app_name=processor.runner.app_name,
|
|
273
|
-
user_id=processor.runner.user_id,
|
|
274
|
-
session_id=processor.session_id,
|
|
275
|
-
)
|
|
276
|
-
if not session:
|
|
277
|
-
return GetTracingResponse(root_spans=[])
|
|
278
|
-
# ====== prevent existing file ======
|
|
279
|
-
tracing_file_path = processor.tracer.dump(
|
|
280
|
-
processor.runner.user_id, processor.session_id
|
|
281
|
-
)
|
|
282
|
-
os.remove(tracing_file_path)
|
|
283
|
-
# ====== ====================== ======
|
|
284
|
-
|
|
285
|
-
tracing_file_path = processor.tracer.dump(
|
|
286
|
-
processor.runner.user_id, processor.session_id
|
|
287
|
-
)
|
|
288
|
-
root_spans = parse_tracing_file(filepath=tracing_file_path)
|
|
289
|
-
os.remove(tracing_file_path)
|
|
290
|
-
return GetTracingResponse(root_spans=root_spans)
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
@app.get("/get_event")
|
|
294
|
-
async def get_event(event_id: str) -> GetEventResponse:
|
|
295
|
-
session_service = processor.short_term_memory.session_service
|
|
296
|
-
session = await session_service.get_session(
|
|
297
|
-
app_name=processor.runner.app_name,
|
|
298
|
-
user_id=processor.runner.user_id,
|
|
299
|
-
session_id=processor.session_id,
|
|
300
|
-
)
|
|
301
|
-
|
|
302
|
-
# prevent no session created
|
|
303
|
-
if session:
|
|
304
|
-
for event in session.events:
|
|
305
|
-
if event.id == event_id:
|
|
306
|
-
return GetEventResponse(
|
|
307
|
-
event=event.model_dump_json(exclude_none=True, by_alias=True)
|
|
308
|
-
)
|
|
309
|
-
return GetEventResponse(event=json.dumps({"info": "not an event span"}))
|
|
310
|
-
|
|
311
|
-
return GetEventResponse(event=json.dumps({"info": "not an event span"}))
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
@app.get("/get_runner_config")
|
|
315
|
-
async def get_runner_config() -> RunnerConfig:
|
|
316
|
-
return RunnerConfig(
|
|
317
|
-
app_name=processor.runner.app_name,
|
|
318
|
-
user_id=processor.runner.user_id,
|
|
319
|
-
session_id=processor.session_id,
|
|
320
|
-
)
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
@app.get("/set_runner_config")
|
|
324
|
-
async def set_runner_config(
|
|
325
|
-
app_name: str, user_id: str, session_id: str
|
|
326
|
-
) -> RunnerConfig:
|
|
327
|
-
processor.runner.app_name = app_name
|
|
328
|
-
processor.runner.user_id = user_id
|
|
329
|
-
processor.session_id = session_id
|
|
330
|
-
return RunnerConfig(
|
|
331
|
-
app_name=processor.runner.app_name,
|
|
332
|
-
user_id=processor.runner.user_id,
|
|
333
|
-
session_id=processor.session_id,
|
|
334
|
-
)
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
@app.get("/set_prompt")
|
|
338
|
-
async def set_prompt(prompt: str):
|
|
339
|
-
processor.runner.agent.instruction = prompt
|
|
340
|
-
return {"result": "success"}
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
@app.get("/refine_prompt")
|
|
344
|
-
async def refine_prompt(feedback: str):
|
|
345
|
-
refined_prompt = "" # prevent error processing
|
|
346
|
-
refined_prompt = processor.agent_pilot.optimize(
|
|
347
|
-
agents=[processor.agent], feedback=feedback
|
|
348
|
-
)
|
|
349
|
-
return {"prompt": refined_prompt}
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
@app.get("/get_testcases")
|
|
353
|
-
async def get_testcases():
|
|
354
|
-
test_cases = await processor.get_testcases()
|
|
355
|
-
return {"test_cases": test_cases}
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
@app.get("/evaluate")
|
|
359
|
-
async def evaluate():
|
|
360
|
-
test_cases = await processor.evaluate()
|
|
361
|
-
return {"test_cases": test_cases}
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
@app.get("/save_session")
|
|
365
|
-
async def save_session():
|
|
366
|
-
await processor.runner.save_session_to_long_term_memory(processor.session_id)
|
|
367
|
-
return {"result": "success"}
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
app.mount(
|
|
371
|
-
"/_next",
|
|
372
|
-
StaticFiles(directory=os.path.join(NEXT_STATIC_DIR, "_next")),
|
|
373
|
-
name="next_static",
|
|
374
|
-
)
|
|
375
|
-
|
|
376
|
-
app.mount(
|
|
377
|
-
"/",
|
|
378
|
-
StaticFiles(directory=NEXT_STATIC_DIR, html=True),
|
|
379
|
-
name="static",
|
|
380
|
-
)
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
def get_fast_api_app(agent, short_term_memory):
|
|
384
|
-
global processor
|
|
385
|
-
processor = StudioProcessor(
|
|
386
|
-
app_name="veadk_studio",
|
|
387
|
-
user_id="studio_user",
|
|
388
|
-
session_id="studio_session",
|
|
389
|
-
agent=agent,
|
|
390
|
-
short_term_memory=short_term_memory,
|
|
391
|
-
)
|
|
392
|
-
return app
|
veadk/cli/studio/models.py
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
# Copyright (c) 2025 Beijing Volcano Engine Technology Co., Ltd. and/or its affiliates.
|
|
2
|
-
#
|
|
3
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
# you may not use this file except in compliance with the License.
|
|
5
|
-
# You may obtain a copy of the License at
|
|
6
|
-
#
|
|
7
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
-
#
|
|
9
|
-
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
-
# See the License for the specific language governing permissions and
|
|
13
|
-
# limitations under the License.
|
|
14
|
-
|
|
15
|
-
from pydantic import BaseModel
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
class GetAgentResponse(BaseModel):
|
|
19
|
-
name: str
|
|
20
|
-
description: str
|
|
21
|
-
instruction: str
|
|
22
|
-
model_name: str
|
|
23
|
-
short_term_memory_backend: str
|
|
24
|
-
short_term_memory_db_url: str
|
|
25
|
-
long_term_memory_backend: str
|
|
26
|
-
knowledgebase_backend: str
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
class SpanItem(BaseModel):
|
|
30
|
-
name: str
|
|
31
|
-
span_id: str
|
|
32
|
-
trace_id: str
|
|
33
|
-
event_id: str
|
|
34
|
-
parent_span_id: str
|
|
35
|
-
latency: str
|
|
36
|
-
latency_proportion: str
|
|
37
|
-
attributes: dict
|
|
38
|
-
childs: list["SpanItem"]
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
class GetTracingResponse(BaseModel):
|
|
42
|
-
root_spans: list[SpanItem]
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
class GetEventResponse(BaseModel):
|
|
46
|
-
event: str
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
class RunnerConfig(BaseModel):
|
|
50
|
-
app_name: str
|
|
51
|
-
user_id: str
|
|
52
|
-
session_id: str
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
class TextPart(BaseModel):
|
|
56
|
-
type: str = "text"
|
|
57
|
-
state: str = "done"
|
|
58
|
-
text: str
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
class ToolPart(BaseModel):
|
|
62
|
-
type: str
|
|
63
|
-
toolCallId: str
|
|
64
|
-
state: str = ""
|
|
65
|
-
input: dict = {}
|
|
66
|
-
output: dict = {}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
class Message(BaseModel):
|
|
70
|
-
id: str
|
|
71
|
-
role: str
|
|
72
|
-
parts: list[TextPart | ToolPart]
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
class GetHistoryMessagesResponse(BaseModel):
|
|
76
|
-
messages: list[Message]
|
|
@@ -1,127 +0,0 @@
|
|
|
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
|
-
|
|
17
|
-
from deepeval.metrics import GEval
|
|
18
|
-
from deepeval.test_case import LLMTestCaseParams
|
|
19
|
-
from google.adk.agents.callback_context import CallbackContext
|
|
20
|
-
from google.adk.models.llm_response import LlmResponse
|
|
21
|
-
|
|
22
|
-
from veadk import Agent
|
|
23
|
-
from veadk.cli.services.agentpilot.agentpilot import AgentPilot
|
|
24
|
-
from veadk.config import getenv
|
|
25
|
-
from veadk.evaluation.deepeval_evaluator import DeepevalEvaluator
|
|
26
|
-
from veadk.evaluation.eval_set_recorder import EvalSetRecorder
|
|
27
|
-
from veadk.memory.short_term_memory import ShortTermMemory
|
|
28
|
-
from veadk.runner import Runner
|
|
29
|
-
from veadk.tracing.telemetry.opentelemetry_tracer import OpentelemetryTracer
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
class StudioProcessor:
|
|
33
|
-
def __init__(
|
|
34
|
-
self,
|
|
35
|
-
app_name: str,
|
|
36
|
-
user_id: str,
|
|
37
|
-
session_id: str,
|
|
38
|
-
agent: Agent,
|
|
39
|
-
short_term_memory: ShortTermMemory,
|
|
40
|
-
) -> None:
|
|
41
|
-
self.agent = agent
|
|
42
|
-
self.short_term_memory = short_term_memory
|
|
43
|
-
|
|
44
|
-
self.tracer = None
|
|
45
|
-
if self.agent.tracers == []:
|
|
46
|
-
self.tracer = OpentelemetryTracer()
|
|
47
|
-
self.agent.tracer = [self.tracer]
|
|
48
|
-
else:
|
|
49
|
-
self.tracer = self.agent.tracers[0]
|
|
50
|
-
|
|
51
|
-
if self.agent.after_model_callback:
|
|
52
|
-
self.agent.after_model_callback.append(after_model_callback)
|
|
53
|
-
else:
|
|
54
|
-
self.agent.after_model_callback = [after_model_callback]
|
|
55
|
-
|
|
56
|
-
self.runner = Runner(
|
|
57
|
-
agent=self.agent,
|
|
58
|
-
short_term_memory=self.short_term_memory,
|
|
59
|
-
app_name=app_name,
|
|
60
|
-
user_id=user_id,
|
|
61
|
-
)
|
|
62
|
-
self.session_id = session_id
|
|
63
|
-
self.agent_pilot = AgentPilot(api_key=getenv("AGENT_PILOT_API_KEY"))
|
|
64
|
-
|
|
65
|
-
self.eval_set_recorder = EvalSetRecorder(
|
|
66
|
-
session_service=self.short_term_memory.session_service, eval_set_id="studio"
|
|
67
|
-
)
|
|
68
|
-
self.evaluator = DeepevalEvaluator(agent=self.agent)
|
|
69
|
-
|
|
70
|
-
async def get_testcases(self):
|
|
71
|
-
session_id = self.session_id
|
|
72
|
-
try:
|
|
73
|
-
dump_path = await self.eval_set_recorder.dump(
|
|
74
|
-
self.runner.app_name, self.runner.user_id, session_id
|
|
75
|
-
)
|
|
76
|
-
os.remove(dump_path)
|
|
77
|
-
except Exception as _:
|
|
78
|
-
pass
|
|
79
|
-
|
|
80
|
-
dump_path = await self.eval_set_recorder.dump(
|
|
81
|
-
self.runner.app_name, self.runner.user_id, session_id
|
|
82
|
-
)
|
|
83
|
-
self._eval_set_path = dump_path
|
|
84
|
-
|
|
85
|
-
# 2. build
|
|
86
|
-
self.evaluator = DeepevalEvaluator(self.agent)
|
|
87
|
-
self.evaluator.generate_eval_data(dump_path)
|
|
88
|
-
|
|
89
|
-
test_cases = self.evaluator.get_data()
|
|
90
|
-
|
|
91
|
-
return test_cases
|
|
92
|
-
|
|
93
|
-
async def evaluate(self):
|
|
94
|
-
metrics = [
|
|
95
|
-
GEval(
|
|
96
|
-
name="Correctness&MatchDegree",
|
|
97
|
-
model=self.evaluator.judge_model,
|
|
98
|
-
criteria="Judge the correctness and match degree of the model output with the expected output.",
|
|
99
|
-
evaluation_params=[
|
|
100
|
-
LLMTestCaseParams.INPUT,
|
|
101
|
-
LLMTestCaseParams.ACTUAL_OUTPUT,
|
|
102
|
-
LLMTestCaseParams.EXPECTED_OUTPUT,
|
|
103
|
-
],
|
|
104
|
-
),
|
|
105
|
-
]
|
|
106
|
-
|
|
107
|
-
await self.evaluator.eval(
|
|
108
|
-
eval_set_file_path=self._eval_set_path, metrics=metrics
|
|
109
|
-
)
|
|
110
|
-
test_cases = self.evaluator.get_data()
|
|
111
|
-
|
|
112
|
-
os.remove(self._eval_set_path)
|
|
113
|
-
self._eval_set_path = ""
|
|
114
|
-
|
|
115
|
-
return test_cases
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
def after_model_callback(callback_context: CallbackContext, llm_response: LlmResponse):
|
|
119
|
-
if llm_response.content and llm_response.content.parts:
|
|
120
|
-
valid_parts = [
|
|
121
|
-
part
|
|
122
|
-
for part in llm_response.content.parts
|
|
123
|
-
if not (part.function_call and not part.function_call.name)
|
|
124
|
-
]
|
|
125
|
-
if len(valid_parts) < len(llm_response.content.parts):
|
|
126
|
-
llm_response.content.parts = valid_parts
|
|
127
|
-
return llm_response
|