11import { LDClient , LDContext } from '@launchdarkly/node-server-sdk' ;
22
33import { LDAIConfigTracker } from './api/config' ;
4- import { createBedrockTokenUsage , FeedbackKind , TokenUsage } from './api/metrics' ;
4+ import { createBedrockTokenUsage , LDFeedbackKind , LDTokenUsage } from './api/metrics' ;
55import { createOpenAiUsage } from './api/metrics/OpenAiUsage' ;
66
77export class LDAIConfigTrackerImpl implements LDAIConfigTracker {
88 private _ldClient : LDClient ;
9- private _variationId : string ;
9+ private _versionId : string ;
1010 private _configKey : string ;
1111 private _context : LDContext ;
1212
1313 constructor ( ldClient : LDClient , configKey : string , versionId : string , context : LDContext ) {
1414 this . _ldClient = ldClient ;
15- this . _variationId = versionId ;
15+ this . _versionId = versionId ;
1616 this . _configKey = configKey ;
1717 this . _context = context ;
1818 }
1919
20- private _getTrackData ( ) : { variationId : string ; configKey : string } {
20+ private _getTrackData ( ) : { versionId : string ; configKey : string } {
2121 return {
22- variationId : this . _variationId ,
22+ versionId : this . _versionId ,
2323 configKey : this . _configKey ,
2424 } ;
2525 }
@@ -37,44 +37,42 @@ export class LDAIConfigTrackerImpl implements LDAIConfigTracker {
3737 return result ;
3838 }
3939
40- trackError ( error : number ) : void {
41- this . _ldClient . track ( '$ld:ai:error' , this . _context , this . _getTrackData ( ) , error ) ;
42- }
43-
44- trackFeedback ( feedback : { kind : FeedbackKind } ) : void {
45- if ( feedback . kind === FeedbackKind . Positive ) {
40+ trackFeedback ( feedback : { kind : LDFeedbackKind } ) : void {
41+ if ( feedback . kind === LDFeedbackKind . Positive ) {
4642 this . _ldClient . track ( '$ld:ai:feedback:user:positive' , this . _context , this . _getTrackData ( ) , 1 ) ;
47- } else if ( feedback . kind === FeedbackKind . Negative ) {
43+ } else if ( feedback . kind === LDFeedbackKind . Negative ) {
4844 this . _ldClient . track ( '$ld:ai:feedback:user:negative' , this . _context , this . _getTrackData ( ) , 1 ) ;
4945 }
5046 }
5147
52- trackGeneration ( generation : number ) : void {
53- this . _ldClient . track ( '$ld:ai:generation' , this . _context , this . _getTrackData ( ) , generation ) ;
48+ trackSuccess ( ) : void {
49+ this . _ldClient . track ( '$ld:ai:generation' , this . _context , this . _getTrackData ( ) , 1 ) ;
5450 }
5551
56- async trackOpenAI ( func : ( ...args : any [ ] ) => Promise < any > , ...args : any [ ] ) : Promise < any > {
52+ async trackOpenAI < TRes > ( func : ( ...args : any [ ] ) => Promise < TRes > , ...args : any [ ] ) : Promise < TRes > {
5753 const result = await this . trackDurationOf ( func , ...args ) ;
58- this . trackGeneration ( 1 ) ;
54+ this . trackSuccess ( ) ;
5955 if ( result . usage ) {
6056 this . trackTokens ( createOpenAiUsage ( result . usage ) ) ;
6157 }
6258 return result ;
6359 }
6460
65- async trackBedrockConverse ( res : {
66- $metadata ?: { httpStatusCode : number } ;
67- metrics ?: { latencyMs : number } ;
68- usage ?: {
69- inputTokens : number ;
70- outputTokens : number ;
71- totalTokens : number ;
72- } ;
73- } ) : Promise < any > {
61+ trackBedrockConverse <
62+ TRes extends {
63+ $metadata ?: { httpStatusCode : number } ;
64+ metrics ?: { latencyMs : number } ;
65+ usage ?: {
66+ inputTokens : number ;
67+ outputTokens : number ;
68+ totalTokens : number ;
69+ } ;
70+ } ,
71+ > ( res : TRes ) : TRes {
7472 if ( res . $metadata ?. httpStatusCode === 200 ) {
75- this . trackGeneration ( 1 ) ;
73+ this . trackSuccess ( ) ;
7674 } else if ( res . $metadata ?. httpStatusCode && res . $metadata . httpStatusCode >= 400 ) {
77- this . trackError ( res . $metadata . httpStatusCode ) ;
75+ // this.trackError(res.$metadata.httpStatusCode);
7876 }
7977 if ( res . metrics ) {
8078 this . trackDuration ( res . metrics . latencyMs ) ;
@@ -85,7 +83,7 @@ export class LDAIConfigTrackerImpl implements LDAIConfigTracker {
8583 return res ;
8684 }
8785
88- trackTokens ( tokens : TokenUsage ) : void {
86+ trackTokens ( tokens : LDTokenUsage ) : void {
8987 const trackData = this . _getTrackData ( ) ;
9088 if ( tokens . total > 0 ) {
9189 this . _ldClient . track ( '$ld:ai:tokens:total' , this . _context , trackData , tokens . total ) ;
0 commit comments