From 64b62290d7173c150ba2b264c8aeaabf6dd2b72f Mon Sep 17 00:00:00 2001
From: Timothy Carambat <rambat1010@gmail.com>
Date: Mon, 13 May 2024 14:31:49 -0700
Subject: [PATCH] Set gpt-4o as default for OpenAI (#1391)

---
 docker/.env.example                                       | 2 +-
 server/.env.example                                       | 2 +-
 server/models/systemSettings.js                           | 2 +-
 server/utils/AiProviders/openAi/index.js                  | 4 ++--
 server/utils/agents/aibitat/example/beginner-chat.js      | 2 +-
 server/utils/agents/aibitat/example/blog-post-coding.js   | 2 +-
 .../aibitat/example/websocket/websock-multi-turn-chat.js  | 2 +-
 server/utils/agents/aibitat/providers/openai.js           | 6 +++++-
 server/utils/agents/aibitat/utils/summarize.js            | 2 +-
 server/utils/agents/index.js                              | 4 ++--
 server/utils/helpers/customModels.js                      | 8 ++++++++
 11 files changed, 24 insertions(+), 12 deletions(-)

diff --git a/docker/.env.example b/docker/.env.example
index 3f99e52d4..8cfa2aea8 100644
--- a/docker/.env.example
+++ b/docker/.env.example
@@ -9,7 +9,7 @@ GID='1000'
 ###########################################
 # LLM_PROVIDER='openai'
 # OPEN_AI_KEY=
-# OPEN_MODEL_PREF='gpt-3.5-turbo'
+# OPEN_MODEL_PREF='gpt-4o'
 
 # LLM_PROVIDER='gemini'
 # GEMINI_API_KEY=
diff --git a/server/.env.example b/server/.env.example
index 8f424d82a..290a07096 100644
--- a/server/.env.example
+++ b/server/.env.example
@@ -6,7 +6,7 @@ JWT_SECRET="my-random-string-for-seeding" # Please generate random string at lea
 ###########################################
 # LLM_PROVIDER='openai'
 # OPEN_AI_KEY=
-# OPEN_MODEL_PREF='gpt-3.5-turbo'
+# OPEN_MODEL_PREF='gpt-4o'
 
 # LLM_PROVIDER='gemini'
 # GEMINI_API_KEY=
diff --git a/server/models/systemSettings.js b/server/models/systemSettings.js
index 3c23a7d39..904c448d5 100644
--- a/server/models/systemSettings.js
+++ b/server/models/systemSettings.js
@@ -297,7 +297,7 @@ const SystemSettings = {
     return {
       // OpenAI Keys
       OpenAiKey: !!process.env.OPEN_AI_KEY,
-      OpenAiModelPref: process.env.OPEN_MODEL_PREF || "gpt-3.5-turbo",
+      OpenAiModelPref: process.env.OPEN_MODEL_PREF || "gpt-4o",
 
       // Azure + OpenAI Keys
       AzureOpenAiEndpoint: process.env.AZURE_OPENAI_ENDPOINT,
diff --git a/server/utils/AiProviders/openAi/index.js b/server/utils/AiProviders/openAi/index.js
index 3a4d997ce..43d7c2874 100644
--- a/server/utils/AiProviders/openAi/index.js
+++ b/server/utils/AiProviders/openAi/index.js
@@ -11,8 +11,7 @@ class OpenAiLLM {
     this.openai = new OpenAIApi({
       apiKey: process.env.OPEN_AI_KEY,
     });
-    this.model =
-      modelPreference || process.env.OPEN_MODEL_PREF || "gpt-3.5-turbo";
+    this.model = modelPreference || process.env.OPEN_MODEL_PREF || "gpt-4o";
     this.limits = {
       history: this.promptWindowLimit() * 0.15,
       system: this.promptWindowLimit() * 0.15,
@@ -48,6 +47,7 @@ class OpenAiLLM {
       case "gpt-3.5-turbo":
       case "gpt-3.5-turbo-1106":
         return 16_385;
+      case "gpt-4o":
       case "gpt-4-turbo":
       case "gpt-4-1106-preview":
       case "gpt-4-turbo-preview":
diff --git a/server/utils/agents/aibitat/example/beginner-chat.js b/server/utils/agents/aibitat/example/beginner-chat.js
index 865a8c2a6..d81c2b710 100644
--- a/server/utils/agents/aibitat/example/beginner-chat.js
+++ b/server/utils/agents/aibitat/example/beginner-chat.js
@@ -11,7 +11,7 @@ const Agent = {
 
 const aibitat = new AIbitat({
   provider: "openai",
-  model: "gpt-3.5-turbo",
+  model: "gpt-4o",
 })
   .use(cli.plugin())
   .function({
diff --git a/server/utils/agents/aibitat/example/blog-post-coding.js b/server/utils/agents/aibitat/example/blog-post-coding.js
index 50f8d179a..76846a2a3 100644
--- a/server/utils/agents/aibitat/example/blog-post-coding.js
+++ b/server/utils/agents/aibitat/example/blog-post-coding.js
@@ -8,7 +8,7 @@ const {
 require("dotenv").config({ path: `../../../../.env.development` });
 
 const aibitat = new AIbitat({
-  model: "gpt-3.5-turbo",
+  model: "gpt-4o",
 })
   .use(cli.plugin())
   .use(fileHistory.plugin())
diff --git a/server/utils/agents/aibitat/example/websocket/websock-multi-turn-chat.js b/server/utils/agents/aibitat/example/websocket/websock-multi-turn-chat.js
index 3407ef32e..6277978cc 100644
--- a/server/utils/agents/aibitat/example/websocket/websock-multi-turn-chat.js
+++ b/server/utils/agents/aibitat/example/websocket/websock-multi-turn-chat.js
@@ -69,7 +69,7 @@ async function runAIbitat(socket) {
   console.log(chalk.blue("Booting AIbitat class & starting agent(s)"));
   const aibitat = new AIbitat({
     provider: "openai",
-    model: "gpt-3.5-turbo",
+    model: "gpt-4o",
   })
     .use(websocket.plugin({ socket }))
     .use(webBrowsing.plugin())
diff --git a/server/utils/agents/aibitat/providers/openai.js b/server/utils/agents/aibitat/providers/openai.js
index 5daa738ea..3fcc46ca5 100644
--- a/server/utils/agents/aibitat/providers/openai.js
+++ b/server/utils/agents/aibitat/providers/openai.js
@@ -13,6 +13,10 @@ class OpenAIProvider extends Provider {
       input: 0.03,
       output: 0.06,
     },
+    "gpt-4o": {
+      input: 0.005,
+      output: 0.015,
+    },
     "gpt-4-32k": {
       input: 0.06,
       output: 0.12,
@@ -33,7 +37,7 @@ class OpenAIProvider extends Provider {
         apiKey: process.env.OPEN_AI_KEY,
         maxRetries: 3,
       },
-      model = "gpt-3.5-turbo",
+      model = "gpt-4o",
     } = config;
 
     const client = new OpenAI(options);
diff --git a/server/utils/agents/aibitat/utils/summarize.js b/server/utils/agents/aibitat/utils/summarize.js
index 65297dc43..7f1852c02 100644
--- a/server/utils/agents/aibitat/utils/summarize.js
+++ b/server/utils/agents/aibitat/utils/summarize.js
@@ -12,7 +12,7 @@ const Provider = require("../providers/ai-provider");
 
 const SUMMARY_MODEL = {
   anthropic: "claude-3-opus-20240229", // 200,000 tokens
-  openai: "gpt-3.5-turbo-1106", // 16,385 tokens
+  openai: "gpt-4o", // 128,000 tokens
 };
 
 async function summarizeContent(
diff --git a/server/utils/agents/index.js b/server/utils/agents/index.js
index 3352718be..08ce5558e 100644
--- a/server/utils/agents/index.js
+++ b/server/utils/agents/index.js
@@ -146,7 +146,7 @@ class AgentHandler {
   #providerDefault() {
     switch (this.provider) {
       case "openai":
-        return "gpt-3.5-turbo";
+        return "gpt-4o";
       case "anthropic":
         return "claude-3-sonnet-20240229";
       case "lmstudio":
@@ -258,7 +258,7 @@ class AgentHandler {
   ) {
     this.aibitat = new AIbitat({
       provider: this.provider ?? "openai",
-      model: this.model ?? "gpt-3.5-turbo",
+      model: this.model ?? "gpt-4o",
       chats: await this.#chatHistory(20),
       handlerProps: {
         invocation: this.invocation,
diff --git a/server/utils/helpers/customModels.js b/server/utils/helpers/customModels.js
index 3743ffad7..b7aae93be 100644
--- a/server/utils/helpers/customModels.js
+++ b/server/utils/helpers/customModels.js
@@ -66,6 +66,14 @@ async function openAiModels(apiKey = null) {
           owned_by: "openai",
           organization: "OpenAi",
         },
+        {
+          name: "gpt-4o",
+          id: "gpt-4o",
+          object: "model",
+          created: 1677610602,
+          owned_by: "openai",
+          organization: "OpenAi",
+        },
         {
           name: "gpt-4",
           id: "gpt-4",
-- 
GitLab