From 02af912d22cf561652c974a87695659ec1b48727 Mon Sep 17 00:00:00 2001 From: fegloff Date: Tue, 27 Aug 2024 18:09:23 -0500 Subject: [PATCH] add sonnet 3.5 model + upgrade error logging --- src/modules/errorhandler.ts | 29 +++++++++++++++++++---------- src/modules/llms/utils/types.ts | 8 ++++---- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/src/modules/errorhandler.ts b/src/modules/errorhandler.ts index ca7d832..31bf8a6 100644 --- a/src/modules/errorhandler.ts +++ b/src/modules/errorhandler.ts @@ -13,6 +13,12 @@ import OpenAI from 'openai' class ErrorHandler { public maxTries = 3 + private writeLog (ctx: OnMessageContext | OnCallBackQueryData, errorMessage: string, logger: Logger): void { + const user = ctx.from.username ? ctx.from.username : '' + const msg = ctx.message?.text + logger.error(`Error msg:: ${errorMessage} | from user ${user} | msg::${msg}`) + } + async onError ( ctx: OnMessageContext | OnCallBackQueryData, e: any, @@ -32,10 +38,9 @@ class ErrorHandler { } if (e instanceof GrammyError) { if (e.error_code === 400 && e.description.includes('not enough rights')) { - await sendMessage( - ctx, - 'Error: The bot does not have permission to send photos in chat' - ) + const errorMsg = 'Error: The bot does not have permission to send photos in chat' + this.writeLog(ctx, errorMsg, logger) + await sendMessage(ctx, errorMsg) ctx.transient.analytics.actualResponseTime = now() } else if (e.error_code === 429) { const retryAfter = e.parameters.retry_after @@ -45,6 +50,7 @@ class ErrorHandler { : 60 const method = e.method const errorMessage = `On method "${method}" | ${e.error_code} - ${e.description}` + this.writeLog(ctx, errorMessage, logger) logger.error(errorMessage) await sendMessage( ctx, @@ -58,16 +64,16 @@ class ErrorHandler { } await sleep(retryAfter * 1000) // wait retryAfter seconds to enable bot } else { - logger.error( - `On method "${e.method}" | ${e.error_code} - ${e.description}` - ) + const errorMsg = `On method "${e.method}" | ${e.error_code} - ${e.description}` + this.writeLog(ctx, errorMsg, logger) ctx.transient.analytics.actualResponseTime = now() await sendMessage(ctx, 'Error handling your request').catch(async (e) => { await this.onError(ctx, e, retryCount - 1, logger) }) } } else if (e instanceof OpenAI.APIError) { // 429 RateLimitError // e.status = 400 || e.code = BadRequestError - logger.error(`OPENAI Error ${e.status}(${e.code}) - ${e.message}`) + const errorMsg = `OPENAI Error ${e.status}(${e.code}) - ${e.message}` + this.writeLog(ctx, errorMsg, logger) if (e.code === 'context_length_exceeded') { await sendMessage(ctx, e.message).catch(async (e) => { await this.onError(ctx, e, retryCount - 1, logger) }) ctx.transient.analytics.actualResponseTime = now() @@ -84,12 +90,15 @@ class ErrorHandler { ctx.transient.analytics.actualResponseTime = now() } } else if (e instanceof AxiosError) { - logger.error(`${e.message}`) + const errorMsg = `${e.message}` + this.writeLog(ctx, errorMsg, logger) await sendMessage(ctx, 'Error handling your request').catch(async (e) => { await this.onError(ctx, e, retryCount - 1, logger) }) } else { - logger.error(`${e.toString()}`) + const errorMsg = `${e.toString()}` + this.writeLog(ctx, errorMsg, logger) + logger.error(e) await sendMessage(ctx, 'Error handling your request') .catch(async (e) => { await this.onError(ctx, e, retryCount - 1, logger) } ) diff --git a/src/modules/llms/utils/types.ts b/src/modules/llms/utils/types.ts index b21f936..ad642b3 100644 --- a/src/modules/llms/utils/types.ts +++ b/src/modules/llms/utils/types.ts @@ -3,7 +3,7 @@ export enum LlmsModelsEnum { BISON = 'chat-bison', J2_ULTRA = 'j2-ultra', CLAUDE_OPUS = 'claude-3-opus-20240229', - CLAUDE_SONNET = 'claude-3-sonnet-20240229', + CLAUDE_SONNET = 'claude-3-5-sonnet-20240620', CLAUDE_HAIKU = 'claude-3-haiku-20240307', GEMINI_15 = 'gemini-1.5-pro-latest', GEMINI = 'gemini-1.0-pro', @@ -63,11 +63,11 @@ export const LlmsModels: Record = { maxContextTokens: 4096, chargeType: 'TOKEN' }, - 'claude-3-sonnet-20240229': { - name: 'claude-3-sonnet-20240229', + 'claude-3-5-sonnet-20240620': { + name: 'claude-3-5-sonnet-20240620', inputPrice: 0.003, // 3.00 (1M Tokens) => 0.003 (1K tokens) outputPrice: 0.015, - maxContextTokens: 4096, + maxContextTokens: 8192, chargeType: 'TOKEN' }, 'claude-3-haiku-20240307': {