Skip to content

Commit 28eaa41

Browse files
authored
fix(llmobs): additional options like for manual span instrumentation are properly recognized (#5424)
* fix approach to passing additional llm observability span options to the tagger
1 parent 4762662 commit 28eaa41

File tree

2 files changed

+52
-3
lines changed

2 files changed

+52
-3
lines changed

packages/dd-trace/src/llmobs/sdk.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -105,12 +105,12 @@ class LLMObs extends NoopLLMObs {
105105

106106
if (fn.length > 1) {
107107
return this._tracer.trace(name, spanOptions, (span, cb) =>
108-
this._activate(span, { kind, options: llmobsOptions }, () => fn(span, cb))
108+
this._activate(span, { kind, ...llmobsOptions }, () => fn(span, cb))
109109
)
110110
}
111111

112112
return this._tracer.trace(name, spanOptions, span =>
113-
this._activate(span, { kind, options: llmobsOptions }, () => fn(span))
113+
this._activate(span, { kind, ...llmobsOptions }, () => fn(span))
114114
)
115115
}
116116

@@ -166,7 +166,7 @@ class LLMObs extends NoopLLMObs {
166166
}
167167

168168
try {
169-
const result = llmobs._activate(span, { kind, options: llmobsOptions }, () => fn.apply(this, fnArgs))
169+
const result = llmobs._activate(span, { kind, ...llmobsOptions }, () => fn.apply(this, fnArgs))
170170

171171
if (result && typeof result.then === 'function') {
172172
return result.then(

packages/dd-trace/test/llmobs/sdk/index.spec.js

+49
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,29 @@ describe('sdk', () => {
327327
})
328328
})
329329
})
330+
331+
it('passes the options to the tagger correctly', () => {
332+
let span
333+
llmobs.trace({
334+
kind: 'workflow',
335+
name: 'test',
336+
mlApp: 'override',
337+
sessionId: 'sessionId',
338+
modelName: 'modelName',
339+
modelProvider: 'modelProvider'
340+
}, (_span) => {
341+
span = _span
342+
})
343+
344+
expect(LLMObsTagger.tagMap.get(span)).to.deep.equal({
345+
'_ml_obs.meta.span.kind': 'workflow',
346+
'_ml_obs.meta.ml_app': 'override',
347+
'_ml_obs.meta.model_name': 'modelName',
348+
'_ml_obs.meta.model_provider': 'modelProvider',
349+
'_ml_obs.session_id': 'sessionId',
350+
'_ml_obs.llmobs_parent_id': 'undefined'
351+
})
352+
})
330353
})
331354

332355
describe('wrap', () => {
@@ -745,6 +768,32 @@ describe('sdk', () => {
745768
wrappedOuter()
746769
})
747770
})
771+
772+
it('passes the options to the tagger correctly', () => {
773+
let span
774+
775+
const fn = llmobs.wrap({
776+
kind: 'workflow',
777+
name: 'test',
778+
mlApp: 'override',
779+
sessionId: 'sessionId',
780+
modelName: 'modelName',
781+
modelProvider: 'modelProvider'
782+
}, () => {
783+
span = llmobs._active()
784+
})
785+
786+
fn()
787+
788+
expect(LLMObsTagger.tagMap.get(span)).to.deep.equal({
789+
'_ml_obs.meta.span.kind': 'workflow',
790+
'_ml_obs.meta.ml_app': 'override',
791+
'_ml_obs.meta.model_name': 'modelName',
792+
'_ml_obs.meta.model_provider': 'modelProvider',
793+
'_ml_obs.session_id': 'sessionId',
794+
'_ml_obs.llmobs_parent_id': 'undefined'
795+
})
796+
})
748797
})
749798
})
750799

0 commit comments

Comments
 (0)