opentelemetry-instrumentation-openai 0.33.8__tar.gz → 0.33.9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of opentelemetry-instrumentation-openai might be problematic. Click here for more details.

Files changed (17) hide show
  1. {opentelemetry_instrumentation_openai-0.33.8 → opentelemetry_instrumentation_openai-0.33.9}/PKG-INFO +1 -1
  2. {opentelemetry_instrumentation_openai-0.33.8 → opentelemetry_instrumentation_openai-0.33.9}/opentelemetry/instrumentation/openai/shared/__init__.py +2 -0
  3. {opentelemetry_instrumentation_openai-0.33.8 → opentelemetry_instrumentation_openai-0.33.9}/opentelemetry/instrumentation/openai/shared/chat_wrappers.py +1 -0
  4. {opentelemetry_instrumentation_openai-0.33.8 → opentelemetry_instrumentation_openai-0.33.9}/opentelemetry/instrumentation/openai/utils.py +20 -14
  5. opentelemetry_instrumentation_openai-0.33.9/opentelemetry/instrumentation/openai/version.py +1 -0
  6. {opentelemetry_instrumentation_openai-0.33.8 → opentelemetry_instrumentation_openai-0.33.9}/pyproject.toml +1 -1
  7. opentelemetry_instrumentation_openai-0.33.8/opentelemetry/instrumentation/openai/version.py +0 -1
  8. {opentelemetry_instrumentation_openai-0.33.8 → opentelemetry_instrumentation_openai-0.33.9}/README.md +0 -0
  9. {opentelemetry_instrumentation_openai-0.33.8 → opentelemetry_instrumentation_openai-0.33.9}/opentelemetry/instrumentation/openai/__init__.py +0 -0
  10. {opentelemetry_instrumentation_openai-0.33.8 → opentelemetry_instrumentation_openai-0.33.9}/opentelemetry/instrumentation/openai/shared/completion_wrappers.py +0 -0
  11. {opentelemetry_instrumentation_openai-0.33.8 → opentelemetry_instrumentation_openai-0.33.9}/opentelemetry/instrumentation/openai/shared/config.py +0 -0
  12. {opentelemetry_instrumentation_openai-0.33.8 → opentelemetry_instrumentation_openai-0.33.9}/opentelemetry/instrumentation/openai/shared/embeddings_wrappers.py +0 -0
  13. {opentelemetry_instrumentation_openai-0.33.8 → opentelemetry_instrumentation_openai-0.33.9}/opentelemetry/instrumentation/openai/shared/image_gen_wrappers.py +0 -0
  14. {opentelemetry_instrumentation_openai-0.33.8 → opentelemetry_instrumentation_openai-0.33.9}/opentelemetry/instrumentation/openai/v0/__init__.py +0 -0
  15. {opentelemetry_instrumentation_openai-0.33.8 → opentelemetry_instrumentation_openai-0.33.9}/opentelemetry/instrumentation/openai/v1/__init__.py +0 -0
  16. {opentelemetry_instrumentation_openai-0.33.8 → opentelemetry_instrumentation_openai-0.33.9}/opentelemetry/instrumentation/openai/v1/assistant_wrappers.py +0 -0
  17. {opentelemetry_instrumentation_openai-0.33.8 → opentelemetry_instrumentation_openai-0.33.9}/opentelemetry/instrumentation/openai/v1/event_handler_wrapper.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: opentelemetry-instrumentation-openai
3
- Version: 0.33.8
3
+ Version: 0.33.9
4
4
  Summary: OpenTelemetry OpenAI instrumentation
5
5
  Home-page: https://github.com/traceloop/openllmetry/tree/main/packages/opentelemetry-instrumentation-openai
6
6
  License: Apache-2.0
@@ -231,6 +231,8 @@ def is_streaming_response(response):
231
231
 
232
232
 
233
233
  def model_as_dict(model):
234
+ if isinstance(model, dict):
235
+ return model
234
236
  if version("pydantic") < "2.0.0":
235
237
  return model.dict()
236
238
  if hasattr(model, "model_dump"):
@@ -353,6 +353,7 @@ async def _process_image_item(item, trace_id, span_id, message_index, content_in
353
353
  return {"type": "image_url", "image_url": {"url": url}}
354
354
 
355
355
 
356
+ @dont_throw
356
357
  async def _set_prompts(span, messages):
357
358
  if not span.is_recording() or messages is None:
358
359
  return
@@ -115,26 +115,32 @@ async def start_as_current_span_async(tracer, *args, **kwargs):
115
115
  def dont_throw(func):
116
116
  """
117
117
  A decorator that wraps the passed in function and logs exceptions instead of throwing them.
118
-
119
- @param func: The function to wrap
120
- @return: The wrapper function
118
+ Works for both synchronous and asynchronous functions.
121
119
  """
122
- # Obtain a logger specific to the function's module
123
120
  logger = logging.getLogger(func.__module__)
124
121
 
125
- def wrapper(*args, **kwargs):
122
+ async def async_wrapper(*args, **kwargs):
126
123
  try:
127
- return func(*args, **kwargs)
124
+ return await func(*args, **kwargs)
128
125
  except Exception as e:
129
- logger.debug(
130
- "OpenLLMetry failed to trace in %s, error: %s",
131
- func.__name__,
132
- traceback.format_exc(),
133
- )
134
- if Config.exception_logger:
135
- Config.exception_logger(e)
126
+ _handle_exception(e, func, logger)
136
127
 
137
- return wrapper
128
+ def sync_wrapper(*args, **kwargs):
129
+ try:
130
+ return func(*args, **kwargs)
131
+ except Exception as e:
132
+ _handle_exception(e, func, logger)
133
+
134
+ def _handle_exception(e, func, logger):
135
+ logger.debug(
136
+ "OpenLLMetry failed to trace in %s, error: %s",
137
+ func.__name__,
138
+ traceback.format_exc(),
139
+ )
140
+ if Config.exception_logger:
141
+ Config.exception_logger(e)
142
+
143
+ return async_wrapper if asyncio.iscoroutinefunction(func) else sync_wrapper
138
144
 
139
145
 
140
146
  def run_async(method):
@@ -8,7 +8,7 @@ show_missing = true
8
8
 
9
9
  [tool.poetry]
10
10
  name = "opentelemetry-instrumentation-openai"
11
- version = "0.33.8"
11
+ version = "0.33.9"
12
12
  description = "OpenTelemetry OpenAI instrumentation"
13
13
  authors = [
14
14
  "Gal Kleinman <gal@traceloop.com>",