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,6 +110,13 @@ export class GlamaHandler implements ApiHandler, SingleCompletionHandler {
} }
try { try {
let attempt = 0
const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms))
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( const response = await axios.get(
`https://glama.ai/api/gateway/v1/completion-requests/${completionRequestId}`, `https://glama.ai/api/gateway/v1/completion-requests/${completionRequestId}`,
{ {
@@ -121,7 +128,7 @@ export class GlamaHandler implements ApiHandler, SingleCompletionHandler {
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,
@@ -130,6 +137,11 @@ export class GlamaHandler implements ApiHandler, SingleCompletionHandler {
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)