From ed19fcc5b9fc8c53f81fbec3e46597065e53a7b6 Mon Sep 17 00:00:00 2001 From: Martin Sosic Date: Mon, 9 Sep 2024 16:27:04 +0200 Subject: [PATCH] Updated GPT models in Wasp AI (3.5 -> 4o). --- waspc/ChangeLog.md | 6 +++ .../Wasp/Cli/Command/CreateNewProject/AI.hs | 16 +++---- .../src/Wasp/AI/GenerateNewProject/Common.hs | 4 +- waspc/src/Wasp/AI/OpenAI/ChatGPT.hs | 44 +++++++------------ waspc/waspc.cabal | 2 +- 5 files changed, 33 insertions(+), 39 deletions(-) diff --git a/waspc/ChangeLog.md b/waspc/ChangeLog.md index 3ee26f32fc..64605414ac 100644 --- a/waspc/ChangeLog.md +++ b/waspc/ChangeLog.md @@ -1,5 +1,11 @@ # Changelog +## 0.14.2 (2024-09-09) + +Updated GPT models used in Wasp AI to latest models, since 3.5 are getting deprecated. + +Default model used is now 4o (instead of old 4 + 3.5-turbo combo). + ## 0.14.1 (2024-08-26) ### 🎉 New Features diff --git a/waspc/cli/src/Wasp/Cli/Command/CreateNewProject/AI.hs b/waspc/cli/src/Wasp/Cli/Command/CreateNewProject/AI.hs index 64fa8237cd..45a3ae5b03 100644 --- a/waspc/cli/src/Wasp/Cli/Command/CreateNewProject/AI.hs +++ b/waspc/cli/src/Wasp/Cli/Command/CreateNewProject/AI.hs @@ -55,17 +55,17 @@ createNewProjectInteractiveOnDisk waspProjectDir appName = do "Choose GPT model(s) you want to use:" $ NE.fromList [ Interactive.Option - "gpt-4 (planning) + gpt-3.5-turbo (coding)" - (Just "Ok results. Cheap and fast. Best cost/benefit ratio.") - (ChatGPT.GPT_4_0613, ChatGPT.GPT_3_5_turbo_0125), + "gpt-4o (planning + coding)" + (Just "Good results. Cheap and fast. Best cost/benefit ratio.") + (ChatGPT.GPT_4o, ChatGPT.GPT_4o), Interactive.Option - "gpt-4 (planning) + gpt-4-turbo-preview (coding)" - (Just "Possibly better results, but somewhat slower and somewhat more expensive (~2-3x).") - (ChatGPT.GPT_4_0613, ChatGPT.GPT_4_turbo_Preview), + "gpt-4 (planning) + gpt-4o (coding)" + (Just "Possibly better results, but somewhat slower and somewhat more expensive.") + (ChatGPT.GPT_4, ChatGPT.GPT_4o), Interactive.Option "gpt-4 (planning + coding)" - (Just "Best results, but quite slower and quite more expensive (~5x).") - (ChatGPT.GPT_4_0613, ChatGPT.GPT_4_0613) + (Just "Possibly best results, but quite slower and quite more expensive.") + (ChatGPT.GPT_4, ChatGPT.GPT_4) ] temperature <- liftIO $ diff --git a/waspc/src/Wasp/AI/GenerateNewProject/Common.hs b/waspc/src/Wasp/AI/GenerateNewProject/Common.hs index b8345a2032..a003436a87 100644 --- a/waspc/src/Wasp/AI/GenerateNewProject/Common.hs +++ b/waspc/src/Wasp/AI/GenerateNewProject/Common.hs @@ -157,7 +157,7 @@ codingChatGPTParams projectDetails = GPT._temperature = Just $ fromMaybe 0.7 (projectDefaultGptTemperature $ _projectConfig projectDetails) } where - defaultCodingGptModel = GPT.GPT_3_5_turbo_0125 + defaultCodingGptModel = GPT.GPT_4o planningChatGPTParams :: NewProjectDetails -> ChatGPTParams planningChatGPTParams projectDetails = @@ -166,7 +166,7 @@ planningChatGPTParams projectDetails = GPT._temperature = Just $ fromMaybe 0.7 (projectDefaultGptTemperature $ _projectConfig projectDetails) } where - defaultPlanningGptModel = GPT.GPT_4_0613 + defaultPlanningGptModel = GPT.GPT_4o fixingChatGPTParams :: ChatGPTParams -> ChatGPTParams fixingChatGPTParams params = params {GPT._temperature = subtract 0.2 <$> GPT._temperature params} diff --git a/waspc/src/Wasp/AI/OpenAI/ChatGPT.hs b/waspc/src/Wasp/AI/OpenAI/ChatGPT.hs index 9c21219f33..9acb2306ec 100644 --- a/waspc/src/Wasp/AI/OpenAI/ChatGPT.hs +++ b/waspc/src/Wasp/AI/OpenAI/ChatGPT.hs @@ -12,7 +12,6 @@ module Wasp.AI.OpenAI.ChatGPT ChatMessage (..), ChatRole (..), getChatResponseContent, - checkIfGpt4IsAvailable, ) where @@ -70,13 +69,6 @@ queryChatGPT apiKey params requestMessages = do getChatResponseContent :: ChatResponse -> Text getChatResponseContent = content . message . head . choices -checkIfGpt4IsAvailable :: OpenAIApiKey -> IO Bool -checkIfGpt4IsAvailable apiKey = do - let request = - HTTP.setRequestHeader "Authorization" [BSU.fromString $ "Bearer " <> apiKey] $ - HTTP.parseRequest_ $ "GET https://api.openai.com/v1/models/" <> show GPT_4 - (200 ==) . HTTP.getResponseStatusCode <$> HTTP.httpNoBody request - data ChatGPTParams = ChatGPTParams { _model :: !Model, _temperature :: !(Maybe Float) @@ -87,20 +79,18 @@ data ChatGPTParams = ChatGPTParams deriving (Show) data Model - = -- - GPT_3_5_turbo -- Alias model - | GPT_3_5_turbo_0125 - | GPT_3_5_turbo_1106 - | -- - GPT_4_turbo_Preview -- Alias model - | GPT_4_0125_Preview - | GPT_4_1106_Preview - | -- + = -- New flagship model. + GPT_4o -- Alias model + | GPT_4o_2024_08_06 + | -- Faster & cheaper version of the new flagship model. + GPT_4o_mini -- Alias model + | GPT_4o_mini_2024_07_18 + | -- Old flagship model. GPT_4 -- Alias model | GPT_4_0613 - | -- - GPT_4_32k -- Alias model - | GPT_4_32k_0613 + | -- Faster & cheaper version of the old flagship model. + GPT_4_turbo -- Alias model + | GPT_4_turbo_2024_04_09 deriving (Eq, Bounded, Enum) instance Show Model where @@ -108,16 +98,14 @@ instance Show Model where modelOpenAiId :: Model -> String modelOpenAiId = \case - GPT_3_5_turbo -> "gpt-3.5-turbo" - GPT_3_5_turbo_0125 -> "gpt-3.5-turbo-0125" - GPT_3_5_turbo_1106 -> "gpt-3.5-turbo-1106" - GPT_4_turbo_Preview -> "gpt-4-turbo-preview" - GPT_4_0125_Preview -> "gpt-4-0125-preview" - GPT_4_1106_Preview -> "gpt-4-1106-preview" + GPT_4o -> "gpt-4o" + GPT_4o_2024_08_06 -> "gpt-4o-2024-08-06" + GPT_4o_mini -> "gpt-4o-mini" + GPT_4o_mini_2024_07_18 -> "gpt-4o-mini-2024-07-18" GPT_4 -> "gpt-4" GPT_4_0613 -> "gpt-4-0613" - GPT_4_32k -> "gpt-4-32k" - GPT_4_32k_0613 -> "gpt-4-32k-0613" + GPT_4_turbo -> "gpt-4-turbo" + GPT_4_turbo_2024_04_09 -> "gpt-4-turbo-2024-04-09" instance FromJSON Model where parseJSON = Aeson.withText "Model" $ \t -> diff --git a/waspc/waspc.cabal b/waspc/waspc.cabal index 1560cc70c6..24feaa42d1 100644 --- a/waspc/waspc.cabal +++ b/waspc/waspc.cabal @@ -6,7 +6,7 @@ cabal-version: 2.4 -- Consider using hpack, or maybe even hpack-dhall. name: waspc -version: 0.14.1 +version: 0.14.2 description: Please see the README on GitHub at homepage: https://github.com/wasp-lang/wasp/waspc#readme bug-reports: https://github.com/wasp-lang/wasp/issues