@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 +18 -0
- package/__tests__/LDAIClientImpl.test.ts +2 -2
- package/__tests__/LDAIConfigTrackerImpl.test.ts +117 -35
- package/dist/LDAIClientImpl.js +1 -1
- package/dist/LDAIClientImpl.js.map +1 -1
- package/dist/LDAIConfigTrackerImpl.d.ts +3 -2
- package/dist/LDAIConfigTrackerImpl.d.ts.map +1 -1
- package/dist/LDAIConfigTrackerImpl.js +31 -14
- package/dist/LDAIConfigTrackerImpl.js.map +1 -1
- package/dist/api/config/LDAIConfigTracker.d.ts +18 -0
- package/dist/api/config/LDAIConfigTracker.d.ts.map +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/enums/LDFeedbackKind.html +6 -6
- package/docs/functions/createBedrockTokenUsage.html +4 -4
- package/docs/functions/initAi.html +4 -4
- package/docs/index.html +4 -4
- package/docs/interfaces/LDAIClient.html +5 -5
- package/docs/interfaces/LDAIConfig.html +9 -9
- package/docs/interfaces/LDAIConfigTracker.html +33 -12
- package/docs/interfaces/LDMessage.html +6 -6
- package/docs/interfaces/LDModelConfig.html +7 -7
- package/docs/interfaces/LDProviderConfig.html +5 -5
- package/docs/interfaces/LDTokenUsage.html +7 -7
- package/docs/types/LDAIDefaults.html +4 -4
- package/package.json +1 -1
- package/src/LDAIClientImpl.ts +2 -2
- package/src/LDAIConfigTrackerImpl.ts +30 -14
- package/src/api/config/LDAIConfigTracker.ts +19 -0
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
|
-
|
|
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: {
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
68
|
+
{ configKey, variationKey },
|
|
69
69
|
1,
|
|
70
70
|
);
|
|
71
71
|
});
|
|
72
72
|
|
|
73
73
|
it('tracks success', () => {
|
|
74
|
-
const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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).
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
+
});
|
package/dist/LDAIClientImpl.js
CHANGED
|
@@ -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.
|
|
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,
|
|
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
|
|
9
|
+
private _variationKey;
|
|
10
10
|
private _context;
|
|
11
11
|
private _trackedMetrics;
|
|
12
|
-
constructor(_ldClient: LDClientMin, _configKey: string,
|
|
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,
|
|
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,
|
|
7
|
+
constructor(_ldClient, _configKey, _variationKey, _context) {
|
|
8
8
|
this._ldClient = _ldClient;
|
|
9
9
|
this._configKey = _configKey;
|
|
10
|
-
this.
|
|
10
|
+
this._variationKey = _variationKey;
|
|
11
11
|
this._context = _context;
|
|
12
12
|
this._trackedMetrics = {};
|
|
13
13
|
}
|
|
14
14
|
_getTrackData() {
|
|
15
15
|
return {
|
|
16
|
-
|
|
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
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
-
|
|
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":";;;AAIA,2CAAsF;AACtF,2DAA8D;AAG9D,MAAa,qBAAqB;IAGhC,YACU,SAAsB,EACtB,UAAkB,EAClB,
|
|
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
|
|
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"}
|