diff --git a/vicuna-tools.d/main.go b/vicuna-tools.d/main.go index 0a27315..0475230 100644 --- a/vicuna-tools.d/main.go +++ b/vicuna-tools.d/main.go @@ -90,7 +90,7 @@ func config(ctx context.Context) { flag.IntVar(&Config.Port, "p", 37070, "port to listen on") flag.StringVar(&Config.ChatBot.SessionD, "chatbot-session-d", d, "dir to store chat bot sessions") - flag.StringVar(&Config.ChatBot.PromptDelimiter, "chatbot-rp", "> ", "prompt delimiter prefixed by NAME/YOU") + flag.StringVar(&Config.ChatBot.PromptDelimiter, "chatbot-rp", "> ", "prompt delimiter prefixed by NAME") flag.StringVar(&Config.ChatBot.WD, "chatbot-working-d", "./llama.cpp", "working directory for chatbot") flag.StringVar(&Config.ChatBot.Command, "chatbot-cmd", "./main -m ./models/ggml-vic7b-uncensored-q5_1.bin --repeat_penalty 1.0", "chatbot cmd prefix") flag.IntVar(&Config.ChatBot.N, "chatbot-n", 256, "chatbot items to gen") @@ -350,14 +350,13 @@ func handleAPIChatBotPut(w http.ResponseWriter, r *http.Request) error { reversePrompt = reversePrompt[:8] } reversePrompt = reversePrompt + Config.ChatBot.PromptDelimiter - forwardPrompt := "YOU" + Config.ChatBot.PromptDelimiter if err := copyFile(inputF, promptF); err != nil { return err } if err := chatBotGenerateInitCacheF(r.Context(), cacheF, inputF); err != nil { return err } - if err := appendFile(inputF, reversePrompt+message+"\n"+forwardPrompt); err != nil { + if err := appendFile(inputF, reversePrompt+message+"\n"); err != nil { return err } @@ -365,7 +364,6 @@ func handleAPIChatBotPut(w http.ResponseWriter, r *http.Request) error { if err != nil { return err } - //log.Printf("generated for %s via %s: [%s]", cookie.MyName(), r.URL.Path, justNew) if err := os.Rename(inputF, promptF); err != nil { return err } @@ -425,8 +423,12 @@ func chatBotGenerateAndFillInputF(ctx context.Context, cacheF, inputF, reversePr commands[1:]..., ) command.Dir = Config.ChatBot.WD - command.Stderr = log.Writer() - command.Stderr = io.Discard + logf, err := os.Create(path.Join(Config.ChatBot.SessionD, "chatbot.stderr")) + if err != nil { + return nil, err + } + defer logf.Close() + command.Stderr = logf stdout, err := command.StdoutPipe() if err != nil { @@ -455,20 +457,21 @@ func chatBotGenerateAndFillInputF(ctx context.Context, cacheF, inputF, reversePr } justNew := oldAndNew[len(priorContent):] - if idx := bytes.Index(justNew, []byte(reversePrompt)); idx > 0 { - justNew = justNew[:idx] + trimmedReversePrompt := strings.TrimSpace(reversePrompt) + if idx := bytes.Index(justNew, []byte(trimmedReversePrompt)); idx > -1 { + justNew = justNew[:idx+len(trimmedReversePrompt)] } else if idx := bytes.LastIndex( append(priorContent, justNew...), - []byte(reversePrompt), - ); idx+len(reversePrompt) > len(priorContent) { - justNew = justNew[:idx+len(reversePrompt)-len(priorContent)] + []byte(trimmedReversePrompt), + ); idx+len(trimmedReversePrompt) > len(priorContent) { + justNew = justNew[:idx+len(trimmedReversePrompt)-len(priorContent)] } if err := _appendFile(inputF, string(justNew)); err != nil { return nil, err } - log.Printf("%s generated %q", reversePrompt, justNew) - if !bytes.HasSuffix(append(priorContent, justNew...), []byte(reversePrompt)) { + log.Printf("%s generated %q", trimmedReversePrompt, justNew) + if !bytes.HasSuffix(append(priorContent, justNew...), []byte(trimmedReversePrompt)) { more, err := chatBotGenerateAndFillInputF(ctx, cacheF, inputF, reversePrompt, depth+1) if err != nil { return nil, err