@@ -97,6 +97,7 @@ def test_tracks_bedrock_metrics(client: LDClient):
97
97
98
98
calls = [
99
99
call ('$ld:ai:generation' , context , {'variationKey' : 'variation-key' , 'configKey' : 'config-key' }, 1 ),
100
+ call ('$ld:ai:generation:success' , context , {'variationKey' : 'variation-key' , 'configKey' : 'config-key' }, 1 ),
100
101
call ('$ld:ai:duration:total' , context , {'variationKey' : 'variation-key' , 'configKey' : 'config-key' }, 50 ),
101
102
call ('$ld:ai:tokens:total' , context , {'variationKey' : 'variation-key' , 'configKey' : 'config-key' }, 330 ),
102
103
call ('$ld:ai:tokens:input' , context , {'variationKey' : 'variation-key' , 'configKey' : 'config-key' }, 220 ),
@@ -110,6 +111,39 @@ def test_tracks_bedrock_metrics(client: LDClient):
110
111
assert tracker .get_summary ().usage == TokenUsage (330 , 220 , 110 )
111
112
112
113
114
+ def test_tracks_bedrock_metrics_with_error (client : LDClient ):
115
+ context = Context .create ('user-key' )
116
+ tracker = LDAIConfigTracker (client , "variation-key" , "config-key" , context )
117
+
118
+ bedrock_result = {
119
+ '$metadata' : {'httpStatusCode' : 500 },
120
+ 'usage' : {
121
+ 'totalTokens' : 330 ,
122
+ 'inputTokens' : 220 ,
123
+ 'outputTokens' : 110 ,
124
+ },
125
+ 'metrics' : {
126
+ 'latencyMs' : 50 ,
127
+ }
128
+ }
129
+ tracker .track_bedrock_converse_metrics (bedrock_result )
130
+
131
+ calls = [
132
+ call ('$ld:ai:generation' , context , {'variationKey' : 'variation-key' , 'configKey' : 'config-key' }, 1 ),
133
+ call ('$ld:ai:generation:error' , context , {'variationKey' : 'variation-key' , 'configKey' : 'config-key' }, 1 ),
134
+ call ('$ld:ai:duration:total' , context , {'variationKey' : 'variation-key' , 'configKey' : 'config-key' }, 50 ),
135
+ call ('$ld:ai:tokens:total' , context , {'variationKey' : 'variation-key' , 'configKey' : 'config-key' }, 330 ),
136
+ call ('$ld:ai:tokens:input' , context , {'variationKey' : 'variation-key' , 'configKey' : 'config-key' }, 220 ),
137
+ call ('$ld:ai:tokens:output' , context , {'variationKey' : 'variation-key' , 'configKey' : 'config-key' }, 110 ),
138
+ ]
139
+
140
+ client .track .assert_has_calls (calls ) # type: ignore
141
+
142
+ assert tracker .get_summary ().success is False
143
+ assert tracker .get_summary ().duration == 50
144
+ assert tracker .get_summary ().usage == TokenUsage (330 , 220 , 110 )
145
+
146
+
113
147
def test_tracks_openai_metrics (client : LDClient ):
114
148
context = Context .create ('user-key' )
115
149
tracker = LDAIConfigTracker (client , "variation-key" , "config-key" , context )
@@ -166,11 +200,44 @@ def test_tracks_success(client: LDClient):
166
200
tracker = LDAIConfigTracker (client , "variation-key" , "config-key" , context )
167
201
tracker .track_success ()
168
202
169
- client . track . assert_called_with ( # type: ignore
170
- '$ld:ai:generation' ,
171
- context ,
172
- { 'variationKey' : 'variation-key' , 'configKey' : 'config-key' },
173
- 1
174
- )
203
+ calls = [
204
+ call ( '$ld:ai:generation' , context , { 'variationKey' : 'variation-key' , 'configKey' : 'config-key' }, 1 ) ,
205
+ call ( '$ld:ai:generation:success' , context , { 'variationKey' : 'variation-key' , 'configKey' : 'config-key' }, 1 ) ,
206
+ ]
207
+
208
+ client . track . assert_has_calls ( calls ) # type: ignore
175
209
176
210
assert tracker .get_summary ().success is True
211
+
212
+
213
+ def test_tracks_error (client : LDClient ):
214
+ context = Context .create ('user-key' )
215
+ tracker = LDAIConfigTracker (client , "variation-key" , "config-key" , context )
216
+ tracker .track_error ()
217
+
218
+ calls = [
219
+ call ('$ld:ai:generation' , context , {'variationKey' : 'variation-key' , 'configKey' : 'config-key' }, 1 ),
220
+ call ('$ld:ai:generation:error' , context , {'variationKey' : 'variation-key' , 'configKey' : 'config-key' }, 1 ),
221
+ ]
222
+
223
+ client .track .assert_has_calls (calls ) # type: ignore
224
+
225
+ assert tracker .get_summary ().success is False
226
+
227
+
228
+ def test_error_overwrites_success (client : LDClient ):
229
+ context = Context .create ('user-key' )
230
+ tracker = LDAIConfigTracker (client , "variation-key" , "config-key" , context )
231
+ tracker .track_success ()
232
+ tracker .track_error ()
233
+
234
+ calls = [
235
+ call ('$ld:ai:generation' , context , {'variationKey' : 'variation-key' , 'configKey' : 'config-key' }, 1 ),
236
+ call ('$ld:ai:generation:success' , context , {'variationKey' : 'variation-key' , 'configKey' : 'config-key' }, 1 ),
237
+ call ('$ld:ai:generation' , context , {'variationKey' : 'variation-key' , 'configKey' : 'config-key' }, 1 ),
238
+ call ('$ld:ai:generation:error' , context , {'variationKey' : 'variation-key' , 'configKey' : 'config-key' }, 1 ),
239
+ ]
240
+
241
+ client .track .assert_has_calls (calls ) # type: ignore
242
+
243
+ assert tracker .get_summary ().success is False
0 commit comments