52 lines
1017 B
Go
52 lines
1017 B
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"time"
|
|
|
|
gollama "gitea.neitzel.de/konrad/go-ollama"
|
|
)
|
|
|
|
func main() {
|
|
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Minute)
|
|
defer cancel()
|
|
|
|
client, err := gollama.FromEnv()
|
|
if err != nil {
|
|
log.Fatalf("connect: %v", err)
|
|
}
|
|
if err := client.Ping(ctx); err != nil {
|
|
log.Fatalf("ping: %v", err)
|
|
}
|
|
|
|
names, err := client.ModelNames(ctx)
|
|
if err != nil {
|
|
log.Fatalf("list models: %v", err)
|
|
}
|
|
fmt.Println("models:", names)
|
|
|
|
model := "llama3.2"
|
|
if len(os.Args) > 1 {
|
|
model = os.Args[1]
|
|
}
|
|
|
|
reply, err := client.Complete(ctx, "Say hi in one sentence.", gollama.WithModel(model))
|
|
if err != nil {
|
|
log.Fatalf("complete: %v", err)
|
|
}
|
|
fmt.Println("reply:", reply.Text)
|
|
|
|
session, err := client.NewSession(model, gollama.WithSessionSystem("Be brief."))
|
|
if err != nil {
|
|
log.Fatalf("session: %v", err)
|
|
}
|
|
r, err := session.Send(ctx, "What is Go?")
|
|
if err != nil {
|
|
log.Fatalf("chat: %v", err)
|
|
}
|
|
fmt.Println("session:", r.Text)
|
|
}
|