From 349a4c5440fc02e6d017484271dc893600725bdf Mon Sep 17 00:00:00 2001 From: ionmincu Date: Wed, 21 May 2025 17:09:29 +0300 Subject: [PATCH] tracing: add openllmetry --- pyproject.toml | 3 ++- src/uipath_llamaindex/_cli/cli_run.py | 7 +++++ uv.lock | 37 +++++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index af2dd7ce..539c5e4f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,11 +1,12 @@ [project] name = "uipath-llamaindex" -version = "0.0.6" +version = "0.0.7" description = "UiPath LlamaIndex SDK" readme = { file = "README.md", content-type = "text/markdown" } requires-python = ">=3.10" dependencies = [ "llama-index>=0.12.36", + "opentelemetry-instrumentation-llamaindex>=0.40.7", "uipath>=2.0.56", ] classifiers = [ diff --git a/src/uipath_llamaindex/_cli/cli_run.py b/src/uipath_llamaindex/_cli/cli_run.py index e00a514e..e553f711 100644 --- a/src/uipath_llamaindex/_cli/cli_run.py +++ b/src/uipath_llamaindex/_cli/cli_run.py @@ -1,11 +1,14 @@ import asyncio import logging +from contextlib import suppress from os import environ as env from typing import Optional from dotenv import load_dotenv +from opentelemetry.instrumentation.llamaindex import LlamaIndexInstrumentor from uipath._cli._runtime._contracts import UiPathTraceContext from uipath._cli.middlewares import MiddlewareResult +from uipath.tracing import get_trace_provider from ._runtime._context import UiPathLlamaIndexRuntimeContext from ._runtime._exception import UiPathLlamaIndexRuntimeError @@ -30,6 +33,10 @@ def llamaindex_run_middleware( try: async def execute(): + + with suppress(Exception): + LlamaIndexInstrumentor().instrument(tracer_provider=get_trace_provider()) + context = UiPathLlamaIndexRuntimeContext.from_config( env.get("UIPATH_CONFIG_PATH", "uipath.json") ) diff --git a/uv.lock b/uv.lock index 975541fe..a0f23d3d 100644 --- a/uv.lock +++ b/uv.lock @@ -1,4 +1,5 @@ version = 1 +revision = 1 requires-python = ">=3.10" resolution-markers = [ "python_full_version >= '3.12'", @@ -882,6 +883,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/79/9d/0fb148dc4d6fa4a7dd1d8378168d9b4cd8d4560a6fbf6f0121c5fc34eb68/importlib_metadata-8.6.1-py3-none-any.whl", hash = "sha256:02a89390c1e15fdfdc0d7c6b25cb3e62650d0494005c97d6f148bf5b9787525e", size = 26971 }, ] +[[package]] +name = "inflection" +version = "0.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e1/7e/691d061b7329bc8d54edbf0ec22fbfb2afe61facb681f9aaa9bff7a27d04/inflection-0.5.1.tar.gz", hash = "sha256:1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417", size = 15091 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/59/91/aa6bde563e0085a02a435aa99b49ef75b0a4b062635e606dab23ce18d720/inflection-0.5.1-py2.py3-none-any.whl", hash = "sha256:f38b2b640938a4f35ade69ac3d053042959b62a0f1076a5bbaa1b9526605a8a2", size = 9454 }, +] + [[package]] name = "iniconfig" version = "2.1.0" @@ -1748,6 +1758,22 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/4b/4c/c52dacd39c90d490eb4f9408f31014c370020e0ce2b9455958a2970e07c2/opentelemetry_instrumentation_flask-0.52b1-py3-none-any.whl", hash = "sha256:3c8b83147838bef24aac0182f0d49865321efba4cb1f96629f460330d21d0fa9", size = 14593 }, ] +[[package]] +name = "opentelemetry-instrumentation-llamaindex" +version = "0.40.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "inflection" }, + { name = "opentelemetry-api" }, + { name = "opentelemetry-instrumentation" }, + { name = "opentelemetry-semantic-conventions" }, + { name = "opentelemetry-semantic-conventions-ai" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0b/1f/130c2f715758987c08e238a9e6c05a7709dc9044cff46bf2bec120ab5abf/opentelemetry_instrumentation_llamaindex-0.40.7.tar.gz", hash = "sha256:2c8630bb3ef1a0404930d308f39805ebb13938a79442f56eec99cbe4bc61c245", size = 9394 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/85/4b/17463be925163808c8d575cc5706ca425df5ed1873f0328dd51861607e25/opentelemetry_instrumentation_llamaindex-0.40.7-py3-none-any.whl", hash = "sha256:c849b025e0650dcdac48b880342113dcc6194c5015f32947df2f7232fb692c84", size = 16736 }, +] + [[package]] name = "opentelemetry-instrumentation-psycopg2" version = "0.52b1" @@ -1862,6 +1888,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/98/be/d4ba300cfc1d4980886efbc9b48ee75242b9fcf940d9c4ccdc9ef413a7cf/opentelemetry_semantic_conventions-0.52b1-py3-none-any.whl", hash = "sha256:72b42db327e29ca8bb1b91e8082514ddf3bbf33f32ec088feb09526ade4bc77e", size = 183409 }, ] +[[package]] +name = "opentelemetry-semantic-conventions-ai" +version = "0.4.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8c/ba/2405abde825cf654d09ba16bfcfb8c863156bccdc47d1f2a86df6331e7bb/opentelemetry_semantic_conventions_ai-0.4.9.tar.gz", hash = "sha256:54a0b901959e2de5124384925846bac2ea0a6dab3de7e501ba6aecf5e293fe04", size = 4920 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/34/98/f5196ba0f4105a4790cec8c6671cf676c96dfa29bfedfe3c4f112bf4e6ad/opentelemetry_semantic_conventions_ai-0.4.9-py3-none-any.whl", hash = "sha256:71149e46a72554ae17de46bca6c11ba540c19c89904bd4cc3111aac6edf10315", size = 5617 }, +] + [[package]] name = "opentelemetry-util-http" version = "0.52b1" @@ -2802,6 +2837,7 @@ version = "0.0.6" source = { editable = "." } dependencies = [ { name = "llama-index" }, + { name = "opentelemetry-instrumentation-llamaindex" }, { name = "uipath" }, ] @@ -2819,6 +2855,7 @@ dev = [ [package.metadata] requires-dist = [ { name = "llama-index", specifier = ">=0.12.36" }, + { name = "opentelemetry-instrumentation-llamaindex", specifier = ">=0.40.7" }, { name = "uipath", specifier = ">=2.0.56" }, ]