summaryrefslogtreecommitdiff
path: root/packages/server/src/tools/web-search.ts
diff options
context:
space:
mode:
authorN. Taylor Mullen <[email protected]>2025-05-30 10:57:00 -0700
committerGitHub <[email protected]>2025-05-30 17:57:00 +0000
commit8c46108a852128d1d0792c149746631d83fc58cf (patch)
tree4d3ca2e8abd03e3722a1a75fce0dc752752a391c /packages/server/src/tools/web-search.ts
parentc5608869c00c433a468fe5e88bcbafd83f6599a1 (diff)
feat: Implement retry with backoff for API calls (#613)
Diffstat (limited to 'packages/server/src/tools/web-search.ts')
-rw-r--r--packages/server/src/tools/web-search.ts18
1 files changed, 11 insertions, 7 deletions
diff --git a/packages/server/src/tools/web-search.ts b/packages/server/src/tools/web-search.ts
index b690146d..ed2f341f 100644
--- a/packages/server/src/tools/web-search.ts
+++ b/packages/server/src/tools/web-search.ts
@@ -11,6 +11,7 @@ import { SchemaValidator } from '../utils/schemaValidator.js';
import { getErrorMessage } from '../utils/errors.js';
import { Config } from '../config/config.js';
import { getResponseText } from '../utils/generateContentResponseUtilities.js';
+import { retryWithBackoff } from '../utils/retry.js';
interface GroundingChunkWeb {
uri?: string;
@@ -121,13 +122,16 @@ export class WebSearchTool extends BaseTool<
}
try {
- const response = await this.ai.models.generateContent({
- model: this.modelName,
- contents: [{ role: 'user', parts: [{ text: params.query }] }],
- config: {
- tools: [{ googleSearch: {} }],
- },
- });
+ const apiCall = () =>
+ this.ai.models.generateContent({
+ model: this.modelName,
+ contents: [{ role: 'user', parts: [{ text: params.query }] }],
+ config: {
+ tools: [{ googleSearch: {} }],
+ },
+ });
+
+ const response = await retryWithBackoff(apiCall);
const responseText = getResponseText(response);
const groundingMetadata = response.candidates?.[0]?.groundingMetadata;