opentelemetry-instrumentation-llamaindex 0.25.0__py3-none-any.whl → 0.25.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 opentelemetry-instrumentation-llamaindex might be problematic. Click here for more details.

@@ -4,6 +4,8 @@ from wrapt import wrap_function_wrapper
4
4
 
5
5
  from opentelemetry.instrumentation.llamaindex.utils import (
6
6
  _with_tracer_wrapper,
7
+ process_request,
8
+ process_response,
7
9
  start_as_current_span_async,
8
10
  )
9
11
  from opentelemetry.semconv.ai import SpanAttributes, TraceloopSpanKindValues
@@ -48,23 +50,31 @@ class BaseAgentInstrumentor:
48
50
 
49
51
  @_with_tracer_wrapper
50
52
  def query_wrapper(tracer, wrapped, instance, args, kwargs):
51
- with tracer.start_as_current_span(f"{instance.__class__.__name__}.agent") as span:
53
+ name = instance.__class__.__name__
54
+ with tracer.start_as_current_span(f"{name}.agent") as span:
52
55
  span.set_attribute(
53
56
  SpanAttributes.TRACELOOP_SPAN_KIND,
54
57
  TraceloopSpanKindValues.AGENT.value,
55
58
  )
59
+ span.set_attribute(SpanAttributes.TRACELOOP_ENTITY_NAME, name)
56
60
 
57
- return wrapped(*args, **kwargs)
61
+ process_request(span, args, kwargs)
62
+ res = wrapped(*args, **kwargs)
63
+ process_response(span, res)
64
+ return res
58
65
 
59
66
 
60
67
  @_with_tracer_wrapper
61
68
  async def aquery_wrapper(tracer, wrapped, instance, args, kwargs):
62
- async with start_as_current_span_async(
63
- tracer=tracer, name=f"{instance.__class__.__name__}.agent"
64
- ) as span:
69
+ name = instance.__class__.__name__
70
+ async with start_as_current_span_async(tracer=tracer, name=f"{name}.agent") as span:
65
71
  span.set_attribute(
66
72
  SpanAttributes.TRACELOOP_SPAN_KIND,
67
73
  TraceloopSpanKindValues.AGENT.value,
68
74
  )
75
+ span.set_attribute(SpanAttributes.TRACELOOP_ENTITY_NAME, name)
69
76
 
70
- return await wrapped(*args, **kwargs)
77
+ process_request(span, args, kwargs)
78
+ res = await wrapped(*args, **kwargs)
79
+ process_response(span, res)
80
+ return res
@@ -49,6 +49,7 @@ def get_query_embedding_wrapper(tracer, wrapped, instance, args, kwargs):
49
49
  SpanAttributes.TRACELOOP_SPAN_KIND,
50
50
  TraceloopSpanKindValues.TASK.value,
51
51
  )
52
+ span.set_attribute(SpanAttributes.TRACELOOP_ENTITY_NAME, TASK_NAME)
52
53
 
53
54
  return wrapped(*args, **kwargs)
54
55
 
@@ -62,5 +63,6 @@ async def aget_query_embedding_wrapper(tracer, wrapped, instance, args, kwargs):
62
63
  SpanAttributes.TRACELOOP_SPAN_KIND,
63
64
  TraceloopSpanKindValues.TASK.value,
64
65
  )
66
+ span.set_attribute(SpanAttributes.TRACELOOP_ENTITY_NAME, TASK_NAME)
65
67
 
66
68
  return await wrapped(*args, **kwargs)
@@ -4,6 +4,8 @@ from wrapt import wrap_function_wrapper
4
4
 
5
5
  from opentelemetry.instrumentation.llamaindex.utils import (
6
6
  _with_tracer_wrapper,
7
+ process_request,
8
+ process_response,
7
9
  start_as_current_span_async,
8
10
  )
9
11
  from opentelemetry.semconv.ai import SpanAttributes, TraceloopSpanKindValues
@@ -46,8 +48,12 @@ def retrieve_wrapper(tracer, wrapped, instance, args, kwargs):
46
48
  SpanAttributes.TRACELOOP_SPAN_KIND,
47
49
  TraceloopSpanKindValues.TASK.value,
48
50
  )
51
+ span.set_attribute(SpanAttributes.TRACELOOP_ENTITY_NAME, TASK_NAME)
49
52
 
50
- return wrapped(*args, **kwargs)
53
+ process_request(span, args, kwargs)
54
+ res = wrapped(*args, **kwargs)
55
+ process_response(span, res)
56
+ return res
51
57
 
52
58
 
53
59
  @_with_tracer_wrapper
@@ -59,5 +65,9 @@ async def aretrieve_wrapper(tracer, wrapped, instance, args, kwargs):
59
65
  SpanAttributes.TRACELOOP_SPAN_KIND,
60
66
  TraceloopSpanKindValues.TASK.value,
61
67
  )
68
+ span.set_attribute(SpanAttributes.TRACELOOP_ENTITY_NAME, TASK_NAME)
62
69
 
63
- return await wrapped(*args, **kwargs)
70
+ process_request(span, args, kwargs)
71
+ res = await wrapped(*args, **kwargs)
72
+ process_response(span, res)
73
+ return res
@@ -4,6 +4,8 @@ from wrapt import wrap_function_wrapper
4
4
 
5
5
  from opentelemetry.instrumentation.llamaindex.utils import (
6
6
  _with_tracer_wrapper,
7
+ process_request,
8
+ process_response,
7
9
  start_as_current_span_async,
8
10
  )
9
11
  from opentelemetry.semconv.ai import SpanAttributes, TraceloopSpanKindValues
@@ -45,8 +47,12 @@ def synthesize_wrapper(tracer, wrapped, instance, args, kwargs):
45
47
  SpanAttributes.TRACELOOP_SPAN_KIND,
46
48
  TraceloopSpanKindValues.TASK.value,
47
49
  )
50
+ span.set_attribute(SpanAttributes.TRACELOOP_ENTITY_NAME, TASK_NAME)
48
51
 
49
- return wrapped(*args, **kwargs)
52
+ process_request(span, args, kwargs)
53
+ res = wrapped(*args, **kwargs)
54
+ process_response(span, res)
55
+ return res
50
56
 
51
57
 
52
58
  @_with_tracer_wrapper
@@ -58,5 +64,9 @@ async def asynthesize_wrapper(tracer, wrapped, instance, args, kwargs):
58
64
  SpanAttributes.TRACELOOP_SPAN_KIND,
59
65
  TraceloopSpanKindValues.TASK.value,
60
66
  )
67
+ span.set_attribute(SpanAttributes.TRACELOOP_ENTITY_NAME, TASK_NAME)
61
68
 
62
- return await wrapped(*args, **kwargs)
69
+ process_request(span, args, kwargs)
70
+ res = await wrapped(*args, **kwargs)
71
+ process_response(span, res)
72
+ return res
@@ -4,6 +4,8 @@ from wrapt import wrap_function_wrapper
4
4
 
5
5
  from opentelemetry.instrumentation.llamaindex.utils import (
6
6
  _with_tracer_wrapper,
7
+ process_request,
8
+ process_response,
7
9
  start_as_current_span_async,
8
10
  )
9
11
  from opentelemetry.semconv.ai import SpanAttributes, TraceloopSpanKindValues
@@ -50,23 +52,31 @@ class BaseToolInstrumentor:
50
52
 
51
53
  @_with_tracer_wrapper
52
54
  def query_wrapper(tracer, wrapped, instance, args, kwargs):
53
- with tracer.start_as_current_span(f"{instance.__class__.__name__}.tool") as span:
55
+ name = instance.__class__.__name__
56
+ with tracer.start_as_current_span(f"{name}.tool") as span:
54
57
  span.set_attribute(
55
58
  SpanAttributes.TRACELOOP_SPAN_KIND,
56
59
  TraceloopSpanKindValues.TOOL.value,
57
60
  )
61
+ span.set_attribute(SpanAttributes.TRACELOOP_ENTITY_NAME, name)
58
62
 
59
- return wrapped(*args, **kwargs)
63
+ process_request(span, args, kwargs)
64
+ res = wrapped(*args, **kwargs)
65
+ process_response(span, res)
66
+ return res
60
67
 
61
68
 
62
69
  @_with_tracer_wrapper
63
70
  async def aquery_wrapper(tracer, wrapped, instance, args, kwargs):
64
- async with start_as_current_span_async(
65
- tracer=tracer, name=f"{instance.__class__.__name__}.tool"
66
- ) as span:
71
+ name = instance.__class__.__name__
72
+ async with start_as_current_span_async(tracer=tracer, name=f"{name}.tool") as span:
67
73
  span.set_attribute(
68
74
  SpanAttributes.TRACELOOP_SPAN_KIND,
69
75
  TraceloopSpanKindValues.TOOL.value,
70
76
  )
77
+ span.set_attribute(SpanAttributes.TRACELOOP_ENTITY_NAME, name)
71
78
 
72
- return await wrapped(*args, **kwargs)
79
+ process_request(span, args, kwargs)
80
+ res = await wrapped(*args, **kwargs)
81
+ process_response(span, res)
82
+ return res
@@ -5,6 +5,8 @@ from opentelemetry.context import attach, set_value
5
5
 
6
6
  from opentelemetry.instrumentation.llamaindex.utils import (
7
7
  _with_tracer_wrapper,
8
+ process_request,
9
+ process_response,
8
10
  start_as_current_span_async,
9
11
  )
10
12
  from opentelemetry.semconv.ai import SpanAttributes, TraceloopSpanKindValues
@@ -51,8 +53,12 @@ def run_wrapper(tracer, wrapped, instance, args, kwargs):
51
53
  SpanAttributes.TRACELOOP_SPAN_KIND,
52
54
  TraceloopSpanKindValues.WORKFLOW.value,
53
55
  )
56
+ span.set_attribute(SpanAttributes.TRACELOOP_ENTITY_NAME, WORKFLOW_NAME)
54
57
 
55
- return wrapped(*args, **kwargs)
58
+ process_request(span, args, kwargs)
59
+ res = wrapped(*args, **kwargs)
60
+ process_response(span, res)
61
+ return res
56
62
 
57
63
 
58
64
  @_with_tracer_wrapper
@@ -66,5 +72,9 @@ async def arun_wrapper(tracer, wrapped, instance, args, kwargs):
66
72
  SpanAttributes.TRACELOOP_SPAN_KIND,
67
73
  TraceloopSpanKindValues.WORKFLOW.value,
68
74
  )
75
+ span.set_attribute(SpanAttributes.TRACELOOP_ENTITY_NAME, WORKFLOW_NAME)
69
76
 
70
- return await wrapped(*args, **kwargs)
77
+ process_request(span, args, kwargs)
78
+ res = await wrapped(*args, **kwargs)
79
+ process_response(span, res)
80
+ return res
@@ -5,6 +5,8 @@ from opentelemetry.context import attach, set_value
5
5
 
6
6
  from opentelemetry.instrumentation.llamaindex.utils import (
7
7
  _with_tracer_wrapper,
8
+ process_request,
9
+ process_response,
8
10
  start_as_current_span_async,
9
11
  )
10
12
  from opentelemetry.semconv.ai import SpanAttributes, TraceloopSpanKindValues
@@ -52,8 +54,12 @@ def query_wrapper(tracer, wrapped, instance, args, kwargs):
52
54
  SpanAttributes.TRACELOOP_SPAN_KIND,
53
55
  TraceloopSpanKindValues.WORKFLOW.value,
54
56
  )
57
+ span.set_attribute(SpanAttributes.TRACELOOP_ENTITY_NAME, WORKFLOW_NAME)
55
58
 
56
- return wrapped(*args, **kwargs)
59
+ process_request(span, args, kwargs)
60
+ res = wrapped(*args, **kwargs)
61
+ process_response(span, res)
62
+ return res
57
63
 
58
64
 
59
65
  @_with_tracer_wrapper
@@ -67,5 +73,9 @@ async def aquery_wrapper(tracer, wrapped, instance, args, kwargs):
67
73
  SpanAttributes.TRACELOOP_SPAN_KIND,
68
74
  TraceloopSpanKindValues.WORKFLOW.value,
69
75
  )
76
+ span.set_attribute(SpanAttributes.TRACELOOP_ENTITY_NAME, WORKFLOW_NAME)
70
77
 
71
- return await wrapped(*args, **kwargs)
78
+ process_request(span, args, kwargs)
79
+ res = await wrapped(*args, **kwargs)
80
+ process_response(span, res)
81
+ return res
@@ -1,3 +1,5 @@
1
+ import dataclasses
2
+ import json
1
3
  import os
2
4
  import logging
3
5
  import traceback
@@ -5,6 +7,7 @@ from contextlib import asynccontextmanager
5
7
 
6
8
  from opentelemetry import context as context_api
7
9
  from opentelemetry.instrumentation.llamaindex.config import Config
10
+ from opentelemetry.semconv.ai import SpanAttributes
8
11
 
9
12
 
10
13
  def _with_tracer_wrapper(func):
@@ -52,3 +55,32 @@ def dont_throw(func):
52
55
  Config.exception_logger(e)
53
56
 
54
57
  return wrapper
58
+
59
+
60
+ class JSONEncoder(json.JSONEncoder):
61
+ def default(self, o):
62
+ if dataclasses.is_dataclass(o):
63
+ return dataclasses.asdict(o)
64
+ elif hasattr(o, "json"):
65
+ return o.json()
66
+ elif hasattr(o, "to_json"):
67
+ return o.to_json()
68
+ return super().default(o)
69
+
70
+
71
+ @dont_throw
72
+ def process_request(span, args, kwargs):
73
+ if should_send_prompts():
74
+ span.set_attribute(
75
+ SpanAttributes.TRACELOOP_ENTITY_INPUT,
76
+ json.dumps({"args": args, "kwargs": kwargs}, cls=JSONEncoder),
77
+ )
78
+
79
+
80
+ @dont_throw
81
+ def process_response(span, res):
82
+ if should_send_prompts():
83
+ span.set_attribute(
84
+ SpanAttributes.TRACELOOP_ENTITY_OUTPUT,
85
+ json.dumps(res, cls=JSONEncoder),
86
+ )
@@ -1 +1 @@
1
- __version__ = "0.25.0"
1
+ __version__ = "0.25.2"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: opentelemetry-instrumentation-llamaindex
3
- Version: 0.25.0
3
+ Version: 0.25.2
4
4
  Summary: OpenTelemetry LlamaIndex instrumentation
5
5
  Home-page: https://github.com/traceloop/openllmetry/tree/main/packages/opentelemetry-instrumentation-llamaindex
6
6
  License: Apache-2.0
@@ -0,0 +1,16 @@
1
+ opentelemetry/instrumentation/llamaindex/__init__.py,sha256=xVgDrVrDSVLC93OAk9hIvzBybBoKCtquGSV2-2Y_P5E,2318
2
+ opentelemetry/instrumentation/llamaindex/base_agent_instrumentor.py,sha256=FgchRWt7Tb4KpsTtZbe3HIeuMglH7Slek1sv8FH3xvU,2645
3
+ opentelemetry/instrumentation/llamaindex/base_embedding_instrumentor.py,sha256=6m3qnBfvU2dzAFuJCu_A576gyEmReCVKxOTeiaIoTX4,2207
4
+ opentelemetry/instrumentation/llamaindex/base_retriever_instrumentor.py,sha256=LPdBeoV3817P2mOCQSL8Y46zvxkHATa6oL89f8ZmVY8,2346
5
+ opentelemetry/instrumentation/llamaindex/base_synthesizer_instrumentor.py,sha256=HW-pO4ihrXE324tDg-KBh7U6e3zCRNuP8GZFl6vxGio,2365
6
+ opentelemetry/instrumentation/llamaindex/base_tool_instrumentor.py,sha256=z1Gj1JvBgMyeGjtp8a2GiKjPPBBSLR9-QBP1tHvdSJE,2758
7
+ opentelemetry/instrumentation/llamaindex/config.py,sha256=CtypZov_ytI9nSrfN9lWnjcufbAR9sfkXRA0OstDEUw,42
8
+ opentelemetry/instrumentation/llamaindex/custom_llm_instrumentor.py,sha256=9b9I3WDE0icnYtDpkiFChpl7fwadQnUCryHc3pPi6nM,5936
9
+ opentelemetry/instrumentation/llamaindex/query_pipeline_instrumentor.py,sha256=_XejlSUWusotWdkffKVfLaLsoj6G3Rf_RALs8XWJ0f4,2496
10
+ opentelemetry/instrumentation/llamaindex/retriever_query_engine_instrumentor.py,sha256=JkwdDVR6wrWUKgljnl23AusSw6zeb4JEE8ceM9lBilU,2627
11
+ opentelemetry/instrumentation/llamaindex/utils.py,sha256=u5F80iSqg4sZst6KYwcxvJeC73nr2IN3hFACKf-mtBc,2349
12
+ opentelemetry/instrumentation/llamaindex/version.py,sha256=NMzPG-AisbqV0qHNDcM-oIMtdXA6rLhjzeATPyNq6Nw,23
13
+ opentelemetry_instrumentation_llamaindex-0.25.2.dist-info/METADATA,sha256=fH9AB9yqiDNgzk9VBXgF4u_m4DxvYsVlHZJ7ds3RmY4,2285
14
+ opentelemetry_instrumentation_llamaindex-0.25.2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
15
+ opentelemetry_instrumentation_llamaindex-0.25.2.dist-info/entry_points.txt,sha256=gtV40W4oFCp6VNvgowTKa0zQjfIrvfdlYflgGdSsA5A,106
16
+ opentelemetry_instrumentation_llamaindex-0.25.2.dist-info/RECORD,,
@@ -1,16 +0,0 @@
1
- opentelemetry/instrumentation/llamaindex/__init__.py,sha256=xVgDrVrDSVLC93OAk9hIvzBybBoKCtquGSV2-2Y_P5E,2318
2
- opentelemetry/instrumentation/llamaindex/base_agent_instrumentor.py,sha256=5orAAgeGzNh5uIQzMZML8WMHSAJpFo0C5EINoif4pTc,2246
3
- opentelemetry/instrumentation/llamaindex/base_embedding_instrumentor.py,sha256=xbw3gD4OT_CObMOIV3vvLTV1V4obr3PgoiON5u2zd64,2055
4
- opentelemetry/instrumentation/llamaindex/base_retriever_instrumentor.py,sha256=ipQozp1_4RE2pLPpWFuDgDOtv_GKPh5PocZRO3_LZWA,1955
5
- opentelemetry/instrumentation/llamaindex/base_synthesizer_instrumentor.py,sha256=NCgwwZthjq4fdZj-U0m14qZY-2BoEow4H7t5tVr4EAs,1974
6
- opentelemetry/instrumentation/llamaindex/base_tool_instrumentor.py,sha256=6a5NMPOI9B_oDy7zlAkA6-u5Kqt1fXcbnxx7Xw-E2M4,2359
7
- opentelemetry/instrumentation/llamaindex/config.py,sha256=CtypZov_ytI9nSrfN9lWnjcufbAR9sfkXRA0OstDEUw,42
8
- opentelemetry/instrumentation/llamaindex/custom_llm_instrumentor.py,sha256=9b9I3WDE0icnYtDpkiFChpl7fwadQnUCryHc3pPi6nM,5936
9
- opentelemetry/instrumentation/llamaindex/query_pipeline_instrumentor.py,sha256=Z84cNWnjjMlVRDUE2Jyb0LIYUVqMvf_7YsQ9vQjXrmw,2097
10
- opentelemetry/instrumentation/llamaindex/retriever_query_engine_instrumentor.py,sha256=mlpyxZ51nYDqdo_O8BSdzBdbmNpD9ejokbIYaejGFPs,2228
11
- opentelemetry/instrumentation/llamaindex/utils.py,sha256=39q5U64UkSoiMVTTzSFMX4xdFyzZFUhiXM5I_OH6kIU,1496
12
- opentelemetry/instrumentation/llamaindex/version.py,sha256=Mu4JbSLl5nr-J2figk5hmW2mrw4skf_oeIzxbnpcgwY,23
13
- opentelemetry_instrumentation_llamaindex-0.25.0.dist-info/METADATA,sha256=yScWbuL5GOC0R8tzRe82hC2-yJvWrcxaOxsaCuPIcTg,2285
14
- opentelemetry_instrumentation_llamaindex-0.25.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
15
- opentelemetry_instrumentation_llamaindex-0.25.0.dist-info/entry_points.txt,sha256=gtV40W4oFCp6VNvgowTKa0zQjfIrvfdlYflgGdSsA5A,106
16
- opentelemetry_instrumentation_llamaindex-0.25.0.dist-info/RECORD,,