@launchdarkly/server-sdk-ai 0.3.0 → 0.5.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 +27 -0
- package/__tests__/LDAIClientImpl.test.ts +39 -43
- package/__tests__/LDAIConfigTrackerImpl.test.ts +39 -3
- package/dist/LDAIClientImpl.d.ts +2 -2
- package/dist/LDAIClientImpl.d.ts.map +1 -1
- package/dist/LDAIClientImpl.js +7 -4
- package/dist/LDAIClientImpl.js.map +1 -1
- package/dist/LDAIConfigTrackerImpl.d.ts +8 -2
- package/dist/LDAIConfigTrackerImpl.d.ts.map +1 -1
- package/dist/LDAIConfigTrackerImpl.js +13 -2
- package/dist/LDAIConfigTrackerImpl.js.map +1 -1
- package/dist/api/LDAIClient.d.ts +1 -9
- package/dist/api/LDAIClient.d.ts.map +1 -1
- package/dist/api/config/LDAIConfig.d.ts +18 -9
- package/dist/api/config/LDAIConfig.d.ts.map +1 -1
- package/dist/api/config/LDAIConfigTracker.d.ts +29 -2
- package/dist/api/config/LDAIConfigTracker.d.ts.map +1 -1
- package/docs/assets/search.js +1 -1
- package/docs/enums/LDFeedbackKind.html +7 -6
- package/docs/functions/createBedrockTokenUsage.html +5 -4
- package/docs/functions/initAi.html +5 -4
- package/docs/index.html +6 -4
- package/docs/interfaces/LDAIClient.html +11 -35
- package/docs/interfaces/LDAIConfig.html +25 -14
- package/docs/interfaces/LDAIConfigTracker.html +35 -21
- package/docs/interfaces/LDMessage.html +7 -6
- package/docs/interfaces/LDModelConfig.html +36 -29
- package/docs/interfaces/LDProviderConfig.html +79 -0
- package/docs/interfaces/LDTokenUsage.html +8 -7
- package/docs/types/LDAIDefaults.html +5 -4
- package/package.json +1 -1
- package/src/LDAIClientImpl.ts +11 -7
- package/src/LDAIConfigTrackerImpl.ts +16 -2
- package/src/api/LDAIClient.ts +1 -10
- package/src/api/config/LDAIConfig.ts +15 -9
- package/src/api/config/LDAIConfigTracker.ts +32 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,32 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [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
|
+
|
|
5
|
+
|
|
6
|
+
### ⚠ BREAKING CHANGES
|
|
7
|
+
|
|
8
|
+
* Rename model and providerid to name. ([#706](https://github.com/launchdarkly/js-core/issues/706))
|
|
9
|
+
|
|
10
|
+
### Features
|
|
11
|
+
|
|
12
|
+
* Add getSummary method to the tracker. ([#698](https://github.com/launchdarkly/js-core/issues/698)) ([4df902d](https://github.com/launchdarkly/js-core/commit/4df902d98584c88b072d6dab5f32a6ea8c4fcdf5))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Code Refactoring
|
|
16
|
+
|
|
17
|
+
* Rename model and providerid to name. ([#706](https://github.com/launchdarkly/js-core/issues/706)) ([8dd3951](https://github.com/launchdarkly/js-core/commit/8dd39517cfc14c6e037a2438d22f20a9527c9ffa))
|
|
18
|
+
|
|
19
|
+
## [0.4.0](https://github.com/launchdarkly/js-core/compare/server-sdk-ai-v0.3.0...server-sdk-ai-v0.4.0) (2024-11-22)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
### ⚠ BREAKING CHANGES
|
|
23
|
+
|
|
24
|
+
* Updated AI config interface. ([#697](https://github.com/launchdarkly/js-core/issues/697))
|
|
25
|
+
|
|
26
|
+
### Features
|
|
27
|
+
|
|
28
|
+
* Updated AI config interface. ([#697](https://github.com/launchdarkly/js-core/issues/697)) ([cd72ea8](https://github.com/launchdarkly/js-core/commit/cd72ea8193888b0635b5beffa0a877b18294777e))
|
|
29
|
+
|
|
3
30
|
## [0.3.0](https://github.com/launchdarkly/js-core/compare/server-sdk-ai-v0.2.1...server-sdk-ai-v0.3.0) (2024-11-15)
|
|
4
31
|
|
|
5
32
|
|
|
@@ -11,36 +11,24 @@ const mockLdClient: jest.Mocked<LDClientMin> = {
|
|
|
11
11
|
|
|
12
12
|
const testContext: LDContext = { kind: 'user', key: 'test-user' };
|
|
13
13
|
|
|
14
|
-
it('
|
|
15
|
-
const client = new LDAIClientImpl(mockLdClient);
|
|
16
|
-
const template = 'Hello {{name}}, your score is {{score}}';
|
|
17
|
-
const variables = { name: 'John', score: 42 };
|
|
18
|
-
|
|
19
|
-
const result = client.interpolateTemplate(template, variables);
|
|
20
|
-
expect(result).toBe('Hello John, your score is 42');
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
it('handles empty variables in template interpolation', () => {
|
|
24
|
-
const client = new LDAIClientImpl(mockLdClient);
|
|
25
|
-
const template = 'Hello {{name}}';
|
|
26
|
-
const variables = {};
|
|
27
|
-
|
|
28
|
-
const result = client.interpolateTemplate(template, variables);
|
|
29
|
-
expect(result).toBe('Hello ');
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
it('returns model config with interpolated prompts', async () => {
|
|
14
|
+
it('returns config with interpolated messagess', async () => {
|
|
33
15
|
const client = new LDAIClientImpl(mockLdClient);
|
|
34
16
|
const key = 'test-flag';
|
|
35
17
|
const defaultValue: LDAIDefaults = {
|
|
36
|
-
model: {
|
|
37
|
-
|
|
18
|
+
model: { name: 'test', parameters: { name: 'test-model' } },
|
|
19
|
+
messages: [],
|
|
38
20
|
enabled: true,
|
|
39
21
|
};
|
|
40
22
|
|
|
41
23
|
const mockVariation = {
|
|
42
|
-
model: {
|
|
43
|
-
|
|
24
|
+
model: {
|
|
25
|
+
name: 'example-model',
|
|
26
|
+
parameters: { name: 'imagination', temperature: 0.7, maxTokens: 4096 },
|
|
27
|
+
},
|
|
28
|
+
provider: {
|
|
29
|
+
name: 'example-provider',
|
|
30
|
+
},
|
|
31
|
+
messages: [
|
|
44
32
|
{ role: 'system', content: 'Hello {{name}}' },
|
|
45
33
|
{ role: 'user', content: 'Score: {{score}}' },
|
|
46
34
|
],
|
|
@@ -53,11 +41,17 @@ it('returns model config with interpolated prompts', async () => {
|
|
|
53
41
|
mockLdClient.variation.mockResolvedValue(mockVariation);
|
|
54
42
|
|
|
55
43
|
const variables = { name: 'John', score: 42 };
|
|
56
|
-
const result = await client.
|
|
44
|
+
const result = await client.config(key, testContext, defaultValue, variables);
|
|
57
45
|
|
|
58
46
|
expect(result).toEqual({
|
|
59
|
-
model: {
|
|
60
|
-
|
|
47
|
+
model: {
|
|
48
|
+
name: 'example-model',
|
|
49
|
+
parameters: { name: 'imagination', temperature: 0.7, maxTokens: 4096 },
|
|
50
|
+
},
|
|
51
|
+
provider: {
|
|
52
|
+
name: 'example-provider',
|
|
53
|
+
},
|
|
54
|
+
messages: [
|
|
61
55
|
{ role: 'system', content: 'Hello John' },
|
|
62
56
|
{ role: 'user', content: 'Score: 42' },
|
|
63
57
|
],
|
|
@@ -66,46 +60,46 @@ it('returns model config with interpolated prompts', async () => {
|
|
|
66
60
|
});
|
|
67
61
|
});
|
|
68
62
|
|
|
69
|
-
it('includes context in variables for
|
|
63
|
+
it('includes context in variables for messages interpolation', async () => {
|
|
70
64
|
const client = new LDAIClientImpl(mockLdClient);
|
|
71
65
|
const key = 'test-flag';
|
|
72
66
|
const defaultValue: LDAIDefaults = {
|
|
73
|
-
model: {
|
|
74
|
-
|
|
67
|
+
model: { name: 'test', parameters: { name: 'test-model' } },
|
|
68
|
+
messages: [],
|
|
75
69
|
};
|
|
76
70
|
|
|
77
71
|
const mockVariation = {
|
|
78
|
-
|
|
72
|
+
messages: [{ role: 'system', content: 'User key: {{ldctx.key}}' }],
|
|
79
73
|
_ldMeta: { versionKey: 'v1', enabled: true },
|
|
80
74
|
};
|
|
81
75
|
|
|
82
76
|
mockLdClient.variation.mockResolvedValue(mockVariation);
|
|
83
77
|
|
|
84
|
-
const result = await client.
|
|
78
|
+
const result = await client.config(key, testContext, defaultValue);
|
|
85
79
|
|
|
86
|
-
expect(result.
|
|
80
|
+
expect(result.messages?.[0].content).toBe('User key: test-user');
|
|
87
81
|
});
|
|
88
82
|
|
|
89
83
|
it('handles missing metadata in variation', async () => {
|
|
90
84
|
const client = new LDAIClientImpl(mockLdClient);
|
|
91
85
|
const key = 'test-flag';
|
|
92
86
|
const defaultValue: LDAIDefaults = {
|
|
93
|
-
model: {
|
|
94
|
-
|
|
87
|
+
model: { name: 'test', parameters: { name: 'test-model' } },
|
|
88
|
+
messages: [],
|
|
95
89
|
};
|
|
96
90
|
|
|
97
91
|
const mockVariation = {
|
|
98
|
-
model: {
|
|
99
|
-
|
|
92
|
+
model: { name: 'example-provider', parameters: { name: 'imagination' } },
|
|
93
|
+
messages: [{ role: 'system', content: 'Hello' }],
|
|
100
94
|
};
|
|
101
95
|
|
|
102
96
|
mockLdClient.variation.mockResolvedValue(mockVariation);
|
|
103
97
|
|
|
104
|
-
const result = await client.
|
|
98
|
+
const result = await client.config(key, testContext, defaultValue);
|
|
105
99
|
|
|
106
100
|
expect(result).toEqual({
|
|
107
|
-
model: {
|
|
108
|
-
|
|
101
|
+
model: { name: 'example-provider', parameters: { name: 'imagination' } },
|
|
102
|
+
messages: [{ role: 'system', content: 'Hello' }],
|
|
109
103
|
tracker: expect.any(Object),
|
|
110
104
|
enabled: false,
|
|
111
105
|
});
|
|
@@ -115,18 +109,20 @@ it('passes the default value to the underlying client', async () => {
|
|
|
115
109
|
const client = new LDAIClientImpl(mockLdClient);
|
|
116
110
|
const key = 'non-existent-flag';
|
|
117
111
|
const defaultValue: LDAIDefaults = {
|
|
118
|
-
model: {
|
|
119
|
-
|
|
112
|
+
model: { name: 'default-model', parameters: { name: 'default' } },
|
|
113
|
+
provider: { name: 'default-provider' },
|
|
114
|
+
messages: [{ role: 'system', content: 'Default messages' }],
|
|
120
115
|
enabled: true,
|
|
121
116
|
};
|
|
122
117
|
|
|
123
118
|
mockLdClient.variation.mockResolvedValue(defaultValue);
|
|
124
119
|
|
|
125
|
-
const result = await client.
|
|
120
|
+
const result = await client.config(key, testContext, defaultValue);
|
|
126
121
|
|
|
127
122
|
expect(result).toEqual({
|
|
128
123
|
model: defaultValue.model,
|
|
129
|
-
|
|
124
|
+
messages: defaultValue.messages,
|
|
125
|
+
provider: defaultValue.provider,
|
|
130
126
|
tracker: expect.any(Object),
|
|
131
127
|
enabled: false,
|
|
132
128
|
});
|
|
@@ -90,7 +90,7 @@ it('tracks OpenAI usage', async () => {
|
|
|
90
90
|
const PROMPT_TOKENS = 49;
|
|
91
91
|
const COMPLETION_TOKENS = 51;
|
|
92
92
|
|
|
93
|
-
await tracker.
|
|
93
|
+
await tracker.trackOpenAIMetrics(async () => ({
|
|
94
94
|
usage: {
|
|
95
95
|
total_tokens: TOTAL_TOKENS,
|
|
96
96
|
prompt_tokens: PROMPT_TOKENS,
|
|
@@ -151,7 +151,7 @@ it('tracks Bedrock conversation with successful response', () => {
|
|
|
151
151
|
},
|
|
152
152
|
};
|
|
153
153
|
|
|
154
|
-
tracker.
|
|
154
|
+
tracker.trackBedrockConverseMetrics(response);
|
|
155
155
|
|
|
156
156
|
expect(mockTrack).toHaveBeenCalledWith(
|
|
157
157
|
'$ld:ai:generation',
|
|
@@ -198,7 +198,7 @@ it('tracks Bedrock conversation with error response', () => {
|
|
|
198
198
|
|
|
199
199
|
// TODO: We may want a track failure.
|
|
200
200
|
|
|
201
|
-
tracker.
|
|
201
|
+
tracker.trackBedrockConverseMetrics(response);
|
|
202
202
|
|
|
203
203
|
expect(mockTrack).not.toHaveBeenCalled();
|
|
204
204
|
});
|
|
@@ -268,3 +268,39 @@ it('only tracks non-zero token counts', () => {
|
|
|
268
268
|
expect.anything(),
|
|
269
269
|
);
|
|
270
270
|
});
|
|
271
|
+
|
|
272
|
+
it('returns empty summary when no metrics tracked', () => {
|
|
273
|
+
const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey, versionKey, testContext);
|
|
274
|
+
|
|
275
|
+
const summary = tracker.getSummary();
|
|
276
|
+
|
|
277
|
+
expect(summary).toEqual({});
|
|
278
|
+
});
|
|
279
|
+
|
|
280
|
+
it('summarizes tracked metrics', () => {
|
|
281
|
+
const tracker = new LDAIConfigTrackerImpl(mockLdClient, configKey, versionKey, testContext);
|
|
282
|
+
|
|
283
|
+
tracker.trackDuration(1000);
|
|
284
|
+
tracker.trackTokens({
|
|
285
|
+
total: 100,
|
|
286
|
+
input: 40,
|
|
287
|
+
output: 60,
|
|
288
|
+
});
|
|
289
|
+
tracker.trackFeedback({ kind: LDFeedbackKind.Positive });
|
|
290
|
+
tracker.trackSuccess();
|
|
291
|
+
|
|
292
|
+
const summary = tracker.getSummary();
|
|
293
|
+
|
|
294
|
+
expect(summary).toEqual({
|
|
295
|
+
durationMs: 1000,
|
|
296
|
+
tokens: {
|
|
297
|
+
total: 100,
|
|
298
|
+
input: 40,
|
|
299
|
+
output: 60,
|
|
300
|
+
},
|
|
301
|
+
feedback: {
|
|
302
|
+
kind: 'positive',
|
|
303
|
+
},
|
|
304
|
+
success: true,
|
|
305
|
+
});
|
|
306
|
+
});
|
package/dist/LDAIClientImpl.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { LDClientMin } from './LDClientMin';
|
|
|
5
5
|
export declare class LDAIClientImpl implements LDAIClient {
|
|
6
6
|
private _ldClient;
|
|
7
7
|
constructor(_ldClient: LDClientMin);
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
private _interpolateTemplate;
|
|
9
|
+
config(key: string, context: LDContext, defaultValue: LDAIDefaults, variables?: Record<string, unknown>): Promise<LDAIConfig>;
|
|
10
10
|
}
|
|
11
11
|
//# sourceMappingURL=LDAIClientImpl.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LDAIClientImpl.d.ts","sourceRoot":"","sources":["../src/LDAIClientImpl.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"LDAIClientImpl.d.ts","sourceRoot":"","sources":["../src/LDAIClientImpl.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,YAAY,EAA8C,MAAM,cAAc,CAAC;AACpG,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAqB5C,qBAAa,cAAe,YAAW,UAAU;IACnC,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,WAAW;IAE1C,OAAO,CAAC,oBAAoB;IAItB,MAAM,CACV,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,SAAS,EAClB,YAAY,EAAE,YAAY,EAC1B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,OAAO,CAAC,UAAU,CAAC;CAkCvB"}
|
package/dist/LDAIClientImpl.js
CHANGED
|
@@ -7,10 +7,10 @@ class LDAIClientImpl {
|
|
|
7
7
|
constructor(_ldClient) {
|
|
8
8
|
this._ldClient = _ldClient;
|
|
9
9
|
}
|
|
10
|
-
|
|
10
|
+
_interpolateTemplate(template, variables) {
|
|
11
11
|
return Mustache.render(template, variables, undefined, { escape: (item) => item });
|
|
12
12
|
}
|
|
13
|
-
async
|
|
13
|
+
async config(key, context, defaultValue, variables) {
|
|
14
14
|
var _a, _b, _c;
|
|
15
15
|
const value = await this._ldClient.variation(key, context, defaultValue);
|
|
16
16
|
const tracker = new LDAIConfigTrackerImpl_1.LDAIConfigTrackerImpl(this._ldClient, key,
|
|
@@ -27,9 +27,12 @@ class LDAIClientImpl {
|
|
|
27
27
|
if (value.model) {
|
|
28
28
|
config.model = Object.assign({}, value.model);
|
|
29
29
|
}
|
|
30
|
+
if (value.provider) {
|
|
31
|
+
config.provider = Object.assign({}, value.provider);
|
|
32
|
+
}
|
|
30
33
|
const allVariables = Object.assign(Object.assign({}, variables), { ldctx: context });
|
|
31
|
-
if (value.
|
|
32
|
-
config.
|
|
34
|
+
if (value.messages) {
|
|
35
|
+
config.messages = value.messages.map((entry) => (Object.assign(Object.assign({}, entry), { content: this._interpolateTemplate(entry.content, allVariables) })));
|
|
33
36
|
}
|
|
34
37
|
return config;
|
|
35
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LDAIClientImpl.js","sourceRoot":"","sources":["../src/LDAIClientImpl.ts"],"names":[],"mappings":";;;AAAA,qCAAqC;AAMrC,mEAAgE;
|
|
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,5 +1,6 @@
|
|
|
1
1
|
import { LDContext } from '@launchdarkly/js-server-sdk-common';
|
|
2
2
|
import { LDAIConfigTracker } from './api/config';
|
|
3
|
+
import { LDAIMetricSummary } from './api/config/LDAIConfigTracker';
|
|
3
4
|
import { LDFeedbackKind, LDTokenUsage } from './api/metrics';
|
|
4
5
|
import { LDClientMin } from './LDClientMin';
|
|
5
6
|
export declare class LDAIConfigTrackerImpl implements LDAIConfigTracker {
|
|
@@ -7,6 +8,7 @@ export declare class LDAIConfigTrackerImpl implements LDAIConfigTracker {
|
|
|
7
8
|
private _configKey;
|
|
8
9
|
private _versionKey;
|
|
9
10
|
private _context;
|
|
11
|
+
private _trackedMetrics;
|
|
10
12
|
constructor(_ldClient: LDClientMin, _configKey: string, _versionKey: string, _context: LDContext);
|
|
11
13
|
private _getTrackData;
|
|
12
14
|
trackDuration(duration: number): void;
|
|
@@ -15,14 +17,14 @@ export declare class LDAIConfigTrackerImpl implements LDAIConfigTracker {
|
|
|
15
17
|
kind: LDFeedbackKind;
|
|
16
18
|
}): void;
|
|
17
19
|
trackSuccess(): void;
|
|
18
|
-
|
|
20
|
+
trackOpenAIMetrics<TRes extends {
|
|
19
21
|
usage?: {
|
|
20
22
|
total_tokens?: number;
|
|
21
23
|
prompt_tokens?: number;
|
|
22
24
|
completion_tokens?: number;
|
|
23
25
|
};
|
|
24
26
|
}>(func: () => Promise<TRes>): Promise<TRes>;
|
|
25
|
-
|
|
27
|
+
trackBedrockConverseMetrics<TRes extends {
|
|
26
28
|
$metadata: {
|
|
27
29
|
httpStatusCode?: number;
|
|
28
30
|
};
|
|
@@ -36,5 +38,9 @@ export declare class LDAIConfigTrackerImpl implements LDAIConfigTracker {
|
|
|
36
38
|
};
|
|
37
39
|
}>(res: TRes): TRes;
|
|
38
40
|
trackTokens(tokens: LDTokenUsage): void;
|
|
41
|
+
/**
|
|
42
|
+
* Get a summary of the tracked metrics.
|
|
43
|
+
*/
|
|
44
|
+
getSummary(): LDAIMetricSummary;
|
|
39
45
|
}
|
|
40
46
|
//# sourceMappingURL=LDAIConfigTrackerImpl.d.ts.map
|
|
@@ -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,EAA2B,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEtF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,qBAAa,qBAAsB,YAAW,iBAAiB;
|
|
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"}
|
|
@@ -9,6 +9,7 @@ class LDAIConfigTrackerImpl {
|
|
|
9
9
|
this._configKey = _configKey;
|
|
10
10
|
this._versionKey = _versionKey;
|
|
11
11
|
this._context = _context;
|
|
12
|
+
this._trackedMetrics = {};
|
|
12
13
|
}
|
|
13
14
|
_getTrackData() {
|
|
14
15
|
return {
|
|
@@ -17,6 +18,7 @@ class LDAIConfigTrackerImpl {
|
|
|
17
18
|
};
|
|
18
19
|
}
|
|
19
20
|
trackDuration(duration) {
|
|
21
|
+
this._trackedMetrics.durationMs = duration;
|
|
20
22
|
this._ldClient.track('$ld:ai:duration:total', this._context, this._getTrackData(), duration);
|
|
21
23
|
}
|
|
22
24
|
async trackDurationOf(func) {
|
|
@@ -28,6 +30,7 @@ class LDAIConfigTrackerImpl {
|
|
|
28
30
|
return result;
|
|
29
31
|
}
|
|
30
32
|
trackFeedback(feedback) {
|
|
33
|
+
this._trackedMetrics.feedback = feedback;
|
|
31
34
|
if (feedback.kind === metrics_1.LDFeedbackKind.Positive) {
|
|
32
35
|
this._ldClient.track('$ld:ai:feedback:user:positive', this._context, this._getTrackData(), 1);
|
|
33
36
|
}
|
|
@@ -36,9 +39,10 @@ class LDAIConfigTrackerImpl {
|
|
|
36
39
|
}
|
|
37
40
|
}
|
|
38
41
|
trackSuccess() {
|
|
42
|
+
this._trackedMetrics.success = true;
|
|
39
43
|
this._ldClient.track('$ld:ai:generation', this._context, this._getTrackData(), 1);
|
|
40
44
|
}
|
|
41
|
-
async
|
|
45
|
+
async trackOpenAIMetrics(func) {
|
|
42
46
|
const result = await this.trackDurationOf(func);
|
|
43
47
|
this.trackSuccess();
|
|
44
48
|
if (result.usage) {
|
|
@@ -46,7 +50,7 @@ class LDAIConfigTrackerImpl {
|
|
|
46
50
|
}
|
|
47
51
|
return result;
|
|
48
52
|
}
|
|
49
|
-
|
|
53
|
+
trackBedrockConverseMetrics(res) {
|
|
50
54
|
var _a, _b;
|
|
51
55
|
if (((_a = res.$metadata) === null || _a === void 0 ? void 0 : _a.httpStatusCode) === 200) {
|
|
52
56
|
this.trackSuccess();
|
|
@@ -63,6 +67,7 @@ class LDAIConfigTrackerImpl {
|
|
|
63
67
|
return res;
|
|
64
68
|
}
|
|
65
69
|
trackTokens(tokens) {
|
|
70
|
+
this._trackedMetrics.tokens = tokens;
|
|
66
71
|
const trackData = this._getTrackData();
|
|
67
72
|
if (tokens.total > 0) {
|
|
68
73
|
this._ldClient.track('$ld:ai:tokens:total', this._context, trackData, tokens.total);
|
|
@@ -74,6 +79,12 @@ class LDAIConfigTrackerImpl {
|
|
|
74
79
|
this._ldClient.track('$ld:ai:tokens:output', this._context, trackData, tokens.output);
|
|
75
80
|
}
|
|
76
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Get a summary of the tracked metrics.
|
|
84
|
+
*/
|
|
85
|
+
getSummary() {
|
|
86
|
+
return Object.assign({}, this._trackedMetrics);
|
|
87
|
+
}
|
|
77
88
|
}
|
|
78
89
|
exports.LDAIConfigTrackerImpl = LDAIConfigTrackerImpl;
|
|
79
90
|
//# sourceMappingURL=LDAIConfigTrackerImpl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LDAIConfigTrackerImpl.js","sourceRoot":"","sources":["../src/LDAIConfigTrackerImpl.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"LDAIConfigTrackerImpl.js","sourceRoot":"","sources":["../src/LDAIConfigTrackerImpl.ts"],"names":[],"mappings":"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"}
|
package/dist/api/LDAIClient.d.ts
CHANGED
|
@@ -4,14 +4,6 @@ import { LDAIConfig, LDAIDefaults } from './config/LDAIConfig';
|
|
|
4
4
|
* Interface for performing AI operations using LaunchDarkly.
|
|
5
5
|
*/
|
|
6
6
|
export interface LDAIClient {
|
|
7
|
-
/**
|
|
8
|
-
* Parses and interpolates a template string with the provided variables.
|
|
9
|
-
*
|
|
10
|
-
* @param template The template string to be parsed and interpolated.
|
|
11
|
-
* @param variables An object containing the variables to be used for interpolation.
|
|
12
|
-
* @returns The interpolated string.
|
|
13
|
-
*/
|
|
14
|
-
interpolateTemplate(template: string, variables: Record<string, unknown>): string;
|
|
15
7
|
/**
|
|
16
8
|
* Retrieves and processes an AI configuration based on the provided key, LaunchDarkly context,
|
|
17
9
|
* and variables. This includes the model configuration and the processed prompts.
|
|
@@ -64,6 +56,6 @@ export interface LDAIClient {
|
|
|
64
56
|
* }
|
|
65
57
|
* ```
|
|
66
58
|
*/
|
|
67
|
-
|
|
59
|
+
config(key: string, context: LDContext, defaultValue: LDAIDefaults, variables?: Record<string, unknown>): Promise<LDAIConfig>;
|
|
68
60
|
}
|
|
69
61
|
//# sourceMappingURL=LDAIClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LDAIClient.d.ts","sourceRoot":"","sources":["../../src/api/LDAIClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB
|
|
1
|
+
{"version":3,"file":"LDAIClient.d.ts","sourceRoot":"","sources":["../../src/api/LDAIClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAE/D;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmDG;IACH,MAAM,CACJ,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,SAAS,EAClB,YAAY,EAAE,YAAY,EAC1B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,OAAO,CAAC,UAAU,CAAC,CAAC;CACxB"}
|
|
@@ -6,20 +6,25 @@ export interface LDModelConfig {
|
|
|
6
6
|
/**
|
|
7
7
|
* The ID of the model.
|
|
8
8
|
*/
|
|
9
|
-
|
|
9
|
+
name: string;
|
|
10
10
|
/**
|
|
11
|
-
*
|
|
12
|
-
* model.
|
|
11
|
+
* Model specific parameters.
|
|
13
12
|
*/
|
|
14
|
-
|
|
13
|
+
parameters?: {
|
|
14
|
+
[index: string]: unknown;
|
|
15
|
+
};
|
|
15
16
|
/**
|
|
16
|
-
*
|
|
17
|
+
* Additional user-specified parameters.
|
|
17
18
|
*/
|
|
18
|
-
|
|
19
|
+
custom?: {
|
|
20
|
+
[index: string]: unknown;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export interface LDProviderConfig {
|
|
19
24
|
/**
|
|
20
|
-
*
|
|
25
|
+
* The ID of the provider.
|
|
21
26
|
*/
|
|
22
|
-
|
|
27
|
+
name: string;
|
|
23
28
|
}
|
|
24
29
|
/**
|
|
25
30
|
* Information about prompts.
|
|
@@ -45,7 +50,11 @@ export interface LDAIConfig {
|
|
|
45
50
|
/**
|
|
46
51
|
* Optional prompt data.
|
|
47
52
|
*/
|
|
48
|
-
|
|
53
|
+
messages?: LDMessage[];
|
|
54
|
+
/**
|
|
55
|
+
* Optional configuration for the provider.
|
|
56
|
+
*/
|
|
57
|
+
provider?: LDProviderConfig;
|
|
49
58
|
/**
|
|
50
59
|
* A tracker which can be used to generate analytics.
|
|
51
60
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LDAIConfig.d.ts","sourceRoot":"","sources":["../../../src/api/config/LDAIConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,
|
|
1
|
+
{"version":3,"file":"LDAIConfig.d.ts","sourceRoot":"","sources":["../../../src/api/config/LDAIConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,UAAU,CAAC,EAAE;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IAE1C;;OAEG;IACH,MAAM,CAAC,EAAE;QAAE,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;CACvC;AAED,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB;;OAEG;IACH,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,EAAE,CAAC;IAEvB;;OAEG;IACH,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAE5B;;OAEG;IACH,OAAO,EAAE,iBAAiB,CAAC;IAE3B;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,GAAG,SAAS,CAAC,GAAG;IACnE;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC"}
|
|
@@ -1,4 +1,27 @@
|
|
|
1
1
|
import { LDFeedbackKind, LDTokenUsage } from '../metrics';
|
|
2
|
+
/**
|
|
3
|
+
* Metrics which have been tracked.
|
|
4
|
+
*/
|
|
5
|
+
export interface LDAIMetricSummary {
|
|
6
|
+
/**
|
|
7
|
+
* The duration of generation.
|
|
8
|
+
*/
|
|
9
|
+
durationMs?: number;
|
|
10
|
+
/**
|
|
11
|
+
* Information about token usage.
|
|
12
|
+
*/
|
|
13
|
+
tokens?: LDTokenUsage;
|
|
14
|
+
/**
|
|
15
|
+
* Was generation successful.
|
|
16
|
+
*/
|
|
17
|
+
success?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Any sentiment about the generation.
|
|
20
|
+
*/
|
|
21
|
+
feedback?: {
|
|
22
|
+
kind: LDFeedbackKind;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
2
25
|
/**
|
|
3
26
|
* The LDAIConfigTracker is used to track various details about AI operations.
|
|
4
27
|
*/
|
|
@@ -41,7 +64,7 @@ export interface LDAIConfigTracker {
|
|
|
41
64
|
* @param func Function which executes the operation.
|
|
42
65
|
* @returns The result of the operation.
|
|
43
66
|
*/
|
|
44
|
-
|
|
67
|
+
trackOpenAIMetrics<TRes extends {
|
|
45
68
|
usage?: {
|
|
46
69
|
total_tokens?: number;
|
|
47
70
|
prompt_tokens?: number;
|
|
@@ -54,7 +77,7 @@ export interface LDAIConfigTracker {
|
|
|
54
77
|
* @param res The result of the Bedrock operation.
|
|
55
78
|
* @returns The input operation.
|
|
56
79
|
*/
|
|
57
|
-
|
|
80
|
+
trackBedrockConverseMetrics<TRes extends {
|
|
58
81
|
$metadata: {
|
|
59
82
|
httpStatusCode?: number;
|
|
60
83
|
};
|
|
@@ -67,5 +90,9 @@ export interface LDAIConfigTracker {
|
|
|
67
90
|
totalTokens?: number;
|
|
68
91
|
};
|
|
69
92
|
}>(res: TRes): TRes;
|
|
93
|
+
/**
|
|
94
|
+
* Get a summary of the tracked metrics.
|
|
95
|
+
*/
|
|
96
|
+
getSummary(): LDAIMetricSummary;
|
|
70
97
|
}
|
|
71
98
|
//# sourceMappingURL=LDAIConfigTracker.d.ts.map
|
|
@@ -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;;;;;;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,
|
|
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"}
|