diff --git a/app.vue b/app.vue
index 4e0e080..211a946 100644
--- a/app.vue
+++ b/app.vue
@@ -1,8 +1,8 @@
\ No newline at end of file
diff --git a/components/ModelNameEditor.vue b/components/ModelNameEditor.vue
deleted file mode 100644
index 819b6a6..0000000
--- a/components/ModelNameEditor.vue
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/composables/states.js b/composables/states.js
new file mode 100644
index 0000000..64c7050
--- /dev/null
+++ b/composables/states.js
@@ -0,0 +1,3 @@
+
+export const useModels = () => useState('models', () => getStoredModels())
+export const useCurrentModel = () => useState('currentModel', () => getCurrentModel())
\ No newline at end of file
diff --git a/server/api/conversation.post.js b/server/api/conversation.post.js
index 631815a..9ffb549 100644
--- a/server/api/conversation.post.js
+++ b/server/api/conversation.post.js
@@ -38,7 +38,6 @@ export default defineEventHandler(async (event) => {
'Connection': 'keep-alive'
})
- const modelName = await getSetting('modelName')
const apiKey = await getSetting('apiKey')
if (!apiKey) {
@@ -57,7 +56,7 @@ export default defineEventHandler(async (event) => {
modelOptions: {
// The model is set to text-chat-davinci-002-20221122 by default, but you can override
// it and any other parameters here
- model: modelName,
+ model: body.model,
},
// (Optional) Set custom instructions instead of "You are ChatGPT...".
// promptPrefix: 'You are Bob, a cowboy in Western times...',
diff --git a/utils/enums.js b/utils/enums.js
new file mode 100644
index 0000000..ad89340
--- /dev/null
+++ b/utils/enums.js
@@ -0,0 +1,5 @@
+
+export const STORAGE_KEY = {
+ OPENAI_MODELS: 'openai_models',
+ CURRENT_OPENAI_MODEL: 'current_openai_model',
+}
\ No newline at end of file
diff --git a/utils/localStorage.js b/utils/localStorage.js
new file mode 100644
index 0000000..3556082
--- /dev/null
+++ b/utils/localStorage.js
@@ -0,0 +1,43 @@
+import {useCurrentModel, useModels} from "~/composables/states";
+
+const get = (key) => {
+ let val = localStorage.getItem(key)
+ if (val) {
+ val = JSON.parse(val)
+ }
+ return val
+}
+
+const set = (key, val) => {
+ localStorage.setItem(key, JSON.stringify(val))
+}
+
+const DEFAULT_OPENAI_MODEL = 'text-davinci-003'
+
+export const setModels = (val) => {
+ const models = useModels()
+ set(STORAGE_KEY.OPENAI_MODELS, val)
+ models.value = val
+}
+
+export const getStoredModels = () => {
+ let models = get(STORAGE_KEY.OPENAI_MODELS)
+ if (!models) {
+ models = [DEFAULT_OPENAI_MODEL]
+ }
+ return models
+}
+
+export const setCurrentModel = (val) => {
+ const model = useCurrentModel()
+ set(STORAGE_KEY.CURRENT_OPENAI_MODEL, val)
+ model.value = val
+}
+
+export const getCurrentModel = () => {
+ let model = get(STORAGE_KEY.CURRENT_OPENAI_MODEL)
+ if (!model) {
+ model = DEFAULT_OPENAI_MODEL
+ }
+ return model
+}
\ No newline at end of file