66 OpenAITokenUsage ,
77 TokenMetrics ,
88 TokenUsage ,
9- UnderscoreTokenUsage ,
9+ UnderScoreTokenUsage ,
1010} from './api/metrics' ;
1111
1212export class LDAIConfigTracker {
@@ -15,22 +15,22 @@ export class LDAIConfigTracker {
1515 private configKey : string ;
1616 private context : LDContext ;
1717
18- constructor ( ldClient : LDClient , configKey : string , variationId : string , context : LDContext ) {
18+ constructor ( ldClient : LDClient , configKey : string , versionId : string , context : LDContext ) {
1919 this . ldClient = ldClient ;
20- this . variationId = variationId ;
20+ this . variationId = versionId ;
2121 this . configKey = configKey ;
2222 this . context = context ;
2323 }
2424
25- private getTrackData ( ) {
25+ private _getTrackData ( ) : { variationId : string ; configKey : string } {
2626 return {
2727 variationId : this . variationId ,
2828 configKey : this . configKey ,
2929 } ;
3030 }
3131
3232 trackDuration ( duration : number ) : void {
33- this . ldClient . track ( '$ld:ai:duration:total' , this . context , this . getTrackData ( ) , duration ) ;
33+ this . ldClient . track ( '$ld:ai:duration:total' , this . context , this . _getTrackData ( ) , duration ) ;
3434 }
3535
3636 async trackDurationOf ( func : ( ...args : any [ ] ) => Promise < any > , ...args : any [ ] ) : Promise < any > {
@@ -43,19 +43,19 @@ export class LDAIConfigTracker {
4343 }
4444
4545 trackError ( error : number ) : void {
46- this . ldClient . track ( '$ld:ai:error' , this . context , this . getTrackData ( ) , error ) ;
46+ this . ldClient . track ( '$ld:ai:error' , this . context , this . _getTrackData ( ) , error ) ;
4747 }
4848
4949 trackFeedback ( feedback : { kind : FeedbackKind } ) : void {
5050 if ( feedback . kind === FeedbackKind . Positive ) {
51- this . ldClient . track ( '$ld:ai:feedback:user:positive' , this . context , this . getTrackData ( ) , 1 ) ;
51+ this . ldClient . track ( '$ld:ai:feedback:user:positive' , this . context , this . _getTrackData ( ) , 1 ) ;
5252 } else if ( feedback . kind === FeedbackKind . Negative ) {
53- this . ldClient . track ( '$ld:ai:feedback:user:negative' , this . context , this . getTrackData ( ) , 1 ) ;
53+ this . ldClient . track ( '$ld:ai:feedback:user:negative' , this . context , this . _getTrackData ( ) , 1 ) ;
5454 }
5555 }
5656
5757 trackGeneration ( generation : number ) : void {
58- this . ldClient . track ( '$ld:ai:generation' , this . context , this . getTrackData ( ) , generation ) ;
58+ this . ldClient . track ( '$ld:ai:generation' , this . context , this . _getTrackData ( ) , generation ) ;
5959 }
6060
6161 async trackOpenAI ( func : ( ...args : any [ ] ) => Promise < any > , ...args : any [ ] ) : Promise < any > {
@@ -90,37 +90,45 @@ export class LDAIConfigTracker {
9090 return res ;
9191 }
9292
93- trackTokens ( tokens : TokenUsage | UnderscoreTokenUsage | { totalTokens : number ; inputTokens : number ; outputTokens : number } ) : void {
93+ trackTokens (
94+ tokens :
95+ | TokenUsage
96+ | UnderScoreTokenUsage
97+ | { totalTokens : number ; inputTokens : number ; outputTokens : number } ,
98+ ) : void {
9499 const tokenMetrics = toMetrics ( tokens ) ;
95100 if ( tokenMetrics . total > 0 ) {
96101 this . ldClient . track (
97102 '$ld:ai:tokens:total' ,
98103 this . context ,
99- this . getTrackData ( ) ,
104+ this . _getTrackData ( ) ,
100105 tokenMetrics . total ,
101106 ) ;
102107 }
103108 if ( tokenMetrics . input > 0 ) {
104109 this . ldClient . track (
105110 '$ld:ai:tokens:input' ,
106111 this . context ,
107- this . getTrackData ( ) ,
112+ this . _getTrackData ( ) ,
108113 tokenMetrics . input ,
109114 ) ;
110115 }
111116 if ( tokenMetrics . output > 0 ) {
112117 this . ldClient . track (
113118 '$ld:ai:tokens:output' ,
114119 this . context ,
115- this . getTrackData ( ) ,
120+ this . _getTrackData ( ) ,
116121 tokenMetrics . output ,
117122 ) ;
118123 }
119124 }
120125}
121126
122127function toMetrics (
123- usage : TokenUsage | UnderscoreTokenUsage | { totalTokens : number ; inputTokens : number ; outputTokens : number } ,
128+ usage :
129+ | TokenUsage
130+ | UnderScoreTokenUsage
131+ | { totalTokens : number ; inputTokens : number ; outputTokens : number } ,
124132) : TokenMetrics {
125133 if ( 'inputTokens' in usage && 'outputTokens' in usage ) {
126134 // Bedrock usage
@@ -133,12 +141,12 @@ function toMetrics(
133141
134142 // OpenAI usage (both camelCase and snake_case)
135143 return {
136- total : 'total_tokens' in usage ? usage . total_tokens ! : ( usage as TokenUsage ) . totalTokens ?? 0 ,
144+ total : 'total_tokens' in usage ? usage . total_tokens ! : ( ( usage as TokenUsage ) . totalTokens ?? 0 ) ,
137145 input :
138- 'prompt_tokens' in usage ? usage . prompt_tokens ! : ( usage as TokenUsage ) . promptTokens ?? 0 ,
146+ 'prompt_tokens' in usage ? usage . prompt_tokens ! : ( ( usage as TokenUsage ) . promptTokens ?? 0 ) ,
139147 output :
140148 'completion_tokens' in usage
141149 ? usage . completion_tokens !
142- : ( usage as TokenUsage ) . completionTokens ?? 0 ,
150+ : ( ( usage as TokenUsage ) . completionTokens ?? 0 ) ,
143151 } ;
144152}
0 commit comments