From dcdf8703086cb127b1e135480e088e1f9fd68b8b Mon Sep 17 00:00:00 2001 From: Baptiste Arnaud Date: Fri, 16 Jun 2023 19:31:28 +0200 Subject: [PATCH] :zap: (openai) Retry OpenAI call if status code is 503 Closes #529 --- .../openai/executeChatCompletionOpenAIRequest.ts | 11 +++++++++++ packages/embeds/js/package.json | 2 +- .../features/blocks/integrations/openai/streamChat.ts | 2 +- packages/embeds/react/package.json | 2 +- 4 files changed, 14 insertions(+), 3 deletions(-) diff --git a/apps/viewer/src/features/blocks/integrations/openai/executeChatCompletionOpenAIRequest.ts b/apps/viewer/src/features/blocks/integrations/openai/executeChatCompletionOpenAIRequest.ts index 9cba8314a..64704cabf 100644 --- a/apps/viewer/src/features/blocks/integrations/openai/executeChatCompletionOpenAIRequest.ts +++ b/apps/viewer/src/features/blocks/integrations/openai/executeChatCompletionOpenAIRequest.ts @@ -42,6 +42,17 @@ export const executeChatCompletionOpenAIRequest = async ({ return { response, logs } } catch (error) { if (error instanceof HTTPError) { + if (error.response.statusCode === 503) { + console.log('OpenAI API error - 503, retrying in 3 seconds') + await new Promise((resolve) => setTimeout(resolve, 3000)) + return executeChatCompletionOpenAIRequest({ + apiKey, + model, + messages, + temperature, + currentLogs: logs, + }) + } if (error.response.statusCode === 400) { const log = { status: 'info', diff --git a/packages/embeds/js/package.json b/packages/embeds/js/package.json index 4280abfd9..348498db1 100644 --- a/packages/embeds/js/package.json +++ b/packages/embeds/js/package.json @@ -1,6 +1,6 @@ { "name": "@typebot.io/js", - "version": "0.0.63", + "version": "0.0.64", "description": "Javascript library to display typebots on your website", "type": "module", "main": "dist/index.js", diff --git a/packages/embeds/js/src/features/blocks/integrations/openai/streamChat.ts b/packages/embeds/js/src/features/blocks/integrations/openai/streamChat.ts index 6ed46ffc3..936329b74 100644 --- a/packages/embeds/js/src/features/blocks/integrations/openai/streamChat.ts +++ b/packages/embeds/js/src/features/blocks/integrations/openai/streamChat.ts @@ -54,7 +54,7 @@ export const streamChat = if (dataString.includes('503 Service Temporarily Unavailable')) { if (isRetrying) return { error: { message: "Couldn't get streamer data" } } - await new Promise((resolve) => setTimeout(resolve, 1000)) + await new Promise((resolve) => setTimeout(resolve, 3000)) return streamChat(context)(messages, { onStreamedMessage, isRetrying: true, diff --git a/packages/embeds/react/package.json b/packages/embeds/react/package.json index db281ddd0..32c2ad42f 100644 --- a/packages/embeds/react/package.json +++ b/packages/embeds/react/package.json @@ -1,6 +1,6 @@ { "name": "@typebot.io/react", - "version": "0.0.63", + "version": "0.0.64", "description": "React library to display typebots on your website", "main": "dist/index.js", "types": "dist/index.d.ts",