From 143bc6671447299824d5cf1d4b4da4eea417d6f4 Mon Sep 17 00:00:00 2001 From: Nir Gazit Date: Sun, 28 Jul 2024 19:53:36 +0300 Subject: [PATCH 1/2] fix(sdk): properly initialize token enrich value for instrumentations (#384) --- packages/sample-app/package.json | 1 + .../sample-app/src/sample_openai_streaming.ts | 32 +++++++++++++++++++ .../src/lib/configuration/index.ts | 4 --- .../initialize-options.interface.ts | 6 ---- .../traceloop-sdk/src/lib/tracing/index.ts | 8 +++-- 5 files changed, 39 insertions(+), 12 deletions(-) create mode 100644 packages/sample-app/src/sample_openai_streaming.ts diff --git a/packages/sample-app/package.json b/packages/sample-app/package.json index 9ec07b7d..c4b229cf 100644 --- a/packages/sample-app/package.json +++ b/packages/sample-app/package.json @@ -19,6 +19,7 @@ "run:prompt_mgmt": "npm run build && node dist/src/sample_prompt_mgmt.js", "run:sample_vision": "npm run build && node dist/src/sample_vision_prompt.js", "run:sample_azure": "npm run build && node dist/src/sample_azure.js", + "run:openai_streaming": "npm run build && node dist/src/sample_openai_streaming.js", "run:sampler": "npm run build && node dist/src/sample_sampler.js", "run:llamaindex": "npm run build && node dist/src/sample_llamaindex.js", "run:pinecone": "npm run build && node dist/src/sample_pinecone.js", diff --git a/packages/sample-app/src/sample_openai_streaming.ts b/packages/sample-app/src/sample_openai_streaming.ts new file mode 100644 index 00000000..99c32f06 --- /dev/null +++ b/packages/sample-app/src/sample_openai_streaming.ts @@ -0,0 +1,32 @@ +import * as traceloop from "@traceloop/node-server-sdk"; +import OpenAI from "openai"; + +traceloop.initialize({ + appName: "sample_openai_streaming", + apiKey: process.env.TRACELOOP_API_KEY, + disableBatch: true, +}); +const openai = new OpenAI(); + +async function create_joke() { + const responseStream = await traceloop.withTask( + { name: "joke_creation" }, + () => { + return openai.chat.completions.create({ + model: "gpt-3.5-turbo", + messages: [ + { role: "user", content: "Tell me a joke about opentelemetry" }, + ], + stream: true, + }); + }, + ); + let result = ""; + for await (const chunk of responseStream) { + result += chunk.choices[0]?.delta?.content || ""; + } + console.log(result); + return result; +} + +create_joke(); diff --git a/packages/traceloop-sdk/src/lib/configuration/index.ts b/packages/traceloop-sdk/src/lib/configuration/index.ts index 184d8df3..fccb66a3 100644 --- a/packages/traceloop-sdk/src/lib/configuration/index.ts +++ b/packages/traceloop-sdk/src/lib/configuration/index.ts @@ -54,10 +54,6 @@ export const initialize = (options: InitializeOptions) => { options.traceloopSyncDevPollingInterval = Number(process.env.TRACELOOP_SYNC_DEV_POLLING_INTERVAL) || 5; } - - if (options.shouldEnrichMetrics === undefined) { - options.shouldEnrichMetrics = true; - } } validateConfiguration(options); diff --git a/packages/traceloop-sdk/src/lib/interfaces/initialize-options.interface.ts b/packages/traceloop-sdk/src/lib/interfaces/initialize-options.interface.ts index 3c080415..e80b7d6f 100644 --- a/packages/traceloop-sdk/src/lib/interfaces/initialize-options.interface.ts +++ b/packages/traceloop-sdk/src/lib/interfaces/initialize-options.interface.ts @@ -49,12 +49,6 @@ export interface InitializeOptions { */ logLevel?: "debug" | "info" | "warn" | "error"; - /** - * Whether to enrich metrics with additional data like OpenAI token usage for streaming requests. Optional. - * Defaults to true. - */ - shouldEnrichMetrics?: boolean; - /** * Whether to log prompts, completions and embeddings on traces. Optional. * Defaults to true. diff --git a/packages/traceloop-sdk/src/lib/tracing/index.ts b/packages/traceloop-sdk/src/lib/tracing/index.ts index c22a572f..4d072f74 100644 --- a/packages/traceloop-sdk/src/lib/tracing/index.ts +++ b/packages/traceloop-sdk/src/lib/tracing/index.ts @@ -56,9 +56,11 @@ const instrumentations: Instrumentation[] = []; export const initInstrumentations = () => { const exceptionLogger = (e: Error) => Telemetry.getInstance().logException(e); + const enrichTokens = + (process.env.TRACELOOP_ENRICH_TOKENS || "true").toLowerCase() === "true"; openAIInstrumentation = new OpenAIInstrumentation({ - enrichTokens: _configuration?.shouldEnrichMetrics, + enrichTokens, exceptionLogger, }); instrumentations.push(openAIInstrumentation); @@ -109,13 +111,15 @@ export const manuallyInitInstrumentations = ( instrumentModules: InitializeOptions["instrumentModules"], ) => { const exceptionLogger = (e: Error) => Telemetry.getInstance().logException(e); + const enrichTokens = + (process.env.TRACELOOP_ENRICH_TOKENS || "true").toLowerCase() === "true"; // Clear the instrumentations array that was initialized by default instrumentations.length = 0; if (instrumentModules?.openAI) { openAIInstrumentation = new OpenAIInstrumentation({ - enrichTokens: _configuration?.shouldEnrichMetrics, + enrichTokens, exceptionLogger, }); instrumentations.push(openAIInstrumentation); From 6b8967e4fd162683767cfded083cbbc8ad61b27f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 28 Jul 2024 16:55:21 +0000 Subject: [PATCH 2/2] v0.9.4 --- CHANGELOG.md | 6 ++++++ lerna.json | 2 +- package-lock.json | 2 +- packages/traceloop-sdk/CHANGELOG.md | 6 ++++++ packages/traceloop-sdk/package.json | 2 +- 5 files changed, 15 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ecdc0cf4..ccc13ccc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.9.4](https://github.com/traceloop/openllmetry-js/compare/v0.9.3...v0.9.4) (2024-07-28) + +### Bug Fixes + +- **sdk:** properly initialize token enrich value for instrumentations ([#384](https://github.com/traceloop/openllmetry-js/issues/384)) ([143bc66](https://github.com/traceloop/openllmetry-js/commit/143bc6671447299824d5cf1d4b4da4eea417d6f4)) + ## [0.9.3](https://github.com/traceloop/openllmetry-js/compare/v0.9.2...v0.9.3) (2024-07-25) **Note:** Version bump only for package openllmetry-js diff --git a/lerna.json b/lerna.json index 2d5ee5a1..eb3943d3 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "$schema": "node_modules/lerna/schemas/lerna-schema.json", - "version": "0.9.3", + "version": "0.9.4", "packages": ["packages/*"], "useNx": true } diff --git a/package-lock.json b/package-lock.json index e92c0c6c..459ce9ce 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24587,7 +24587,7 @@ }, "packages/traceloop-sdk": { "name": "@traceloop/node-server-sdk", - "version": "0.9.3", + "version": "0.9.4", "license": "Apache-2.0", "dependencies": { "@opentelemetry/exporter-trace-otlp-proto": "^0.49.1", diff --git a/packages/traceloop-sdk/CHANGELOG.md b/packages/traceloop-sdk/CHANGELOG.md index c0fa50d8..c6c3c0d9 100644 --- a/packages/traceloop-sdk/CHANGELOG.md +++ b/packages/traceloop-sdk/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.9.4](https://github.com/traceloop/openllmetry-js/compare/v0.9.3...v0.9.4) (2024-07-28) + +### Bug Fixes + +- **sdk:** properly initialize token enrich value for instrumentations ([#384](https://github.com/traceloop/openllmetry-js/issues/384)) ([143bc66](https://github.com/traceloop/openllmetry-js/commit/143bc6671447299824d5cf1d4b4da4eea417d6f4)) + ## [0.9.3](https://github.com/traceloop/openllmetry-js/compare/v0.9.2...v0.9.3) (2024-07-25) **Note:** Version bump only for package @traceloop/node-server-sdk diff --git a/packages/traceloop-sdk/package.json b/packages/traceloop-sdk/package.json index 91ba5dc5..67e9fd01 100644 --- a/packages/traceloop-sdk/package.json +++ b/packages/traceloop-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@traceloop/node-server-sdk", - "version": "0.9.3", + "version": "0.9.4", "description": "Traceloop Software Development Kit (SDK) for Node.js", "main": "dist/index.js", "module": "dist/index.mjs",