Skip to content

Commit fb05b7e

Browse files
committed
Better OpenAI types.
1 parent c75ba9d commit fb05b7e

File tree

3 files changed

+29
-9
lines changed

3 files changed

+29
-9
lines changed

packages/sdk/server-ai/src/LDAIConfigTrackerImpl.ts

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ export class LDAIConfigTrackerImpl implements LDAIConfigTracker {
2828
this._ldClient.track('$ld:ai:duration:total', this._context, this._getTrackData(), duration);
2929
}
3030

31-
async trackDurationOf(func: (...args: any[]) => Promise<any>, ...args: any[]): Promise<any> {
31+
async trackDurationOf<TRes>(func: () => Promise<TRes>): Promise<TRes> {
3232
const startTime = Date.now();
33-
const result = await func(...args);
33+
const result = await func();
3434
const endTime = Date.now();
3535
const duration = endTime - startTime; // duration in milliseconds
3636
this.trackDuration(duration);
@@ -49,8 +49,16 @@ export class LDAIConfigTrackerImpl implements LDAIConfigTracker {
4949
this._ldClient.track('$ld:ai:generation', this._context, this._getTrackData(), 1);
5050
}
5151

52-
async trackOpenAI<TRes>(func: (...args: any[]) => Promise<TRes>, ...args: any[]): Promise<TRes> {
53-
const result = await this.trackDurationOf(func, ...args);
52+
async trackOpenAI<
53+
TRes extends {
54+
usage?: {
55+
total_tokens?: number;
56+
prompt_token?: number;
57+
completion_token?: number;
58+
};
59+
},
60+
>(func: () => Promise<TRes>): Promise<TRes> {
61+
const result = await this.trackDurationOf(func);
5462
this.trackSuccess();
5563
if (result.usage) {
5664
this.trackTokens(createOpenAiUsage(result.usage));

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

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,19 +35,27 @@ export interface LDAIConfigTracker {
3535
/**
3636
* Track the duration of execution of the provided function.
3737
* @param func The function to track the duration of.
38-
* @param args Arguments for the function.
3938
* @returns The result of the function.
4039
*/
41-
trackDurationOf(func: (...args: any[]) => Promise<any>, ...args: any[]): Promise<any>;
40+
trackDurationOf(func: () => Promise<any>): Promise<any>;
4241

4342
/**
4443
* Track an OpenAI operation.
4544
*
4645
* @param func Function which executes the operation.
47-
* @param args Arguments for the operation.
4846
* @returns The result of the operation.
4947
*/
50-
trackOpenAI<TRes>(func: (...args: any[]) => Promise<TRes>, ...args: any[]): Promise<TRes>;
48+
trackOpenAI<
49+
TRes extends {
50+
usage?: {
51+
total_tokens?: number;
52+
prompt_token?: number;
53+
completion_token?: number;
54+
};
55+
},
56+
>(
57+
func: () => Promise<TRes>,
58+
): Promise<TRes>;
5159

5260
/**
5361
* Track an operation which uses Bedrock.

packages/sdk/server-ai/src/api/metrics/OpenAiUsage.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
import { LDTokenUsage } from './LDTokenUsage';
22

3-
export function createOpenAiUsage(data: any): LDTokenUsage {
3+
export function createOpenAiUsage(data: {
4+
total_tokens?: number;
5+
prompt_token?: number;
6+
completion_token?: number;
7+
}): LDTokenUsage {
48
return {
59
total: data.total_tokens ?? 0,
610
input: data.prompt_token ?? 0,

0 commit comments

Comments
 (0)