making go-chat iterative

This commit is contained in:
Yalun 2024-05-30 23:51:22 +08:00
parent 96bc232b43
commit d4a23e0700

View File

@ -1,9 +1,11 @@
package main package main
import ( import (
"bufio"
"context" "context"
"fmt" "fmt"
"log" "log"
"os"
"github.com/ollama/ollama/api" "github.com/ollama/ollama/api"
) )
@ -19,18 +21,6 @@ func main() {
Role: "system", Role: "system",
Content: "Provide very brief, concise responses", Content: "Provide very brief, concise responses",
}, },
api.Message{
Role: "user",
Content: "Name some unusual animals",
},
api.Message{
Role: "assistant",
Content: "Monotreme, platypus, echidna",
},
api.Message{
Role: "user",
Content: "which of these is the most dangerous?",
},
} }
ctx := context.Background() ctx := context.Background()
@ -39,13 +29,29 @@ func main() {
Messages: messages, Messages: messages,
} }
respString := ""
respFunc := func(resp api.ChatResponse) error { respFunc := func(resp api.ChatResponse) error {
fmt.Print(resp.Message.Content) respString += resp.Message.Content
if resp.Done {
fmt.Println("\t", respString)
messages = append(messages, api.Message{
Role: "assistant",
Content: respString,
})
respString = ""
}
return nil return nil
} }
scanner := bufio.NewScanner(os.Stdin)
for scanner.Scan() {
req.Messages = append(req.Messages, api.Message{
Role: "user",
Content: scanner.Text(),
})
err = client.Chat(ctx, req, respFunc) err = client.Chat(ctx, req, respFunc)
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
}
} }