diff --git a/main.go b/main.go index cd1bc1cc..09855d4c 100644 --- a/main.go +++ b/main.go @@ -2,6 +2,8 @@ package main import ( "embed" + "flag" + "fmt" "github.com/mitchellh/go-homedir" logger2 "openai/logger" "openai/server" @@ -13,6 +15,7 @@ var logger = logger2.GetLogger() //go:embed dist var webRoot embed.FS +var configFile string func main() { defer func() { @@ -37,10 +40,36 @@ func main() { return } + if configFile == "" { + configFile = filepath.Join(configDir, "config.toml") + } + // start server - s, err := server.NewServer(filepath.Join(configDir, "/config.toml")) + s, err := server.NewServer(configFile) if err != nil { panic(err) } s.Run(webRoot, "dist") } + +func init() { + + flag.StringVar(&configFile, "config", "", "Config file path (default: ~/.config/chat-gpt/config.toml)") + flag.Usage = usage + flag.Parse() +} + +func usage() { + fmt.Printf(`WeChat-GPT, Version: 1.0.0 +USAGE: + %s [command options] +OPTIONS: +`, os.Args[0]) + + flagSet := flag.CommandLine + order := []string{"config"} + for _, name := range order { + f := flagSet.Lookup(name) + fmt.Printf(" --%s => %s\n", f.Name, f.Usage) + } +} diff --git a/server/chat_handler.go b/server/chat_handler.go index 7ef7989f..67580303 100644 --- a/server/chat_handler.go +++ b/server/chat_handler.go @@ -95,7 +95,12 @@ func (s *Server) sendMessage(userId string, text string, ws Client) error { } retryCount-- } + + // 如果三次请求都失败的话,则返回对应的错误信息 if err != nil { + replyMessage(types.WsMessage{Type: types.WsStart}, ws) + replyMessage(types.WsMessage{Type: types.WsMiddle, Content: "抱歉,AI 助手开小差了,我马上找人去盘它。"}, ws) + replyMessage(types.WsMessage{Type: types.WsEnd}, ws) return err } diff --git a/web/src/views/Chat.vue b/web/src/views/Chat.vue index d3d7664e..3e38d37d 100644 --- a/web/src/views/Chat.vue +++ b/web/src/views/Chat.vue @@ -113,20 +113,20 @@ export default defineComponent({ this.checkSession(); - for (let i = 0; i < 10; i++) { - this.chatData.push({ - type: "prompt", - id: randString(32), - icon: 'images/user-icon.png', - content: "孙悟空为什么可以把金棍棒放进耳朵?", - }); - this.chatData.push({ - type: "reply", - id: randString(32), - icon: 'images/gpt-icon.png', - content: "孙悟空是中国神话中的人物,传说中他可以把金箍棒放进耳朵里,这是一种超自然能力,无法用现代科学解释。这种能力可能是象征孙悟空超人力量的古代文化传说。", - }); - } + // for (let i = 0; i < 10; i++) { + // this.chatData.push({ + // type: "prompt", + // id: randString(32), + // icon: 'images/user-icon.png', + // content: "孙悟空为什么可以把金棍棒放进耳朵?", + // }); + // this.chatData.push({ + // type: "reply", + // id: randString(32), + // icon: 'images/gpt-icon.png', + // content: "孙悟空是中国神话中的人物,传说中他可以把金箍棒放进耳朵里,这是一种超自然能力,无法用现代科学解释。这种能力可能是象征孙悟空超人力量的古代文化传说。", + // }); + // } window.addEventListener("resize", () => { this.chatBoxHeight = window.innerHeight - this.toolBoxHeight; @@ -195,7 +195,6 @@ export default defineComponent({ }); } else if (data.type === 'end') { this.sending = false; - this.chatData[this.chatData.length - 1]["cursor"] = false; } else { let content = data.content; // 替换换行符