@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.
Files changed (36) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/__tests__/LDAIClientImpl.test.ts +39 -43
  3. package/__tests__/LDAIConfigTrackerImpl.test.ts +39 -3
  4. package/dist/LDAIClientImpl.d.ts +2 -2
  5. package/dist/LDAIClientImpl.d.ts.map +1 -1
  6. package/dist/LDAIClientImpl.js +7 -4
  7. package/dist/LDAIClientImpl.js.map +1 -1
  8. package/dist/LDAIConfigTrackerImpl.d.ts +8 -2
  9. package/dist/LDAIConfigTrackerImpl.d.ts.map +1 -1
  10. package/dist/LDAIConfigTrackerImpl.js +13 -2
  11. package/dist/LDAIConfigTrackerImpl.js.map +1 -1
  12. package/dist/api/LDAIClient.d.ts +1 -9
  13. package/dist/api/LDAIClient.d.ts.map +1 -1
  14. package/dist/api/config/LDAIConfig.d.ts +18 -9
  15. package/dist/api/config/LDAIConfig.d.ts.map +1 -1
  16. package/dist/api/config/LDAIConfigTracker.d.ts +29 -2
  17. package/dist/api/config/LDAIConfigTracker.d.ts.map +1 -1
  18. package/docs/assets/search.js +1 -1
  19. package/docs/enums/LDFeedbackKind.html +7 -6
  20. package/docs/functions/createBedrockTokenUsage.html +5 -4
  21. package/docs/functions/initAi.html +5 -4
  22. package/docs/index.html +6 -4
  23. package/docs/interfaces/LDAIClient.html +11 -35
  24. package/docs/interfaces/LDAIConfig.html +25 -14
  25. package/docs/interfaces/LDAIConfigTracker.html +35 -21
  26. package/docs/interfaces/LDMessage.html +7 -6
  27. package/docs/interfaces/LDModelConfig.html +36 -29
  28. package/docs/interfaces/LDProviderConfig.html +79 -0
  29. package/docs/interfaces/LDTokenUsage.html +8 -7
  30. package/docs/types/LDAIDefaults.html +5 -4
  31. package/package.json +1 -1
  32. package/src/LDAIClientImpl.ts +11 -7
  33. package/src/LDAIConfigTrackerImpl.ts +16 -2
  34. package/src/api/LDAIClient.ts +1 -10
  35. package/src/api/config/LDAIConfig.ts +15 -9
  36. 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('interpolates template variables', () => {
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: { modelId: 'test', name: 'test-model' },
37
- prompt: [],
18
+ model: { name: 'test', parameters: { name: 'test-model' } },
19
+ messages: [],
38
20
  enabled: true,
39
21
  };
40
22
 
41
23
  const mockVariation = {
42
- model: { modelId: 'example-provider', name: 'imagination', temperature: 0.7, maxTokens: 4096 },
43
- prompt: [
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.modelConfig(key, testContext, defaultValue, variables);
44
+ const result = await client.config(key, testContext, defaultValue, variables);
57
45
 
58
46
  expect(result).toEqual({
59
- model: { modelId: 'example-provider', name: 'imagination', temperature: 0.7, maxTokens: 4096 },
60
- prompt: [
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 prompt interpolation', async () => {
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: { modelId: 'test', name: 'test-model' },
74
- prompt: [],
67
+ model: { name: 'test', parameters: { name: 'test-model' } },
68
+ messages: [],
75
69
  };
76
70
 
77
71
  const mockVariation = {
78
- prompt: [{ role: 'system', content: 'User key: {{ldctx.key}}' }],
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.modelConfig(key, testContext, defaultValue);
78
+ const result = await client.config(key, testContext, defaultValue);
85
79
 
86
- expect(result.prompt?.[0].content).toBe('User key: test-user');
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: { modelId: 'test', name: 'test-model' },
94
- prompt: [],
87
+ model: { name: 'test', parameters: { name: 'test-model' } },
88
+ messages: [],
95
89
  };
96
90
 
97
91
  const mockVariation = {
98
- model: { modelId: 'example-provider', name: 'imagination' },
99
- prompt: [{ role: 'system', content: 'Hello' }],
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.modelConfig(key, testContext, defaultValue);
98
+ const result = await client.config(key, testContext, defaultValue);
105
99
 
106
100
  expect(result).toEqual({
107
- model: { modelId: 'example-provider', name: 'imagination' },
108
- prompt: [{ role: 'system', content: 'Hello' }],
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: { modelId: 'default-model', name: 'default' },
119
- prompt: [{ role: 'system', content: 'Default prompt' }],
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.modelConfig(key, testContext, defaultValue);
120
+ const result = await client.config(key, testContext, defaultValue);
126
121
 
127
122
  expect(result).toEqual({
128
123
  model: defaultValue.model,
129
- prompt: defaultValue.prompt,
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.trackOpenAI(async () => ({
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.trackBedrockConverse(response);
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.trackBedrockConverse(response);
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
+ });
@@ -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
- interpolateTemplate(template: string, variables: Record<string, unknown>): string;
9
- modelConfig(key: string, context: LDContext, defaultValue: LDAIDefaults, variables?: Record<string, unknown>): Promise<LDAIConfig>;
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,EAA4B,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAoB5C,qBAAa,cAAe,YAAW,UAAU;IACnC,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,WAAW;IAE1C,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAI3E,WAAW,CACf,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;CA+BvB"}
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"}
@@ -7,10 +7,10 @@ class LDAIClientImpl {
7
7
  constructor(_ldClient) {
8
8
  this._ldClient = _ldClient;
9
9
  }
10
- interpolateTemplate(template, variables) {
10
+ _interpolateTemplate(template, variables) {
11
11
  return Mustache.render(template, variables, undefined, { escape: (item) => item });
12
12
  }
13
- async modelConfig(key, context, defaultValue, variables) {
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.prompt) {
32
- config.prompt = value.prompt.map((entry) => (Object.assign(Object.assign({}, entry), { content: this.interpolateTemplate(entry.content, allVariables) })));
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;AAqBhE,MAAa,cAAc;IACzB,YAAoB,SAAsB;QAAtB,cAAS,GAAT,SAAS,CAAa;IAAG,CAAC;IAE9C,mBAAmB,CAAC,QAAgB,EAAE,SAAkC;QACtE,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,WAAW,CACf,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,MAAM,YAAY,mCAAQ,SAAS,KAAE,KAAK,EAAE,OAAO,GAAE,CAAC;QAEtD,IAAI,KAAK,CAAC,MAAM,EAAE;YAChB,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,iCAC5C,KAAK,KACR,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,IAC9D,CAAC,CAAC;SACL;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AA3CD,wCA2CC"}
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
- trackOpenAI<TRes extends {
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
- trackBedrockConverse<TRes extends {
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;IAE3D,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,QAAQ;gBAHR,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;IAI/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;IAQvD,YAAY,IAAI,IAAI;IAId,WAAW,CACf,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,oBAAoB,CAClB,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;CAYxC"}
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 trackOpenAI(func) {
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
- trackBedrockConverse(res) {
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":"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"}
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,WAAmB,EACnB,QAAmB;QAHnB,cAAS,GAAT,SAAS,CAAa;QACtB,eAAU,GAAV,UAAU,CAAQ;QAClB,gBAAW,GAAX,WAAW,CAAQ;QACnB,aAAQ,GAAR,QAAQ,CAAW;QANrB,oBAAe,GAAsB,EAAE,CAAC;IAO7C,CAAC;IAEI,aAAa;QACnB,OAAO;YACL,UAAU,EAAE,IAAI,CAAC,WAAW;YAC5B,SAAS,EAAE,IAAI,CAAC,UAAU;SAC3B,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,QAAgB;QAC5B,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,QAAQ,CAAC;QAC3C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,uBAAuB,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC/F,CAAC;IAED,KAAK,CAAC,eAAe,CAAO,IAAyB;QACnD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC,2BAA2B;QACjE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,aAAa,CAAC,QAAkC;QAC9C,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzC,IAAI,QAAQ,CAAC,IAAI,KAAK,wBAAc,CAAC,QAAQ,EAAE;YAC7C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,+BAA+B,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC;SAC/F;aAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,wBAAc,CAAC,QAAQ,EAAE;YACpD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,+BAA+B,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC;SAC/F;IACH,CAAC;IAED,YAAY;QACV,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;QACpC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,mBAAmB,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC;IACpF,CAAC;IAED,KAAK,CAAC,kBAAkB,CAQtB,IAAyB;QACzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,MAAM,CAAC,KAAK,EAAE;YAChB,IAAI,CAAC,WAAW,CAAC,IAAA,+BAAiB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;SACnD;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,2BAA2B,CAUzB,GAAS;;QACT,IAAI,CAAA,MAAA,GAAG,CAAC,SAAS,0CAAE,cAAc,MAAK,GAAG,EAAE;YACzC,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;aAAM,IAAI,CAAA,MAAA,GAAG,CAAC,SAAS,0CAAE,cAAc,KAAI,GAAG,CAAC,SAAS,CAAC,cAAc,IAAI,GAAG,EAAE;YAC/E,gDAAgD;SACjD;QACD,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE;YACxC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;SAC3C;QACD,IAAI,GAAG,CAAC,KAAK,EAAE;YACb,IAAI,CAAC,WAAW,CAAC,IAAA,iCAAuB,EAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;SACtD;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,WAAW,CAAC,MAAoB;QAC9B,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,MAAM,CAAC;QACrC,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACvC,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE;YACpB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,qBAAqB,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;SACrF;QACD,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE;YACpB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,qBAAqB,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;SACrF;QACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACrB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,sBAAsB,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;SACvF;IACH,CAAC;IAED;;OAEG;IACH,UAAU;QACR,yBAAY,IAAI,CAAC,eAAe,EAAG;IACrC,CAAC;CACF;AA3GD,sDA2GC"}
@@ -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
- modelConfig(key: string, context: LDContext, defaultValue: LDAIDefaults, variables?: Record<string, unknown>): Promise<LDAIConfig>;
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;;;;;;OAMG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC;IAElF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmDG;IACH,WAAW,CACT,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"}
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
- modelId: string;
9
+ name: string;
10
10
  /**
11
- * Tuning parameter for randomness versus determinism. Exact effect will be determined by the
12
- * model.
11
+ * Model specific parameters.
13
12
  */
14
- temperature?: number;
13
+ parameters?: {
14
+ [index: string]: unknown;
15
+ };
15
16
  /**
16
- * The maximum number of tokens.
17
+ * Additional user-specified parameters.
17
18
  */
18
- maxTokens?: number;
19
+ custom?: {
20
+ [index: string]: unknown;
21
+ };
22
+ }
23
+ export interface LDProviderConfig {
19
24
  /**
20
- * And additional model specific information.
25
+ * The ID of the provider.
21
26
  */
22
- [index: string]: unknown;
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
- prompt?: LDMessage[];
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,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;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,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IAErB;;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
+ {"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
- trackOpenAI<TRes extends {
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
- trackBedrockConverse<TRes extends {
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,WAAW,CACT,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,oBAAoB,CAClB,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;CACT"}
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"}