Skip to content

Commit f68fa4d

Browse files
author
Daniel OBrien
committed
add openai tracker wrapper
reorganize method order
1 parent 1b5e2a5 commit f68fa4d

File tree

1 file changed

+20
-14
lines changed

1 file changed

+20
-14
lines changed

ldai/tracker.py

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import time
22
from typing import Dict, Union
33
from ldclient import Context, LDClient
4-
from ldai.types import BedrockTokenUsage, FeedbackKind, TokenUsage, UnderscoreTokenUsage
4+
from ldai.types import BedrockTokenUsage, FeedbackKind, OpenAITokenUsage, TokenUsage, UnderscoreTokenUsage
55

66
class LDAIConfigTracker:
77
def __init__(self, ld_client: LDClient, variation_id: str, config_key: str, context: Context):
@@ -27,23 +27,29 @@ def track_duration_of(self, func, *args, **kwargs):
2727
self.track_duration(duration)
2828
return result
2929

30-
def track_tokens(self, tokens: Union[TokenUsage, UnderscoreTokenUsage, BedrockTokenUsage]) -> None:
31-
token_metrics = tokens.to_metrics()
32-
if token_metrics['total'] > 0:
33-
self.ld_client.track('$ld:ai:tokens:total', self.context, self.get_track_data(), token_metrics['total'])
34-
if token_metrics['input'] > 0:
35-
self.ld_client.track('$ld:ai:tokens:input', self.context, self.get_track_data(), token_metrics['input'])
36-
if token_metrics['output'] > 0:
37-
self.ld_client.track('$ld:ai:tokens:output', self.context, self.get_track_data(), token_metrics['output'])
38-
3930
def track_error(self, error: int) -> None:
4031
self.ld_client.track('$ld:ai:error', self.context, self.get_track_data(), error)
4132

42-
def track_generation(self, generation: int) -> None:
43-
self.ld_client.track('$ld:ai:generation', self.context, self.get_track_data(), generation)
44-
4533
def track_feedback(self, feedback: Dict[str, FeedbackKind]) -> None:
4634
if feedback['kind'] == FeedbackKind.Positive:
4735
self.ld_client.track('$ld:ai:feedback:user:positive', self.context, self.get_track_data(), 1)
4836
elif feedback['kind'] == FeedbackKind.Negative:
49-
self.ld_client.track('$ld:ai:feedback:user:negative', self.context, self.get_track_data(), 1)
37+
self.ld_client.track('$ld:ai:feedback:user:negative', self.context, self.get_track_data(), 1)
38+
39+
def track_generation(self, generation: int) -> None:
40+
self.ld_client.track('$ld:ai:generation', self.context, self.get_track_data(), generation)
41+
42+
def track_openai(self, func, *args, **kwargs):
43+
result = self.track_duration_of(func, *args, **kwargs)
44+
if result.usage:
45+
self.track_tokens(OpenAITokenUsage(result.usage))
46+
return result
47+
48+
def track_tokens(self, tokens: Union[TokenUsage, UnderscoreTokenUsage, BedrockTokenUsage]) -> None:
49+
token_metrics = tokens.to_metrics()
50+
if token_metrics['total'] > 0:
51+
self.ld_client.track('$ld:ai:tokens:total', self.context, self.get_track_data(), token_metrics['total'])
52+
if token_metrics['input'] > 0:
53+
self.ld_client.track('$ld:ai:tokens:input', self.context, self.get_track_data(), token_metrics['input'])
54+
if token_metrics['output'] > 0:
55+
self.ld_client.track('$ld:ai:tokens:output', self.context, self.get_track_data(), token_metrics['output'])

0 commit comments

Comments
 (0)