@@ -110,26 +110,38 @@ export class GlamaHandler implements ApiHandler, SingleCompletionHandler {
110110 }
111111
112112 try {
113- const response = await axios . get (
114- `https://glama.ai/api/gateway/v1/completion-requests/${ completionRequestId } ` ,
115- {
116- headers : {
117- Authorization : `Bearer ${ this . options . glamaApiKey } ` ,
118- } ,
119- } ,
120- )
113+ let attempt = 0
121114
122- const completionRequest = response . data
115+ const delay = ( ms : number ) => new Promise ( ( resolve ) => setTimeout ( resolve , ms ) )
123116
124- if ( completionRequest . tokenUsage ) {
125- yield {
126- type : "usage" ,
127- cacheWriteTokens : completionRequest . tokenUsage . cacheCreationInputTokens ,
128- cacheReadTokens : completionRequest . tokenUsage . cacheReadInputTokens ,
129- inputTokens : completionRequest . tokenUsage . promptTokens ,
130- outputTokens : completionRequest . tokenUsage . completionTokens ,
131- totalCost : parseFloat ( completionRequest . totalCostUsd ) ,
117+ while ( attempt ++ < 10 ) {
118+ // In case of an interrupted request, we need to wait for the upstream API to finish processing the request
119+ // before we can fetch information about the token usage and cost.
120+ const response = await axios . get (
121+ `https://glama.ai/api/gateway/v1/completion-requests/${ completionRequestId } ` ,
122+ {
123+ headers : {
124+ Authorization : `Bearer ${ this . options . glamaApiKey } ` ,
125+ } ,
126+ } ,
127+ )
128+
129+ const completionRequest = response . data
130+
131+ if ( completionRequest . tokenUsage && completionRequest . totalCostUsd ) {
132+ yield {
133+ type : "usage" ,
134+ cacheWriteTokens : completionRequest . tokenUsage . cacheCreationInputTokens ,
135+ cacheReadTokens : completionRequest . tokenUsage . cacheReadInputTokens ,
136+ inputTokens : completionRequest . tokenUsage . promptTokens ,
137+ outputTokens : completionRequest . tokenUsage . completionTokens ,
138+ totalCost : parseFloat ( completionRequest . totalCostUsd ) ,
139+ }
140+
141+ break
132142 }
143+
144+ await delay ( 200 )
133145 }
134146 } catch ( error ) {
135147 console . error ( "Error fetching Glama completion details" , error )
0 commit comments