Merge pull request #501 from punkpeye/add-polling

feat: poll usage
This commit is contained in:
Matt Rubens
2025-01-23 15:16:10 -08:00
committed by GitHub

View File

@@ -110,26 +110,38 @@ export class GlamaHandler implements ApiHandler, SingleCompletionHandler {
} }
try { try {
const response = await axios.get( let attempt = 0
`https://glama.ai/api/gateway/v1/completion-requests/${completionRequestId}`,
{ const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms))
headers: {
Authorization: `Bearer ${this.options.glamaApiKey}`, while (attempt++ < 10) {
// In case of an interrupted request, we need to wait for the upstream API to finish processing the request
// before we can fetch information about the token usage and cost.
const response = await axios.get(
`https://glama.ai/api/gateway/v1/completion-requests/${completionRequestId}`,
{
headers: {
Authorization: `Bearer ${this.options.glamaApiKey}`,
},
}, },
}, )
)
const completionRequest = response.data const completionRequest = response.data
if (completionRequest.tokenUsage) { if (completionRequest.tokenUsage && completionRequest.totalCostUsd) {
yield { yield {
type: "usage", type: "usage",
cacheWriteTokens: completionRequest.tokenUsage.cacheCreationInputTokens, cacheWriteTokens: completionRequest.tokenUsage.cacheCreationInputTokens,
cacheReadTokens: completionRequest.tokenUsage.cacheReadInputTokens, cacheReadTokens: completionRequest.tokenUsage.cacheReadInputTokens,
inputTokens: completionRequest.tokenUsage.promptTokens, inputTokens: completionRequest.tokenUsage.promptTokens,
outputTokens: completionRequest.tokenUsage.completionTokens, outputTokens: completionRequest.tokenUsage.completionTokens,
totalCost: parseFloat(completionRequest.totalCostUsd), totalCost: parseFloat(completionRequest.totalCostUsd),
}
break
} }
await delay(200)
} }
} catch (error) { } catch (error) {
console.error("Error fetching Glama completion details", error) console.error("Error fetching Glama completion details", error)