diff options
| author | N. Taylor Mullen <[email protected]> | 2025-05-30 10:57:00 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-05-30 17:57:00 +0000 |
| commit | 8c46108a852128d1d0792c149746631d83fc58cf (patch) | |
| tree | 4d3ca2e8abd03e3722a1a75fce0dc752752a391c /packages/server/src/core/client.ts | |
| parent | c5608869c00c433a468fe5e88bcbafd83f6599a1 (diff) | |
feat: Implement retry with backoff for API calls (#613)
Diffstat (limited to 'packages/server/src/core/client.ts')
| -rw-r--r-- | packages/server/src/core/client.ts | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/packages/server/src/core/client.ts b/packages/server/src/core/client.ts index 69b815ab..9006c675 100644 --- a/packages/server/src/core/client.ts +++ b/packages/server/src/core/client.ts @@ -23,6 +23,7 @@ import { getResponseText } from '../utils/generateContentResponseUtilities.js'; import { checkNextSpeaker } from '../utils/nextSpeakerChecker.js'; import { reportError } from '../utils/errorReporting.js'; import { GeminiChat } from './geminiChat.js'; +import { retryWithBackoff } from '../utils/retry.js'; export class GeminiClient { private client: GoogleGenAI; @@ -194,16 +195,20 @@ export class GeminiClient { ...config, }; - const result = await this.client.models.generateContent({ - model, - config: { - ...requestConfig, - systemInstruction, - responseSchema: schema, - responseMimeType: 'application/json', - }, - contents, - }); + const apiCall = () => + this.client.models.generateContent({ + model, + config: { + ...requestConfig, + systemInstruction, + responseSchema: schema, + responseMimeType: 'application/json', + }, + contents, + }); + + const result = await retryWithBackoff(apiCall); + const text = getResponseText(result); if (!text) { const error = new Error( |
