@launchdarkly/server-sdk-ai 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.7.0](https://github.com/launchdarkly/js-core/compare/server-sdk-ai-v0.6.0...server-sdk-ai-v0.7.0) (2024-12-17)
4
+
5
+
6
+ ### Features
7
+
8
+ * Add support for tracking errors. ([#715](https://github.com/launchdarkly/js-core/issues/715)) ([02f1d3d](https://github.com/launchdarkly/js-core/commit/02f1d3daa711319a620a55b50481083980ab18f7))
9
+
10
+ ## [0.6.0](https://github.com/launchdarkly/js-core/compare/server-sdk-ai-v0.5.0...server-sdk-ai-v0.6.0) (2024-12-10)
11
+
12
+
13
+ ### ⚠ BREAKING CHANGES
14
+
15
+ * Change versionKey to variationKey. ([#709](https://github.com/launchdarkly/js-core/issues/709))
16
+
17
+ ### Code Refactoring
18
+
19
+ * Change versionKey to variationKey. ([#709](https://github.com/launchdarkly/js-core/issues/709)) ([bfee298](https://github.com/launchdarkly/js-core/commit/bfee29843125c55be1b21e4f77c9d8c3c8698856))
20
+
3
21
  ## [0.5.0](https://github.com/launchdarkly/js-core/compare/server-sdk-ai-v0.4.0...server-sdk-ai-v0.5.0) (2024-12-09)
4
22
 
5
23
 
@@ -33,7 +33,7 @@ it('returns config with interpolated messagess', async () => {
33
33
  { role: 'user', content: 'Score: {{score}}' },
34
34
  ],
35
35
  _ldMeta: {
36
- versionKey: 'v1',
36
+ variationKey: 'v1',
37
37
  enabled: true,
38
38
  },
39
39
  };
@@ -70,7 +70,7 @@ it('includes context in variables for messages interpolation', async () => {
70
70
 
71
71
  const mockVariation = {
72
72
  messages: [{ role: 'system', content: 'User key: {{ldctx.key}}' }],
73
- _ldMeta: { versionKey: 'v1', enabled: true },
73
+ _ldMeta: { variationKey: 'v1', enabled: true },
74
74
  };
75
75
 
76
76
  mockLdClient.variation.mockResolvedValue(mockVariation);
@@ -13,26 +13,26 @@ const mockLdClient: LDClientMin = {
13
13
 
14
14
  const testContext: LDContext = { kind: 'user', key: 'test-user' };
15
15
  const configKey = 'test-config';
16
- const versionKey = 'v1';
16
+ const variationKey = 'v1';
17
17
 
18
18
  beforeEach(() => {
19
19
  jest.clearAllMocks();
20
20
  });
21
21
 
22
22
  it('tracks duration', () => {
23
- const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey, versionKey, testContext);
23
+ const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey, variationKey, testContext);
24
24
  tracker.trackDuration(1000);
25
25
 
26
26
  expect(mockTrack).toHaveBeenCalledWith(
27
27
  '$ld:ai:duration:total',
28
28
  testContext,
29
- { configKey, versionKey },
29
+ { configKey, variationKey },
30
30
  1000,
31
31
  );
32
32
  });
33
33
 
34
34
  it('tracks duration of async function', async () => {
35
- const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey, versionKey, testContext);
35
+ const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey, variationKey, testContext);
36
36
  jest.spyOn(global.Date, 'now').mockReturnValueOnce(1000).mockReturnValueOnce(2000);
37
37
 
38
38
  const result = await tracker.trackDurationOf(async () => 'test-result');
@@ -41,49 +41,49 @@ it('tracks duration of async function', async () => {
41
41
  expect(mockTrack).toHaveBeenCalledWith(
42
42
  '$ld:ai:duration:total',
43
43
  testContext,
44
- { configKey, versionKey },
44
+ { configKey, variationKey },
45
45
  1000,
46
46
  );
47
47
  });
48
48
 
49
49
  it('tracks positive feedback', () => {
50
- const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey, versionKey, testContext);
50
+ const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey, variationKey, testContext);
51
51
  tracker.trackFeedback({ kind: LDFeedbackKind.Positive });
52
52
 
53
53
  expect(mockTrack).toHaveBeenCalledWith(
54
54
  '$ld:ai:feedback:user:positive',
55
55
  testContext,
56
- { configKey, versionKey },
56
+ { configKey, variationKey },
57
57
  1,
58
58
  );
59
59
  });
60
60
 
61
61
  it('tracks negative feedback', () => {
62
- const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey, versionKey, testContext);
62
+ const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey, variationKey, testContext);
63
63
  tracker.trackFeedback({ kind: LDFeedbackKind.Negative });
64
64
 
65
65
  expect(mockTrack).toHaveBeenCalledWith(
66
66
  '$ld:ai:feedback:user:negative',
67
67
  testContext,
68
- { configKey, versionKey },
68
+ { configKey, variationKey },
69
69
  1,
70
70
  );
71
71
  });
72
72
 
73
73
  it('tracks success', () => {
74
- const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey, versionKey, testContext);
74
+ const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey, variationKey, testContext);
75
75
  tracker.trackSuccess();
76
76
 
77
77
  expect(mockTrack).toHaveBeenCalledWith(
78
78
  '$ld:ai:generation',
79
79
  testContext,
80
- { configKey, versionKey },
80
+ { configKey, variationKey },
81
81
  1,
82
82
  );
83
83
  });
84
84
 
85
85
  it('tracks OpenAI usage', async () => {
86
- const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey, versionKey, testContext);
86
+ const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey, variationKey, testContext);
87
87
  jest.spyOn(global.Date, 'now').mockReturnValueOnce(1000).mockReturnValueOnce(2000);
88
88
 
89
89
  const TOTAL_TOKENS = 100;
@@ -101,41 +101,74 @@ it('tracks OpenAI usage', async () => {
101
101
  expect(mockTrack).toHaveBeenCalledWith(
102
102
  '$ld:ai:duration:total',
103
103
  testContext,
104
- { configKey, versionKey },
104
+ { configKey, variationKey },
105
105
  1000,
106
106
  );
107
107
 
108
108
  expect(mockTrack).toHaveBeenCalledWith(
109
109
  '$ld:ai:generation',
110
110
  testContext,
111
- { configKey, versionKey },
111
+ { configKey, variationKey },
112
112
  1,
113
113
  );
114
114
 
115
115
  expect(mockTrack).toHaveBeenCalledWith(
116
116
  '$ld:ai:tokens:total',
117
117
  testContext,
118
- { configKey, versionKey },
118
+ { configKey, variationKey },
119
119
  TOTAL_TOKENS,
120
120
  );
121
121
 
122
122
  expect(mockTrack).toHaveBeenCalledWith(
123
123
  '$ld:ai:tokens:input',
124
124
  testContext,
125
- { configKey, versionKey },
125
+ { configKey, variationKey },
126
126
  PROMPT_TOKENS,
127
127
  );
128
128
 
129
129
  expect(mockTrack).toHaveBeenCalledWith(
130
130
  '$ld:ai:tokens:output',
131
131
  testContext,
132
- { configKey, versionKey },
132
+ { configKey, variationKey },
133
133
  COMPLETION_TOKENS,
134
134
  );
135
135
  });
136
136
 
137
+ it('tracks error when OpenAI metrics function throws', async () => {
138
+ const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey, variationKey, testContext);
139
+ jest.spyOn(global.Date, 'now').mockReturnValueOnce(1000).mockReturnValueOnce(2000);
140
+
141
+ const error = new Error('OpenAI API error');
142
+ await expect(
143
+ tracker.trackOpenAIMetrics(async () => {
144
+ throw error;
145
+ }),
146
+ ).rejects.toThrow(error);
147
+
148
+ expect(mockTrack).toHaveBeenCalledWith(
149
+ '$ld:ai:duration:total',
150
+ testContext,
151
+ { configKey, variationKey },
152
+ 1000,
153
+ );
154
+
155
+ expect(mockTrack).toHaveBeenCalledWith(
156
+ '$ld:ai:generation',
157
+ testContext,
158
+ { configKey, variationKey },
159
+ 1,
160
+ );
161
+
162
+ expect(mockTrack).toHaveBeenCalledWith(
163
+ '$ld:ai:generation:error',
164
+ testContext,
165
+ { configKey, variationKey },
166
+ 1,
167
+ );
168
+ });
169
+
137
170
  it('tracks Bedrock conversation with successful response', () => {
138
- const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey, versionKey, testContext);
171
+ const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey, variationKey, testContext);
139
172
 
140
173
  const TOTAL_TOKENS = 100;
141
174
  const PROMPT_TOKENS = 49;
@@ -156,55 +189,66 @@ it('tracks Bedrock conversation with successful response', () => {
156
189
  expect(mockTrack).toHaveBeenCalledWith(
157
190
  '$ld:ai:generation',
158
191
  testContext,
159
- { configKey, versionKey },
192
+ { configKey, variationKey },
160
193
  1,
161
194
  );
162
195
 
163
196
  expect(mockTrack).toHaveBeenCalledWith(
164
197
  '$ld:ai:duration:total',
165
198
  testContext,
166
- { configKey, versionKey },
199
+ { configKey, variationKey },
167
200
  500,
168
201
  );
169
202
 
170
203
  expect(mockTrack).toHaveBeenCalledWith(
171
204
  '$ld:ai:tokens:total',
172
205
  testContext,
173
- { configKey, versionKey },
206
+ { configKey, variationKey },
174
207
  TOTAL_TOKENS,
175
208
  );
176
209
 
177
210
  expect(mockTrack).toHaveBeenCalledWith(
178
211
  '$ld:ai:tokens:input',
179
212
  testContext,
180
- { configKey, versionKey },
213
+ { configKey, variationKey },
181
214
  PROMPT_TOKENS,
182
215
  );
183
216
 
184
217
  expect(mockTrack).toHaveBeenCalledWith(
185
218
  '$ld:ai:tokens:output',
186
219
  testContext,
187
- { configKey, versionKey },
220
+ { configKey, variationKey },
188
221
  COMPLETION_TOKENS,
189
222
  );
190
223
  });
191
224
 
192
225
  it('tracks Bedrock conversation with error response', () => {
193
- const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey, versionKey, testContext);
226
+ const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey, variationKey, testContext);
194
227
 
195
228
  const response = {
196
229
  $metadata: { httpStatusCode: 400 },
197
230
  };
198
231
 
199
- // TODO: We may want a track failure.
200
-
201
232
  tracker.trackBedrockConverseMetrics(response);
202
233
 
203
- expect(mockTrack).not.toHaveBeenCalled();
234
+ expect(mockTrack).toHaveBeenCalledTimes(2);
235
+ expect(mockTrack).toHaveBeenCalledWith(
236
+ '$ld:ai:generation',
237
+ testContext,
238
+ { configKey, variationKey },
239
+ 1,
240
+ );
241
+
242
+ expect(mockTrack).toHaveBeenCalledWith(
243
+ '$ld:ai:generation:error',
244
+ testContext,
245
+ { configKey, variationKey },
246
+ 1,
247
+ );
204
248
  });
205
249
 
206
250
  it('tracks tokens', () => {
207
- const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey, versionKey, testContext);
251
+ const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey, variationKey, testContext);
208
252
 
209
253
  const TOTAL_TOKENS = 100;
210
254
  const PROMPT_TOKENS = 49;
@@ -219,27 +263,27 @@ it('tracks tokens', () => {
219
263
  expect(mockTrack).toHaveBeenCalledWith(
220
264
  '$ld:ai:tokens:total',
221
265
  testContext,
222
- { configKey, versionKey },
266
+ { configKey, variationKey },
223
267
  TOTAL_TOKENS,
224
268
  );
225
269
 
226
270
  expect(mockTrack).toHaveBeenCalledWith(
227
271
  '$ld:ai:tokens:input',
228
272
  testContext,
229
- { configKey, versionKey },
273
+ { configKey, variationKey },
230
274
  PROMPT_TOKENS,
231
275
  );
232
276
 
233
277
  expect(mockTrack).toHaveBeenCalledWith(
234
278
  '$ld:ai:tokens:output',
235
279
  testContext,
236
- { configKey, versionKey },
280
+ { configKey, variationKey },
237
281
  COMPLETION_TOKENS,
238
282
  );
239
283
  });
240
284
 
241
285
  it('only tracks non-zero token counts', () => {
242
- const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey, versionKey, testContext);
286
+ const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey, variationKey, testContext);
243
287
 
244
288
  tracker.trackTokens({
245
289
  total: 0,
@@ -257,7 +301,7 @@ it('only tracks non-zero token counts', () => {
257
301
  expect(mockTrack).toHaveBeenCalledWith(
258
302
  '$ld:ai:tokens:input',
259
303
  testContext,
260
- { configKey, versionKey },
304
+ { configKey, variationKey },
261
305
  50,
262
306
  );
263
307
 
@@ -270,7 +314,7 @@ it('only tracks non-zero token counts', () => {
270
314
  });
271
315
 
272
316
  it('returns empty summary when no metrics tracked', () => {
273
- const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey, versionKey, testContext);
317
+ const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey, variationKey, testContext);
274
318
 
275
319
  const summary = tracker.getSummary();
276
320
 
@@ -278,7 +322,7 @@ it('returns empty summary when no metrics tracked', () => {
278
322
  });
279
323
 
280
324
  it('summarizes tracked metrics', () => {
281
- const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey, versionKey, testContext);
325
+ const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey, variationKey, testContext);
282
326
 
283
327
  tracker.trackDuration(1000);
284
328
  tracker.trackTokens({
@@ -304,3 +348,41 @@ it('summarizes tracked metrics', () => {
304
348
  success: true,
305
349
  });
306
350
  });
351
+
352
+ it('tracks duration when async function throws', async () => {
353
+ const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey, variationKey, testContext);
354
+ jest.spyOn(global.Date, 'now').mockReturnValueOnce(1000).mockReturnValueOnce(2000);
355
+
356
+ const error = new Error('test error');
357
+ await expect(
358
+ tracker.trackDurationOf(async () => {
359
+ throw error;
360
+ }),
361
+ ).rejects.toThrow(error);
362
+
363
+ expect(mockTrack).toHaveBeenCalledWith(
364
+ '$ld:ai:duration:total',
365
+ testContext,
366
+ { configKey, variationKey },
367
+ 1000,
368
+ );
369
+ });
370
+
371
+ it('tracks error', () => {
372
+ const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey, variationKey, testContext);
373
+ tracker.trackError();
374
+
375
+ expect(mockTrack).toHaveBeenCalledWith(
376
+ '$ld:ai:generation',
377
+ testContext,
378
+ { configKey, variationKey },
379
+ 1,
380
+ );
381
+
382
+ expect(mockTrack).toHaveBeenCalledWith(
383
+ '$ld:ai:generation:error',
384
+ testContext,
385
+ { configKey, variationKey },
386
+ 1,
387
+ );
388
+ });
@@ -15,7 +15,7 @@ class LDAIClientImpl {
15
15
  const value = await this._ldClient.variation(key, context, defaultValue);
16
16
  const tracker = new LDAIConfigTrackerImpl_1.LDAIConfigTrackerImpl(this._ldClient, key,
17
17
  // eslint-disable-next-line no-underscore-dangle
18
- (_b = (_a = value._ldMeta) === null || _a === void 0 ? void 0 : _a.versionKey) !== null && _b !== void 0 ? _b : '', context);
18
+ (_b = (_a = value._ldMeta) === null || _a === void 0 ? void 0 : _a.variationKey) !== null && _b !== void 0 ? _b : '', context);
19
19
  // eslint-disable-next-line no-underscore-dangle
20
20
  const enabled = !!((_c = value._ldMeta) === null || _c === void 0 ? void 0 : _c.enabled);
21
21
  const config = {
@@ -1 +1 @@
1
- {"version":3,"file":"LDAIClientImpl.js","sourceRoot":"","sources":["../src/LDAIClientImpl.ts"],"names":[],"mappings":";;;AAAA,qCAAqC;AAMrC,mEAAgE;AAsBhE,MAAa,cAAc;IACzB,YAAoB,SAAsB;QAAtB,cAAS,GAAT,SAAS,CAAa;IAAG,CAAC;IAEtC,oBAAoB,CAAC,QAAgB,EAAE,SAAkC;QAC/E,OAAO,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,KAAK,CAAC,MAAM,CACV,GAAW,EACX,OAAkB,EAClB,YAA0B,EAC1B,SAAmC;;QAEnC,MAAM,KAAK,GAAqB,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QAC3F,MAAM,OAAO,GAAG,IAAI,6CAAqB,CACvC,IAAI,CAAC,SAAS,EACd,GAAG;QACH,gDAAgD;QAChD,MAAA,MAAA,KAAK,CAAC,OAAO,0CAAE,UAAU,mCAAI,EAAE,EAC/B,OAAO,CACR,CAAC;QACF,gDAAgD;QAChD,MAAM,OAAO,GAAG,CAAC,CAAC,CAAA,MAAA,KAAK,CAAC,OAAO,0CAAE,OAAO,CAAA,CAAC;QACzC,MAAM,MAAM,GAAe;YACzB,OAAO;YACP,OAAO;SACR,CAAC;QACF,gFAAgF;QAChF,+FAA+F;QAC/F,IAAI,KAAK,CAAC,KAAK,EAAE;YACf,MAAM,CAAC,KAAK,qBAAQ,KAAK,CAAC,KAAK,CAAE,CAAC;SACnC;QACD,IAAI,KAAK,CAAC,QAAQ,EAAE;YAClB,MAAM,CAAC,QAAQ,qBAAQ,KAAK,CAAC,QAAQ,CAAE,CAAC;SACzC;QACD,MAAM,YAAY,mCAAQ,SAAS,KAAE,KAAK,EAAE,OAAO,GAAE,CAAC;QAEtD,IAAI,KAAK,CAAC,QAAQ,EAAE;YAClB,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,iCAChD,KAAK,KACR,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,IAC/D,CAAC,CAAC;SACL;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AA9CD,wCA8CC"}
1
+ {"version":3,"file":"LDAIClientImpl.js","sourceRoot":"","sources":["../src/LDAIClientImpl.ts"],"names":[],"mappings":";;;AAAA,qCAAqC;AAMrC,mEAAgE;AAsBhE,MAAa,cAAc;IACzB,YAAoB,SAAsB;QAAtB,cAAS,GAAT,SAAS,CAAa;IAAG,CAAC;IAEtC,oBAAoB,CAAC,QAAgB,EAAE,SAAkC;QAC/E,OAAO,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,KAAK,CAAC,MAAM,CACV,GAAW,EACX,OAAkB,EAClB,YAA0B,EAC1B,SAAmC;;QAEnC,MAAM,KAAK,GAAqB,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QAC3F,MAAM,OAAO,GAAG,IAAI,6CAAqB,CACvC,IAAI,CAAC,SAAS,EACd,GAAG;QACH,gDAAgD;QAChD,MAAA,MAAA,KAAK,CAAC,OAAO,0CAAE,YAAY,mCAAI,EAAE,EACjC,OAAO,CACR,CAAC;QACF,gDAAgD;QAChD,MAAM,OAAO,GAAG,CAAC,CAAC,CAAA,MAAA,KAAK,CAAC,OAAO,0CAAE,OAAO,CAAA,CAAC;QACzC,MAAM,MAAM,GAAe;YACzB,OAAO;YACP,OAAO;SACR,CAAC;QACF,gFAAgF;QAChF,+FAA+F;QAC/F,IAAI,KAAK,CAAC,KAAK,EAAE;YACf,MAAM,CAAC,KAAK,qBAAQ,KAAK,CAAC,KAAK,CAAE,CAAC;SACnC;QACD,IAAI,KAAK,CAAC,QAAQ,EAAE;YAClB,MAAM,CAAC,QAAQ,qBAAQ,KAAK,CAAC,QAAQ,CAAE,CAAC;SACzC;QACD,MAAM,YAAY,mCAAQ,SAAS,KAAE,KAAK,EAAE,OAAO,GAAE,CAAC;QAEtD,IAAI,KAAK,CAAC,QAAQ,EAAE;YAClB,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,iCAChD,KAAK,KACR,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,IAC/D,CAAC,CAAC;SACL;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AA9CD,wCA8CC"}
@@ -6,10 +6,10 @@ import { LDClientMin } from './LDClientMin';
6
6
  export declare class LDAIConfigTrackerImpl implements LDAIConfigTracker {
7
7
  private _ldClient;
8
8
  private _configKey;
9
- private _versionKey;
9
+ private _variationKey;
10
10
  private _context;
11
11
  private _trackedMetrics;
12
- constructor(_ldClient: LDClientMin, _configKey: string, _versionKey: string, _context: LDContext);
12
+ constructor(_ldClient: LDClientMin, _configKey: string, _variationKey: string, _context: LDContext);
13
13
  private _getTrackData;
14
14
  trackDuration(duration: number): void;
15
15
  trackDurationOf<TRes>(func: () => Promise<TRes>): Promise<TRes>;
@@ -17,6 +17,7 @@ export declare class LDAIConfigTrackerImpl implements LDAIConfigTracker {
17
17
  kind: LDFeedbackKind;
18
18
  }): void;
19
19
  trackSuccess(): void;
20
+ trackError(): void;
20
21
  trackOpenAIMetrics<TRes extends {
21
22
  usage?: {
22
23
  total_tokens?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"LDAIConfigTrackerImpl.d.ts","sourceRoot":"","sources":["../src/LDAIConfigTrackerImpl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAA2B,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEtF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,qBAAa,qBAAsB,YAAW,iBAAiB;IAI3D,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,QAAQ;IANlB,OAAO,CAAC,eAAe,CAAyB;gBAGtC,SAAS,EAAE,WAAW,EACtB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,SAAS;IAG7B,OAAO,CAAC,aAAa;IAOrB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAK/B,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IASrE,aAAa,CAAC,QAAQ,EAAE;QAAE,IAAI,EAAE,cAAc,CAAA;KAAE,GAAG,IAAI;IASvD,YAAY,IAAI,IAAI;IAKd,kBAAkB,CACtB,IAAI,SAAS;QACX,KAAK,CAAC,EAAE;YACN,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;SAC5B,CAAC;KACH,EACD,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3C,2BAA2B,CACzB,IAAI,SAAS;QACX,SAAS,EAAE;YAAE,cAAc,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACvC,OAAO,CAAC,EAAE;YAAE,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACjC,KAAK,CAAC,EAAE;YACN,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,WAAW,CAAC,EAAE,MAAM,CAAC;SACtB,CAAC;KACH,EACD,GAAG,EAAE,IAAI,GAAG,IAAI;IAelB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAcvC;;OAEG;IACH,UAAU,IAAI,iBAAiB;CAGhC"}
1
+ {"version":3,"file":"LDAIConfigTrackerImpl.d.ts","sourceRoot":"","sources":["../src/LDAIConfigTrackerImpl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAE/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAA2B,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEtF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,qBAAa,qBAAsB,YAAW,iBAAiB;IAI3D,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,aAAa;IACrB,OAAO,CAAC,QAAQ;IANlB,OAAO,CAAC,eAAe,CAAyB;gBAGtC,SAAS,EAAE,WAAW,EACtB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,SAAS;IAG7B,OAAO,CAAC,aAAa;IAOrB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAK/B,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAarE,aAAa,CAAC,QAAQ,EAAE;QAAE,IAAI,EAAE,cAAc,CAAA;KAAE,GAAG,IAAI;IASvD,YAAY,IAAI,IAAI;IAMpB,UAAU,IAAI,IAAI;IAMZ,kBAAkB,CACtB,IAAI,SAAS;QACX,KAAK,CAAC,EAAE;YACN,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;SAC5B,CAAC;KACH,EACD,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAc3C,2BAA2B,CACzB,IAAI,SAAS;QACX,SAAS,EAAE;YAAE,cAAc,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACvC,OAAO,CAAC,EAAE;YAAE,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACjC,KAAK,CAAC,EAAE;YACN,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,WAAW,CAAC,EAAE,MAAM,CAAC;SACtB,CAAC;KACH,EACD,GAAG,EAAE,IAAI,GAAG,IAAI;IAelB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAcvC;;OAEG;IACH,UAAU,IAAI,iBAAiB;CAGhC"}
@@ -4,16 +4,16 @@ exports.LDAIConfigTrackerImpl = void 0;
4
4
  const metrics_1 = require("./api/metrics");
5
5
  const OpenAiUsage_1 = require("./api/metrics/OpenAiUsage");
6
6
  class LDAIConfigTrackerImpl {
7
- constructor(_ldClient, _configKey, _versionKey, _context) {
7
+ constructor(_ldClient, _configKey, _variationKey, _context) {
8
8
  this._ldClient = _ldClient;
9
9
  this._configKey = _configKey;
10
- this._versionKey = _versionKey;
10
+ this._variationKey = _variationKey;
11
11
  this._context = _context;
12
12
  this._trackedMetrics = {};
13
13
  }
14
14
  _getTrackData() {
15
15
  return {
16
- versionKey: this._versionKey,
16
+ variationKey: this._variationKey,
17
17
  configKey: this._configKey,
18
18
  };
19
19
  }
@@ -23,11 +23,16 @@ class LDAIConfigTrackerImpl {
23
23
  }
24
24
  async trackDurationOf(func) {
25
25
  const startTime = Date.now();
26
- const result = await func();
27
- const endTime = Date.now();
28
- const duration = endTime - startTime; // duration in milliseconds
29
- this.trackDuration(duration);
30
- return result;
26
+ try {
27
+ // Be sure to await here so that we can track the duration of the function and also handle errors.
28
+ const result = await func();
29
+ return result;
30
+ }
31
+ finally {
32
+ const endTime = Date.now();
33
+ const duration = endTime - startTime; // duration in milliseconds
34
+ this.trackDuration(duration);
35
+ }
31
36
  }
32
37
  trackFeedback(feedback) {
33
38
  this._trackedMetrics.feedback = feedback;
@@ -41,14 +46,26 @@ class LDAIConfigTrackerImpl {
41
46
  trackSuccess() {
42
47
  this._trackedMetrics.success = true;
43
48
  this._ldClient.track('$ld:ai:generation', this._context, this._getTrackData(), 1);
49
+ this._ldClient.track('$ld:ai:generation:success', this._context, this._getTrackData(), 1);
50
+ }
51
+ trackError() {
52
+ this._trackedMetrics.success = false;
53
+ this._ldClient.track('$ld:ai:generation', this._context, this._getTrackData(), 1);
54
+ this._ldClient.track('$ld:ai:generation:error', this._context, this._getTrackData(), 1);
44
55
  }
45
56
  async trackOpenAIMetrics(func) {
46
- const result = await this.trackDurationOf(func);
47
- this.trackSuccess();
48
- if (result.usage) {
49
- this.trackTokens((0, OpenAiUsage_1.createOpenAiUsage)(result.usage));
57
+ try {
58
+ const result = await this.trackDurationOf(func);
59
+ this.trackSuccess();
60
+ if (result.usage) {
61
+ this.trackTokens((0, OpenAiUsage_1.createOpenAiUsage)(result.usage));
62
+ }
63
+ return result;
64
+ }
65
+ catch (err) {
66
+ this.trackError();
67
+ throw err;
50
68
  }
51
- return result;
52
69
  }
53
70
  trackBedrockConverseMetrics(res) {
54
71
  var _a, _b;
@@ -56,7 +73,7 @@ class LDAIConfigTrackerImpl {
56
73
  this.trackSuccess();
57
74
  }
58
75
  else if (((_b = res.$metadata) === null || _b === void 0 ? void 0 : _b.httpStatusCode) && res.$metadata.httpStatusCode >= 400) {
59
- // Potentially add error tracking in the future.
76
+ this.trackError();
60
77
  }
61
78
  if (res.metrics && res.metrics.latencyMs) {
62
79
  this.trackDuration(res.metrics.latencyMs);
@@ -1 +1 @@
1
- {"version":3,"file":"LDAIConfigTrackerImpl.js","sourceRoot":"","sources":["../src/LDAIConfigTrackerImpl.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LDAIConfigTrackerImpl.js","sourceRoot":"","sources":["../src/LDAIConfigTrackerImpl.ts"],"names":[],"mappings":"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"}
@@ -44,6 +44,10 @@ export interface LDAIConfigTracker {
44
44
  * Generation was successful.
45
45
  */
46
46
  trackSuccess(): void;
47
+ /**
48
+ * An error was encountered during generation.
49
+ */
50
+ trackError(): void;
47
51
  /**
48
52
  * Track sentiment about the generation.
49
53
  *
@@ -54,6 +58,12 @@ export interface LDAIConfigTracker {
54
58
  }): void;
55
59
  /**
56
60
  * Track the duration of execution of the provided function.
61
+ *
62
+ * If the provided function throws, then this method will also throw.
63
+ * In the case the provided function throws, this function will still record the duration.
64
+ *
65
+ * This function does not automatically record an error when the function throws.
66
+ *
57
67
  * @param func The function to track the duration of.
58
68
  * @returns The result of the function.
59
69
  */
@@ -61,6 +71,12 @@ export interface LDAIConfigTracker {
61
71
  /**
62
72
  * Track an OpenAI operation.
63
73
  *
74
+ * This function will track the duration of the operation, the token usage, and the success or error status.
75
+ *
76
+ * If the provided function throws, then this method will also throw.
77
+ * In the case the provided function throws, this function will record the duration and an error.
78
+ * A failed operation will not have any token usage data.
79
+ *
64
80
  * @param func Function which executes the operation.
65
81
  * @returns The result of the operation.
66
82
  */
@@ -74,6 +90,8 @@ export interface LDAIConfigTracker {
74
90
  /**
75
91
  * Track an operation which uses Bedrock.
76
92
  *
93
+ * This function will track the duration of the operation, the token usage, and the success or error status.
94
+ *
77
95
  * @param res The result of the Bedrock operation.
78
96
  * @returns The input operation.
79
97
  */
@@ -1 +1 @@
1
- {"version":3,"file":"LDAIConfigTracker.d.ts","sourceRoot":"","sources":["../../../src/api/config/LDAIConfigTracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,cAAc,CAAA;KAAE,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;OAMG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAExC;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAExC;;OAEG;IACH,YAAY,IAAI,IAAI,CAAC;IAErB;;;;OAIG;IACH,aAAa,CAAC,QAAQ,EAAE;QAAE,IAAI,EAAE,cAAc,CAAA;KAAE,GAAG,IAAI,CAAC;IAExD;;;;OAIG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAExD;;;;;OAKG;IACH,kBAAkB,CAChB,IAAI,SAAS;QACX,KAAK,CAAC,EAAE;YACN,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;SAC5B,CAAC;KACH,EAED,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GACxB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;;OAKG;IACH,2BAA2B,CACzB,IAAI,SAAS;QACX,SAAS,EAAE;YAAE,cAAc,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACvC,OAAO,CAAC,EAAE;YAAE,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACjC,KAAK,CAAC,EAAE;YACN,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,WAAW,CAAC,EAAE,MAAM,CAAC;SACtB,CAAC;KACH,EAED,GAAG,EAAE,IAAI,GACR,IAAI,CAAC;IAER;;OAEG;IACH,UAAU,IAAI,iBAAiB,CAAC;CACjC"}
1
+ {"version":3,"file":"LDAIConfigTracker.d.ts","sourceRoot":"","sources":["../../../src/api/config/LDAIConfigTracker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,cAAc,CAAA;KAAE,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;OAMG;IACH,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAExC;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAExC;;OAEG;IACH,YAAY,IAAI,IAAI,CAAC;IAErB;;OAEG;IACH,UAAU,IAAI,IAAI,CAAC;IAEnB;;;;OAIG;IACH,aAAa,CAAC,QAAQ,EAAE;QAAE,IAAI,EAAE,cAAc,CAAA;KAAE,GAAG,IAAI,CAAC;IAExD;;;;;;;;;;OAUG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAExD;;;;;;;;;;;OAWG;IACH,kBAAkB,CAChB,IAAI,SAAS;QACX,KAAK,CAAC,EAAE;YACN,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,aAAa,CAAC,EAAE,MAAM,CAAC;YACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;SAC5B,CAAC;KACH,EAED,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GACxB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;;;;OAOG;IACH,2BAA2B,CACzB,IAAI,SAAS;QACX,SAAS,EAAE;YAAE,cAAc,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACvC,OAAO,CAAC,EAAE;YAAE,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACjC,KAAK,CAAC,EAAE;YACN,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,YAAY,CAAC,EAAE,MAAM,CAAC;YACtB,WAAW,CAAC,EAAE,MAAM,CAAC;SACtB,CAAC;KACH,EAED,GAAG,EAAE,IAAI,GACR,IAAI,CAAC;IAER;;OAEG;IACH,UAAU,IAAI,iBAAiB,CAAC;CACjC"}