Skip to content

Commit c692763

Browse files
authored
initial simple version openhands instrumentor (#179)
* wip * initial simple version openhands instrumentor * fix undefined var * rename id var to a more descriptive name * small refactor; store input and output on parent span * restore dev deps * small fixes around * bump version to 0.7.7,revert line change
1 parent a863eed commit c692763

File tree

11 files changed

+460
-12
lines changed

11 files changed

+460
-12
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
[project]
88
name = "lmnr"
9-
version = "0.7.6"
9+
version = "0.7.7"
1010
description = "Python SDK for Laminar"
1111
authors = [
1212
{ name = "lmnr.ai", email = "[email protected]" }

src/lmnr/opentelemetry_lib/decorators/__init__.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
from functools import wraps
2-
import logging
32
import pydantic
43
import orjson
54
import types
@@ -60,7 +59,7 @@ def json_dumps(data: dict) -> str:
6059
).decode("utf-8")
6160
except Exception:
6261
# Log the exception and return a placeholder if serialization completely fails
63-
logging.warning("Failed to serialize data to JSON, type: %s", type(data))
62+
logger.info("Failed to serialize data to JSON, type: %s", type(data))
6463
return "{}" # Return an empty JSON object as a fallback
6564

6665

src/lmnr/opentelemetry_lib/litellm/__init__.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,13 @@
77
from lmnr.opentelemetry_lib.litellm.utils import model_as_dict, set_span_attribute
88
from lmnr.opentelemetry_lib.tracing import TracerWrapper
99

10-
from lmnr.opentelemetry_lib.tracing.context import get_event_attributes_from_context
10+
from lmnr.opentelemetry_lib.tracing.context import (
11+
get_current_context,
12+
get_event_attributes_from_context,
13+
)
1114
from lmnr.opentelemetry_lib.utils.package_check import is_package_installed
1215
from lmnr.sdk.log import get_default_logger
1316

14-
from lmnr.opentelemetry_lib.opentelemetry.instrumentation.openai import (
15-
OpenAIInstrumentor,
16-
)
17-
1817
logger = get_default_logger(__name__)
1918

2019
SUPPORTED_CALL_TYPES = ["completion", "acompletion"]
@@ -46,6 +45,10 @@ def __init__(self, **kwargs):
4645
raise ValueError("Laminar must be initialized before LiteLLM callback")
4746

4847
if is_package_installed("openai"):
48+
from lmnr.opentelemetry_lib.opentelemetry.instrumentation.openai import (
49+
OpenAIInstrumentor,
50+
)
51+
4952
openai_instrumentor = OpenAIInstrumentor()
5053
if (
5154
openai_instrumentor
@@ -117,6 +120,7 @@ def _create_span(
117120
attributes={
118121
"lmnr.internal.provider": "litellm",
119122
},
123+
context=get_current_context(),
120124
)
121125
try:
122126
model = kwargs.get("model", "unknown")

src/lmnr/opentelemetry_lib/opentelemetry/instrumentation/openai/utils.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
import openai
1414

15+
1516
_OPENAI_VERSION = version("openai")
1617

1718
LMNR_TRACE_CONTENT = "LMNR_TRACE_CONTENT"
@@ -22,6 +23,7 @@ def is_openai_v1():
2223

2324

2425
def is_azure_openai(instance):
26+
2527
return is_openai_v1() and isinstance(
2628
instance._client, (openai.AsyncAzureOpenAI, openai.AzureOpenAI)
2729
)

0 commit comments

Comments
 (0)