From c6ee66070d6829f2555609e3f929dbbd108e8f0e Mon Sep 17 00:00:00 2001 From: Sam Brenner Date: Mon, 17 Mar 2025 10:32:12 -0400 Subject: [PATCH] fix --- packages/dd-trace/src/llmobs/sdk.js | 6 +-- .../dd-trace/test/llmobs/sdk/index.spec.js | 49 +++++++++++++++++++ 2 files changed, 52 insertions(+), 3 deletions(-) diff --git a/packages/dd-trace/src/llmobs/sdk.js b/packages/dd-trace/src/llmobs/sdk.js index 64c4bd2ab87..f14ee698d09 100644 --- a/packages/dd-trace/src/llmobs/sdk.js +++ b/packages/dd-trace/src/llmobs/sdk.js @@ -105,12 +105,12 @@ class LLMObs extends NoopLLMObs { if (fn.length > 1) { return this._tracer.trace(name, spanOptions, (span, cb) => - this._activate(span, { kind, options: llmobsOptions }, () => fn(span, cb)) + this._activate(span, { kind, ...llmobsOptions }, () => fn(span, cb)) ) } return this._tracer.trace(name, spanOptions, span => - this._activate(span, { kind, options: llmobsOptions }, () => fn(span)) + this._activate(span, { kind, ...llmobsOptions }, () => fn(span)) ) } @@ -166,7 +166,7 @@ class LLMObs extends NoopLLMObs { } try { - const result = llmobs._activate(span, { kind, options: llmobsOptions }, () => fn.apply(this, fnArgs)) + const result = llmobs._activate(span, { kind, ...llmobsOptions }, () => fn.apply(this, fnArgs)) if (result && typeof result.then === 'function') { return result.then( diff --git a/packages/dd-trace/test/llmobs/sdk/index.spec.js b/packages/dd-trace/test/llmobs/sdk/index.spec.js index 0f6a09bf17e..9075b24d4cc 100644 --- a/packages/dd-trace/test/llmobs/sdk/index.spec.js +++ b/packages/dd-trace/test/llmobs/sdk/index.spec.js @@ -327,6 +327,29 @@ describe('sdk', () => { }) }) }) + + it('passes the options to the tagger correctly', () => { + let span + llmobs.trace({ + kind: 'workflow', + name: 'test', + mlApp: 'override', + sessionId: 'sessionId', + modelName: 'modelName', + modelProvider: 'modelProvider' + }, (_span) => { + span = _span + }) + + expect(LLMObsTagger.tagMap.get(span)).to.deep.equal({ + '_ml_obs.meta.span.kind': 'workflow', + '_ml_obs.meta.ml_app': 'override', + '_ml_obs.meta.model_name': 'modelName', + '_ml_obs.meta.model_provider': 'modelProvider', + '_ml_obs.session_id': 'sessionId', + '_ml_obs.llmobs_parent_id': 'undefined' + }) + }) }) describe('wrap', () => { @@ -745,6 +768,32 @@ describe('sdk', () => { wrappedOuter() }) }) + + it('passes the options to the tagger correctly', () => { + let span + + const fn = llmobs.wrap({ + kind: 'workflow', + name: 'test', + mlApp: 'override', + sessionId: 'sessionId', + modelName: 'modelName', + modelProvider: 'modelProvider' + }, () => { + span = llmobs._active() + }) + + fn() + + expect(LLMObsTagger.tagMap.get(span)).to.deep.equal({ + '_ml_obs.meta.span.kind': 'workflow', + '_ml_obs.meta.ml_app': 'override', + '_ml_obs.meta.model_name': 'modelName', + '_ml_obs.meta.model_provider': 'modelProvider', + '_ml_obs.session_id': 'sessionId', + '_ml_obs.llmobs_parent_id': 'undefined' + }) + }) }) })