From 33a1ce60d17378e85770c69b7cdd823387be0776 Mon Sep 17 00:00:00 2001
From: Ludovic Apvrille <ludovic.apvrille@telecom-paris.fr>
Date: Thu, 29 Feb 2024 15:31:59 +0100
Subject: [PATCH] Update on AI model

---
 src/main/java/ai/AIChatData.java      |  9 +++++++--
 src/main/java/myutil/AIInterface.java |  6 +++++-
 src/main/java/ui/window/JFrameAI.java | 19 +++++++++++++++++--
 3 files changed, 29 insertions(+), 5 deletions(-)

diff --git a/src/main/java/ai/AIChatData.java b/src/main/java/ai/AIChatData.java
index a44f69e2aa..3bf25d0cf0 100644
--- a/src/main/java/ai/AIChatData.java
+++ b/src/main/java/ai/AIChatData.java
@@ -87,7 +87,7 @@ public class AIChatData  {
         feedback.clear();
     }
 
-    public boolean makeAIInterface() {
+    public boolean makeAIInterface(String model) {
         if (aiinterface == null) {
             String key = ConfigurationTTool.OPENAIKey;
             if (key == null) {
@@ -96,7 +96,12 @@ public class AIChatData  {
                 TraceManager.addDev("Setting key: " + key);
                 aiinterface = new AIInterface();
                 aiinterface.setURL(AIInterface.URL_OPENAI_COMPLETION);
-                aiinterface.setAIModel(AIInterface.MODEL_GPT_35);
+                if ((model == null) || (model.length() == 0))
+                    aiinterface.setAIModel(AIInterface.MODEL_GPT_35);
+                else {
+                    TraceManager.addDev("Using model:" + model);
+                    aiinterface.setAIModel(model);
+                }
                 aiinterface.setKey(key);
             }
         }
diff --git a/src/main/java/myutil/AIInterface.java b/src/main/java/myutil/AIInterface.java
index fc0e46f420..5b6ba4e3bd 100644
--- a/src/main/java/myutil/AIInterface.java
+++ b/src/main/java/myutil/AIInterface.java
@@ -147,7 +147,11 @@ public class AIInterface {
     public String chat(String text, boolean useKnowledgeAsInput, boolean useOuputKnowledge) throws AIInterfaceException {
         connect();
         org.json.JSONObject mainObject = new org.json.JSONObject();
-        mainObject.put("model", "gpt-3.5-turbo");
+        if (aiModel == null) {
+            mainObject.put("model", MODEL_GPT_35);
+        } else {
+            mainObject.put("model", aiModel);
+        }
         org.json.JSONArray array = new org.json.JSONArray();
         org.json.JSONObject sub = new org.json.JSONObject();
         sub.put("role", "system");
diff --git a/src/main/java/ui/window/JFrameAI.java b/src/main/java/ui/window/JFrameAI.java
index 9d5d3e25d8..f724e625c0 100644
--- a/src/main/java/ui/window/JFrameAI.java
+++ b/src/main/java/ui/window/JFrameAI.java
@@ -41,6 +41,7 @@ package ui.window;
 
 import ai.*;
 import avatartranslator.AvatarSpecification;
+import common.ConfigurationTTool;
 import help.HelpEntry;
 import help.HelpManager;
 import myutil.AIInterface;
@@ -108,6 +109,7 @@ public class JFrameAI extends JFrame implements ActionListener {
             "Formalize mutations to be performed on a block diagram"};
 
     protected JComboBox<String> listOfPossibleActions;
+    protected JComboBox<String> listOfPossibleModels;
 
 
     private MainGUI mgui;
@@ -181,9 +183,22 @@ public class JFrameAI extends JFrame implements ActionListener {
         panelTop.setBorder(new javax.swing.border.TitledBorder("Options"));
 
         listOfPossibleActions = new JComboBox<>(POSSIBLE_ACTIONS);
-        panelTop.add(listOfPossibleActions, BorderLayout.CENTER);
+        JPanel chatPanelAction = new JPanel();
+        chatPanelAction.add(new JLabel("Selected chat:"));
+        chatPanelAction.add(listOfPossibleActions);
+        panelTop.add(chatPanelAction, BorderLayout.CENTER);
         listOfPossibleActions.addActionListener(this);
 
+        JPanel modelSelectionPanel = new JPanel();
+        modelSelectionPanel.add(new JLabel("Selected AI model:"));
+        if ((ConfigurationTTool.OPENAIModel != null) && (ConfigurationTTool.OPENAIModel.trim().length() > 0 )) {
+            listOfPossibleModels = new JComboBox<>(ConfigurationTTool.OPENAIModel.split(" "));
+        } else {
+            listOfPossibleModels = new JComboBox<>(AIInterface.MODEL_GPT_35.split(" "));
+        }
+        modelSelectionPanel.add(listOfPossibleModels);
+        panelTop.add(modelSelectionPanel, BorderLayout.SOUTH);
+
         framePanel.add(panelTop, BorderLayout.NORTH);
 
 
@@ -762,7 +777,7 @@ public class JFrameAI extends JFrame implements ActionListener {
         public boolean makeAIChatData() {
             aiChatData = new AIChatData();
             aiChatData.feedback = this;
-            return aiChatData.makeAIInterface();
+            return aiChatData.makeAIInterface(listOfPossibleModels.getItemAt(listOfPossibleModels.getSelectedIndex()));
         }
 
 
-- 
GitLab