summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNate Sesti <sestinj@gmail.com>2023-06-22 13:56:48 -0700
committerNate Sesti <sestinj@gmail.com>2023-06-22 13:56:48 -0700
commitd1d0e3d6ed02512489b42fa4a8a2176df7187207 (patch)
tree2eaca56e7db9fa4f22f25f6cbed458150ee6dfc9
parent70ad90116b73909347497a307cb1488065096696 (diff)
downloadsncontinue-d1d0e3d6ed02512489b42fa4a8a2176df7187207.tar.gz
sncontinue-d1d0e3d6ed02512489b42fa4a8a2176df7187207.tar.bz2
sncontinue-d1d0e3d6ed02512489b42fa4a8a2176df7187207.zip
update global config with default model toggle
-rw-r--r--continuedev/src/continuedev/core/autopilot.py4
-rw-r--r--continuedev/src/continuedev/core/config.py64
-rw-r--r--continuedev/src/continuedev/core/sdk.py18
-rw-r--r--continuedev/src/continuedev/server/gui.py6
-rw-r--r--extension/react-app/src/hooks/ContinueGUIClientProtocol.ts2
-rw-r--r--extension/react-app/src/hooks/useContinueGUIProtocol.ts4
-rw-r--r--extension/react-app/src/tabs/gui.tsx10
7 files changed, 57 insertions, 51 deletions
diff --git a/continuedev/src/continuedev/core/autopilot.py b/continuedev/src/continuedev/core/autopilot.py
index ab7f4747..f14a4127 100644
--- a/continuedev/src/continuedev/core/autopilot.py
+++ b/continuedev/src/continuedev/core/autopilot.py
@@ -45,8 +45,8 @@ class Autopilot(ContinueBaseModel):
async def get_available_slash_commands(self) -> List[Dict]:
return list(map(lambda x: {"name": x.name, "description": x.description}, self.continue_sdk.config.slash_commands)) or []
- async def change_default_model(self):
- self.continue_sdk.update_default_model()
+ async def change_default_model(self, model: str):
+ self.continue_sdk.update_default_model(model)
async def clear_history(self):
self.history = History.from_empty()
diff --git a/continuedev/src/continuedev/core/config.py b/continuedev/src/continuedev/core/config.py
index 21d21879..01316f1b 100644
--- a/continuedev/src/continuedev/core/config.py
+++ b/continuedev/src/continuedev/core/config.py
@@ -87,37 +87,45 @@ def load_config(config_file: str) -> ContinueConfig:
raise ValueError(f'Unknown config file extension: {ext}')
return ContinueConfig(**config_dict)
-def update_config(config_file: str):
+
+def load_global_config() -> ContinueConfig:
"""
- Update the config file with the current ContinueConfig object.
+ Load the global config file and return a ContinueConfig object.
"""
- if not os.path.exists(config_file):
- with open(config_file, 'w') as f:
- config_dict = { "default_model": "gpt-3.5-turbo" }
- json.dump(config_dict, f, indent=4)
-
- _, ext = os.path.splitext(config_file)
- if ext == '.yaml':
+ global_dir = os.path.expanduser('~/.continue')
+ if not os.path.exists(global_dir):
+ os.mkdir(global_dir)
- with open(config_file, 'w') as f:
- config_dict = yaml.safe_load(f)
+ yaml_path = os.path.join(global_dir, 'config.yaml')
+ if os.path.exists(yaml_path):
+ with open(config_path, 'r') as f:
+ try:
+ config_dict = yaml.safe_load(f)
+ except:
+ return ContinueConfig()
+ else:
+ config_path = os.path.join(global_dir, 'config.json')
+ with open(config_path, 'r') as f:
+ try:
+ config_dict = json.load(f)
+ except:
+ return ContinueConfig()
+ return ContinueConfig(**config_dict)
- if config_dict["default_model"] == "gpt-4":
- config_dict["default_model"] = "gpt-3.5-turbo"
- else:
- config_dict["default_model"] = "gpt-4"
-
- with open(config_file, 'w') as f:
- json.dump(config_dict, f, indent=4)
- elif ext == '.json':
- with open(config_file, 'r') as f:
- config_dict = json.load(f)
+def update_global_config(config: ContinueConfig):
+ """
+ Update the config file with the given ContinueConfig object.
+ """
+ global_dir = os.path.expanduser('~/.continue')
+ if not os.path.exists(global_dir):
+ os.mkdir(global_dir)
- if config_dict["default_model"] == "gpt-4":
- config_dict["default_model"] = "gpt-3.5-turbo"
- else:
- config_dict["default_model"] = "gpt-4"
-
- with open(config_file, 'w') as f:
- json.dump(config_dict, f, indent=4) \ No newline at end of file
+ yaml_path = os.path.join(global_dir, 'config.yaml')
+ if os.path.exists(yaml_path):
+ with open(config_path, 'w') as f:
+ yaml.dump(config.dict(), f)
+ else:
+ config_path = os.path.join(global_dir, 'config.json')
+ with open(config_path, 'w') as f:
+ json.dump(config.dict(), f)
diff --git a/continuedev/src/continuedev/core/sdk.py b/continuedev/src/continuedev/core/sdk.py
index 5652ec39..192552e7 100644
--- a/continuedev/src/continuedev/core/sdk.py
+++ b/continuedev/src/continuedev/core/sdk.py
@@ -6,7 +6,7 @@ import os
from ..steps.core.core import DefaultModelEditCodeStep
from ..models.main import Range
from .abstract_sdk import AbstractContinueSDK
-from .config import ContinueConfig, load_config, update_config
+from .config import ContinueConfig, load_config, load_global_config, update_global_config
from ..models.filesystem_edit import FileEdit, FileSystemEdit, AddFile, DeleteFile, AddDirectory, DeleteDirectory
from ..models.filesystem import RangeInFile
from ..libs.llm.hf_inference_api import HuggingFaceInferenceAPI
@@ -76,7 +76,7 @@ class Models:
else:
raise Exception(f"Unknown model {model_name}")
- @cached_property
+ @property
def default(self):
default_model = self.sdk.config.default_model
return self.__model_from_name(default_model) if default_model is not None else self.gpt35
@@ -168,16 +168,12 @@ class ContinueSDK(AbstractContinueSDK):
elif os.path.exists(json_path):
return load_config(json_path)
else:
- return ContinueConfig()
+ return load_global_config()
- def update_default_model(self):
- dir = self.ide.workspace_directory
- yaml_path = os.path.join(dir, '.continue', 'config.yaml')
- json_path = os.path.join(dir, '.continue', 'config.json')
- if os.path.exists(yaml_path):
- update_config(yaml_path)
- else:
- update_config(json_path)
+ def update_default_model(self, model: str):
+ config = self.config
+ config.default_model = model
+ update_global_config(config)
def set_loading_message(self, message: str):
# self.__autopilot.set_loading_message(message)
diff --git a/continuedev/src/continuedev/server/gui.py b/continuedev/src/continuedev/server/gui.py
index 9b36c704..cc6235e9 100644
--- a/continuedev/src/continuedev/server/gui.py
+++ b/continuedev/src/continuedev/server/gui.py
@@ -78,7 +78,7 @@ class GUIProtocolServer(AbstractGUIProtocolServer):
elif message_type == "retry_at_index":
self.on_retry_at_index(data["index"])
elif message_type == "change_default_model":
- self.on_change_default_model()
+ self.on_change_default_model(data["model"])
elif message_type == "clear_history":
self.on_clear_history()
elif message_type == "delete_at_index":
@@ -118,8 +118,8 @@ class GUIProtocolServer(AbstractGUIProtocolServer):
asyncio.create_task(
self.session.autopilot.retry_at_index(index))
- def on_change_default_model(self):
- asyncio.create_task(self.session.autopilot.change_default_model())
+ def on_change_default_model(self, model: str):
+ asyncio.create_task(self.session.autopilot.change_default_model(model))
def on_clear_history(self):
asyncio.create_task(self.session.autopilot.clear_history())
diff --git a/extension/react-app/src/hooks/ContinueGUIClientProtocol.ts b/extension/react-app/src/hooks/ContinueGUIClientProtocol.ts
index 6d9d1fdd..3d8e0a38 100644
--- a/extension/react-app/src/hooks/ContinueGUIClientProtocol.ts
+++ b/extension/react-app/src/hooks/ContinueGUIClientProtocol.ts
@@ -13,7 +13,7 @@ abstract class AbstractContinueGUIClientProtocol {
callback: (commands: { name: string; description: string }[]) => void
): void;
- abstract changeDefaultModel(): void;
+ abstract changeDefaultModel(model: string): void;
abstract sendClear(): void;
diff --git a/extension/react-app/src/hooks/useContinueGUIProtocol.ts b/extension/react-app/src/hooks/useContinueGUIProtocol.ts
index 4eb68046..f43a66ff 100644
--- a/extension/react-app/src/hooks/useContinueGUIProtocol.ts
+++ b/extension/react-app/src/hooks/useContinueGUIProtocol.ts
@@ -55,8 +55,8 @@ class ContinueGUIClientProtocol extends AbstractContinueGUIClientProtocol {
});
}
- changeDefaultModel() {
- this.messenger.send("change_default_model", {});
+ changeDefaultModel(model: string) {
+ this.messenger.send("change_default_model", { model });
}
sendClear() {
diff --git a/extension/react-app/src/tabs/gui.tsx b/extension/react-app/src/tabs/gui.tsx
index 16c950ef..f47371ee 100644
--- a/extension/react-app/src/tabs/gui.tsx
+++ b/extension/react-app/src/tabs/gui.tsx
@@ -427,9 +427,9 @@ function GUI(props: GUIProps) {
}}
hidden={!showDataSharingInfo}
>
- By turning on this switch, you signal that you would
- contribute this software development data to a publicly
- accessible, open-source dataset in the future.
+ By turning on this switch, you signal that you would contribute this
+ software development data to a publicly accessible, open-source dataset
+ in the future.
<br />
<br />
<b>
@@ -473,8 +473,10 @@ function GUI(props: GUIProps) {
</div>
<HeaderButtonWithText
onClick={() => {
+ client?.changeDefaultModel(
+ usingFastModel ? "gpt-4" : "gpt-3.5-turbo"
+ );
setUsingFastModel((prev) => !prev);
- client?.changeDefaultModel();
}}
text={usingFastModel ? "gpt-3.5-turbo" : "gpt-4"}
>