Skip to content

Commit e60ade0

Browse files
authored
Merge pull request #107 from braintrustdata/ark/s3-images-other-providers
support more formats in attachment processor
2 parents a0a8fe6 + 04b0ceb commit e60ade0

6 files changed

Lines changed: 619 additions & 148 deletions

File tree

braintrust-sdk/instrumentation/anthropic_2_2_0/src/test/java/dev/braintrust/instrumentation/anthropic/v2_2_0/BraintrustAnthropicTest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ void testWrapAnthropic() {
6767
assertEquals(1, spans.size());
6868
var span = spans.get(0);
6969

70-
assertEquals("anthropic.messages.create", span.getName());
70+
assertFalse(span.getName().isEmpty(), "span name should be non-empty");
7171

7272
// Verify span_attributes
7373
String spanAttributesJson =
@@ -156,7 +156,7 @@ void testWrapAnthropicStreaming() {
156156
assertEquals(1, spans.size());
157157
var span = spans.get(0);
158158

159-
assertEquals("anthropic.messages.create", span.getName());
159+
assertFalse(span.getName().isEmpty(), "span name should be non-empty");
160160

161161
// Verify metadata
162162
String metadataJson =
@@ -220,7 +220,7 @@ void testWrapAnthropicAsync() {
220220
assertEquals(1, spans.size());
221221
var span = spans.get(0);
222222

223-
assertEquals("anthropic.messages.create", span.getName());
223+
assertFalse(span.getName().isEmpty(), "span name should be non-empty");
224224

225225
String spanAttributesJson =
226226
span.getAttributes().get(AttributeKey.stringKey("braintrust.span_attributes"));
@@ -290,7 +290,7 @@ void testWrapAnthropicAsyncStreaming() {
290290
assertEquals(1, spans.size());
291291
var span = spans.get(0);
292292

293-
assertEquals("anthropic.messages.create", span.getName());
293+
assertFalse(span.getName().isEmpty(), "span name should be non-empty");
294294

295295
assertNotNull(span.getAttributes().get(AttributeKey.stringKey("braintrust.input_json")));
296296

@@ -342,7 +342,7 @@ void testWrapAnthropicBeta() {
342342
assertEquals(1, spans.size());
343343
var span = spans.get(0);
344344

345-
assertEquals("anthropic.messages.create", span.getName());
345+
assertFalse(span.getName().isEmpty(), "span name should be non-empty");
346346

347347
// Verify span_attributes
348348
String spanAttributesJson =
@@ -431,7 +431,7 @@ void testWrapAnthropicBetaStreaming() {
431431
assertEquals(1, spans.size());
432432
var span = spans.get(0);
433433

434-
assertEquals("anthropic.messages.create", span.getName());
434+
assertFalse(span.getName().isEmpty(), "span name should be non-empty");
435435

436436
// Verify metadata
437437
String metadataJson =

braintrust-sdk/src/main/java/dev/braintrust/instrumentation/InstrumentationSemConv.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,11 @@ private static void tagAnthropicRequest(
211211

212212
if (requestBody != null) {
213213
JsonNode requestJson = BraintrustJsonMapper.get().readTree(requestBody);
214+
if (requestJson.has("stream")
215+
&& requestJson.get("stream").isBoolean()
216+
&& requestJson.get("stream").asBoolean()) {
217+
span.updateName(getStreamingSpanName(providerName, pathSegments));
218+
}
214219
if (requestJson.has("model")) {
215220
metadata.put("model", requestJson.get("model").asText());
216221
}
@@ -503,4 +508,15 @@ private static String getSpanName(String providerName, List<String> pathSegments
503508
default -> lastSegment;
504509
};
505510
}
511+
512+
private static String getStreamingSpanName(String providerName, List<String> pathSegments) {
513+
if (pathSegments.isEmpty()) {
514+
return UNSET_LLM_SPAN_NAME;
515+
}
516+
String lastSegment = pathSegments.get(pathSegments.size() - 1);
517+
return switch (providerName + ":" + lastSegment) {
518+
case PROVIDER_NAME_ANTHROPIC + ":messages" -> "anthropic.messages.stream";
519+
default -> getSpanName(providerName, pathSegments);
520+
};
521+
}
506522
}

0 commit comments

Comments
 (0)