i gotta pass prompt...

master
bel 2023-06-17 15:18:21 -06:00
parent 68b9010ed5
commit 242bf0a746
1 changed files with 16 additions and 13 deletions

View File

@ -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