Bläddra i källkod

wip: added ChatGPT settings

0xJacky 2 år sedan
förälder
incheckning
53f183c161
3 ändrade filer med 68 tillägg och 29 borttagningar
  1. 32 0
      frontend/src/views/preference/Preference.vue
  2. 1 1
      server/api/openai.go
  3. 35 28
      server/api/settings.go

+ 32 - 0
frontend/src/views/preference/Preference.vue

@@ -23,6 +23,12 @@ const data = ref({
     nginx_log: {
         access_log_path: '',
         error_log_path: ''
+    },
+    openai: {
+        model: '',
+        base_url: '',
+        proxy: '',
+        token: ''
     }
 })
 
@@ -47,6 +53,7 @@ function save() {
     <a-card :title="$gettext('Preference')">
         <div class="preference-container">
             <a-form layout="vertical">
+                <h4>{{ $gettext('Basic') }}</h4>
                 <a-form-item :label="$gettext('HTTP Port')">
                     <p>{{ data.server.http_port }}</p>
                 </a-form-item>
@@ -75,12 +82,37 @@ function save() {
                         </a-select-option>
                     </a-select>
                 </a-form-item>
+                <h4>{{ $gettext('Nginx Log') }}</h4>
                 <a-form-item :label="$gettext('Nginx Access Log Path')">
                     <a-input v-model:value="data.nginx_log.access_log_path"/>
                 </a-form-item>
                 <a-form-item :label="$gettext('Nginx Error Log Path')">
                     <a-input v-model:value="data.nginx_log.error_log_path"/>
                 </a-form-item>
+                <h4>{{ $gettext('OpenAI') }}</h4>
+                <a-form-item :label="$gettext('ChatGPT Model')">
+                    <a-select v-model:value="data.openai.model">
+                        <a-select-option value="gpt-4">
+                            {{ $gettext('GPT-4') }}
+                        </a-select-option>
+                        <a-select-option value="gpt-4-32k">
+                            {{ $gettext('GPT-4-32K') }}
+                        </a-select-option>
+                        <a-select-option value="gpt-3.5-turbo">
+                            {{ $gettext('GPT-3.5-Turbo') }}
+                        </a-select-option>
+                    </a-select>
+                </a-form-item>
+                <a-form-item :label="$gettext('API Base Url')">
+                    <a-input v-model:value="data.openai.base_url"
+                             :placeholder="$gettext('Leave blank for the default: https://api.openai.com/')"/>
+                </a-form-item>
+                <a-form-item :label="$gettext('API Proxy')">
+                    <a-input v-model:value="data.openai.proxy" placeholder="http://127.0.0.1:1087"/>
+                </a-form-item>
+                <a-form-item :label="$gettext('API Token')">
+                    <a-input-password v-model:value="data.openai.token"/>
+                </a-form-item>
             </a-form>
         </div>
     </a-card>

+ 1 - 1
server/api/openai.go

@@ -71,7 +71,7 @@ func MakeChatCompletionRequest(c *gin.Context) {
     ctx := context.Background()
 
     req := openai.ChatCompletionRequest{
-        Model:    openai.GPT3Dot5Turbo0301,
+        Model:    settings.OpenAISettings.Model,
         Messages: messages,
         Stream:   true,
     }

+ 35 - 28
server/api/settings.go

@@ -1,38 +1,45 @@
 package api
 
 import (
-	"github.com/0xJacky/Nginx-UI/server/settings"
-	"github.com/gin-gonic/gin"
-	"net/http"
+    "github.com/0xJacky/Nginx-UI/server/settings"
+    "github.com/gin-gonic/gin"
+    "net/http"
 )
 
 func GetSettings(c *gin.Context) {
-	c.JSON(http.StatusOK, gin.H{
-		"server":    settings.ServerSettings,
-		"nginx_log": settings.NginxLogSettings,
-	})
+    c.JSON(http.StatusOK, gin.H{
+        "server":    settings.ServerSettings,
+        "nginx_log": settings.NginxLogSettings,
+        "openai":    settings.OpenAISettings,
+    })
 }
 
 func SaveSettings(c *gin.Context) {
-	var json struct {
-		Server   settings.Server   `json:"server"`
-		NginxLog settings.NginxLog `json:"nginx_log"`
-	}
-
-	if !BindAndValid(c, &json) {
-		return
-	}
-
-	settings.Conf.Section("server").Key("Email").SetValue(json.Server.Email)
-	settings.Conf.Section("server").Key("HTTPChallengePort").SetValue(json.Server.HTTPChallengePort)
-	settings.Conf.Section("nginx_log").Key("AccessLogPath").SetValue(json.NginxLog.AccessLogPath)
-	settings.Conf.Section("nginx_log").Key("ErrorLogPath").SetValue(json.NginxLog.ErrorLogPath)
-
-	err := settings.Save()
-	if err != nil {
-		ErrHandler(c, err)
-		return
-	}
-
-	GetSettings(c)
+    var json struct {
+        Server   settings.Server   `json:"server"`
+        NginxLog settings.NginxLog `json:"nginx_log"`
+        Openai   settings.OpenAI   `json:"openai"`
+    }
+
+    if !BindAndValid(c, &json) {
+        return
+    }
+
+    settings.Conf.Section("server").Key("Email").SetValue(json.Server.Email)
+    settings.Conf.Section("server").Key("HTTPChallengePort").SetValue(json.Server.HTTPChallengePort)
+    settings.Conf.Section("nginx_log").Key("AccessLogPath").SetValue(json.NginxLog.AccessLogPath)
+    settings.Conf.Section("nginx_log").Key("ErrorLogPath").SetValue(json.NginxLog.ErrorLogPath)
+
+    settings.Conf.Section("openai").Key("Model").SetValue(json.Openai.Model)
+    settings.Conf.Section("openai").Key("BaseUrl").SetValue(json.Openai.BaseUrl)
+    settings.Conf.Section("openai").Key("Proxy").SetValue(json.Openai.Proxy)
+    settings.Conf.Section("openai").Key("Token").SetValue(json.Openai.Token)
+
+    err := settings.Save()
+    if err != nil {
+        ErrHandler(c, err)
+        return
+    }
+
+    GetSettings(c)
 }