Skip to content

Commit 195bcdb

Browse files
authored
GenAI Utils | Embedding Type and Span Creation (#4219)
1 parent 822cd77 commit 195bcdb

File tree

14 files changed

+824
-390
lines changed

14 files changed

+824
-390
lines changed

instrumentation-genai/opentelemetry-instrumentation-anthropic/pyproject.toml

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,14 @@ classifiers = [
2626
"Programming Language :: Python :: 3.14",
2727
]
2828
dependencies = [
29-
"opentelemetry-api ~= 1.37",
30-
"opentelemetry-instrumentation ~= 0.58b0",
31-
"opentelemetry-semantic-conventions ~= 0.58b0",
29+
"opentelemetry-api ~= 1.39",
30+
"opentelemetry-instrumentation ~= 0.60b0",
31+
"opentelemetry-semantic-conventions ~= 0.60b0",
3232
"opentelemetry-util-genai >= 0.2b0, <0.4b0",
3333
]
3434

3535
[project.optional-dependencies]
36-
instruments = [
37-
"anthropic >= 0.51.0",
38-
]
36+
instruments = ["anthropic >= 0.51.0"]
3937

4038
[project.entry-points.opentelemetry_instrumentor]
4139
anthropic = "opentelemetry.instrumentation.anthropic:AnthropicInstrumentor"
@@ -48,15 +46,10 @@ Repository = "https://github.com/open-telemetry/opentelemetry-python-contrib"
4846
path = "src/opentelemetry/instrumentation/anthropic/version.py"
4947

5048
[tool.hatch.build.targets.sdist]
51-
include = [
52-
"/src",
53-
"/tests",
54-
"/examples",
55-
]
49+
include = ["/src", "/tests", "/examples"]
5650

5751
[tool.hatch.build.targets.wheel]
5852
packages = ["src/opentelemetry"]
5953

6054
[tool.pytest.ini_options]
6155
testpaths = ["tests"]
62-

instrumentation-genai/opentelemetry-instrumentation-anthropic/tests/requirements.oldest.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ pytest==7.4.4
2121
pytest-vcr==1.0.2
2222
pytest-asyncio==0.21.0
2323
wrapt==1.16.0
24-
opentelemetry-api==1.37 # when updating, also update in pyproject.toml
25-
opentelemetry-sdk==1.37 # when updating, also update in pyproject.toml
26-
opentelemetry-semantic-conventions==0.58b0 # when updating, also update in pyproject.toml
24+
opentelemetry-api==1.39 # when updating, also update in pyproject.toml
25+
opentelemetry-sdk==1.39 # when updating, also update in pyproject.toml
26+
opentelemetry-semantic-conventions==0.60b0 # when updating, also update in pyproject.toml
2727

2828
-e instrumentation-genai/opentelemetry-instrumentation-anthropic

instrumentation-genai/opentelemetry-instrumentation-claude-agent-sdk/pyproject.toml

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,14 @@ classifiers = [
2424
"Programming Language :: Python :: 3.13",
2525
]
2626
dependencies = [
27-
"opentelemetry-api ~= 1.37",
28-
"opentelemetry-instrumentation ~= 0.58b0",
29-
"opentelemetry-semantic-conventions ~= 0.58b0",
27+
"opentelemetry-api ~= 1.39",
28+
"opentelemetry-instrumentation ~= 0.60b0",
29+
"opentelemetry-semantic-conventions ~= 0.60b0",
3030
"opentelemetry-util-genai >= 0.2b0, <0.4b0",
3131
]
3232

3333
[project.optional-dependencies]
34-
instruments = [
35-
"claude-agent-sdk >= 0.1.14",
36-
]
34+
instruments = ["claude-agent-sdk >= 0.1.14"]
3735

3836
[project.entry-points.opentelemetry_instrumentor]
3937
claude-agent-sdk = "opentelemetry.instrumentation.claude_agent_sdk:ClaudeAgentSDKInstrumentor"
@@ -46,11 +44,7 @@ Repository = "https://github.com/open-telemetry/opentelemetry-python-contrib"
4644
path = "src/opentelemetry/instrumentation/claude_agent_sdk/version.py"
4745

4846
[tool.hatch.build.targets.sdist]
49-
include = [
50-
"/src",
51-
"/tests",
52-
"/examples",
53-
]
47+
include = ["/src", "/tests", "/examples"]
5448

5549
[tool.hatch.build.targets.wheel]
5650
packages = ["src/opentelemetry"]

instrumentation-genai/opentelemetry-instrumentation-claude-agent-sdk/tests/requirements.oldest.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ pytest==7.4.4
2121
pytest-vcr==1.0.2
2222
pytest-asyncio==0.21.0
2323
wrapt==1.16.0
24-
opentelemetry-api==1.37 # when updating, also update in pyproject.toml
25-
opentelemetry-sdk==1.37 # when updating, also update in pyproject.toml
26-
opentelemetry-semantic-conventions==0.58b0 # when updating, also update in pyproject.toml
24+
opentelemetry-api==1.39 # when updating, also update in pyproject.toml
25+
opentelemetry-sdk==1.39 # when updating, also update in pyproject.toml
26+
opentelemetry-semantic-conventions==0.60b0 # when updating, also update in pyproject.toml
2727

2828
-e instrumentation-genai/opentelemetry-instrumentation-claude-agent-sdk

instrumentation-genai/opentelemetry-instrumentation-openai-v2/pyproject.toml

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,14 @@ classifiers = [
2626
"Programming Language :: Python :: 3.14",
2727
]
2828
dependencies = [
29-
"opentelemetry-api ~= 1.37",
30-
"opentelemetry-instrumentation ~= 0.58b0",
31-
"opentelemetry-semantic-conventions ~= 0.58b0",
29+
"opentelemetry-api ~= 1.39",
30+
"opentelemetry-instrumentation ~= 0.60b0",
31+
"opentelemetry-semantic-conventions ~= 0.60b0",
3232
"opentelemetry-util-genai",
3333
]
3434

3535
[project.optional-dependencies]
36-
instruments = [
37-
"openai >= 1.26.0",
38-
]
36+
instruments = ["openai >= 1.26.0"]
3937

4038
[project.entry-points.opentelemetry_instrumentor]
4139
openai = "opentelemetry.instrumentation.openai_v2:OpenAIInstrumentor"
@@ -48,10 +46,7 @@ Repository = "https://github.com/open-telemetry/opentelemetry-python-contrib"
4846
path = "src/opentelemetry/instrumentation/openai_v2/version.py"
4947

5048
[tool.hatch.build.targets.sdist]
51-
include = [
52-
"/src",
53-
"/tests",
54-
]
49+
include = ["/src", "/tests"]
5550

5651
[tool.hatch.build.targets.wheel]
5752
packages = ["src/opentelemetry"]

instrumentation-genai/opentelemetry-instrumentation-openai-v2/tests/requirements.oldest.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@ pytest-vcr==1.0.2
2929
pytest-asyncio==0.21.0
3030
wrapt==1.16.0
3131
opentelemetry-exporter-otlp-proto-http~=1.30
32-
opentelemetry-api==1.37 # when updating, also update in pyproject.toml
33-
opentelemetry-sdk==1.37 # when updating, also update in pyproject.toml
34-
opentelemetry-semantic-conventions==0.58b0 # when updating, also update in pyproject.toml
32+
opentelemetry-api==1.39 # when updating, also update in pyproject.toml
33+
opentelemetry-sdk==1.39 # when updating, also update in pyproject.toml
34+
opentelemetry-semantic-conventions==0.60b0 # when updating, also update in pyproject.toml
3535

3636
-e instrumentation-genai/opentelemetry-instrumentation-openai-v2
3737
-e util/opentelemetry-util-genai

util/opentelemetry-util-genai/CHANGELOG.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## Unreleased
99

10+
- Add EmbeddingInvocation span lifecycle support
11+
([https://github.com/open-telemetry/opentelemetry-python-contrib/pull/4219](#4219))
1012
- Populate schema_url on metrics
1113
([#4320](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/4320))
1214
- Add workflow invocation type to genAI utils
@@ -41,10 +43,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
4143
([https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3795](#3795))
4244
- Make inputs / outputs / system instructions optional params to `on_completion`,
4345
([https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3802](#3802)).
44-
- Use a SHA256 hash of the system instructions as it's upload filename, and check
46+
- Use a SHA256 hash of the system instructions as it's upload filename, and check
4547
if the file exists before re-uploading it, ([https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3814](#3814)).
4648

47-
4849
## Version 0.1b0 (2025-09-25)
4950

5051
- Add completion hook to genai utils to implement semconv v1.37.
@@ -57,6 +58,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
5758
([#3752](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3752))
5859
([#3759](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3759))
5960
([#3763](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3763))
61+
6062
- Add a utility to parse the `OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT` environment variable.
6163
Add `gen_ai_latest_experimental` as a new value to the Sem Conv stability flag ([#3716](https://github.com/open-telemetry/opentelemetry-python-contrib/pull/3716)).
6264

util/opentelemetry-util-genai/README.rst

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,18 @@ This package provides these span attributes:
3636
- `gen_ai.output.messages`: Str('[{"role": "AI", "parts": [{"content": "hello back", "type": "text"}], "finish_reason": "stop"}]')
3737
- `gen_ai.system_instructions`: Str('[{"content": "You are a helpful assistant.", "type": "text"}]') (when system instruction is provided)
3838

39+
This package also supports embedding invocation spans via the `embedding` context manager.
40+
For embedding invocations, common attributes include:
41+
42+
- `gen_ai.provider.name`: Str(openai)
43+
- `gen_ai.operation.name`: Str(embeddings)
44+
- `gen_ai.request.model`: Str(text-embedding-3-small)
45+
- `gen_ai.embeddings.dimension.count`: Int(1536)
46+
- `gen_ai.request.encoding_formats`: Slice(["float"])
47+
- `gen_ai.usage.input_tokens`: Int(24)
48+
- `server.address`: Str(api.openai.com)
49+
- `server.port`: Int(443)
50+
3951
When `EVENT_ONLY` or `SPAN_AND_EVENT` mode is enabled and a LoggerProvider is configured,
4052
the package also emits `gen_ai.client.inference.operation.details` events with structured
4153
message content (as dictionaries instead of JSON strings). Note that when using `EVENT_ONLY`

util/opentelemetry-util-genai/pyproject.toml

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ classifiers = [
2626
"Programming Language :: Python :: 3.14",
2727
]
2828
dependencies = [
29-
"opentelemetry-instrumentation ~= 0.58b0",
30-
"opentelemetry-semantic-conventions ~= 0.58b0",
31-
"opentelemetry-api>=1.31.0",
29+
"opentelemetry-instrumentation ~= 0.60b0",
30+
"opentelemetry-semantic-conventions ~= 0.60b0",
31+
"opentelemetry-api>=1.39",
3232
]
3333

3434
[project.entry-points.opentelemetry_genai_completion_hook]
@@ -46,10 +46,7 @@ Repository = "https://github.com/open-telemetry/opentelemetry-python-contrib"
4646
path = "src/opentelemetry/util/genai/version.py"
4747

4848
[tool.hatch.build.targets.sdist]
49-
include = [
50-
"/src",
51-
"/tests",
52-
]
49+
include = ["/src", "/tests"]
5350

5451
[tool.hatch.build.targets.wheel]
5552
packages = ["src/opentelemetry"]

0 commit comments

Comments
 (0)