veadk-python 0.1.0__py3-none-any.whl → 0.2.0__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.
- veadk/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/__pycache__/agent.cpython-310.pyc +0 -0
- veadk/__pycache__/config.cpython-310.pyc +0 -0
- veadk/__pycache__/consts.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__/__init__.cpython-310.pyc +0 -0
- veadk/a2a/__pycache__/agent_card.cpython-310.pyc +0 -0
- veadk/a2a/__pycache__/remote_ve_agent.cpython-310.pyc +0 -0
- veadk/a2a/remote_ve_agent.py +14 -0
- veadk/agent.py +9 -3
- veadk/cli/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/cli/__pycache__/main.cpython-310.pyc +0 -0
- veadk/cli/main.py +108 -7
- veadk/cli/services/agentpilot/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/cli/services/agentpilot/__pycache__/agentpilot.cpython-310.pyc +0 -0
- veadk/cli/services/veapig/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/cli/services/veapig/__pycache__/apig.cpython-310.pyc +0 -0
- veadk/cli/services/vefaas/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/cli/services/vefaas/__pycache__/vefaas.cpython-310.pyc +0 -0
- veadk/cli/services/vefaas/__pycache__/vefaas_utils.cpython-310.pyc +0 -0
- veadk/cli/services/vefaas/template/README.md +37 -0
- veadk/cli/services/vefaas/template/__init__.py +13 -0
- veadk/cli/services/vefaas/template/config.yaml.example +19 -0
- veadk/cli/services/vefaas/template/deploy.py +25 -11
- veadk/cli/services/vefaas/template/src/__init__.py +14 -0
- veadk/cli/services/vefaas/template/src/__pycache__/agent.cpython-310.pyc +0 -0
- veadk/cli/services/vefaas/template/src/__pycache__/studio_app.cpython-310.pyc +0 -0
- veadk/cli/services/vefaas/template/src/agent.py +25 -0
- veadk/cli/services/vefaas/template/src/app.py +48 -8
- veadk/cli/services/vefaas/template/src/requirements.txt +6 -0
- veadk/cli/services/vefaas/template/src/run.sh +63 -0
- veadk/cli/services/vefaas/template/src/studio_app.py +47 -0
- veadk/cli/services/vefaas/vefaas.py +153 -101
- 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 +305 -145
- veadk/cli/studio/models.py +76 -0
- veadk/cli/studio/studio_processor.py +127 -0
- veadk/cli/studio/web/404.html +1 -0
- veadk/cli/studio/web/__init__.py +13 -0
- veadk/cli/studio/web/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/cli/studio/web/_next/static/chunks/1012.1c22f40693022876.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/1017.577d2551c3a2b396.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/1044.7c49605a0f9b5d5c.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/1067.71aee8d185b3a9d7.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/1088.8f7f3c71458d301b.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/1092.7b553ab1ec1737bf.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/1117.8c537e259adccbe2.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/1142.1faf8d46ccf4030c.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/1146.25bf08c82f4ad1c5.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/1192.55e7712b3dc8b6a8.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/1200.1038681512a9f69a.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/1265.e055670c82b2d131.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/1275.322d8bf8a580b859.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/140.d7e90f5e12cf288c.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/1421.7fff0e9f0677f79b.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/1469.16c1e07a7c0f9817.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/1480.3c94a6d6d61c4f56.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/1507.4c7617217de3bef8.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/1523.1740f3d9d913fe76.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/1526.5fb34657a70589b5.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/1563.6c364e96b33f3328.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/157.2e3f508bc115c15c.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/1577.b6cebda169ac9c75.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/1622.a611b4dab478587d.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/1685.db5d4efe2f0e3767.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/1687.a10254d4e1dd84c0.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/1826.da2ac0fcfb59cfae.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/1832.f81112d6166a9563.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/1851.1d0bdfdf5fa89313.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/189.c602a68aadf321e4.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/1899.dd303f08095745bc.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/193.1e81c5b253db2ee7.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/1936.8fad6d3898c86483.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/1942.165056b632c269d4.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/1974.ee28ba5ac111af70.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2.c2afe2e24520b5de.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2006.298ac00a777dc313.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2063.69ba443b7901194c.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2067-e02b0bc96d886930.js +91 -0
- veadk/cli/studio/web/_next/static/chunks/2119.4595d21bc0340c5b.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/212.0a8d6163667d9369.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2190.5549f7a57901bd46.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2193.51ce38cc9e965abd.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2202.a6c08676680e55ad.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2247.af410bd18c38e538.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2313.6932520daf0fa88c.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2316.c9eafa57971eebc8.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2324.766859688506ac0d.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2328.131b0296bc19ba4e.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2332.b9b7ac0b386a4a28.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2344.cc417c70cb6dbc51.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2347.9f442b75b11de668.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2356.f6b4ac7eb50edb44.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2370.044b34646bc58363.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2378.2005af4d2bf100dd.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2437.68534e42d45c5c61.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2449.db460ea54b851bc1.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2455.153b04863d2ae9dc.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2484.139843b3f1cc8ea5.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2500.e2b8da0d1401bd5f.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2513.a7056ff98b04c4cd.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2533.5e35d247414428d0.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2541.3e5a23b461d7a9fd.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2545.0e4e3a784391205b.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2558.17eda1052d7c8c1f.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2559.7432df2540cfff07.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2578.1be0687e71bc7731.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2601.aa7e57bdf472372c.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/261-19b52c2c85aefb5d.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2642.9ea0966ca6bd8ace.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2669.e90ab188be48154e.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2737.4f5c7f7b9293ae65.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2804.b801cadc26133d92.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2817.8584109b4bc979e8.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/282.cfff86fab979470f.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2822.12cdf0520b2d321a.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/288.5c1053dbdc74212b.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2964.a531dbf5eb867f3d.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/2f7605f3.0531565b22967bb4.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/3080.9aada68cdc9ad5c2.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/3090.a9e7f71df818f607.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/3103.b7cdb76d87ac0fdd.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/311.2737abd09304ba1b.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/3110.84511591e516221b.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/3126.307ac469edcf6ec9.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/320.a3c0085ebf05b7da.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/322.668c1a20cc012c68.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/3341.a0f06b1edc2332fb.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/3357.ced93e6bf8e56762.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/3386.53f3aa4ff0dd0170.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/3391.402e02fd7c297ff8.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/3392.5172b1d190ff0e8c.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/33fb68d2.aacf24a5979288bd.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/3429.74dcaa985d188e43.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/3433.737c3d948bdda1da.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/3435.1798454b9a5b69ca.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/3481.a916f933c4e534b8.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/3602.bdf28129f1569554.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/3607.49cec7e9330d1f4d.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/3615.3280752d551adf2d.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/3721.f660b5b05621f5e4.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/3786.ae0824e683556d37.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/3805.ec0340f0f6e61bbc.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/4045.42a3c9fb7d932ebc.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/4052.86cc820c95ad25a8.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/4058.3cea468f5370b7c9.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/4068.ff830b92579f6b7f.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/411.5679da8e6a856022.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/4118.e2544434642f6640.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/4139.80b0aab26d9a4601.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/423.da4e0abf5fd408dc.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/4262.9d5532cb76a86371.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/431.ef6d705ac627958f.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/4337.3c94a6d6d61c4f56.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/4357-39eb6b5934ac97db.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/4382.64908590e0a18d66.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/4489.7a9b45fb6f6bf491.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/450.76880cb957b128fa.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/452.14fb00ee415ad32b.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/4577.d1cbd95a87e2adb2.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/4626.0866c7ee38885775.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/4627.3d7df52a668a6b57.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/4713.3891f7d347513ef5.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/4749.25fd94a8ed476b13.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/4836.afe027e38fb9a7e8.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/483e0093.2a09b17ad5d1b3ed.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/4852.cac6e9c5032df796.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/4860.94324451a00fadc0.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/4869.091903cb36ad77ad.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/4888.e248e212b002f5df.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/492.ac958937dd36300f.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/4958.85e0dbc8b2319776.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/4968.1477e29640b2deb8.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/4980.1300ab7d9c76e523.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/4aa6d3c9.dade76a8ff4112d3.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5006.8ee1d611f529da11.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5018.c34d2a9f82e24c51.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5050.c06b2d8e12720555.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5084.9b554002148843ea.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5097.2e9a097ccfb70707.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5113.fa5291624248676b.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5115.ff49cf5e2be16db4.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/521.98b7995e15b59075.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5213.1a7618fcae8c5282.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/522.56063fbcf9aa8699.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5247.b304f94eb3132618.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5248.f9faaff2f0d7631f.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/527-1c65afbb202752bd.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/529.7d231c2076b6d77a.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5305.9323b5f7efaa005e.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5317.fce75000492e9db4.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5326.3be5b04850f0a2f2.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5329.415b43aacdd9a471.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5331.77f0493c99857944.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5341.1fff90ab37947f62.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/541.04d938e895b7f678.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5428.fa789e4b0d61cd0d.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5460.cee07b9411c5c5ca.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5472.f645717ad2edd28f.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5503.75093ef3870b655f.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5567.44555d5da6ed19b7.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5572.3c35c26a4867ca56.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5579.b3be6028d1833118.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5631.b8a2c0dc65737269.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5656.b743b6ab9a61eec0.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5677.c063822912e55a25.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5779.0b1a3c7d1c018a1d.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5817.ae1fb69a154fbf4c.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5860.7154866a5d2dd82f.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5865.645e44e8e171ba9f.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5906.30cce16ed88f920a.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5942.cd6dfaad76581849.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/5958.e2f981fa3cba5d99.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/60f90b65.d526f39688baa769.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/6128.3da302fb50769250.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/62.5408e55d383a8078.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/624.7c7198473a8877d8.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/6264.e7bdd878d9e7a249.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/6266.97409ca00a3c32d9.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/6269.668be917daafccaa.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/630.87a6f22ac3e8956b.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/6341.35afa02112051be8.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/6353.93869a804ffe525b.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/6375.46d2897cb2526abd.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/6395.f113970ceec6ba91.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/63d31579-18fb2181524a9c6f.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/6423.d4cf9eb5b2ae6336.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/6437.5eeaa7320bce1872.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/6438.1c8486cc62da4117.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/6451.f56cce0a07138982.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/6456.f263b33ea51e4f54.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/6504.0e6ae8d5bb987be6.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/6560.b08504c0d99d71d4.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/6563.e6d3bdba9860590d.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/6621.639e4057d9c15bea.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/6625.c0233245d2c1ef25.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/6641.5487a2d68b0c52f2.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/6644.74de9f2de2dc75f5.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/6730.aac5bd02aab8258f.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/6824.8c40dbd3eb390403.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/6831.74b4a9b75f4ff9d1.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/688.9a27292bd19bc993.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/6899.ac4207b9a778bd0e.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/6901.4755ed550912589c.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/6910.5d45b17e287dba94.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/6928.d0a540480df90930.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/6958.c58e8e991b201429.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/6d60d248-1bbd761ee88ab2e4.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/70207789-862965aac548ab2a.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/7046.60a892c1e506cf5f.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/7068.6639b51e828de233.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/7172.aeda2e49d81fc0fd.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/7185.0210768f3918ec41.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/7200.86e672d8e2c1a920.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/730.2c5e46bf8fd29fcc.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/7301.43929cd9c2a5d2ea.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/7335.68692b193fa0dff6.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/7412.98554f6ee574e288.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/7422.e4a69fce6694ba90.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/7448.63e7b8d5fd090bd1.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/7479.97f696c6ada04b29.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/7482.ab6a217c34f6934a.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/7484.b91675bd38b250f8.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/7522.84dac217ae0701ac.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/7540-38c13446d29f43f2.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/7556.ae47807e378de233.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/761.2ce77249f8d3a1ce.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/7678.ceea70830f2dd7ff.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/7684.c43e4b5ad1f9b0af.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/7698.44201098b212aee8.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/76ff44ea.8322bdedaee78e2d.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/7725.b15cb8b6e1d15403.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/7855.513a507852c649f2.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/7910.266df3f992c16215.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/7940.f490f3d5e6590e54.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/7960.491bd15bef82755c.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/8020.795778775ed5c387.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/8107.fbb6017b3e909da5.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/8169.4d7fd139784eb935.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/8196.6c5c3dfe86e1c3ca.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/8257.ee682bc2599473cb.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/8305.d2c965e56fe9350c.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/8324.8c3edcc756f5e2f3.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/8388.cc59fb03d62a71cf.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/8394.d5ca17ce8f6fffb0.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/8419.b11c64d18dc580b5.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/8478.5f4272ae9afa4061.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/8480.a071150cb4eddc29.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/8535.0ab856b7bf0e161b.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/8571.8af7983b03c09f86.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/8583.4afa8c68cb867b2d.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/8601.520cbfc8abbfb5f8.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/8656.5f8b6212d2b35257.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/8665.7f24febc4a78ff5e.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/8687.c94010eb559245b6.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/8815.81a5c5700763ca02.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/8878.28a43a5fe23f5bd0.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/8884.e4e411c7978b2552.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/8962.db5c7728bef5ff0b.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/8984.dfcb15f115089c4a.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/9022.d161e32a6b1bcc61.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/9099.8ba5be825d17456a.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/914.72991ff6c9332951.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/9217.40b78a38cadcd268.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/925.0cc74592f03b10e9.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/9275.ac60c49c68c86e51.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/92a17e6d.da4fba322f70cd46.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/92b95f17.39f98387a9867b4a.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/9361.d3535e4d87c1c527.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/9433.55eb6e4ea7edb262.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/9436.5b2462fa3ddebb27.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/9445.e29312f685c22eff.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/9471.646bdfb962cdd5c2.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/9473.efa6db413edc23d1.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/9484.e9f1cd4e3f8e75df.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/9545.61026f3c11f914f2.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/9555.287e4e4a50087d62.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/963.da40bca273fb82c6.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/9636.4d3678b9a4e0b46e.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/9657.459d6300b0bc8ef8.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/9676.cef4d87274c64417.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/97.15df9ee2f6270421.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/9754.76a3ea33dc0e9a07.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/9790.7e01549d70279760.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/9871.994068e90ef076a5.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/9887.0fbd7c3721a3c1d1.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/9923.14c88b64d7749eaa.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/997.193727d4b2eede68.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/9971.36f503837f73d3c2.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/9976.ab4ec59ede08f398.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/9990.13e025853b0250b6.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/9997.a844d058b46bb680.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/app/_not-found/page-ce05b36a67c37396.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/app/layout-b0d50d105c55fd6d.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/app/page-7b51d29c96f44f61.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/app/run/page-c2cd4dca690d6d29.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/c06218ab.b1da50a91b579a52.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/c911d7bd.bcca2e3dda67a7a6.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/d386b14e.c746c93eac03a58e.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/e925550e.ff706051f5223d26.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/fc645be4-662fd2da08676daa.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/framework-2b8e4864be10152d.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/main-33072985ea766514.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/main-app-4a8ccba13aa7606b.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/pages/_app-c0ae3ec92f260128.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/pages/_error-899a04d491d7df58.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- veadk/cli/studio/web/_next/static/chunks/webpack-14afc8861a1fe293.js +1 -0
- veadk/cli/studio/web/_next/static/css/366cfdd7fdd8bcac.css +1 -0
- veadk/cli/studio/web/_next/static/gvLvin_lQcpkhQupQqPu1/_buildManifest.js +1 -0
- veadk/cli/studio/web/_next/static/gvLvin_lQcpkhQupQqPu1/_ssgManifest.js +1 -0
- 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 +1 -0
- veadk/cli/studio/web/globe.svg +1 -0
- veadk/cli/studio/web/index.html +1 -0
- veadk/cli/studio/web/index.txt +43 -0
- veadk/cli/studio/web/next.svg +1 -0
- veadk/cli/studio/web/run.html +1 -0
- veadk/cli/studio/web/run.txt +44 -0
- veadk/cli/studio/web/veadk-logo.png +0 -0
- veadk/cli/studio/web/vercel.svg +1 -0
- veadk/cli/studio/web/window.svg +1 -0
- veadk/cloud/__pycache__/__init__.cpython-310.pyc +0 -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 +104 -43
- veadk/cloud/cloud_app.py +82 -14
- veadk/database/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/database/__pycache__/base_database.cpython-310.pyc +0 -0
- veadk/database/__pycache__/database_adapter.cpython-310.pyc +0 -0
- veadk/database/__pycache__/database_factory.cpython-310.pyc +0 -0
- veadk/database/__pycache__/local_database.cpython-310.pyc +0 -0
- veadk/database/database_adapter.py +280 -0
- veadk/database/database_factory.py +3 -3
- veadk/database/kv/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/database/relational/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/database/vector/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/database/vector/__pycache__/opensearch_vector_database.cpython-310.pyc +0 -0
- veadk/database/vector/__pycache__/type.cpython-310.pyc +0 -0
- veadk/database/vector/opensearch_vector_database.py +50 -2
- veadk/database/viking/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/database/viking/viking_database.py +24 -6
- veadk/database/viking/viking_memory_db.py +26 -22
- veadk/evaluation/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/evaluation/__pycache__/base_evaluator.cpython-310.pyc +0 -0
- veadk/evaluation/__pycache__/eval_set_file_loader.cpython-310.pyc +0 -0
- veadk/evaluation/__pycache__/eval_set_recorder.cpython-310.pyc +0 -0
- veadk/evaluation/__pycache__/types.cpython-310.pyc +0 -0
- veadk/evaluation/adk_evaluator/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/evaluation/base_evaluator.py +130 -3
- veadk/evaluation/deepeval_evaluator/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/evaluation/deepeval_evaluator/__pycache__/deepeval_evaluator.cpython-310.pyc +0 -0
- veadk/evaluation/deepeval_evaluator/deepeval_evaluator.py +14 -25
- veadk/evaluation/types.py +33 -0
- veadk/evaluation/utils/__pycache__/prometheus.cpython-310.pyc +0 -0
- veadk/evaluation/utils/prometheus.py +19 -23
- veadk/knowledgebase/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/knowledgebase/__pycache__/knowledgebase.cpython-310.pyc +0 -0
- veadk/knowledgebase/__pycache__/knowledgebase_database_adapter.cpython-310.pyc +0 -0
- veadk/knowledgebase/knowledgebase.py +30 -29
- veadk/memory/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/memory/__pycache__/long_term_memory.cpython-310.pyc +0 -0
- veadk/memory/__pycache__/memory_database_adapter.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 +73 -37
- veadk/prompts/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/prompts/__pycache__/agent_default_prompt.cpython-310.pyc +0 -0
- veadk/prompts/__pycache__/prompt_memory_processor.cpython-310.pyc +0 -0
- veadk/prompts/__pycache__/prompt_optimization.cpython-310.pyc +0 -0
- veadk/runner.py +4 -0
- veadk/tools/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/tools/__pycache__/demo_tools.cpython-310.pyc +0 -0
- veadk/tools/__pycache__/load_knowledgebase_tool.cpython-310.pyc +0 -0
- veadk/tools/builtin_tools/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/tools/builtin_tools/__pycache__/lark.cpython-310.pyc +0 -0
- veadk/tools/builtin_tools/__pycache__/web_search.cpython-310.pyc +0 -0
- veadk/tools/builtin_tools/las.py +3 -2
- veadk/{cloud/template/app.py → tools/builtin_tools/mcp_router.py} +5 -13
- veadk/tools/load_knowledgebase_tool.py +3 -5
- veadk/tools/sandbox/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/tracing/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/tracing/__pycache__/base_tracer.cpython-310.pyc +0 -0
- veadk/tracing/base_tracer.py +44 -3
- veadk/tracing/telemetry/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/tracing/telemetry/__pycache__/opentelemetry_tracer.cpython-310.pyc +0 -0
- veadk/tracing/telemetry/exporters/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/tracing/telemetry/exporters/__pycache__/apiserver_exporter.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/metrics/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/tracing/telemetry/metrics/__pycache__/opentelemetry_metrics.cpython-310.pyc +0 -0
- veadk/tracing/telemetry/opentelemetry_tracer.py +55 -13
- veadk/utils/__pycache__/__init__.cpython-310.pyc +0 -0
- veadk/utils/__pycache__/logger.cpython-310.pyc +0 -0
- veadk/utils/__pycache__/mcp_utils.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/__pycache__/volcengine_sign.cpython-310.pyc +0 -0
- veadk/utils/mcp_utils.py +44 -0
- veadk/version.py +1 -1
- {veadk_python-0.1.0.dist-info → veadk_python-0.2.0.dist-info}/METADATA +14 -5
- veadk_python-0.2.0.dist-info/RECORD +534 -0
- veadk/cli/services/vefaas/template/src/config.py +0 -58
- veadk/cli/studio/agent_processor.py +0 -247
- veadk/cli/studio/model.py +0 -116
- veadk/cloud/template/config.py +0 -55
- veadk/knowledgebase/knowledgebase_database_adapter.py +0 -259
- veadk/memory/memory_database_adapter.py +0 -235
- veadk_python-0.1.0.dist-info/RECORD +0 -110
- {veadk_python-0.1.0.dist-info → veadk_python-0.2.0.dist-info}/WHEEL +0 -0
- {veadk_python-0.1.0.dist-info → veadk_python-0.2.0.dist-info}/entry_points.txt +0 -0
- {veadk_python-0.1.0.dist-info → veadk_python-0.2.0.dist-info}/licenses/LICENSE +0 -0
- {veadk_python-0.1.0.dist-info → veadk_python-0.2.0.dist-info}/top_level.txt +0 -0
|
@@ -14,28 +14,36 @@
|
|
|
14
14
|
|
|
15
15
|
from typing import BinaryIO, Literal, TextIO
|
|
16
16
|
|
|
17
|
+
from veadk.database.database_adapter import get_knowledgebase_database_adapter
|
|
17
18
|
from veadk.database.database_factory import DatabaseFactory
|
|
18
19
|
from veadk.utils.logger import get_logger
|
|
19
20
|
|
|
20
|
-
from .knowledgebase_database_adapter import get_knowledgebase_adapter
|
|
21
|
-
|
|
22
21
|
logger = get_logger(__name__)
|
|
23
22
|
|
|
24
23
|
|
|
24
|
+
def build_knowledgebase_index(app_name: str):
|
|
25
|
+
return f"veadk_kb_{app_name}"
|
|
26
|
+
|
|
27
|
+
|
|
25
28
|
class KnowledgeBase:
|
|
26
29
|
def __init__(
|
|
27
30
|
self,
|
|
28
31
|
backend: Literal["local", "opensearch", "viking", "redis", "mysql"] = "local",
|
|
29
|
-
top_k: int =
|
|
32
|
+
top_k: int = 10,
|
|
30
33
|
db_config=None,
|
|
31
34
|
):
|
|
32
|
-
logger.
|
|
35
|
+
logger.info(
|
|
36
|
+
f"Initializing knowledgebase: backend={backend} top_k={top_k} db_config={db_config}"
|
|
37
|
+
)
|
|
38
|
+
|
|
33
39
|
self.backend = backend
|
|
34
40
|
self.top_k = top_k
|
|
35
41
|
|
|
36
42
|
self.db_client = DatabaseFactory.create(backend=backend, config=db_config)
|
|
37
|
-
self.adapter =
|
|
38
|
-
|
|
43
|
+
self.adapter = get_knowledgebase_database_adapter(self.db_client)
|
|
44
|
+
|
|
45
|
+
logger.info(
|
|
46
|
+
f"Initialized knowledgebase: db_client={self.db_client} adapter={self.adapter}"
|
|
39
47
|
)
|
|
40
48
|
|
|
41
49
|
def add(
|
|
@@ -46,38 +54,31 @@ class KnowledgeBase:
|
|
|
46
54
|
):
|
|
47
55
|
"""
|
|
48
56
|
Add documents to the vector database.
|
|
49
|
-
You can only upload files or file characters when the adapter type
|
|
57
|
+
You can only upload files or file characters when the adapter type used is vikingdb.
|
|
50
58
|
In addition, if you upload data of the bytes type,
|
|
51
59
|
for example, if you read the file stream of a pdf, then you need to pass an additional parameter file_ext = '.pdf'.
|
|
52
60
|
"""
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
61
|
+
if self.backend != "viking" and not (
|
|
62
|
+
isinstance(data, str) or isinstance(data, list)
|
|
63
|
+
):
|
|
64
|
+
raise ValueError(
|
|
65
|
+
"Only vikingdb supports uploading files or file characters."
|
|
66
|
+
)
|
|
57
67
|
|
|
58
|
-
|
|
59
|
-
"""Retrieve documents similar to the query text in the vector database.
|
|
68
|
+
index = build_knowledgebase_index(app_name)
|
|
60
69
|
|
|
61
|
-
|
|
62
|
-
query (str): The query text to be retrieved (e.g., "Who proposed the Turing machine model?")
|
|
70
|
+
logger.info(f"Adding documents to knowledgebase: index={index}")
|
|
63
71
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
72
|
+
self.adapter.add(data=data, index=index)
|
|
73
|
+
|
|
74
|
+
def search(self, query: str, app_name: str, top_k: int = None) -> list[str]:
|
|
67
75
|
top_k = self.top_k if top_k is None else top_k
|
|
68
76
|
|
|
69
|
-
|
|
70
|
-
|
|
77
|
+
logger.info(
|
|
78
|
+
f"Searching knowledgebase: app_name={app_name} query={query} top_k={top_k}"
|
|
71
79
|
)
|
|
80
|
+
index = build_knowledgebase_index(app_name)
|
|
81
|
+
result = self.adapter.query(query=query, index=index, top_k=top_k)
|
|
72
82
|
if len(result) == 0:
|
|
73
83
|
logger.warning(f"No documents found in knowledgebase. Query: {query}")
|
|
74
84
|
return result
|
|
75
|
-
|
|
76
|
-
def delete(self, app_name: str, user_id: str, session_id: str):
|
|
77
|
-
"""Delete documents in the vector database.
|
|
78
|
-
Args:
|
|
79
|
-
app_name (str): The name of the application
|
|
80
|
-
user_id (str): The user ID
|
|
81
|
-
session_id (str): The session ID
|
|
82
|
-
"""
|
|
83
|
-
self.adapter.delete(app_name=app_name, user_id=user_id, session_id=session_id)
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
veadk/memory/long_term_memory.py
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
import json
|
|
17
17
|
from typing import Literal
|
|
18
18
|
|
|
19
|
+
from google.adk.events.event import Event
|
|
19
20
|
from google.adk.memory.base_memory_service import (
|
|
20
21
|
BaseMemoryService,
|
|
21
22
|
SearchMemoryResponse,
|
|
@@ -25,67 +26,103 @@ from google.adk.sessions import Session
|
|
|
25
26
|
from google.genai import types
|
|
26
27
|
from typing_extensions import override
|
|
27
28
|
|
|
28
|
-
from veadk.config import getenv
|
|
29
29
|
from veadk.database import DatabaseFactory
|
|
30
|
+
from veadk.database.database_adapter import get_long_term_memory_database_adapter
|
|
30
31
|
from veadk.utils.logger import get_logger
|
|
31
32
|
|
|
32
|
-
from .memory_database_adapter import get_memory_adapter
|
|
33
|
-
|
|
34
33
|
logger = get_logger(__name__)
|
|
35
34
|
|
|
36
35
|
|
|
36
|
+
def build_long_term_memory_index(app_name: str, user_id: str):
|
|
37
|
+
return f"{app_name}_{user_id}"
|
|
38
|
+
|
|
39
|
+
|
|
37
40
|
class LongTermMemory(BaseMemoryService):
|
|
38
41
|
def __init__(
|
|
39
42
|
self,
|
|
40
43
|
backend: Literal[
|
|
41
44
|
"local", "opensearch", "redis", "mysql", "viking"
|
|
42
45
|
] = "opensearch",
|
|
43
|
-
top_k: int =
|
|
46
|
+
top_k: int = 5,
|
|
44
47
|
):
|
|
45
48
|
if backend == "viking":
|
|
46
49
|
backend = "viking_mem"
|
|
47
50
|
self.top_k = top_k
|
|
48
51
|
self.backend = backend
|
|
49
52
|
|
|
53
|
+
logger.info(
|
|
54
|
+
f"Initializing long term memory: backend={self.backend} top_k={self.top_k}"
|
|
55
|
+
)
|
|
56
|
+
|
|
50
57
|
self.db_client = DatabaseFactory.create(
|
|
51
58
|
backend=backend,
|
|
52
59
|
)
|
|
53
|
-
|
|
60
|
+
self.adapter = get_long_term_memory_database_adapter(self.db_client)
|
|
61
|
+
|
|
62
|
+
logger.info(
|
|
63
|
+
f"Initialized long term memory: db_client={self.db_client} adapter={self.adapter}"
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
def _filter_and_convert_events(self, events: list[Event]) -> list[str]:
|
|
67
|
+
final_events = []
|
|
68
|
+
for event in events:
|
|
69
|
+
# filter: bad event
|
|
70
|
+
if not event.content or not event.content.parts:
|
|
71
|
+
continue
|
|
72
|
+
|
|
73
|
+
# filter: only add user event to memory to enhance retrieve performance
|
|
74
|
+
if not event.author == "user":
|
|
75
|
+
continue
|
|
76
|
+
|
|
77
|
+
# filter: discard function call and function response
|
|
78
|
+
if not event.content.parts[0].text:
|
|
79
|
+
continue
|
|
80
|
+
|
|
81
|
+
# convert: to string-format for storage
|
|
82
|
+
message = event.content.model_dump(exclude_none=True, mode="json")
|
|
54
83
|
|
|
55
|
-
|
|
84
|
+
final_events.append(json.dumps(message, ensure_ascii=False))
|
|
85
|
+
return final_events
|
|
56
86
|
|
|
57
87
|
@override
|
|
58
88
|
async def add_session_to_memory(
|
|
59
89
|
self,
|
|
60
90
|
session: Session,
|
|
61
91
|
):
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
if not event.content or not event.content.parts:
|
|
65
|
-
continue
|
|
92
|
+
event_strings = self._filter_and_convert_events(session.events)
|
|
93
|
+
index = build_long_term_memory_index(session.app_name, session.user_id)
|
|
66
94
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
95
|
+
logger.info(
|
|
96
|
+
f"Adding {len(event_strings)} events to long term memory: index={index}"
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
# check if viking memory database, should give a user id: if/else
|
|
100
|
+
if self.backend == "viking_mem":
|
|
101
|
+
self.adapter.add(data=event_strings, index=index, user_id=session.user_id)
|
|
102
|
+
else:
|
|
103
|
+
self.adapter.add(data=event_strings, index=index)
|
|
104
|
+
|
|
105
|
+
logger.info(
|
|
106
|
+
f"Added {len(event_strings)} events to long term memory: index={index}"
|
|
78
107
|
)
|
|
79
108
|
|
|
80
109
|
@override
|
|
81
110
|
async def search_memory(self, *, app_name: str, user_id: str, query: str):
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
111
|
+
index = build_long_term_memory_index(app_name, user_id)
|
|
112
|
+
|
|
113
|
+
logger.info(
|
|
114
|
+
f"Searching long term memory: query={query} index={index} top_k={self.top_k}"
|
|
86
115
|
)
|
|
87
|
-
|
|
88
|
-
|
|
116
|
+
|
|
117
|
+
# user id if viking memory db
|
|
118
|
+
if self.backend == "viking_mem":
|
|
119
|
+
memory_chunks = self.adapter.query(
|
|
120
|
+
query=query, index=index, top_k=self.top_k, user_id=user_id
|
|
121
|
+
)
|
|
122
|
+
else:
|
|
123
|
+
memory_chunks = self.adapter.query(
|
|
124
|
+
query=query, index=index, top_k=self.top_k
|
|
125
|
+
)
|
|
89
126
|
|
|
90
127
|
memory_events = []
|
|
91
128
|
for memory in memory_chunks:
|
|
@@ -94,26 +131,25 @@ class LongTermMemory(BaseMemoryService):
|
|
|
94
131
|
try:
|
|
95
132
|
text = memory_dict["parts"][0]["text"]
|
|
96
133
|
role = memory_dict["role"]
|
|
97
|
-
except KeyError as
|
|
98
|
-
|
|
99
|
-
|
|
134
|
+
except KeyError as _:
|
|
135
|
+
# prevent not a standard text-based event
|
|
136
|
+
logger.warning(
|
|
137
|
+
f"Memory content: {memory_dict}. Skip return this memory."
|
|
100
138
|
)
|
|
101
139
|
continue
|
|
102
140
|
except json.JSONDecodeError:
|
|
141
|
+
# prevent the memory string is not dumped by `Event` class
|
|
103
142
|
text = memory
|
|
104
143
|
role = "user"
|
|
144
|
+
|
|
105
145
|
memory_events.append(
|
|
106
146
|
MemoryEntry(
|
|
107
147
|
author="user",
|
|
108
148
|
content=types.Content(parts=[types.Part(text=text)], role=role),
|
|
109
149
|
)
|
|
110
150
|
)
|
|
111
|
-
return SearchMemoryResponse(memories=memory_events)
|
|
112
151
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
self.adapter.delete(
|
|
116
|
-
app_name=app_name,
|
|
117
|
-
user_id=user_id,
|
|
118
|
-
session_id="", # session_id is not used in the adapter delete method
|
|
152
|
+
logger.info(
|
|
153
|
+
f"Return {len(memory_events)} memory events for query: {query} index={index}"
|
|
119
154
|
)
|
|
155
|
+
return SearchMemoryResponse(memories=memory_events)
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
veadk/runner.py
CHANGED
|
@@ -70,6 +70,10 @@ class Runner:
|
|
|
70
70
|
memory_service=self.long_term_memory,
|
|
71
71
|
)
|
|
72
72
|
|
|
73
|
+
if getattr(self.agent, "tracers", None):
|
|
74
|
+
for tracers in self.agent.tracers:
|
|
75
|
+
tracers.set_app_name(self.app_name)
|
|
76
|
+
|
|
73
77
|
def _convert_messages(self, messages) -> list:
|
|
74
78
|
if isinstance(messages, str):
|
|
75
79
|
messages = [types.Content(role="user", parts=[types.Part(text=messages)])]
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
veadk/tools/builtin_tools/las.py
CHANGED
|
@@ -12,12 +12,13 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
from google.adk.tools.mcp_tool.mcp_toolset import MCPToolset
|
|
15
|
+
from google.adk.tools.mcp_tool.mcp_toolset import MCPToolset
|
|
16
16
|
|
|
17
17
|
from veadk.config import getenv
|
|
18
|
+
from veadk.utils.mcp_utils import get_mcp_params
|
|
18
19
|
|
|
19
20
|
url = getenv("TOOL_LAS_URL")
|
|
20
21
|
dataset_id = getenv("TOOL_LAS_DATASET_ID")
|
|
21
22
|
|
|
22
23
|
|
|
23
|
-
las = MCPToolset(connection_params=
|
|
24
|
+
las = MCPToolset(connection_params=get_mcp_params(url=url))
|
|
@@ -12,19 +12,11 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
import
|
|
15
|
+
from google.adk.tools.mcp_tool.mcp_toolset import MCPToolset
|
|
16
16
|
|
|
17
|
-
from config import
|
|
17
|
+
from veadk.config import getenv
|
|
18
|
+
from veadk.utils.mcp_utils import get_mcp_params
|
|
18
19
|
|
|
19
|
-
|
|
20
|
+
url = getenv("TOOL_MCP_ROUTER_URL")
|
|
20
21
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
AGENT.tracers = TRACERS
|
|
24
|
-
|
|
25
|
-
app = init_app(
|
|
26
|
-
server_url=SERVER_HOST,
|
|
27
|
-
app_name=APP_NAME,
|
|
28
|
-
agent=AGENT,
|
|
29
|
-
short_term_memory=SHORT_TERM_MEMORY,
|
|
30
|
-
)
|
|
22
|
+
mcp_router = MCPToolset(connection_params=get_mcp_params(url=url))
|
|
@@ -51,11 +51,11 @@ class SearchKnowledgebaseResponse(BaseModel):
|
|
|
51
51
|
|
|
52
52
|
|
|
53
53
|
async def search_knowledgebase(
|
|
54
|
-
self, query: str, app_name: str
|
|
54
|
+
self, query: str, app_name: str
|
|
55
55
|
) -> SearchKnowledgebaseResponse:
|
|
56
56
|
"""Searches the knowledgebase of the current user."""
|
|
57
57
|
if isinstance(knowledgebase, KnowledgeBase):
|
|
58
|
-
res = knowledgebase.search(query, app_name=app_name
|
|
58
|
+
res = knowledgebase.search(query, app_name=app_name)
|
|
59
59
|
entry_list = []
|
|
60
60
|
for r in res:
|
|
61
61
|
entry_list.append(KnowledgebaseEntry(content=r))
|
|
@@ -86,9 +86,7 @@ async def load_knowledgebase(
|
|
|
86
86
|
A list of knowledgebase results.
|
|
87
87
|
"""
|
|
88
88
|
search_knowledgebase_response = await tool_context.search_knowledgebase(
|
|
89
|
-
query,
|
|
90
|
-
tool_context._invocation_context.app_name,
|
|
91
|
-
tool_context._invocation_context.user_id,
|
|
89
|
+
query, tool_context._invocation_context.app_name
|
|
92
90
|
)
|
|
93
91
|
return LoadKnowledgebaseResponse(
|
|
94
92
|
knowledges=search_knowledgebase_response.knowledges
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
veadk/tracing/base_tracer.py
CHANGED
|
@@ -14,10 +14,11 @@
|
|
|
14
14
|
|
|
15
15
|
import json
|
|
16
16
|
from abc import ABC, abstractmethod
|
|
17
|
-
from typing import Optional
|
|
17
|
+
from typing import Optional, Any
|
|
18
18
|
|
|
19
19
|
from google.adk.agents.callback_context import CallbackContext
|
|
20
20
|
from google.adk.models import LlmRequest, LlmResponse
|
|
21
|
+
from google.adk.tools import BaseTool, ToolContext
|
|
21
22
|
from opentelemetry import trace
|
|
22
23
|
|
|
23
24
|
from veadk.utils.logger import get_logger
|
|
@@ -27,20 +28,24 @@ logger = get_logger(__name__)
|
|
|
27
28
|
|
|
28
29
|
class BaseTracer(ABC):
|
|
29
30
|
def __init__(self, name: str):
|
|
31
|
+
self.app_name = "veadk_app_name"
|
|
30
32
|
pass
|
|
31
33
|
|
|
32
34
|
@abstractmethod
|
|
33
35
|
def dump(self) -> str: ...
|
|
34
36
|
|
|
35
|
-
def
|
|
37
|
+
def tracer_hook_before_model(
|
|
36
38
|
self, callback_context: CallbackContext, llm_request: LlmRequest
|
|
37
39
|
) -> Optional[LlmResponse]:
|
|
40
|
+
"""agent run stage"""
|
|
38
41
|
trace.get_tracer("gcp.vertex.agent")
|
|
39
42
|
span = trace.get_current_span()
|
|
40
43
|
# logger.debug(f"llm_request: {llm_request}")
|
|
41
44
|
|
|
42
45
|
req = llm_request.model_dump()
|
|
43
46
|
|
|
47
|
+
app_name = getattr(self, "app_name", "veadk_app")
|
|
48
|
+
agent_name = callback_context.agent_name
|
|
44
49
|
model_name = req.get("model", "unknown")
|
|
45
50
|
max_tokens = (
|
|
46
51
|
None
|
|
@@ -59,6 +64,8 @@ class BaseTracer(ABC):
|
|
|
59
64
|
)
|
|
60
65
|
|
|
61
66
|
attributes = {}
|
|
67
|
+
attributes["agent.name"] = agent_name
|
|
68
|
+
attributes["app.name"] = app_name
|
|
62
69
|
attributes["gen_ai.system"] = "veadk"
|
|
63
70
|
if model_name:
|
|
64
71
|
attributes["gen_ai.request.model"] = model_name
|
|
@@ -84,9 +91,10 @@ class BaseTracer(ABC):
|
|
|
84
91
|
for k, v in attributes.items():
|
|
85
92
|
span.set_attribute(k, v)
|
|
86
93
|
|
|
87
|
-
def
|
|
94
|
+
def tracer_hook_after_model(
|
|
88
95
|
self, callback_context: CallbackContext, llm_response: LlmResponse
|
|
89
96
|
) -> Optional[LlmResponse]:
|
|
97
|
+
"""call llm stage"""
|
|
90
98
|
trace.get_tracer("gcp.vertex.agent")
|
|
91
99
|
span = trace.get_current_span()
|
|
92
100
|
# logger.debug(f"llm_response: {llm_response}")
|
|
@@ -95,6 +103,10 @@ class BaseTracer(ABC):
|
|
|
95
103
|
# Refined: collect all attributes, use set_attributes, print for debugging
|
|
96
104
|
attributes = {}
|
|
97
105
|
|
|
106
|
+
app_name = getattr(self, "app_name", "veadk_app")
|
|
107
|
+
agent_name = callback_context.agent_name
|
|
108
|
+
attributes["agent.name"] = agent_name
|
|
109
|
+
attributes["app.name"] = app_name
|
|
98
110
|
# prompt
|
|
99
111
|
user_content = callback_context.user_content
|
|
100
112
|
if getattr(user_content, "role", None):
|
|
@@ -170,3 +182,32 @@ class BaseTracer(ABC):
|
|
|
170
182
|
# Fallback for OpenTelemetry versions without set_attributes
|
|
171
183
|
for k, v in attributes.items():
|
|
172
184
|
span.set_attribute(k, v)
|
|
185
|
+
|
|
186
|
+
def tracer_hook_after_tool(
|
|
187
|
+
self,
|
|
188
|
+
tool: BaseTool,
|
|
189
|
+
args: dict[str, Any],
|
|
190
|
+
tool_context: ToolContext,
|
|
191
|
+
tool_response: dict,
|
|
192
|
+
):
|
|
193
|
+
trace.get_tracer("gcp.vertex.agent")
|
|
194
|
+
span = trace.get_current_span()
|
|
195
|
+
agent_name = tool_context.agent_name
|
|
196
|
+
tool_name = tool.name
|
|
197
|
+
app_name = getattr(self, "app_name", "veadk_app")
|
|
198
|
+
attributes = {
|
|
199
|
+
"agent.name": agent_name,
|
|
200
|
+
"app.name": app_name,
|
|
201
|
+
"tool.name": tool_name,
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
# Set all attributes at once if possible, else fallback to individual
|
|
205
|
+
if hasattr(span, "set_attributes"):
|
|
206
|
+
span.set_attributes(attributes)
|
|
207
|
+
else:
|
|
208
|
+
# Fallback for OpenTelemetry versions without set_attributes
|
|
209
|
+
for k, v in attributes.items():
|
|
210
|
+
span.set_attribute(k, v)
|
|
211
|
+
|
|
212
|
+
def set_app_name(self, app_name):
|
|
213
|
+
self.app_name = app_name
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -20,13 +20,17 @@ from typing import Any
|
|
|
20
20
|
|
|
21
21
|
from openinference.instrumentation.google_adk import GoogleADKInstrumentor
|
|
22
22
|
from opentelemetry.sdk import trace as trace_sdk
|
|
23
|
+
from opentelemetry import trace as trace_api
|
|
23
24
|
from opentelemetry.sdk.resources import Resource
|
|
24
25
|
from opentelemetry.sdk.trace import TracerProvider
|
|
26
|
+
from opentelemetry.sdk.trace.export import BatchSpanProcessor, SimpleSpanProcessor
|
|
27
|
+
|
|
25
28
|
from pydantic import BaseModel, ConfigDict, Field
|
|
26
29
|
from typing_extensions import override
|
|
27
30
|
|
|
28
31
|
from veadk.tracing.base_tracer import BaseTracer
|
|
29
32
|
from veadk.tracing.telemetry.exporters.apiserver_exporter import ApiServerExporter
|
|
33
|
+
from veadk.tracing.telemetry.exporters.apmplus_exporter import APMPlusExporter
|
|
30
34
|
from veadk.tracing.telemetry.exporters.base_exporter import BaseExporter
|
|
31
35
|
from veadk.tracing.telemetry.exporters.inmemory_exporter import InMemoryExporter
|
|
32
36
|
from veadk.tracing.telemetry.metrics.opentelemetry_metrics import MeterUploader
|
|
@@ -51,18 +55,25 @@ class OpentelemetryTracer(BaseModel, BaseTracer):
|
|
|
51
55
|
DEFAULT_VEADK_TRACER_NAME, description="The identifier of tracer."
|
|
52
56
|
)
|
|
53
57
|
|
|
58
|
+
app_name: str = Field(
|
|
59
|
+
"veadk_app",
|
|
60
|
+
description="The identifier of app.",
|
|
61
|
+
)
|
|
62
|
+
|
|
54
63
|
def model_post_init(self, context: Any, /) -> None:
|
|
55
64
|
self._processors = []
|
|
56
65
|
self._inmemory_exporter: InMemoryExporter = None
|
|
57
|
-
|
|
66
|
+
self._apiserver_exporter: ApiServerExporter = None
|
|
58
67
|
# Inmemory & APIServer are the default exporters
|
|
59
68
|
have_inmemory_exporter = False
|
|
60
69
|
have_apiserver_exporter = False
|
|
61
70
|
for exporter in self.exporters:
|
|
62
71
|
if isinstance(exporter, InMemoryExporter):
|
|
63
72
|
have_inmemory_exporter = True
|
|
73
|
+
self._inmemory_exporter = exporter
|
|
64
74
|
elif isinstance(exporter, ApiServerExporter):
|
|
65
75
|
have_apiserver_exporter = True
|
|
76
|
+
self._apiserver_exporter = exporter
|
|
66
77
|
|
|
67
78
|
if not have_inmemory_exporter:
|
|
68
79
|
inmemory_exporter = InMemoryExporter()
|
|
@@ -73,17 +84,6 @@ class OpentelemetryTracer(BaseModel, BaseTracer):
|
|
|
73
84
|
self.exporters.append(apiserver_exporter)
|
|
74
85
|
self._apiserver_exporter = apiserver_exporter
|
|
75
86
|
|
|
76
|
-
tracer_provider = trace_sdk.TracerProvider()
|
|
77
|
-
for exporter in self.exporters:
|
|
78
|
-
processor, resource_attributes = exporter.get_processor()
|
|
79
|
-
if resource_attributes is not None:
|
|
80
|
-
update_resource_attributions(tracer_provider, resource_attributes)
|
|
81
|
-
tracer_provider.add_span_processor(processor)
|
|
82
|
-
|
|
83
|
-
logger.debug(f"Add exporter `{exporter.__class__.__name__}` to tracing.")
|
|
84
|
-
self._processors.append(processor)
|
|
85
|
-
logger.debug(f"Init OpentelemetryTracer with {len(self.exporters)} exporters.")
|
|
86
|
-
|
|
87
87
|
self._meter_contexts = []
|
|
88
88
|
self._meter_uploaders = []
|
|
89
89
|
for exporter in self.exporters:
|
|
@@ -95,13 +95,55 @@ class OpentelemetryTracer(BaseModel, BaseTracer):
|
|
|
95
95
|
meter_uploader = MeterUploader(meter_context)
|
|
96
96
|
self._meter_uploaders.append(meter_uploader)
|
|
97
97
|
|
|
98
|
+
# init tracer provider
|
|
99
|
+
self._init_tracer_provider()
|
|
100
|
+
|
|
98
101
|
# just for debug
|
|
99
102
|
self._trace_file_path = ""
|
|
100
103
|
|
|
101
104
|
# patch this before starting instrumentation
|
|
102
105
|
# enable_veadk_tracing(self.dump)
|
|
103
106
|
|
|
104
|
-
GoogleADKInstrumentor().instrument(
|
|
107
|
+
GoogleADKInstrumentor().instrument()
|
|
108
|
+
|
|
109
|
+
def _init_tracer_provider(self):
|
|
110
|
+
# 1. get global trace provider
|
|
111
|
+
global_tracer_provider = trace_api.get_tracer_provider()
|
|
112
|
+
|
|
113
|
+
if not isinstance(global_tracer_provider, TracerProvider):
|
|
114
|
+
logger.info(
|
|
115
|
+
f"Global tracer provider has not been set. Create tracer provider and set it now."
|
|
116
|
+
)
|
|
117
|
+
# 1.1 init tracer provider
|
|
118
|
+
tracer_provider = trace_sdk.TracerProvider()
|
|
119
|
+
trace_api.set_tracer_provider(tracer_provider)
|
|
120
|
+
global_tracer_provider = trace_api.get_tracer_provider()
|
|
121
|
+
|
|
122
|
+
have_apmplus_exporter = False
|
|
123
|
+
# 2. check if apmplus exporter is already exist
|
|
124
|
+
for processor in global_tracer_provider._active_span_processor._span_processors:
|
|
125
|
+
if isinstance(processor, (BatchSpanProcessor, SimpleSpanProcessor)):
|
|
126
|
+
# check exporter endpoint
|
|
127
|
+
if "apmplus" in processor.span_exporter._endpoint:
|
|
128
|
+
have_apmplus_exporter = True
|
|
129
|
+
|
|
130
|
+
# 3. add exporters to global tracer_provider
|
|
131
|
+
# range over a copy of exporters to avoid index issues
|
|
132
|
+
for exporter in self.exporters[:]:
|
|
133
|
+
if have_apmplus_exporter and isinstance(exporter, APMPlusExporter):
|
|
134
|
+
# apmplus exporter has been int in global tracer provider, need to remove from exporters.
|
|
135
|
+
self.exporters.remove(exporter)
|
|
136
|
+
continue
|
|
137
|
+
processor, resource_attributes = exporter.get_processor()
|
|
138
|
+
if resource_attributes is not None:
|
|
139
|
+
update_resource_attributions(
|
|
140
|
+
global_tracer_provider, resource_attributes
|
|
141
|
+
)
|
|
142
|
+
global_tracer_provider.add_span_processor(processor)
|
|
143
|
+
logger.debug(f"Add exporter `{exporter.__class__.__name__}` to tracing.")
|
|
144
|
+
self._processors.append(processor)
|
|
145
|
+
logger.debug(f"Init OpentelemetryTracer with {len(self.exporters)} exporters.")
|
|
146
|
+
|
|
105
147
|
|
|
106
148
|
@override
|
|
107
149
|
def dump(
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|