From ad6de7faf0db28cb543fca51dfb58fbfdf60cd59 Mon Sep 17 00:00:00 2001 From: Shuchang Zheng Date: Tue, 12 Mar 2024 00:44:37 -0700 Subject: [PATCH] add gpt-4-0125-preview pricing; capture OpenAIError (#52) --- skyvern/forge/sdk/api/chat_completion_price.py | 2 ++ skyvern/forge/sdk/api/open_ai.py | 7 +++++++ skyvern/forge/sdk/core/security.py | 3 +-- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/skyvern/forge/sdk/api/chat_completion_price.py b/skyvern/forge/sdk/api/chat_completion_price.py index db894ab0..1594d223 100644 --- a/skyvern/forge/sdk/api/chat_completion_price.py +++ b/skyvern/forge/sdk/api/chat_completion_price.py @@ -5,8 +5,10 @@ from pydantic import BaseModel openai_model_to_price_lambdas = { "gpt-4-vision-preview": (0.01, 0.03), "gpt-4-1106-preview": (0.01, 0.03), + "gpt-4-0125-preview": (0.01, 0.03), "gpt-3.5-turbo": (0.001, 0.002), "gpt-3.5-turbo-1106": (0.001, 0.002), + "gpt-3.5-turbo-0125": (0.0005, 0.0015), } diff --git a/skyvern/forge/sdk/api/open_ai.py b/skyvern/forge/sdk/api/open_ai.py index 70e1d619..76bb6af1 100644 --- a/skyvern/forge/sdk/api/open_ai.py +++ b/skyvern/forge/sdk/api/open_ai.py @@ -171,6 +171,13 @@ class OpenAIClientManager: screenshots=screenshots, prompt=prompt, ) + except openai.OpenAIError as e: + LOG.error("OpenAI error", exc_info=True) + raise e + except Exception as e: + LOG.error("Unknown error for chat completion", error_message=str(e), error_type=type(e)) + raise e + # TODO: https://platform.openai.com/docs/guides/rate-limits/rate-limits-in-headers # use other headers, x-ratelimit-limit-requests, x-ratelimit-limit-tokens, x-ratelimit-remaining-tokens # x-ratelimit-reset-requests, x-ratelimit-reset-tokens to write a more accurate algorithm for managing api keys diff --git a/skyvern/forge/sdk/core/security.py b/skyvern/forge/sdk/core/security.py index 62b5b906..353d2a7e 100644 --- a/skyvern/forge/sdk/core/security.py +++ b/skyvern/forge/sdk/core/security.py @@ -5,7 +5,6 @@ from typing import Any, Union from jose import jwt -from skyvern.config import settings from skyvern.forge.sdk.settings_manager import SettingsManager @@ -23,7 +22,7 @@ def create_access_token( encoded_jwt = jwt.encode( to_encode, SettingsManager.get_settings().SECRET_KEY, - algorithm=settings.SIGNATURE_ALGORITHM, + algorithm=SettingsManager.get_settings().SIGNATURE_ALGORITHM, ) return encoded_jwt