opentelemetry-instrumentation-openai 0.15.4__tar.gz → 0.15.6__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.
- {opentelemetry_instrumentation_openai-0.15.4 → opentelemetry_instrumentation_openai-0.15.6}/PKG-INFO +1 -1
- opentelemetry_instrumentation_openai-0.15.6/opentelemetry/instrumentation/openai/v0/__init__.py +148 -0
- opentelemetry_instrumentation_openai-0.15.6/opentelemetry/instrumentation/openai/version.py +1 -0
- {opentelemetry_instrumentation_openai-0.15.4 → opentelemetry_instrumentation_openai-0.15.6}/pyproject.toml +1 -1
- opentelemetry_instrumentation_openai-0.15.4/opentelemetry/instrumentation/openai/v0/__init__.py +0 -44
- opentelemetry_instrumentation_openai-0.15.4/opentelemetry/instrumentation/openai/version.py +0 -1
- {opentelemetry_instrumentation_openai-0.15.4 → opentelemetry_instrumentation_openai-0.15.6}/README.md +0 -0
- {opentelemetry_instrumentation_openai-0.15.4 → opentelemetry_instrumentation_openai-0.15.6}/opentelemetry/instrumentation/openai/__init__.py +0 -0
- {opentelemetry_instrumentation_openai-0.15.4 → opentelemetry_instrumentation_openai-0.15.6}/opentelemetry/instrumentation/openai/shared/__init__.py +0 -0
- {opentelemetry_instrumentation_openai-0.15.4 → opentelemetry_instrumentation_openai-0.15.6}/opentelemetry/instrumentation/openai/shared/chat_wrappers.py +0 -0
- {opentelemetry_instrumentation_openai-0.15.4 → opentelemetry_instrumentation_openai-0.15.6}/opentelemetry/instrumentation/openai/shared/completion_wrappers.py +0 -0
- {opentelemetry_instrumentation_openai-0.15.4 → opentelemetry_instrumentation_openai-0.15.6}/opentelemetry/instrumentation/openai/shared/config.py +0 -0
- {opentelemetry_instrumentation_openai-0.15.4 → opentelemetry_instrumentation_openai-0.15.6}/opentelemetry/instrumentation/openai/shared/embeddings_wrappers.py +0 -0
- {opentelemetry_instrumentation_openai-0.15.4 → opentelemetry_instrumentation_openai-0.15.6}/opentelemetry/instrumentation/openai/shared/image_gen_wrappers.py +0 -0
- {opentelemetry_instrumentation_openai-0.15.4 → opentelemetry_instrumentation_openai-0.15.6}/opentelemetry/instrumentation/openai/utils.py +0 -0
- {opentelemetry_instrumentation_openai-0.15.4 → opentelemetry_instrumentation_openai-0.15.6}/opentelemetry/instrumentation/openai/v1/__init__.py +0 -0
- {opentelemetry_instrumentation_openai-0.15.4 → opentelemetry_instrumentation_openai-0.15.6}/opentelemetry/instrumentation/openai/v1/assistant_wrappers.py +0 -0
- {opentelemetry_instrumentation_openai-0.15.4 → opentelemetry_instrumentation_openai-0.15.6}/opentelemetry/instrumentation/openai/v1/event_handler_wrapper.py +0 -0
{opentelemetry_instrumentation_openai-0.15.4 → opentelemetry_instrumentation_openai-0.15.6}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: opentelemetry-instrumentation-openai
|
|
3
|
-
Version: 0.15.
|
|
3
|
+
Version: 0.15.6
|
|
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
|
opentelemetry_instrumentation_openai-0.15.6/opentelemetry/instrumentation/openai/v0/__init__.py
ADDED
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
from typing import Collection
|
|
2
|
+
|
|
3
|
+
from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
|
|
4
|
+
from opentelemetry.trace import get_tracer
|
|
5
|
+
from opentelemetry.metrics import get_meter
|
|
6
|
+
from wrapt import wrap_function_wrapper
|
|
7
|
+
|
|
8
|
+
from opentelemetry.instrumentation.openai.shared.chat_wrappers import (
|
|
9
|
+
chat_wrapper,
|
|
10
|
+
achat_wrapper,
|
|
11
|
+
)
|
|
12
|
+
from opentelemetry.instrumentation.openai.shared.completion_wrappers import (
|
|
13
|
+
completion_wrapper,
|
|
14
|
+
acompletion_wrapper,
|
|
15
|
+
)
|
|
16
|
+
from opentelemetry.instrumentation.openai.shared.embeddings_wrappers import (
|
|
17
|
+
embeddings_wrapper,
|
|
18
|
+
aembeddings_wrapper,
|
|
19
|
+
)
|
|
20
|
+
from opentelemetry.instrumentation.openai.utils import is_metrics_enabled
|
|
21
|
+
from opentelemetry.instrumentation.openai.version import __version__
|
|
22
|
+
|
|
23
|
+
_instruments = ("openai >= 0.27.0", "openai < 1.0.0")
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class OpenAIV0Instrumentor(BaseInstrumentor):
|
|
27
|
+
def instrumentation_dependencies(self) -> Collection[str]:
|
|
28
|
+
return _instruments
|
|
29
|
+
|
|
30
|
+
def _instrument(self, **kwargs):
|
|
31
|
+
tracer_provider = kwargs.get("tracer_provider")
|
|
32
|
+
tracer = get_tracer(__name__, __version__, tracer_provider)
|
|
33
|
+
|
|
34
|
+
meter_provider = kwargs.get("meter_provider")
|
|
35
|
+
meter = get_meter(__name__, __version__, meter_provider)
|
|
36
|
+
|
|
37
|
+
if is_metrics_enabled():
|
|
38
|
+
chat_token_counter = meter.create_counter(
|
|
39
|
+
name="llm.openai.chat_completions.tokens",
|
|
40
|
+
unit="token",
|
|
41
|
+
description="Number of tokens used in prompt and completions",
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
chat_choice_counter = meter.create_counter(
|
|
45
|
+
name="llm.openai.chat_completions.choices",
|
|
46
|
+
unit="choice",
|
|
47
|
+
description="Number of choices returned by chat completions call",
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
chat_duration_histogram = meter.create_histogram(
|
|
51
|
+
name="llm.openai.chat_completions.duration",
|
|
52
|
+
unit="s",
|
|
53
|
+
description="Duration of chat completion operation",
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
chat_exception_counter = meter.create_counter(
|
|
57
|
+
name="llm.openai.chat_completions.exceptions",
|
|
58
|
+
unit="time",
|
|
59
|
+
description="Number of exceptions occurred during chat completions",
|
|
60
|
+
)
|
|
61
|
+
|
|
62
|
+
streaming_time_to_first_token = meter.create_histogram(
|
|
63
|
+
name="llm.openai.chat_completions.streaming_time_to_first_token",
|
|
64
|
+
unit="s",
|
|
65
|
+
description="Time to first token in streaming chat completions",
|
|
66
|
+
)
|
|
67
|
+
streaming_time_to_generate = meter.create_histogram(
|
|
68
|
+
name="llm.openai.chat_completions.streaming_time_to_generate",
|
|
69
|
+
unit="s",
|
|
70
|
+
description="Time between first token and completion in streaming chat completions",
|
|
71
|
+
)
|
|
72
|
+
else:
|
|
73
|
+
(
|
|
74
|
+
chat_token_counter,
|
|
75
|
+
chat_choice_counter,
|
|
76
|
+
chat_duration_histogram,
|
|
77
|
+
chat_exception_counter,
|
|
78
|
+
streaming_time_to_first_token,
|
|
79
|
+
streaming_time_to_generate,
|
|
80
|
+
) = (None, None, None, None, None, None)
|
|
81
|
+
|
|
82
|
+
if is_metrics_enabled():
|
|
83
|
+
embeddings_token_counter = meter.create_counter(
|
|
84
|
+
name="llm.openai.embeddings.tokens",
|
|
85
|
+
unit="token",
|
|
86
|
+
description="Number of tokens used in prompt and completions",
|
|
87
|
+
)
|
|
88
|
+
|
|
89
|
+
embeddings_vector_size_counter = meter.create_counter(
|
|
90
|
+
name="llm.openai.embeddings.vector_size",
|
|
91
|
+
unit="element",
|
|
92
|
+
description="he size of returned vector",
|
|
93
|
+
)
|
|
94
|
+
|
|
95
|
+
embeddings_duration_histogram = meter.create_histogram(
|
|
96
|
+
name="llm.openai.embeddings.duration",
|
|
97
|
+
unit="s",
|
|
98
|
+
description="Duration of embeddings operation",
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
embeddings_exception_counter = meter.create_counter(
|
|
102
|
+
name="llm.openai.embeddings.exceptions",
|
|
103
|
+
unit="time",
|
|
104
|
+
description="Number of exceptions occurred during embeddings operation",
|
|
105
|
+
)
|
|
106
|
+
else:
|
|
107
|
+
(
|
|
108
|
+
embeddings_token_counter,
|
|
109
|
+
embeddings_vector_size_counter,
|
|
110
|
+
embeddings_duration_histogram,
|
|
111
|
+
embeddings_exception_counter,
|
|
112
|
+
) = (None, None, None, None)
|
|
113
|
+
|
|
114
|
+
wrap_function_wrapper("openai", "Completion.create", completion_wrapper(tracer))
|
|
115
|
+
wrap_function_wrapper(
|
|
116
|
+
"openai", "Completion.acreate", acompletion_wrapper(tracer)
|
|
117
|
+
)
|
|
118
|
+
wrap_function_wrapper(
|
|
119
|
+
"openai",
|
|
120
|
+
"ChatCompletion.create",
|
|
121
|
+
chat_wrapper(
|
|
122
|
+
tracer,
|
|
123
|
+
chat_token_counter,
|
|
124
|
+
chat_choice_counter,
|
|
125
|
+
chat_duration_histogram,
|
|
126
|
+
chat_exception_counter,
|
|
127
|
+
streaming_time_to_first_token,
|
|
128
|
+
streaming_time_to_generate,
|
|
129
|
+
),
|
|
130
|
+
)
|
|
131
|
+
wrap_function_wrapper("openai", "ChatCompletion.acreate", achat_wrapper(tracer))
|
|
132
|
+
wrap_function_wrapper(
|
|
133
|
+
"openai",
|
|
134
|
+
"Embedding.create",
|
|
135
|
+
embeddings_wrapper(
|
|
136
|
+
tracer,
|
|
137
|
+
embeddings_token_counter,
|
|
138
|
+
embeddings_vector_size_counter,
|
|
139
|
+
embeddings_duration_histogram,
|
|
140
|
+
embeddings_exception_counter,
|
|
141
|
+
),
|
|
142
|
+
)
|
|
143
|
+
wrap_function_wrapper(
|
|
144
|
+
"openai", "Embedding.acreate", aembeddings_wrapper(tracer)
|
|
145
|
+
)
|
|
146
|
+
|
|
147
|
+
def _uninstrument(self, **kwargs):
|
|
148
|
+
pass
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.15.6"
|
opentelemetry_instrumentation_openai-0.15.4/opentelemetry/instrumentation/openai/v0/__init__.py
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
from typing import Collection
|
|
2
|
-
|
|
3
|
-
from opentelemetry.instrumentation.instrumentor import BaseInstrumentor
|
|
4
|
-
from opentelemetry.trace import get_tracer
|
|
5
|
-
from wrapt import wrap_function_wrapper
|
|
6
|
-
|
|
7
|
-
from opentelemetry.instrumentation.openai.shared.chat_wrappers import (
|
|
8
|
-
chat_wrapper,
|
|
9
|
-
achat_wrapper,
|
|
10
|
-
)
|
|
11
|
-
from opentelemetry.instrumentation.openai.shared.completion_wrappers import (
|
|
12
|
-
completion_wrapper,
|
|
13
|
-
acompletion_wrapper,
|
|
14
|
-
)
|
|
15
|
-
from opentelemetry.instrumentation.openai.shared.embeddings_wrappers import (
|
|
16
|
-
embeddings_wrapper,
|
|
17
|
-
aembeddings_wrapper,
|
|
18
|
-
)
|
|
19
|
-
from opentelemetry.instrumentation.openai.version import __version__
|
|
20
|
-
|
|
21
|
-
_instruments = ("openai >= 0.27.0", "openai < 1.0.0")
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
class OpenAIV0Instrumentor(BaseInstrumentor):
|
|
25
|
-
def instrumentation_dependencies(self) -> Collection[str]:
|
|
26
|
-
return _instruments
|
|
27
|
-
|
|
28
|
-
def _instrument(self, **kwargs):
|
|
29
|
-
tracer_provider = kwargs.get("tracer_provider")
|
|
30
|
-
tracer = get_tracer(__name__, __version__, tracer_provider)
|
|
31
|
-
|
|
32
|
-
wrap_function_wrapper("openai", "Completion.create", completion_wrapper(tracer))
|
|
33
|
-
wrap_function_wrapper(
|
|
34
|
-
"openai", "Completion.acreate", acompletion_wrapper(tracer)
|
|
35
|
-
)
|
|
36
|
-
wrap_function_wrapper("openai", "ChatCompletion.create", chat_wrapper(tracer))
|
|
37
|
-
wrap_function_wrapper("openai", "ChatCompletion.acreate", achat_wrapper(tracer))
|
|
38
|
-
wrap_function_wrapper("openai", "Embedding.create", embeddings_wrapper(tracer))
|
|
39
|
-
wrap_function_wrapper(
|
|
40
|
-
"openai", "Embedding.acreate", aembeddings_wrapper(tracer)
|
|
41
|
-
)
|
|
42
|
-
|
|
43
|
-
def _uninstrument(self, **kwargs):
|
|
44
|
-
pass
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.15.4"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|