From e34368d0e099448df761429a6a8d8b26a196d798 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 27 Aug 2025 22:08:53 +0000 Subject: [PATCH 1/7] fix(deps): update dependency io.opentelemetry.semconv:opentelemetry-semconv to v1.37.0 --- dependencyManagement/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dependencyManagement/build.gradle.kts b/dependencyManagement/build.gradle.kts index fcb1a8626bf3..2fda94046929 100644 --- a/dependencyManagement/build.gradle.kts +++ b/dependencyManagement/build.gradle.kts @@ -43,7 +43,7 @@ val asmVersion = "9.8" val jmhVersion = "1.37" val mockitoVersion = "4.11.0" val slf4jVersion = "2.0.17" -val semConvVersion = "1.36.0" +val semConvVersion = "1.37.0" val semConvAlphaVersion = semConvVersion.replaceFirst("(-rc.*)?$".toRegex(), "-alpha$1") val CORE_DEPENDENCIES = listOf( From 6f34b50068561613ee868e70e150c8e25a53e782 Mon Sep 17 00:00:00 2001 From: otelbot <197425009+otelbot@users.noreply.github.com> Date: Wed, 27 Aug 2025 22:14:09 +0000 Subject: [PATCH 2/7] ./gradlew generateLicenseReport --- licenses/licenses.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/licenses/licenses.md b/licenses/licenses.md index b0843b99068e..5a4b7dfe1d5d 100644 --- a/licenses/licenses.md +++ b/licenses/licenses.md @@ -181,11 +181,11 @@ > - **POM Project URL**: [https://github.com/open-telemetry/opentelemetry-java-contrib](https://github.com/open-telemetry/opentelemetry-java-contrib) > - **POM License**: Apache License, Version 2.0 - [https://www.apache.org/licenses/LICENSE-2.0](https://www.apache.org/licenses/LICENSE-2.0) -**42** **Group:** `io.opentelemetry.semconv` **Name:** `opentelemetry-semconv` **Version:** `1.36.0` +**42** **Group:** `io.opentelemetry.semconv` **Name:** `opentelemetry-semconv` **Version:** `1.37.0` > - **POM Project URL**: [https://github.com/open-telemetry/semantic-conventions-java](https://github.com/open-telemetry/semantic-conventions-java) > - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0) -**43** **Group:** `io.opentelemetry.semconv` **Name:** `opentelemetry-semconv-incubating` **Version:** `1.36.0-alpha` +**43** **Group:** `io.opentelemetry.semconv` **Name:** `opentelemetry-semconv-incubating` **Version:** `1.37.0-alpha` > - **POM Project URL**: [https://github.com/open-telemetry/semantic-conventions-java](https://github.com/open-telemetry/semantic-conventions-java) > - **POM License**: Apache License, Version 2.0 - [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0) From 3ba8d29f551c6740f47bac76d4c95e32d803ff90 Mon Sep 17 00:00:00 2001 From: Jason Plumb Date: Wed, 27 Aug 2025 17:00:03 -0700 Subject: [PATCH 3/7] fix zos, everyone's favorite operating system! --- .../opentelemetry/instrumentation/resources/OsResourceTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/OsResourceTest.java b/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/OsResourceTest.java index 27bbcf293500..02f1127621b1 100644 --- a/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/OsResourceTest.java +++ b/instrumentation/resources/library/src/test/java/io/opentelemetry/instrumentation/resources/OsResourceTest.java @@ -121,7 +121,7 @@ void zos() { Resource resource = OsResource.buildResource(); assertThat(resource.getSchemaUrl()).isEqualTo(SchemaUrls.V1_24_0); assertThat(resource.getAttribute(OsIncubatingAttributes.OS_TYPE)) - .isEqualTo(OsIncubatingAttributes.OsTypeIncubatingValues.Z_OS); + .isEqualTo(OsIncubatingAttributes.OsTypeIncubatingValues.ZOS); assertThat(resource.getAttribute(OsIncubatingAttributes.OS_DESCRIPTION)).isNotEmpty(); } From 67eb6130c14423f553620f69cacdc7901928012d Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Thu, 28 Aug 2025 09:52:40 +0300 Subject: [PATCH 4/7] fix genai --- .../v2_2/AbstractAws2BedrockRuntimeTest.java | 380 +++++++++--------- .../openai/v1_1/AbstractChatTest.java | 181 +++++---- .../openai/v1_1/AbstractEmbeddingsTest.java | 20 +- 3 files changed, 307 insertions(+), 274 deletions(-) diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2BedrockRuntimeTest.java b/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2BedrockRuntimeTest.java index 3f5d12d057bb..33fa42a32dc9 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2BedrockRuntimeTest.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2BedrockRuntimeTest.java @@ -8,17 +8,17 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_OPERATION_NAME; +import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_PROVIDER_NAME; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_REQUEST_MAX_TOKENS; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_REQUEST_MODEL; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_REQUEST_STOP_SEQUENCES; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_REQUEST_TEMPERATURE; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_REQUEST_TOP_P; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_RESPONSE_FINISH_REASONS; -import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_SYSTEM; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_TOKEN_TYPE; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_USAGE_INPUT_TOKENS; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_USAGE_OUTPUT_TOKENS; -import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GenAiSystemIncubatingValues.AWS_BEDROCK; +import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GenAiProviderNameIncubatingValues.AWS_BEDROCK; import static java.util.Arrays.asList; import static java.util.Collections.singletonList; import static org.assertj.core.api.Assertions.assertThat; @@ -137,7 +137,7 @@ void testConverseBasic() { span.hasName("chat amazon.titan-text-lite-v1") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -163,7 +163,7 @@ void testConverseBasic() { .hasSum(8) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -178,11 +178,11 @@ void testConverseBasic() { .hasSum(14) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -200,7 +200,7 @@ void testConverseBasic() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -213,13 +213,14 @@ void testConverseBasic() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx) .hasBody(Value.of(KeyValue.of("content", Value.of("Say this is a test")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx) .hasBody( Value.of( @@ -265,7 +266,7 @@ void testConverseOptions() { span.hasName("chat amazon.titan-text-lite-v1") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -297,7 +298,7 @@ void testConverseOptions() { .hasSum(8) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -312,11 +313,11 @@ void testConverseOptions() { .hasSum(10) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -334,7 +335,7 @@ void testConverseOptions() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -347,13 +348,14 @@ void testConverseOptions() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx) .hasBody(Value.of(KeyValue.of("content", Value.of("Say this is a test")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx) .hasBody( Value.of( @@ -414,7 +416,7 @@ void testConverseToolCall() { span.hasName("chat amazon.nova-micro-v1:0") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -440,7 +442,7 @@ void testConverseToolCall() { .hasSum(415) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -455,11 +457,11 @@ void testConverseToolCall() { .hasSum(162) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -477,7 +479,7 @@ void testConverseToolCall() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -490,7 +492,7 @@ void testConverseToolCall() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx0) .hasBody( @@ -501,7 +503,8 @@ void testConverseToolCall() { "What is the weather in Seattle and San Francisco today?")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx0) .hasBody( Value.of( @@ -581,7 +584,7 @@ void testConverseToolCall() { span.hasName("chat amazon.nova-micro-v1:0") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -607,7 +610,7 @@ void testConverseToolCall() { .hasSum(554) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -622,11 +625,11 @@ void testConverseToolCall() { .hasSum(57) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -644,7 +647,7 @@ void testConverseToolCall() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -657,7 +660,7 @@ void testConverseToolCall() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -668,7 +671,7 @@ void testConverseToolCall() { "What is the weather in Seattle and San Francisco today?")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.assistant.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -695,7 +698,7 @@ void testConverseToolCall() { " The User has asked for the current weather in two locations: Seattle and San Francisco. To provide the requested information, I will use the \"get_current_weather\" tool for each location separately. \n")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -705,7 +708,7 @@ void testConverseToolCall() { "content", Value.of("{\"weather\":\"50 degrees and raining\"}")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -715,7 +718,8 @@ void testConverseToolCall() { "content", Value.of("{\"weather\":\"70 degrees and sunny\"}")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx1) .hasBody( Value.of( @@ -829,7 +833,7 @@ void testConverseToolCallStream() throws InterruptedException, ExecutionExceptio span.hasName("chat amazon.nova-micro-v1:0") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -855,7 +859,7 @@ void testConverseToolCallStream() throws InterruptedException, ExecutionExceptio .hasSum(415) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -870,11 +874,11 @@ void testConverseToolCallStream() throws InterruptedException, ExecutionExceptio .hasSum(162) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -892,7 +896,7 @@ void testConverseToolCallStream() throws InterruptedException, ExecutionExceptio point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -905,7 +909,7 @@ void testConverseToolCallStream() throws InterruptedException, ExecutionExceptio .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx0) .hasBody( @@ -916,7 +920,8 @@ void testConverseToolCallStream() throws InterruptedException, ExecutionExceptio "What is the weather in Seattle and San Francisco today?")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx0) .hasBody( Value.of( @@ -1015,7 +1020,7 @@ void testConverseToolCallStream() throws InterruptedException, ExecutionExceptio span.hasName("chat amazon.nova-micro-v1:0") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -1041,7 +1046,7 @@ void testConverseToolCallStream() throws InterruptedException, ExecutionExceptio .hasSum(554) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -1056,11 +1061,11 @@ void testConverseToolCallStream() throws InterruptedException, ExecutionExceptio .hasSum(59) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -1078,7 +1083,7 @@ void testConverseToolCallStream() throws InterruptedException, ExecutionExceptio point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -1091,7 +1096,7 @@ void testConverseToolCallStream() throws InterruptedException, ExecutionExceptio .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -1102,7 +1107,7 @@ void testConverseToolCallStream() throws InterruptedException, ExecutionExceptio "What is the weather in Seattle and San Francisco today?")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.assistant.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -1129,7 +1134,7 @@ void testConverseToolCallStream() throws InterruptedException, ExecutionExceptio " The User has asked for the current weather in two locations: Seattle and San Francisco. To provide the requested information, I will use the \"get_current_weather\" tool for each location separately. \n")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -1139,7 +1144,7 @@ void testConverseToolCallStream() throws InterruptedException, ExecutionExceptio "content", Value.of("{\"weather\":\"50 degrees and raining\"}")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -1149,7 +1154,8 @@ void testConverseToolCallStream() throws InterruptedException, ExecutionExceptio "content", Value.of("{\"weather\":\"70 degrees and sunny\"}")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx1) .hasBody( Value.of( @@ -1242,10 +1248,7 @@ void testConverseStream() throws InterruptedException, ExecutionException { span.hasName("chat amazon.titan-text-lite-v1") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo( - GEN_AI_SYSTEM, - GenAiIncubatingAttributes.GenAiSystemIncubatingValues - .AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -1271,7 +1274,7 @@ void testConverseStream() throws InterruptedException, ExecutionException { .hasSum(8) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -1286,11 +1289,11 @@ void testConverseStream() throws InterruptedException, ExecutionException { .hasSum(10) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -1308,7 +1311,7 @@ void testConverseStream() throws InterruptedException, ExecutionException { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -1321,13 +1324,14 @@ void testConverseStream() throws InterruptedException, ExecutionException { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx) .hasBody(Value.of(KeyValue.of("content", Value.of("Say this is a test")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx) .hasBody( Value.of( @@ -1388,10 +1392,7 @@ void testConverseStreamOptions() throws InterruptedException, ExecutionException span.hasName("chat amazon.titan-text-lite-v1") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo( - GEN_AI_SYSTEM, - GenAiIncubatingAttributes.GenAiSystemIncubatingValues - .AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -1413,13 +1414,14 @@ void testConverseStreamOptions() throws InterruptedException, ExecutionException .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx) .hasBody(Value.of(KeyValue.of("content", Value.of("Say this is a test")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx) .hasBody( Value.of( @@ -1473,10 +1475,10 @@ void testInvokeModelAmazonTitan() { trace -> trace.hasSpansSatisfyingExactly( span -> - span.hasName("text_completion amazon.titan-text-lite-v1") + span.hasName("text_OUTPUT amazon.titan-text-lite-v1") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -1508,7 +1510,7 @@ void testInvokeModelAmazonTitan() { .hasSum(5) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -1524,11 +1526,11 @@ void testInvokeModelAmazonTitan() { .hasSum(10) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -1547,7 +1549,7 @@ void testInvokeModelAmazonTitan() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -1561,13 +1563,14 @@ void testInvokeModelAmazonTitan() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx) .hasBody(Value.of(KeyValue.of("content", Value.of("Say this is a test")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx) .hasBody( Value.of( @@ -1637,10 +1640,10 @@ void testInvokeModelWithResponseStreamAmazonTitan() trace -> trace.hasSpansSatisfyingExactly( span -> - span.hasName("text_completion amazon.titan-text-lite-v1") + span.hasName("text_OUTPUT amazon.titan-text-lite-v1") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -1672,7 +1675,7 @@ void testInvokeModelWithResponseStreamAmazonTitan() .hasSum(7) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -1688,11 +1691,11 @@ void testInvokeModelWithResponseStreamAmazonTitan() .hasSum(100) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -1711,7 +1714,7 @@ void testInvokeModelWithResponseStreamAmazonTitan() point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -1725,7 +1728,7 @@ void testInvokeModelWithResponseStreamAmazonTitan() .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx) .hasBody( @@ -1734,7 +1737,8 @@ void testInvokeModelWithResponseStreamAmazonTitan() "content", Value.of("List out every country in the world")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx) .hasBody( Value.of( @@ -1813,7 +1817,7 @@ void testInvokeModelAmazonNova() { span.hasName("chat amazon.nova-micro-v1:0") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -1845,7 +1849,7 @@ void testInvokeModelAmazonNova() { .hasSum(5) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -1860,11 +1864,11 @@ void testInvokeModelAmazonNova() { .hasSum(10) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -1882,7 +1886,7 @@ void testInvokeModelAmazonNova() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -1895,13 +1899,14 @@ void testInvokeModelAmazonNova() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx) .hasBody(Value.of(KeyValue.of("content", Value.of("Say this is a test")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx) .hasBody( Value.of( @@ -1994,7 +1999,7 @@ void testInvokeModelWithResponseStreamAmazonNova() span.hasName("chat amazon.nova-micro-v1:0") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -2026,7 +2031,7 @@ void testInvokeModelWithResponseStreamAmazonNova() .hasSum(7) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -2041,11 +2046,11 @@ void testInvokeModelWithResponseStreamAmazonNova() .hasSum(100) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -2063,7 +2068,7 @@ void testInvokeModelWithResponseStreamAmazonNova() point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -2076,7 +2081,7 @@ void testInvokeModelWithResponseStreamAmazonNova() .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx) .hasBody( @@ -2085,7 +2090,8 @@ void testInvokeModelWithResponseStreamAmazonNova() "content", Value.of("List out every country in the world")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx) .hasBody( Value.of( @@ -2151,7 +2157,7 @@ void testInvokeModelAnthropicClaude() { span.hasName("chat anthropic.claude-v2") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -2183,7 +2189,7 @@ void testInvokeModelAnthropicClaude() { .hasSum(14) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -2198,11 +2204,11 @@ void testInvokeModelAnthropicClaude() { .hasSum(10) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -2220,7 +2226,7 @@ void testInvokeModelAnthropicClaude() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -2233,13 +2239,14 @@ void testInvokeModelAnthropicClaude() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx) .hasBody(Value.of(KeyValue.of("content", Value.of("Say this is a test")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx) .hasBody( Value.of( @@ -2291,7 +2298,7 @@ void testInvokeModelMetaLlama() { span.hasName("chat meta.llama3-3-70b-instruct-v1:0") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -2350,7 +2357,7 @@ void testInvokeModelCohereCommandR() { span.hasName("chat cohere.command-r-v1:0") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -2418,7 +2425,7 @@ void testInvokeModelCohereCommand() { span.hasName("chat cohere.command-light-text-v14") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -2479,7 +2486,7 @@ void testInvokeModelMistralMistral() { span.hasName("chat mistral.mistral-7b-instruct-v0:2") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -2571,7 +2578,7 @@ void testInvokeModelWithResponseStreamAnthropicClaude() span.hasName("chat anthropic.claude-v2") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -2603,7 +2610,7 @@ void testInvokeModelWithResponseStreamAnthropicClaude() .hasSum(16) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -2618,11 +2625,11 @@ void testInvokeModelWithResponseStreamAnthropicClaude() .hasSum(10) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -2640,7 +2647,7 @@ void testInvokeModelWithResponseStreamAnthropicClaude() point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -2653,7 +2660,7 @@ void testInvokeModelWithResponseStreamAnthropicClaude() .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx) .hasBody( @@ -2662,7 +2669,8 @@ void testInvokeModelWithResponseStreamAnthropicClaude() "content", Value.of("List out every country in the world")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx) .hasBody( Value.of( @@ -2786,7 +2794,7 @@ void testInvokeModelToolCallAmazonNova() { span.hasName("chat amazon.nova-micro-v1:0") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -2812,7 +2820,7 @@ void testInvokeModelToolCallAmazonNova() { .hasSum(416) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -2827,11 +2835,11 @@ void testInvokeModelToolCallAmazonNova() { .hasSum(166) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -2849,7 +2857,7 @@ void testInvokeModelToolCallAmazonNova() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -2861,7 +2869,7 @@ void testInvokeModelToolCallAmazonNova() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx0) .hasBody( @@ -2872,7 +2880,8 @@ void testInvokeModelToolCallAmazonNova() { "What is the weather in Seattle and San Francisco today?")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx0) .hasBody( Value.of( @@ -2981,7 +2990,7 @@ void testInvokeModelToolCallAmazonNova() { span.hasName("chat amazon.nova-micro-v1:0") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -3007,7 +3016,7 @@ void testInvokeModelToolCallAmazonNova() { .hasSum(559) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -3022,11 +3031,11 @@ void testInvokeModelToolCallAmazonNova() { .hasSum(59) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -3044,7 +3053,7 @@ void testInvokeModelToolCallAmazonNova() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -3057,7 +3066,7 @@ void testInvokeModelToolCallAmazonNova() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -3068,7 +3077,7 @@ void testInvokeModelToolCallAmazonNova() { "What is the weather in Seattle and San Francisco today?")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.assistant.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -3095,7 +3104,7 @@ void testInvokeModelToolCallAmazonNova() { " To provide the current weather in both Seattle and San Francisco, I will use the \"get_current_weather\" tool twice, once for each city. I will need to specify the \"location\" argument for each call.\n")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -3105,7 +3114,7 @@ void testInvokeModelToolCallAmazonNova() { "content", Value.of("{\"weather\":\"50 degrees and raining\"}")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -3115,7 +3124,8 @@ void testInvokeModelToolCallAmazonNova() { "content", Value.of("{\"weather\":\"70 degrees and sunny\"}")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx1) .hasBody( Value.of( @@ -3297,7 +3307,7 @@ public void accept(PayloadPart chunk) { span.hasName("chat amazon.nova-micro-v1:0") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -3323,7 +3333,7 @@ public void accept(PayloadPart chunk) { .hasSum(416) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -3338,11 +3348,11 @@ public void accept(PayloadPart chunk) { .hasSum(165) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -3360,7 +3370,7 @@ public void accept(PayloadPart chunk) { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -3372,7 +3382,7 @@ public void accept(PayloadPart chunk) { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx0) .hasBody( @@ -3383,7 +3393,8 @@ public void accept(PayloadPart chunk) { "What is the weather in Seattle and San Francisco today?")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx0) .hasBody( Value.of( @@ -3535,7 +3546,7 @@ public void accept(PayloadPart chunk) { span.hasName("chat amazon.nova-micro-v1:0") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -3561,7 +3572,7 @@ public void accept(PayloadPart chunk) { .hasSum(558) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -3576,11 +3587,11 @@ public void accept(PayloadPart chunk) { .hasSum(58) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -3598,7 +3609,7 @@ public void accept(PayloadPart chunk) { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -3611,7 +3622,7 @@ public void accept(PayloadPart chunk) { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -3622,7 +3633,7 @@ public void accept(PayloadPart chunk) { "What is the weather in Seattle and San Francisco today?")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.assistant.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -3649,7 +3660,7 @@ public void accept(PayloadPart chunk) { " To provide the current weather in Seattle and San Francisco today, I will need to use the \"get_current_weather\" tool twice, once for each city. I will need to specify the location for each call.\n")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -3659,7 +3670,7 @@ public void accept(PayloadPart chunk) { "content", Value.of("{\"weather\":\"50 degrees and raining\"}")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -3669,7 +3680,8 @@ public void accept(PayloadPart chunk) { "content", Value.of("{\"weather\":\"70 degrees and sunny\"}")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx1) .hasBody( Value.of( @@ -3783,7 +3795,7 @@ void testInvokeModelToolCallAnthropicClaude() { span.hasName("chat anthropic.claude-3-5-sonnet-20240620-v1:0") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -3809,7 +3821,7 @@ void testInvokeModelToolCallAnthropicClaude() { .hasSum(380) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -3824,11 +3836,11 @@ void testInvokeModelToolCallAnthropicClaude() { .hasSum(133) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -3846,7 +3858,7 @@ void testInvokeModelToolCallAnthropicClaude() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -3858,7 +3870,7 @@ void testInvokeModelToolCallAnthropicClaude() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx0) .hasBody( @@ -3869,7 +3881,8 @@ void testInvokeModelToolCallAnthropicClaude() { "What is the weather in Seattle and San Francisco today?")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx0) .hasBody( Value.of( @@ -3956,7 +3969,7 @@ void testInvokeModelToolCallAnthropicClaude() { span.hasName("chat anthropic.claude-3-5-sonnet-20240620-v1:0") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -3982,7 +3995,7 @@ void testInvokeModelToolCallAnthropicClaude() { .hasSum(590) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -3997,11 +4010,11 @@ void testInvokeModelToolCallAnthropicClaude() { .hasSum(132) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -4019,7 +4032,7 @@ void testInvokeModelToolCallAnthropicClaude() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -4032,7 +4045,7 @@ void testInvokeModelToolCallAnthropicClaude() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -4043,7 +4056,7 @@ void testInvokeModelToolCallAnthropicClaude() { "What is the weather in Seattle and San Francisco today?")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.assistant.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -4070,7 +4083,7 @@ void testInvokeModelToolCallAnthropicClaude() { "To answer your question about the weather in Seattle and San Francisco today, I'll need to use the get_current_weather function for both cities. Let me do that for you now.")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -4079,7 +4092,7 @@ void testInvokeModelToolCallAnthropicClaude() { KeyValue.of("content", Value.of("\"50 degrees and raining\"")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -4088,7 +4101,8 @@ void testInvokeModelToolCallAnthropicClaude() { KeyValue.of("content", Value.of("\"70 degrees and sunny\"")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx1) .hasBody( Value.of( @@ -4278,7 +4292,7 @@ public void accept(PayloadPart chunk) { span.hasName("chat anthropic.claude-3-5-sonnet-20240620-v1:0") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -4304,7 +4318,7 @@ public void accept(PayloadPart chunk) { .hasSum(380) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -4319,11 +4333,11 @@ public void accept(PayloadPart chunk) { .hasSum(144) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -4341,7 +4355,7 @@ public void accept(PayloadPart chunk) { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -4353,7 +4367,7 @@ public void accept(PayloadPart chunk) { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx0) .hasBody( @@ -4364,7 +4378,8 @@ public void accept(PayloadPart chunk) { "What is the weather in Seattle and San Francisco today?")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx0) .hasBody( Value.of( @@ -4491,7 +4506,7 @@ public void accept(PayloadPart chunk) { span.hasName("chat anthropic.claude-3-5-sonnet-20240620-v1:0") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -4517,7 +4532,7 @@ public void accept(PayloadPart chunk) { .hasSum(601) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -4532,11 +4547,11 @@ public void accept(PayloadPart chunk) { .hasSum(145) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -4554,7 +4569,7 @@ public void accept(PayloadPart chunk) { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -4567,7 +4582,7 @@ public void accept(PayloadPart chunk) { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -4578,7 +4593,7 @@ public void accept(PayloadPart chunk) { "What is the weather in Seattle and San Francisco today?")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.assistant.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -4605,7 +4620,7 @@ public void accept(PayloadPart chunk) { "To get the current weather for both Seattle and San Francisco, I'll need to use the get_current_weather function for each city. I'll make two separate calls within the same function calls block since these requests are independent of each other.")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -4614,7 +4629,7 @@ public void accept(PayloadPart chunk) { KeyValue.of("content", Value.of("\"50 degrees and raining\"")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -4623,7 +4638,8 @@ public void accept(PayloadPart chunk) { KeyValue.of("content", Value.of("\"70 degrees and sunny\"")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx1) .hasBody( Value.of( diff --git a/instrumentation/openai/openai-java-1.1/testing/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/AbstractChatTest.java b/instrumentation/openai/openai-java-1.1/testing/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/AbstractChatTest.java index 12369e4ccee2..315e6c62d753 100644 --- a/instrumentation/openai/openai-java-1.1/testing/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/AbstractChatTest.java +++ b/instrumentation/openai/openai-java-1.1/testing/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/AbstractChatTest.java @@ -8,6 +8,7 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_OPERATION_NAME; +import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_PROVIDER_NAME; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_REQUEST_FREQUENCY_PENALTY; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_REQUEST_MAX_TOKENS; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_REQUEST_MODEL; @@ -19,14 +20,13 @@ import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_RESPONSE_FINISH_REASONS; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_RESPONSE_ID; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_RESPONSE_MODEL; -import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_SYSTEM; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_TOKEN_TYPE; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_USAGE_INPUT_TOKENS; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_USAGE_OUTPUT_TOKENS; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues.CHAT; -import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GenAiSystemIncubatingValues.OPENAI; -import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GenAiTokenTypeIncubatingValues.COMPLETION; +import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GenAiProviderNameIncubatingValues.OPENAI; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GenAiTokenTypeIncubatingValues.INPUT; +import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GenAiTokenTypeIncubatingValues.OUTPUT; import static java.util.Collections.emptyList; import static java.util.Collections.singletonList; import static org.assertj.core.api.Assertions.assertThat; @@ -175,7 +175,7 @@ void basic() { maybeWithTransportSpan( span -> span.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), satisfies(GEN_AI_RESPONSE_ID, id -> id.startsWith("chatcmpl-")), @@ -199,7 +199,7 @@ void basic() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), + equalTo(GEN_AI_PROVIDER_NAME, "openai"), equalTo(GEN_AI_OPERATION_NAME, "chat"), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( @@ -214,7 +214,7 @@ void basic() { point .hasSum(22.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), + equalTo(GEN_AI_PROVIDER_NAME, "openai"), equalTo(GEN_AI_OPERATION_NAME, "chat"), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( @@ -224,12 +224,12 @@ void basic() { point .hasSum(2.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), + equalTo(GEN_AI_PROVIDER_NAME, "openai"), equalTo(GEN_AI_OPERATION_NAME, "chat"), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( GEN_AI_RESPONSE_MODEL, TEST_CHAT_RESPONSE_MODEL), - equalTo(GEN_AI_TOKEN_TYPE, COMPLETION))))); + equalTo(GEN_AI_TOKEN_TYPE, OUTPUT))))); SpanContext spanCtx = getTesting().waitForTraces(1).get(0).get(0).getSpanContext(); @@ -237,12 +237,13 @@ void basic() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.user.message")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx) .hasBody(Value.of(KeyValue.of("content", Value.of(TEST_CHAT_INPUT)))), log -> { log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx) .hasBody( Value.of( @@ -275,7 +276,7 @@ void testDeveloperMessage() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.system.message")) .hasSpanContext(spanCtx) .hasBody( @@ -287,12 +288,13 @@ void testDeveloperMessage() { "You are an assistant which just answers every query with tomato")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.user.message")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx) .hasBody(Value.of(KeyValue.of("content", Value.of("Say something")))), log -> { log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx) .hasBody( Value.of( @@ -330,7 +332,7 @@ void allTheClientOptions() { maybeWithTransportSpan( span -> span.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo(GEN_AI_REQUEST_SEED, 100L), @@ -361,7 +363,7 @@ void allTheClientOptions() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), + equalTo(GEN_AI_PROVIDER_NAME, "openai"), equalTo(GEN_AI_OPERATION_NAME, "chat"), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( @@ -376,7 +378,7 @@ void allTheClientOptions() { point .hasSum(22.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), + equalTo(GEN_AI_PROVIDER_NAME, "openai"), equalTo(GEN_AI_OPERATION_NAME, "chat"), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( @@ -386,12 +388,12 @@ void allTheClientOptions() { point .hasSum(3.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), + equalTo(GEN_AI_PROVIDER_NAME, "openai"), equalTo(GEN_AI_OPERATION_NAME, "chat"), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( GEN_AI_RESPONSE_MODEL, TEST_CHAT_RESPONSE_MODEL), - equalTo(GEN_AI_TOKEN_TYPE, COMPLETION))))); + equalTo(GEN_AI_TOKEN_TYPE, OUTPUT))))); SpanContext spanCtx = getTesting().waitForTraces(1).get(0).get(0).getSpanContext(); @@ -399,12 +401,13 @@ void allTheClientOptions() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.user.message")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx) .hasBody(Value.of(KeyValue.of("content", Value.of(TEST_CHAT_INPUT)))), log -> { log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx) .hasBody( Value.of( @@ -437,7 +440,7 @@ void multipleChoices() { maybeWithTransportSpan( span -> span.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), satisfies(GEN_AI_RESPONSE_ID, id -> id.startsWith("chatcmpl-")), @@ -461,7 +464,7 @@ void multipleChoices() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), + equalTo(GEN_AI_PROVIDER_NAME, "openai"), equalTo(GEN_AI_OPERATION_NAME, "chat"), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( @@ -476,7 +479,7 @@ void multipleChoices() { point .hasSum(22.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), + equalTo(GEN_AI_PROVIDER_NAME, "openai"), equalTo(GEN_AI_OPERATION_NAME, "chat"), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( @@ -486,12 +489,12 @@ void multipleChoices() { point .hasSum(7.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), + equalTo(GEN_AI_PROVIDER_NAME, "openai"), equalTo(GEN_AI_OPERATION_NAME, "chat"), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( GEN_AI_RESPONSE_MODEL, TEST_CHAT_RESPONSE_MODEL), - equalTo(GEN_AI_TOKEN_TYPE, COMPLETION))))); + equalTo(GEN_AI_TOKEN_TYPE, OUTPUT))))); SpanContext spanCtx = getTesting().waitForTraces(1).get(0).get(0).getSpanContext(); @@ -499,12 +502,13 @@ void multipleChoices() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.user.message")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx) .hasBody(Value.of(KeyValue.of("content", Value.of(TEST_CHAT_INPUT)))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx) .hasBody( Value.of( @@ -514,7 +518,7 @@ void multipleChoices() { "message", Value.of(KeyValue.of("content", Value.of(content1)))))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx) .hasBody( Value.of( @@ -567,7 +571,7 @@ void toolCalls() { maybeWithTransportSpan( span -> span.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), satisfies(GEN_AI_RESPONSE_ID, id -> id.startsWith("chatcmpl-")), @@ -591,7 +595,7 @@ void toolCalls() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), + equalTo(GEN_AI_PROVIDER_NAME, "openai"), equalTo(GEN_AI_OPERATION_NAME, "chat"), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( @@ -606,7 +610,7 @@ void toolCalls() { point .hasSum(67) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), + equalTo(GEN_AI_PROVIDER_NAME, "openai"), equalTo(GEN_AI_OPERATION_NAME, "chat"), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( @@ -616,12 +620,12 @@ void toolCalls() { point .hasSum(46.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), + equalTo(GEN_AI_PROVIDER_NAME, "openai"), equalTo(GEN_AI_OPERATION_NAME, "chat"), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( GEN_AI_RESPONSE_MODEL, TEST_CHAT_RESPONSE_MODEL), - equalTo(GEN_AI_TOKEN_TYPE, COMPLETION))))); + equalTo(GEN_AI_TOKEN_TYPE, OUTPUT))))); SpanContext spanCtx = getTesting().waitForTraces(1).get(0).get(0).getSpanContext(); @@ -629,7 +633,7 @@ void toolCalls() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.system.message")) .hasSpanContext(spanCtx) .hasBody( @@ -640,7 +644,8 @@ void toolCalls() { "You are a helpful assistant providing weather updates.")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.user.message")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx) .hasBody( Value.of( @@ -649,7 +654,7 @@ void toolCalls() { Value.of("What is the weather in New York City and London?")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx) .hasBody( Value.of( @@ -714,7 +719,7 @@ void toolCalls() { maybeWithTransportSpan( span -> span.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), satisfies(GEN_AI_RESPONSE_ID, id -> id.startsWith("chatcmpl-")), @@ -738,7 +743,7 @@ void toolCalls() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), + equalTo(GEN_AI_PROVIDER_NAME, "openai"), equalTo(GEN_AI_OPERATION_NAME, "chat"), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( @@ -753,7 +758,7 @@ void toolCalls() { point .hasSum(99) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), + equalTo(GEN_AI_PROVIDER_NAME, "openai"), equalTo(GEN_AI_OPERATION_NAME, "chat"), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( @@ -763,12 +768,12 @@ void toolCalls() { point .hasSum(25.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), + equalTo(GEN_AI_PROVIDER_NAME, "openai"), equalTo(GEN_AI_OPERATION_NAME, "chat"), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( GEN_AI_RESPONSE_MODEL, TEST_CHAT_RESPONSE_MODEL), - equalTo(GEN_AI_TOKEN_TYPE, COMPLETION))))); + equalTo(GEN_AI_TOKEN_TYPE, OUTPUT))))); SpanContext spanCtx1 = getTesting().waitForTraces(1).get(0).get(0).getSpanContext(); @@ -776,7 +781,7 @@ void toolCalls() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.system.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -787,7 +792,8 @@ void toolCalls() { "You are a helpful assistant providing weather updates.")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.user.message")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx1) .hasBody( Value.of( @@ -796,7 +802,7 @@ void toolCalls() { Value.of("What is the weather in New York City and London?")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.assistant.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -827,7 +833,8 @@ void toolCalls() { KeyValue.of("type", Value.of("function"))))))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.tool.message")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody( Value.of( @@ -835,7 +842,8 @@ void toolCalls() { KeyValue.of("content", Value.of("25 degrees and sunny")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.tool.message")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody( Value.of( @@ -843,7 +851,7 @@ void toolCalls() { KeyValue.of("content", Value.of("15 degrees and raining")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx1) .hasBody( Value.of( @@ -888,7 +896,7 @@ void connectionError() { span -> span.hasException(thrown) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL))))); @@ -905,7 +913,7 @@ void connectionError() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), + equalTo(GEN_AI_PROVIDER_NAME, "openai"), equalTo(GEN_AI_OPERATION_NAME, "chat"), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL))))); @@ -915,7 +923,8 @@ void connectionError() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.user.message")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx) .hasBody(Value.of(KeyValue.of("content", Value.of(TEST_CHAT_INPUT))))); } @@ -953,7 +962,7 @@ void stream() { maybeWithTransportSpan( span -> span.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), satisfies(GEN_AI_RESPONSE_ID, id -> id.startsWith("chatcmpl-")), @@ -975,7 +984,7 @@ void stream() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), + equalTo(GEN_AI_PROVIDER_NAME, "openai"), equalTo(GEN_AI_OPERATION_NAME, "chat"), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( @@ -988,12 +997,13 @@ void stream() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.user.message")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx) .hasBody(Value.of(KeyValue.of("content", Value.of(TEST_CHAT_INPUT)))), log -> { log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx) .hasBody( Value.of( @@ -1038,7 +1048,7 @@ void streamIncludeUsage() { maybeWithTransportSpan( span -> span.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), satisfies(GEN_AI_RESPONSE_ID, id -> id.startsWith("chatcmpl-")), @@ -1062,7 +1072,7 @@ void streamIncludeUsage() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), + equalTo(GEN_AI_PROVIDER_NAME, "openai"), equalTo(GEN_AI_OPERATION_NAME, "chat"), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( @@ -1077,7 +1087,7 @@ void streamIncludeUsage() { point .hasSum(22.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), + equalTo(GEN_AI_PROVIDER_NAME, "openai"), equalTo(GEN_AI_OPERATION_NAME, "chat"), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( @@ -1087,12 +1097,12 @@ void streamIncludeUsage() { point .hasSum(3.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), + equalTo(GEN_AI_PROVIDER_NAME, "openai"), equalTo(GEN_AI_OPERATION_NAME, "chat"), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( GEN_AI_RESPONSE_MODEL, TEST_CHAT_RESPONSE_MODEL), - equalTo(GEN_AI_TOKEN_TYPE, COMPLETION))))); + equalTo(GEN_AI_TOKEN_TYPE, OUTPUT))))); SpanContext spanCtx = getTesting().waitForTraces(1).get(0).get(0).getSpanContext(); @@ -1100,12 +1110,13 @@ void streamIncludeUsage() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.user.message")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx) .hasBody(Value.of(KeyValue.of("content", Value.of(TEST_CHAT_INPUT)))), log -> { log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx) .hasBody( Value.of( @@ -1158,7 +1169,7 @@ void streamMultipleChoices() { maybeWithTransportSpan( span -> span.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), satisfies(GEN_AI_RESPONSE_ID, id -> id.startsWith("chatcmpl-")), @@ -1180,7 +1191,7 @@ void streamMultipleChoices() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), + equalTo(GEN_AI_PROVIDER_NAME, "openai"), equalTo(GEN_AI_OPERATION_NAME, "chat"), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( @@ -1193,12 +1204,13 @@ void streamMultipleChoices() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.user.message")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx) .hasBody(Value.of(KeyValue.of("content", Value.of(TEST_CHAT_INPUT)))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx) .hasBody( Value.of( @@ -1208,7 +1220,7 @@ void streamMultipleChoices() { "message", Value.of(KeyValue.of("content", Value.of(content1)))))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx) .hasBody( Value.of( @@ -1309,7 +1321,7 @@ void streamToolCalls() { maybeWithTransportSpan( span -> span.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), satisfies(GEN_AI_RESPONSE_ID, id -> id.startsWith("chatcmpl-")), @@ -1331,7 +1343,7 @@ void streamToolCalls() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), + equalTo(GEN_AI_PROVIDER_NAME, "openai"), equalTo(GEN_AI_OPERATION_NAME, "chat"), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( @@ -1344,7 +1356,7 @@ void streamToolCalls() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.system.message")) .hasSpanContext(spanCtx) .hasBody( @@ -1355,7 +1367,8 @@ void streamToolCalls() { "You are a helpful assistant providing weather updates.")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.user.message")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx) .hasBody( Value.of( @@ -1364,7 +1377,7 @@ void streamToolCalls() { Value.of("What is the weather in New York City and London?")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx) .hasBody( Value.of( @@ -1438,7 +1451,7 @@ void streamToolCalls() { maybeWithTransportSpan( span -> span.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), satisfies(GEN_AI_RESPONSE_ID, id -> id.startsWith("chatcmpl-")), @@ -1460,7 +1473,7 @@ void streamToolCalls() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), + equalTo(GEN_AI_PROVIDER_NAME, "openai"), equalTo(GEN_AI_OPERATION_NAME, "chat"), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( @@ -1473,7 +1486,7 @@ void streamToolCalls() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.system.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -1484,7 +1497,8 @@ void streamToolCalls() { "You are a helpful assistant providing weather updates.")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.user.message")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx1) .hasBody( Value.of( @@ -1493,7 +1507,7 @@ void streamToolCalls() { Value.of("What is the weather in New York City and London?")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.assistant.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -1524,7 +1538,8 @@ void streamToolCalls() { KeyValue.of("type", Value.of("function"))))))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.tool.message")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody( Value.of( @@ -1532,7 +1547,8 @@ void streamToolCalls() { KeyValue.of("content", Value.of("25 degrees and sunny")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.tool.message")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody( Value.of( @@ -1540,7 +1556,7 @@ void streamToolCalls() { KeyValue.of("content", Value.of("15 degrees and raining")))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx1) .hasBody( Value.of( @@ -1585,7 +1601,7 @@ void streamConnectionError() { span -> span.hasException(thrown) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL))))); @@ -1602,7 +1618,7 @@ void streamConnectionError() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), + equalTo(GEN_AI_PROVIDER_NAME, "openai"), equalTo(GEN_AI_OPERATION_NAME, "chat"), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL))))); @@ -1612,7 +1628,8 @@ void streamConnectionError() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.user.message")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx) .hasBody(Value.of(KeyValue.of("content", Value.of(TEST_CHAT_INPUT))))); } diff --git a/instrumentation/openai/openai-java-1.1/testing/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/AbstractEmbeddingsTest.java b/instrumentation/openai/openai-java-1.1/testing/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/AbstractEmbeddingsTest.java index a58a362501fe..df8e5806011f 100644 --- a/instrumentation/openai/openai-java-1.1/testing/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/AbstractEmbeddingsTest.java +++ b/instrumentation/openai/openai-java-1.1/testing/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/AbstractEmbeddingsTest.java @@ -8,14 +8,14 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_OPERATION_NAME; +import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_PROVIDER_NAME; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_REQUEST_ENCODING_FORMATS; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_REQUEST_MODEL; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_RESPONSE_MODEL; -import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_SYSTEM; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_TOKEN_TYPE; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_USAGE_INPUT_TOKENS; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues.EMBEDDINGS; -import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GenAiSystemIncubatingValues.OPENAI; +import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GenAiProviderNameIncubatingValues.OPENAI; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GenAiTokenTypeIncubatingValues.INPUT; import static java.util.Collections.singletonList; import static org.assertj.core.api.Assertions.assertThat; @@ -92,7 +92,7 @@ void basic() { span.hasName("embeddings text-embedding-3-small") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(GEN_AI_OPERATION_NAME, EMBEDDINGS), equalTo(GEN_AI_REQUEST_MODEL, MODEL), equalTo(GEN_AI_RESPONSE_MODEL, MODEL), @@ -121,7 +121,7 @@ void basic() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(GEN_AI_OPERATION_NAME, EMBEDDINGS), equalTo(GEN_AI_REQUEST_MODEL, MODEL), equalTo(GEN_AI_RESPONSE_MODEL, MODEL)))), @@ -135,7 +135,7 @@ void basic() { point .hasSum(4.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(GEN_AI_OPERATION_NAME, EMBEDDINGS), equalTo(GEN_AI_REQUEST_MODEL, MODEL), equalTo(GEN_AI_RESPONSE_MODEL, MODEL), @@ -165,7 +165,7 @@ void allTheClientOptions() { span.hasName("embeddings text-embedding-3-small") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(GEN_AI_OPERATION_NAME, EMBEDDINGS), equalTo(GEN_AI_REQUEST_MODEL, MODEL), equalTo( @@ -186,7 +186,7 @@ GEN_AI_REQUEST_ENCODING_FORMATS, singletonList("base64")), point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(GEN_AI_OPERATION_NAME, EMBEDDINGS), equalTo(GEN_AI_REQUEST_MODEL, MODEL), equalTo(GEN_AI_RESPONSE_MODEL, MODEL)))), @@ -200,7 +200,7 @@ GEN_AI_REQUEST_ENCODING_FORMATS, singletonList("base64")), point .hasSum(4.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(GEN_AI_OPERATION_NAME, EMBEDDINGS), equalTo(GEN_AI_REQUEST_MODEL, MODEL), equalTo(GEN_AI_RESPONSE_MODEL, MODEL), @@ -243,7 +243,7 @@ void connectionError() { .hasKind(SpanKind.CLIENT) .hasException(thrown) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(GEN_AI_OPERATION_NAME, EMBEDDINGS), equalTo(GEN_AI_REQUEST_MODEL, MODEL), // Newer versions of the library populate base64 when unset by @@ -270,7 +270,7 @@ void connectionError() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(GEN_AI_OPERATION_NAME, EMBEDDINGS), equalTo(GEN_AI_REQUEST_MODEL, MODEL))))); } From 1f88a08854b7f35d57b4c28a33f243eef7c3f828 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Thu, 28 Aug 2025 10:31:48 +0300 Subject: [PATCH 5/7] fix genai --- docs/instrumentation-list.yaml | 14 +- .../genai/GenAiAttributesExtractor.java | 4 +- .../semconv/genai/GenAiMetricsAdvice.java | 6 +- .../BedrockRuntimeAttributesGetter.java | 6 +- .../v2_2/internal/BedrockRuntimeImpl.java | 6 +- .../v2_2/internal/Aws2BedrockRuntimeTest.java | 220 +++++++++--------- .../openai/v1_1/ChatAttributesGetter.java | 2 +- .../v1_1/ChatCompletionEventsHelper.java | 4 +- .../v1_1/EmbeddingAttributesGetter.java | 2 +- .../openai/v1_1/GenAiAttributes.java | 6 +- .../instrumentation/openai/v1_1/ChatTest.java | 162 +++++++------ 11 files changed, 229 insertions(+), 203 deletions(-) diff --git a/docs/instrumentation-list.yaml b/docs/instrumentation-list.yaml index fae731f13678..34cf27eeb43c 100644 --- a/docs/instrumentation-list.yaml +++ b/docs/instrumentation-list.yaml @@ -1279,7 +1279,7 @@ libraries: type: STRING - name: gen_ai.request.model type: STRING - - name: gen_ai.system + - name: gen_ai.provider.name type: STRING - name: gen_ai.client.token.usage description: Measures number of input and output tokens used. @@ -1290,7 +1290,7 @@ libraries: type: STRING - name: gen_ai.request.model type: STRING - - name: gen_ai.system + - name: gen_ai.provider.name type: STRING - name: gen_ai.token.type type: STRING @@ -1353,7 +1353,7 @@ libraries: type: DOUBLE - name: gen_ai.response.finish_reasons type: STRING_ARRAY - - name: gen_ai.system + - name: gen_ai.provider.name type: STRING - name: gen_ai.usage.input_tokens type: LONG @@ -4596,7 +4596,7 @@ libraries: type: STRING - name: gen_ai.response.model type: STRING - - name: gen_ai.system + - name: gen_ai.provider.name type: STRING - name: gen_ai.client.token.usage description: Measures number of input and output tokens used. @@ -4609,7 +4609,7 @@ libraries: type: STRING - name: gen_ai.response.model type: STRING - - name: gen_ai.system + - name: gen_ai.provider.name type: STRING - name: gen_ai.token.type type: STRING @@ -4624,7 +4624,7 @@ libraries: type: STRING - name: gen_ai.response.model type: STRING - - name: gen_ai.system + - name: gen_ai.provider.name type: STRING - name: gen_ai.usage.input_tokens type: LONG @@ -4654,7 +4654,7 @@ libraries: type: STRING - name: gen_ai.response.model type: STRING - - name: gen_ai.system + - name: gen_ai.provider.name type: STRING - name: gen_ai.usage.input_tokens type: LONG diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/genai/GenAiAttributesExtractor.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/genai/GenAiAttributesExtractor.java index 091cd048276f..a282e8ec5dcf 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/genai/GenAiAttributesExtractor.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/genai/GenAiAttributesExtractor.java @@ -52,7 +52,7 @@ public final class GenAiAttributesExtractor stringArrayKey("gen_ai.response.finish_reasons"); private static final AttributeKey GEN_AI_RESPONSE_ID = stringKey("gen_ai.response.id"); static final AttributeKey GEN_AI_RESPONSE_MODEL = stringKey("gen_ai.response.model"); - static final AttributeKey GEN_AI_SYSTEM = stringKey("gen_ai.system"); + static final AttributeKey GEN_AI_PROVIDER_NAME = stringKey("gen_ai.provider.name"); static final AttributeKey GEN_AI_USAGE_INPUT_TOKENS = longKey("gen_ai.usage.input_tokens"); static final AttributeKey GEN_AI_USAGE_OUTPUT_TOKENS = longKey("gen_ai.usage.output_tokens"); @@ -72,7 +72,7 @@ private GenAiAttributesExtractor(GenAiAttributesGetter getter @Override public void onStart(AttributesBuilder attributes, Context parentContext, REQUEST request) { internalSet(attributes, GEN_AI_OPERATION_NAME, getter.getOperationName(request)); - internalSet(attributes, GEN_AI_SYSTEM, getter.getSystem(request)); + internalSet(attributes, GEN_AI_PROVIDER_NAME, getter.getSystem(request)); internalSet(attributes, GEN_AI_REQUEST_MODEL, getter.getRequestModel(request)); internalSet(attributes, GEN_AI_REQUEST_SEED, getter.getRequestSeed(request)); internalSet( diff --git a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/genai/GenAiMetricsAdvice.java b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/genai/GenAiMetricsAdvice.java index 0efa2b1beb6d..340d6ce3aa71 100644 --- a/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/genai/GenAiMetricsAdvice.java +++ b/instrumentation-api-incubator/src/main/java/io/opentelemetry/instrumentation/api/incubator/semconv/genai/GenAiMetricsAdvice.java @@ -6,9 +6,9 @@ package io.opentelemetry.instrumentation.api.incubator.semconv.genai; import static io.opentelemetry.instrumentation.api.incubator.semconv.genai.GenAiAttributesExtractor.GEN_AI_OPERATION_NAME; +import static io.opentelemetry.instrumentation.api.incubator.semconv.genai.GenAiAttributesExtractor.GEN_AI_PROVIDER_NAME; import static io.opentelemetry.instrumentation.api.incubator.semconv.genai.GenAiAttributesExtractor.GEN_AI_REQUEST_MODEL; import static io.opentelemetry.instrumentation.api.incubator.semconv.genai.GenAiAttributesExtractor.GEN_AI_RESPONSE_MODEL; -import static io.opentelemetry.instrumentation.api.incubator.semconv.genai.GenAiAttributesExtractor.GEN_AI_SYSTEM; import static io.opentelemetry.instrumentation.api.incubator.semconv.genai.GenAiClientMetrics.GEN_AI_TOKEN_TYPE; import static io.opentelemetry.semconv.ServerAttributes.SERVER_ADDRESS; import static io.opentelemetry.semconv.ServerAttributes.SERVER_PORT; @@ -44,7 +44,7 @@ static void applyClientTokenUsageAdvice(LongHistogramBuilder builder) { .setAttributesAdvice( asList( GEN_AI_OPERATION_NAME, - GEN_AI_SYSTEM, + GEN_AI_PROVIDER_NAME, GEN_AI_TOKEN_TYPE, GEN_AI_REQUEST_MODEL, SERVER_PORT, @@ -60,7 +60,7 @@ static void applyClientOperationDurationAdvice(DoubleHistogramBuilder builder) { .setAttributesAdvice( asList( GEN_AI_OPERATION_NAME, - GEN_AI_SYSTEM, + GEN_AI_PROVIDER_NAME, ErrorAttributes.ERROR_TYPE, GEN_AI_REQUEST_MODEL, SERVER_PORT, diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/BedrockRuntimeAttributesGetter.java b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/BedrockRuntimeAttributesGetter.java index 58f88e68517f..e3c0d2be75f3 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/BedrockRuntimeAttributesGetter.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/BedrockRuntimeAttributesGetter.java @@ -17,10 +17,10 @@ enum BedrockRuntimeAttributesGetter implements GenAiAttributesGetter { INSTANCE; - static final class GenAiSystemIncubatingValues { + static final class GenAiProviderNameIncubatingValues { static final String AWS_BEDROCK = "aws.bedrock"; - private GenAiSystemIncubatingValues() {} + private GenAiProviderNameIncubatingValues() {} } @Override @@ -30,7 +30,7 @@ public String getOperationName(ExecutionAttributes executionAttributes) { @Override public String getSystem(ExecutionAttributes executionAttributes) { - return GenAiSystemIncubatingValues.AWS_BEDROCK; + return GenAiProviderNameIncubatingValues.AWS_BEDROCK; } @Nullable diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/BedrockRuntimeImpl.java b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/BedrockRuntimeImpl.java index 9ed75301c5be..a01b9775ac6a 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/BedrockRuntimeImpl.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/BedrockRuntimeImpl.java @@ -88,7 +88,8 @@ private GenAiOperationNameIncubatingValues() {} } private static final AttributeKey EVENT_NAME = stringKey("event.name"); - private static final AttributeKey GEN_AI_SYSTEM = stringKey("gen_ai.system"); + private static final AttributeKey GEN_AI_PROVIDER_NAME = + stringKey("gen_ai.provider.name"); private static final ExecutionAttribute INVOKE_MODEL_REQUEST_BODY = new ExecutionAttribute<>(BedrockRuntimeImpl.class.getName() + ".InvokeModelRequestBody"); @@ -1618,7 +1619,8 @@ private static LogRecordBuilder newEvent(Context otelContext, Logger eventLogger .logRecordBuilder() .setContext(otelContext) .setAttribute( - GEN_AI_SYSTEM, BedrockRuntimeAttributesGetter.GenAiSystemIncubatingValues.AWS_BEDROCK); + GEN_AI_PROVIDER_NAME, + BedrockRuntimeAttributesGetter.GenAiProviderNameIncubatingValues.AWS_BEDROCK); } private static void emitToolResultEvents( diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/testBedrockRuntime/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/Aws2BedrockRuntimeTest.java b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/testBedrockRuntime/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/Aws2BedrockRuntimeTest.java index 6725bdd0e140..1bdf53c1c04a 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/library/src/testBedrockRuntime/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/Aws2BedrockRuntimeTest.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/library/src/testBedrockRuntime/java/io/opentelemetry/instrumentation/awssdk/v2_2/internal/Aws2BedrockRuntimeTest.java @@ -7,13 +7,13 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_OPERATION_NAME; +import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_PROVIDER_NAME; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_REQUEST_MODEL; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_RESPONSE_FINISH_REASONS; -import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_SYSTEM; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_TOKEN_TYPE; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_USAGE_INPUT_TOKENS; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_USAGE_OUTPUT_TOKENS; -import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GenAiSystemIncubatingValues.AWS_BEDROCK; +import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GenAiProviderNameIncubatingValues.AWS_BEDROCK; import static java.util.Arrays.asList; import static java.util.Collections.emptyMap; import static java.util.Collections.singletonList; @@ -162,7 +162,7 @@ void testConverseToolCallNoMessageContent() { span.hasName("chat amazon.nova-micro-v1:0") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -188,7 +188,7 @@ void testConverseToolCallNoMessageContent() { .hasSum(415) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -203,11 +203,11 @@ void testConverseToolCallNoMessageContent() { .hasSum(162) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -225,7 +225,7 @@ void testConverseToolCallNoMessageContent() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -238,13 +238,14 @@ void testConverseToolCallNoMessageContent() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx0) .hasBody(Value.of(Collections.emptyMap())), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx0) .hasBody( Value.of( @@ -315,7 +316,7 @@ void testConverseToolCallNoMessageContent() { span.hasName("chat amazon.nova-micro-v1:0") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -341,7 +342,7 @@ void testConverseToolCallNoMessageContent() { .hasSum(554) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -356,11 +357,11 @@ void testConverseToolCallNoMessageContent() { .hasSum(57) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -378,7 +379,7 @@ void testConverseToolCallNoMessageContent() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -391,13 +392,13 @@ void testConverseToolCallNoMessageContent() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx1) .hasBody(Value.of(emptyMap())), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.assistant.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -415,19 +416,20 @@ void testConverseToolCallNoMessageContent() { KeyValue.of("type", Value.of("function"))))))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody(Value.of(KeyValue.of("id", Value.of(seattleToolUseId)))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody(Value.of(KeyValue.of("id", Value.of(sanFranciscoToolUseId)))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx1) .hasBody( Value.of( @@ -543,7 +545,7 @@ void testConverseToolCallStreamNoMessageContent() span.hasName("chat amazon.nova-micro-v1:0") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -569,7 +571,7 @@ void testConverseToolCallStreamNoMessageContent() .hasSum(415) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -584,11 +586,11 @@ void testConverseToolCallStreamNoMessageContent() .hasSum(162) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -606,7 +608,7 @@ void testConverseToolCallStreamNoMessageContent() point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -619,13 +621,14 @@ void testConverseToolCallStreamNoMessageContent() .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx0) .hasBody(Value.of(Collections.emptyMap())), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx0) .hasBody( Value.of( @@ -715,7 +718,7 @@ void testConverseToolCallStreamNoMessageContent() span.hasName("chat amazon.nova-micro-v1:0") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -741,7 +744,7 @@ void testConverseToolCallStreamNoMessageContent() .hasSum(554) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -756,11 +759,11 @@ void testConverseToolCallStreamNoMessageContent() .hasSum(59) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -778,7 +781,7 @@ void testConverseToolCallStreamNoMessageContent() point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -791,13 +794,13 @@ void testConverseToolCallStreamNoMessageContent() .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx1) .hasBody(Value.of(emptyMap())), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.assistant.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -815,19 +818,20 @@ void testConverseToolCallStreamNoMessageContent() KeyValue.of("type", Value.of("function"))))))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody(Value.of(KeyValue.of("id", Value.of(seattleToolUseId)))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody(Value.of(KeyValue.of("id", Value.of(sanFranciscoToolUseId)))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx1) .hasBody( Value.of( @@ -990,7 +994,7 @@ void testInvokeModelToolCallAmazonNovaNoMessageContent() { span.hasName("chat amazon.nova-micro-v1:0") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -1016,7 +1020,7 @@ void testInvokeModelToolCallAmazonNovaNoMessageContent() { .hasSum(416) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -1031,11 +1035,11 @@ void testInvokeModelToolCallAmazonNovaNoMessageContent() { .hasSum(166) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -1053,7 +1057,7 @@ void testInvokeModelToolCallAmazonNovaNoMessageContent() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -1065,13 +1069,14 @@ void testInvokeModelToolCallAmazonNovaNoMessageContent() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx0) .hasBody(Value.of(Collections.emptyMap())), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx0) .hasBody( Value.of( @@ -1171,7 +1176,7 @@ void testInvokeModelToolCallAmazonNovaNoMessageContent() { span.hasName("chat amazon.nova-micro-v1:0") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -1197,7 +1202,7 @@ void testInvokeModelToolCallAmazonNovaNoMessageContent() { .hasSum(559) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -1212,11 +1217,11 @@ void testInvokeModelToolCallAmazonNovaNoMessageContent() { .hasSum(59) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -1234,7 +1239,7 @@ void testInvokeModelToolCallAmazonNovaNoMessageContent() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -1247,13 +1252,13 @@ void testInvokeModelToolCallAmazonNovaNoMessageContent() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx1) .hasBody(Value.of(Collections.emptyMap())), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.assistant.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -1271,19 +1276,20 @@ void testInvokeModelToolCallAmazonNovaNoMessageContent() { KeyValue.of("type", Value.of("function"))))))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody(Value.of(KeyValue.of("id", Value.of(seattleToolUseId)))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody(Value.of(KeyValue.of("id", Value.of(sanFranciscoToolUseId)))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx1) .hasBody( Value.of( @@ -1466,7 +1472,7 @@ public void accept(PayloadPart chunk) { span.hasName("chat amazon.nova-micro-v1:0") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -1492,7 +1498,7 @@ public void accept(PayloadPart chunk) { .hasSum(416) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -1507,11 +1513,11 @@ public void accept(PayloadPart chunk) { .hasSum(165) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -1529,7 +1535,7 @@ public void accept(PayloadPart chunk) { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -1541,13 +1547,14 @@ public void accept(PayloadPart chunk) { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx0) .hasBody(Value.of(Collections.emptyMap())), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx0) .hasBody( Value.of( @@ -1690,7 +1697,7 @@ public void accept(PayloadPart chunk) { span.hasName("chat amazon.nova-micro-v1:0") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -1716,7 +1723,7 @@ public void accept(PayloadPart chunk) { .hasSum(558) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -1731,11 +1738,11 @@ public void accept(PayloadPart chunk) { .hasSum(58) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -1753,7 +1760,7 @@ public void accept(PayloadPart chunk) { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -1766,13 +1773,13 @@ public void accept(PayloadPart chunk) { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx1) .hasBody(Value.of(Collections.emptyMap())), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.assistant.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -1790,19 +1797,20 @@ public void accept(PayloadPart chunk) { KeyValue.of("type", Value.of("function"))))))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody(Value.of(KeyValue.of("id", Value.of(seattleToolUseId)))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody(Value.of(KeyValue.of("id", Value.of(sanFranciscoToolUseId)))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx1) .hasBody( Value.of( @@ -1916,7 +1924,7 @@ void testInvokeModelToolCallAnthropicClaudeNoMessageContent() { span.hasName("chat anthropic.claude-3-5-sonnet-20240620-v1:0") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -1942,7 +1950,7 @@ void testInvokeModelToolCallAnthropicClaudeNoMessageContent() { .hasSum(380) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -1957,11 +1965,11 @@ void testInvokeModelToolCallAnthropicClaudeNoMessageContent() { .hasSum(133) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -1979,7 +1987,7 @@ void testInvokeModelToolCallAnthropicClaudeNoMessageContent() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -1991,13 +1999,14 @@ void testInvokeModelToolCallAnthropicClaudeNoMessageContent() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx0) .hasBody(Value.of(Collections.emptyMap())), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx0) .hasBody( Value.of( @@ -2075,7 +2084,7 @@ void testInvokeModelToolCallAnthropicClaudeNoMessageContent() { span.hasName("chat anthropic.claude-3-5-sonnet-20240620-v1:0") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -2101,7 +2110,7 @@ void testInvokeModelToolCallAnthropicClaudeNoMessageContent() { .hasSum(590) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -2116,11 +2125,11 @@ void testInvokeModelToolCallAnthropicClaudeNoMessageContent() { .hasSum(132) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -2138,7 +2147,7 @@ void testInvokeModelToolCallAnthropicClaudeNoMessageContent() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -2151,13 +2160,13 @@ void testInvokeModelToolCallAnthropicClaudeNoMessageContent() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx1) .hasBody(Value.of(Collections.emptyMap())), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.assistant.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -2175,19 +2184,20 @@ void testInvokeModelToolCallAnthropicClaudeNoMessageContent() { KeyValue.of("type", Value.of("function"))))))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody(Value.of(KeyValue.of("id", Value.of(seattleToolUseId)))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody(Value.of(KeyValue.of("id", Value.of(sanFranciscoToolUseId)))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx1) .hasBody( Value.of( @@ -2373,7 +2383,7 @@ public void accept(PayloadPart chunk) { span.hasName("chat anthropic.claude-3-5-sonnet-20240620-v1:0") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -2399,7 +2409,7 @@ public void accept(PayloadPart chunk) { .hasSum(380) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -2414,11 +2424,11 @@ public void accept(PayloadPart chunk) { .hasSum(144) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -2436,7 +2446,7 @@ public void accept(PayloadPart chunk) { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -2448,13 +2458,14 @@ public void accept(PayloadPart chunk) { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx0) .hasBody(Value.of(Collections.emptyMap())), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx0) .hasBody( Value.of( @@ -2572,7 +2583,7 @@ public void accept(PayloadPart chunk) { span.hasName("chat anthropic.claude-3-5-sonnet-20240620-v1:0") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues @@ -2598,7 +2609,7 @@ public void accept(PayloadPart chunk) { .hasSum(601) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes @@ -2613,11 +2624,11 @@ public void accept(PayloadPart chunk) { .hasSum(145) .hasCount(1) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_TOKEN_TYPE, GenAiIncubatingAttributes - .GenAiTokenTypeIncubatingValues.COMPLETION), + .GenAiTokenTypeIncubatingValues.OUTPUT), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -2635,7 +2646,7 @@ public void accept(PayloadPart chunk) { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo( GEN_AI_OPERATION_NAME, GenAiIncubatingAttributes @@ -2648,13 +2659,13 @@ public void accept(PayloadPart chunk) { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx1) .hasBody(Value.of(Collections.emptyMap())), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.assistant.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -2672,19 +2683,20 @@ public void accept(PayloadPart chunk) { KeyValue.of("type", Value.of("function"))))))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody(Value.of(KeyValue.of("id", Value.of(seattleToolUseId)))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody(Value.of(KeyValue.of("id", Value.of(sanFranciscoToolUseId)))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, AWS_BEDROCK), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), + equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx1) .hasBody( Value.of( diff --git a/instrumentation/openai/openai-java-1.1/library/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/ChatAttributesGetter.java b/instrumentation/openai/openai-java-1.1/library/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/ChatAttributesGetter.java index a78b2985d946..84752ad0c2fd 100644 --- a/instrumentation/openai/openai-java-1.1/library/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/ChatAttributesGetter.java +++ b/instrumentation/openai/openai-java-1.1/library/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/ChatAttributesGetter.java @@ -27,7 +27,7 @@ public String getOperationName(ChatCompletionCreateParams request) { @Override public String getSystem(ChatCompletionCreateParams request) { - return GenAiAttributes.GenAiSystemIncubatingValues.OPENAI; + return GenAiAttributes.GenAiProviderNameIncubatingValues.OPENAI; } @Override diff --git a/instrumentation/openai/openai-java-1.1/library/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/ChatCompletionEventsHelper.java b/instrumentation/openai/openai-java-1.1/library/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/ChatCompletionEventsHelper.java index 66d337bdfbab..5aa2551c2d20 100644 --- a/instrumentation/openai/openai-java-1.1/library/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/ChatCompletionEventsHelper.java +++ b/instrumentation/openai/openai-java-1.1/library/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/ChatCompletionEventsHelper.java @@ -6,7 +6,7 @@ package io.opentelemetry.instrumentation.openai.v1_1; import static io.opentelemetry.api.common.AttributeKey.stringKey; -import static io.opentelemetry.instrumentation.openai.v1_1.GenAiAttributes.GEN_AI_SYSTEM; +import static io.opentelemetry.instrumentation.openai.v1_1.GenAiAttributes.GEN_AI_PROVIDER_NAME; import com.openai.models.chat.completions.ChatCompletion; import com.openai.models.chat.completions.ChatCompletionAssistantMessageParam; @@ -214,7 +214,7 @@ private static LogRecordBuilder newEvent(Logger eventLogger, String name) { return eventLogger .logRecordBuilder() .setAttribute(EVENT_NAME, name) - .setAttribute(GEN_AI_SYSTEM, "openai"); + .setAttribute(GEN_AI_PROVIDER_NAME, "openai"); } private static Value buildToolCallEventObject( diff --git a/instrumentation/openai/openai-java-1.1/library/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/EmbeddingAttributesGetter.java b/instrumentation/openai/openai-java-1.1/library/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/EmbeddingAttributesGetter.java index 3503ff4da4c1..18ad487a452c 100644 --- a/instrumentation/openai/openai-java-1.1/library/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/EmbeddingAttributesGetter.java +++ b/instrumentation/openai/openai-java-1.1/library/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/EmbeddingAttributesGetter.java @@ -25,7 +25,7 @@ public String getOperationName(EmbeddingCreateParams request) { @Override public String getSystem(EmbeddingCreateParams request) { - return GenAiAttributes.GenAiSystemIncubatingValues.OPENAI; + return GenAiAttributes.GenAiProviderNameIncubatingValues.OPENAI; } @Override diff --git a/instrumentation/openai/openai-java-1.1/library/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/GenAiAttributes.java b/instrumentation/openai/openai-java-1.1/library/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/GenAiAttributes.java index c6209d44acdb..4cccf2182aaa 100644 --- a/instrumentation/openai/openai-java-1.1/library/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/GenAiAttributes.java +++ b/instrumentation/openai/openai-java-1.1/library/src/main/java/io/opentelemetry/instrumentation/openai/v1_1/GenAiAttributes.java @@ -11,7 +11,7 @@ // copied from GenAiIncubatingAttributes final class GenAiAttributes { - static final AttributeKey GEN_AI_SYSTEM = stringKey("gen_ai.system"); + static final AttributeKey GEN_AI_PROVIDER_NAME = stringKey("gen_ai.provider.name"); static final class GenAiOperationNameIncubatingValues { static final String CHAT = "chat"; @@ -20,10 +20,10 @@ static final class GenAiOperationNameIncubatingValues { private GenAiOperationNameIncubatingValues() {} } - static final class GenAiSystemIncubatingValues { + static final class GenAiProviderNameIncubatingValues { static final String OPENAI = "openai"; - private GenAiSystemIncubatingValues() {} + private GenAiProviderNameIncubatingValues() {} } private GenAiAttributes() {} diff --git a/instrumentation/openai/openai-java-1.1/library/src/test/java/io/opentelemetry/instrumentation/openai/v1_1/ChatTest.java b/instrumentation/openai/openai-java-1.1/library/src/test/java/io/opentelemetry/instrumentation/openai/v1_1/ChatTest.java index 2ae72f19ba33..d312be5fa996 100644 --- a/instrumentation/openai/openai-java-1.1/library/src/test/java/io/opentelemetry/instrumentation/openai/v1_1/ChatTest.java +++ b/instrumentation/openai/openai-java-1.1/library/src/test/java/io/opentelemetry/instrumentation/openai/v1_1/ChatTest.java @@ -8,18 +8,18 @@ import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.equalTo; import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.satisfies; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_OPERATION_NAME; +import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_PROVIDER_NAME; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_REQUEST_MODEL; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_RESPONSE_FINISH_REASONS; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_RESPONSE_ID; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_RESPONSE_MODEL; -import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_SYSTEM; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_TOKEN_TYPE; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_USAGE_INPUT_TOKENS; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GEN_AI_USAGE_OUTPUT_TOKENS; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GenAiOperationNameIncubatingValues.CHAT; -import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GenAiSystemIncubatingValues.OPENAI; -import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GenAiTokenTypeIncubatingValues.COMPLETION; +import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GenAiProviderNameIncubatingValues.OPENAI; import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GenAiTokenTypeIncubatingValues.INPUT; +import static io.opentelemetry.semconv.incubating.GenAiIncubatingAttributes.GenAiTokenTypeIncubatingValues.OUTPUT; import static java.util.Collections.emptyMap; import static java.util.Collections.singletonList; import static org.assertj.core.api.Assertions.assertThat; @@ -110,7 +110,7 @@ void basicNoCaptureContent() { trace.hasSpansSatisfyingExactly( span -> span.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), satisfies(GEN_AI_RESPONSE_ID, id -> id.startsWith("chatcmpl-")), @@ -134,8 +134,8 @@ void basicNoCaptureContent() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), - equalTo(GEN_AI_OPERATION_NAME, "chat"), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( GEN_AI_RESPONSE_MODEL, TEST_CHAT_RESPONSE_MODEL)))), @@ -149,8 +149,8 @@ void basicNoCaptureContent() { point .hasSum(22.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), - equalTo(GEN_AI_OPERATION_NAME, "chat"), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( GEN_AI_RESPONSE_MODEL, TEST_CHAT_RESPONSE_MODEL), @@ -159,12 +159,12 @@ void basicNoCaptureContent() { point .hasSum(2.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), - equalTo(GEN_AI_OPERATION_NAME, "chat"), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( GEN_AI_RESPONSE_MODEL, TEST_CHAT_RESPONSE_MODEL), - equalTo(GEN_AI_TOKEN_TYPE, COMPLETION))))); + equalTo(GEN_AI_TOKEN_TYPE, OUTPUT))))); SpanContext spanCtx = getTesting().waitForTraces(1).get(0).get(0).getSpanContext(); @@ -172,12 +172,13 @@ void basicNoCaptureContent() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.user.message")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx) .hasBody(Value.of(emptyMap())), log -> { log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx) .hasBody( Value.of( @@ -209,7 +210,7 @@ void multipleChoicesNoCaptureContent() { trace.hasSpansSatisfyingExactly( span -> span.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), satisfies(GEN_AI_RESPONSE_ID, id -> id.startsWith("chatcmpl-")), @@ -233,8 +234,8 @@ void multipleChoicesNoCaptureContent() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), - equalTo(GEN_AI_OPERATION_NAME, "chat"), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( GEN_AI_RESPONSE_MODEL, TEST_CHAT_RESPONSE_MODEL)))), @@ -248,8 +249,8 @@ void multipleChoicesNoCaptureContent() { point .hasSum(22.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), - equalTo(GEN_AI_OPERATION_NAME, "chat"), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( GEN_AI_RESPONSE_MODEL, TEST_CHAT_RESPONSE_MODEL), @@ -258,12 +259,12 @@ void multipleChoicesNoCaptureContent() { point .hasSum(7.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), - equalTo(GEN_AI_OPERATION_NAME, "chat"), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( GEN_AI_RESPONSE_MODEL, TEST_CHAT_RESPONSE_MODEL), - equalTo(GEN_AI_TOKEN_TYPE, COMPLETION))))); + equalTo(GEN_AI_TOKEN_TYPE, OUTPUT))))); SpanContext spanCtx = getTesting().waitForTraces(1).get(0).get(0).getSpanContext(); @@ -271,12 +272,13 @@ void multipleChoicesNoCaptureContent() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.user.message")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx) .hasBody(Value.of(emptyMap())), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx) .hasBody( Value.of( @@ -285,7 +287,7 @@ void multipleChoicesNoCaptureContent() { KeyValue.of("message", Value.of(emptyMap())))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx) .hasBody( Value.of( @@ -337,7 +339,7 @@ void toolCallsNoCaptureContent() { trace.hasSpansSatisfyingExactly( span -> span.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), satisfies(GEN_AI_RESPONSE_ID, id -> id.startsWith("chatcmpl-")), @@ -361,8 +363,8 @@ void toolCallsNoCaptureContent() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), - equalTo(GEN_AI_OPERATION_NAME, "chat"), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( GEN_AI_RESPONSE_MODEL, TEST_CHAT_RESPONSE_MODEL)))), @@ -376,8 +378,8 @@ void toolCallsNoCaptureContent() { point .hasSum(67) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), - equalTo(GEN_AI_OPERATION_NAME, "chat"), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( GEN_AI_RESPONSE_MODEL, TEST_CHAT_RESPONSE_MODEL), @@ -386,12 +388,12 @@ void toolCallsNoCaptureContent() { point .hasSum(46.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), - equalTo(GEN_AI_OPERATION_NAME, "chat"), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( GEN_AI_RESPONSE_MODEL, TEST_CHAT_RESPONSE_MODEL), - equalTo(GEN_AI_TOKEN_TYPE, COMPLETION))))); + equalTo(GEN_AI_TOKEN_TYPE, OUTPUT))))); SpanContext spanCtx = getTesting().waitForTraces(1).get(0).get(0).getSpanContext(); @@ -399,18 +401,19 @@ void toolCallsNoCaptureContent() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.system.message")) .hasSpanContext(spanCtx) .hasBody(Value.of(emptyMap())), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.user.message")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx) .hasBody(Value.of(emptyMap())), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx) .hasBody( Value.of( @@ -458,7 +461,7 @@ void toolCallsNoCaptureContent() { trace.hasSpansSatisfyingExactly( span -> span.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), satisfies(GEN_AI_RESPONSE_ID, id -> id.startsWith("chatcmpl-")), @@ -482,8 +485,8 @@ void toolCallsNoCaptureContent() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), - equalTo(GEN_AI_OPERATION_NAME, "chat"), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( GEN_AI_RESPONSE_MODEL, TEST_CHAT_RESPONSE_MODEL)))), @@ -497,8 +500,8 @@ void toolCallsNoCaptureContent() { point .hasSum(99) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), - equalTo(GEN_AI_OPERATION_NAME, "chat"), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( GEN_AI_RESPONSE_MODEL, TEST_CHAT_RESPONSE_MODEL), @@ -507,12 +510,12 @@ void toolCallsNoCaptureContent() { point .hasSum(25.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), - equalTo(GEN_AI_OPERATION_NAME, "chat"), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( GEN_AI_RESPONSE_MODEL, TEST_CHAT_RESPONSE_MODEL), - equalTo(GEN_AI_TOKEN_TYPE, COMPLETION))))); + equalTo(GEN_AI_TOKEN_TYPE, OUTPUT))))); SpanContext spanCtx1 = getTesting().waitForTraces(1).get(0).get(0).getSpanContext(); @@ -520,18 +523,19 @@ void toolCallsNoCaptureContent() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.system.message")) .hasSpanContext(spanCtx1) .hasBody(Value.of(emptyMap())), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.user.message")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx1) .hasBody(Value.of(emptyMap())), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.assistant.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -553,17 +557,19 @@ void toolCallsNoCaptureContent() { KeyValue.of("type", Value.of("function"))))))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.tool.message")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody(Value.of(KeyValue.of("id", Value.of(newYorkCallId)))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.tool.message")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody(Value.of(KeyValue.of("id", Value.of(londonCallId)))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx1) .hasBody( Value.of( @@ -606,7 +612,7 @@ void streamNoCaptureContent() { maybeWithTransportSpan( span -> span.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), satisfies(GEN_AI_RESPONSE_ID, id -> id.startsWith("chatcmpl-")), @@ -628,8 +634,8 @@ void streamNoCaptureContent() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), - equalTo(GEN_AI_OPERATION_NAME, "chat"), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( GEN_AI_RESPONSE_MODEL, @@ -641,12 +647,13 @@ void streamNoCaptureContent() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.user.message")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx) .hasBody(Value.of(emptyMap())), log -> { log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx) .hasBody( Value.of( @@ -699,7 +706,7 @@ void streamMultipleChoicesNoCaptureContent() { maybeWithTransportSpan( span -> span.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), satisfies(GEN_AI_RESPONSE_ID, id -> id.startsWith("chatcmpl-")), @@ -721,8 +728,8 @@ void streamMultipleChoicesNoCaptureContent() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), - equalTo(GEN_AI_OPERATION_NAME, "chat"), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( GEN_AI_RESPONSE_MODEL, @@ -734,12 +741,13 @@ void streamMultipleChoicesNoCaptureContent() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.user.message")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx) .hasBody(Value.of(emptyMap())), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx) .hasBody( Value.of( @@ -748,7 +756,7 @@ void streamMultipleChoicesNoCaptureContent() { KeyValue.of("message", Value.of(emptyMap())))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx) .hasBody( Value.of( @@ -798,7 +806,7 @@ void streamToolCallsNoCaptureContent() { maybeWithTransportSpan( span -> span.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), satisfies(GEN_AI_RESPONSE_ID, id -> id.startsWith("chatcmpl-")), @@ -820,8 +828,8 @@ void streamToolCallsNoCaptureContent() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), - equalTo(GEN_AI_OPERATION_NAME, "chat"), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( GEN_AI_RESPONSE_MODEL, @@ -833,18 +841,19 @@ void streamToolCallsNoCaptureContent() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.system.message")) .hasSpanContext(spanCtx) .hasBody(Value.of(emptyMap())), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.user.message")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx) .hasBody(Value.of(emptyMap())), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx) .hasBody( Value.of( @@ -897,7 +906,7 @@ void streamToolCallsNoCaptureContent() { maybeWithTransportSpan( span -> span.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), satisfies(GEN_AI_RESPONSE_ID, id -> id.startsWith("chatcmpl-")), @@ -919,8 +928,8 @@ void streamToolCallsNoCaptureContent() { point .hasSumGreaterThan(0.0) .hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, "openai"), - equalTo(GEN_AI_OPERATION_NAME, "chat"), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(GEN_AI_OPERATION_NAME, CHAT), equalTo(GEN_AI_REQUEST_MODEL, TEST_CHAT_MODEL), equalTo( GEN_AI_RESPONSE_MODEL, @@ -932,18 +941,19 @@ void streamToolCallsNoCaptureContent() { .waitAndAssertLogRecords( log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.system.message")) .hasSpanContext(spanCtx1) .hasBody(Value.of(emptyMap())), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.user.message")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(EVENT_NAME, "gen_ai.user.message")) .hasSpanContext(spanCtx1) .hasBody(Value.of(emptyMap())), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.assistant.message")) .hasSpanContext(spanCtx1) .hasBody( @@ -965,17 +975,19 @@ void streamToolCallsNoCaptureContent() { KeyValue.of("type", Value.of("function"))))))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.tool.message")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody(Value.of(KeyValue.of("id", Value.of(newYorkCallId)))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.tool.message")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), + equalTo(EVENT_NAME, "gen_ai.tool.message")) .hasSpanContext(spanCtx1) .hasBody(Value.of(KeyValue.of("id", Value.of(londonCallId)))), log -> log.hasAttributesSatisfyingExactly( - equalTo(GEN_AI_SYSTEM, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) + equalTo(GEN_AI_PROVIDER_NAME, OPENAI), equalTo(EVENT_NAME, "gen_ai.choice")) .hasSpanContext(spanCtx1) .hasBody( Value.of( From e1b29bf8c8119ac35f3c543d538f90b679ae5aab Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Thu, 28 Aug 2025 10:48:03 +0300 Subject: [PATCH 6/7] fix zos --- .../opentelemetry/instrumentation/resources/OsResource.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/OsResource.java b/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/OsResource.java index 3de866869cfa..162a8b008dc4 100644 --- a/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/OsResource.java +++ b/instrumentation/resources/library/src/main/java/io/opentelemetry/instrumentation/resources/OsResource.java @@ -89,7 +89,7 @@ private static String getOs(String os) { } else if (os.startsWith("solaris")) { return OsTypeValues.SOLARIS; } else if (os.startsWith("z/os")) { - return OsTypeValues.Z_OS; + return OsTypeValues.ZOS; } return null; } @@ -108,7 +108,7 @@ private static final class OsTypeValues { static final String HPUX = "hpux"; static final String AIX = "aix"; static final String SOLARIS = "solaris"; - static final String Z_OS = "z_os"; + static final String ZOS = "zos"; private OsTypeValues() {} } From ef6055230c41814211cf19fb93ceca0f70d99c01 Mon Sep 17 00:00:00 2001 From: Lauri Tulmin Date: Thu, 28 Aug 2025 11:58:08 +0300 Subject: [PATCH 7/7] fix genai --- .../awssdk/v2_2/AbstractAws2BedrockRuntimeTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2BedrockRuntimeTest.java b/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2BedrockRuntimeTest.java index 33fa42a32dc9..285d1be48fba 100644 --- a/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2BedrockRuntimeTest.java +++ b/instrumentation/aws-sdk/aws-sdk-2.2/testing/src/main/java/io/opentelemetry/instrumentation/awssdk/v2_2/AbstractAws2BedrockRuntimeTest.java @@ -1475,7 +1475,7 @@ void testInvokeModelAmazonTitan() { trace -> trace.hasSpansSatisfyingExactly( span -> - span.hasName("text_OUTPUT amazon.titan-text-lite-v1") + span.hasName("text_completion amazon.titan-text-lite-v1") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK), @@ -1640,7 +1640,7 @@ void testInvokeModelWithResponseStreamAmazonTitan() trace -> trace.hasSpansSatisfyingExactly( span -> - span.hasName("text_OUTPUT amazon.titan-text-lite-v1") + span.hasName("text_completion amazon.titan-text-lite-v1") .hasKind(SpanKind.CLIENT) .hasAttributesSatisfying( equalTo(GEN_AI_PROVIDER_NAME, AWS_BEDROCK),