Skip to content

Commit 788612c

Browse files
committed
WIP: Refactoring
1 parent 5899e9d commit 788612c

File tree

6 files changed

+59
-29
lines changed

6 files changed

+59
-29
lines changed

packages/sdk/ai/src/LDAIConfigTracker.ts

Lines changed: 25 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {
66
OpenAITokenUsage,
77
TokenMetrics,
88
TokenUsage,
9-
UnderscoreTokenUsage,
9+
UnderScoreTokenUsage,
1010
} from './api/metrics';
1111

1212
export 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

122127
function 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
}

packages/sdk/ai/src/api/config/LDAIConfigTracker.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
import { FeedbackKind, TokenUsage, UnderscoreTokenUsage } from '../metrics';
1+
import { FeedbackKind, TokenUsage, UnderScoreTokenUsage } from '../metrics';
22

33
export interface LDAIConfigTracker {
44
trackDuration: (duration: number) => void;
55
trackTokens: (
66
tokens:
77
| TokenUsage
8-
| UnderscoreTokenUsage
8+
| UnderScoreTokenUsage
99
| { totalTokens: number; inputTokens: number; outputTokens: number },
1010
) => void;
1111
trackError: (error: number) => void;

packages/sdk/ai/src/api/metrics/UnderscoreTokenUsage.ts renamed to packages/sdk/ai/src/api/metrics/UnderScoreTokenUsage.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export class UnderscoreTokenUsage {
1+
export class UnderScoreTokenUsage {
22
total_tokens: number;
33
prompt_tokens: number;
44
completion_tokens: number;

packages/sdk/ai/src/trackUtils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { BedrockTokenUsage, TokenMetrics, TokenUsage, UnderscoreTokenUsage } from './api/metrics';
1+
import { BedrockTokenUsage, TokenMetrics, TokenUsage, UnderScoreTokenUsage } from './api/metrics';
22

33
export function usageToTokenMetrics(
4-
usage: TokenUsage | UnderscoreTokenUsage | BedrockTokenUsage,
4+
usage: TokenUsage | UnderScoreTokenUsage | BedrockTokenUsage,
55
): TokenMetrics {
66
if ('inputTokens' in usage && 'outputTokens' in usage) {
77
// Bedrock usage

packages/sdk/ai/tsconfig.eslint.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
"extends": "./tsconfig.json",
33
"include": ["/**/*.ts"],
44
"exclude": ["node_modules"]
5-
}
5+
}

packages/sdk/ai/tsconfig.json

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,34 @@
11
{
22
"compilerOptions": {
3-
"target": "ES2017",
4-
"module": "commonjs",
3+
"allowSyntheticDefaultImports": true,
54
"declaration": true,
6-
"outDir": "./dist",
5+
"declarationMap": true,
6+
"lib": ["ES2017", "dom"],
7+
"module": "ESNext",
8+
"moduleResolution": "node",
9+
"noImplicitOverride": true,
10+
"resolveJsonModule": true,
11+
"rootDir": ".",
12+
"outDir": "dist",
13+
"skipLibCheck": true,
14+
"sourceMap": false,
715
"strict": true,
8-
"esModuleInterop": true
16+
"stripInternal": true,
17+
"target": "ES2017",
18+
"types": ["node", "jest"],
19+
"allowJs": true
920
},
1021
"include": ["src"],
11-
"exclude": ["node_modules", "**/*.test.ts"]
12-
}
22+
"exclude": [
23+
"vite.config.ts",
24+
"__tests__",
25+
"dist",
26+
"docs",
27+
"example",
28+
"node_modules",
29+
"babel.config.js",
30+
"setup-jest.js",
31+
"rollup.config.js",
32+
"**/*.test.ts*"
33+
]
34+
}

0 commit comments

Comments
 (0)