Skip to content

Commit c6655da

Browse files
authored
fix(traceloop-sdk): ai-sdk fixes (#865)
1 parent 114d2b8 commit c6655da

File tree

6 files changed

+609
-7
lines changed

6 files changed

+609
-7
lines changed

packages/traceloop-sdk/src/lib/tracing/ai-sdk-transformations.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -723,6 +723,14 @@ const shouldHandleSpan = (span: ReadableSpan): boolean => {
723723
return span.instrumentationScope?.name === "ai";
724724
};
725725

726+
const getAiSdkVersion = (): string | undefined => {
727+
try {
728+
return require("ai/package.json").version;
729+
} catch {
730+
return undefined;
731+
}
732+
};
733+
726734
const TOP_LEVEL_AI_SPANS = [
727735
AI_GENERATE_TEXT,
728736
AI_STREAM_TEXT,
@@ -750,6 +758,12 @@ export const transformAiSdkSpanAttributes = (span: ReadableSpan): void => {
750758
if (!shouldHandleSpan(span)) {
751759
return;
752760
}
761+
762+
const aiSdkVersion = getAiSdkVersion();
763+
if (aiSdkVersion) {
764+
span.attributes["ai.sdk.version"] = aiSdkVersion;
765+
}
766+
753767
transformLLMSpans(span.attributes, span.name);
754768
transformToolCalls(span);
755769
};

packages/traceloop-sdk/src/lib/tracing/tracing.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
import { trace, createContextKey, Context } from "@opentelemetry/api";
2+
import { version } from "../../../package.json";
23

34
const TRACER_NAME = "@traceloop/node-server-sdk";
5+
const TRACER_VERSION = version;
6+
47
export const WORKFLOW_NAME_KEY = createContextKey("workflow_name");
58
export const ENTITY_NAME_KEY = createContextKey("entity_name");
69
export const AGENT_NAME_KEY = createContextKey("agent_name");
@@ -9,7 +12,7 @@ export const ASSOCATION_PROPERTIES_KEY = createContextKey(
912
);
1013

1114
export const getTracer = () => {
12-
return trace.getTracer(TRACER_NAME);
15+
return trace.getTracer(TRACER_NAME, TRACER_VERSION);
1316
};
1417

1518
export const getTraceloopTracer = getTracer;

packages/traceloop-sdk/test/ai-sdk-agent-integration.test.ts renamed to packages/traceloop-sdk/test/ai-sdk/ai-sdk-agent-integration.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ import { z } from "zod";
2222
import { SpanAttributes } from "@traceloop/ai-semantic-conventions";
2323
import { ATTR_GEN_AI_AGENT_NAME } from "@opentelemetry/semantic-conventions/incubating";
2424

25-
import * as traceloop from "../src";
25+
import * as traceloop from "../../src";
2626

2727
import { Polly, setupMocha as setupPolly } from "@pollyjs/core";
2828
import NodeHttpAdapter from "@pollyjs/adapter-node-http";
2929
import FetchAdapter from "@pollyjs/adapter-fetch";
3030
import FSPersister from "@pollyjs/persister-fs";
31-
import { initializeSharedTraceloop, getSharedExporter } from "./test-setup";
31+
import { initializeSharedTraceloop, getSharedExporter } from "../test-setup";
3232

3333
const memoryExporter = getSharedExporter();
3434

packages/traceloop-sdk/test/ai-sdk-integration.test.ts renamed to packages/traceloop-sdk/test/ai-sdk/ai-sdk-integration.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,13 @@ import {
2828
ATTR_GEN_AI_SYSTEM,
2929
} from "@opentelemetry/semantic-conventions/incubating";
3030

31-
import * as traceloop from "../src";
31+
import * as traceloop from "../../src";
3232

3333
import { Polly, setupMocha as setupPolly } from "@pollyjs/core";
3434
import NodeHttpAdapter from "@pollyjs/adapter-node-http";
3535
import FetchAdapter from "@pollyjs/adapter-fetch";
3636
import FSPersister from "@pollyjs/persister-fs";
37-
import { initializeSharedTraceloop, getSharedExporter } from "./test-setup";
37+
import { initializeSharedTraceloop, getSharedExporter } from "../test-setup";
3838

3939
const memoryExporter = getSharedExporter();
4040

packages/traceloop-sdk/test/ai-sdk-transformations.test.ts renamed to packages/traceloop-sdk/test/ai-sdk/ai-sdk-transformations.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@ import {
2525
ATTR_GEN_AI_USAGE_PROMPT_TOKENS,
2626
} from "@opentelemetry/semantic-conventions/incubating";
2727
import { context } from "@opentelemetry/api";
28-
import { ASSOCATION_PROPERTIES_KEY } from "../src/lib/tracing/tracing";
28+
import { ASSOCATION_PROPERTIES_KEY } from "../../src/lib/tracing/tracing";
2929
import {
3030
transformLLMSpans,
3131
transformAiSdkSpanAttributes,
3232
transformAiSdkSpanNames,
33-
} from "../src/lib/tracing/ai-sdk-transformations";
33+
} from "../../src/lib/tracing/ai-sdk-transformations";
3434

3535
describe("AI SDK Transformations", () => {
3636
describe("transformAiSdkAttributes - response text", () => {

0 commit comments

Comments
 (0)