diff --git a/ralphchat.go b/ralphchat.go deleted file mode 100644 index b01984b..0000000 --- a/ralphchat.go +++ /dev/null @@ -1,114 +0,0 @@ -package main - -import ( - "bufio" - "context" - "fmt" - "log" - "os" - "strconv" - "strings" - - "github.com/openai/openai-go" - oaioption "github.com/openai/openai-go/option" -) - -const ( - baseURL = "http://127.0.0.1:12434/v1" -) - -func selectModel(client *openai.Client) string { - // Verfügbare Modelle über die API abrufen - modelsPage, err := client.Models.List(context.Background()) - if err != nil { - log.Fatalf("Fehler beim Abrufen der Modelle: %v", err) - } - - models := modelsPage.Data - if len(models) == 0 { - log.Fatal("Keine Modelle verfügbar!") - } - - fmt.Println("\n📦 Verfügbare Modelle:") - fmt.Println(strings.Repeat("─", 50)) - for i, m := range models { - fmt.Printf(" [%d] %s\n", i+1, m.ID) - } - fmt.Println(strings.Repeat("─", 50)) - - scanner := bufio.NewScanner(os.Stdin) - - for { - fmt.Printf("Wähle ein Modell (1-%d): ", len(models)) - if !scanner.Scan() { - log.Fatal("Eingabe fehlgeschlagen") - } - - input := strings.TrimSpace(scanner.Text()) - choice, err := strconv.Atoi(input) - if err != nil || choice < 1 || choice > len(models) { - fmt.Printf("❌ Ungültige Eingabe. Bitte eine Zahl zwischen 1 und %d eingeben.\n", len(models)) - continue - } - - selected := models[choice-1].ID - fmt.Printf("✅ Modell gewählt: %s\n", selected) - return selected - } -} - -func main() { - client := openai.NewClient( - oaioption.WithBaseURL(baseURL), - oaioption.WithAPIKey("ollama"), - ) - - fmt.Println("🤖 LLM Chat") - model := selectModel(&client) - - // Chat-History für Konversationsgedächtnis - messages := []openai.ChatCompletionMessageParamUnion{ - openai.SystemMessage("You are a helpful golang coding assistant. Answer concisely. If you don't know the answer, say you don't know."), - } - - scanner := bufio.NewScanner(os.Stdin) - - fmt.Printf("\n🚀 Chat gestartet mit Modell: %s\n", model) - fmt.Println("Tippe deine Nachricht und drücke Enter. Mit 'exit' beenden.") - fmt.Println(strings.Repeat("─", 50)) - - for { - fmt.Print("\nDu: ") - if !scanner.Scan() { - break - } - - input := strings.TrimSpace(scanner.Text()) - if input == "" { - continue - } - if input == "exit" || input == "quit" { - fmt.Println("Tschüss!") - break - } - - messages = append(messages, openai.UserMessage(input)) - - resp, err := client.Chat.Completions.New( - context.Background(), - openai.ChatCompletionNewParams{ - Model: model, - Messages: messages, - }, - ) - if err != nil { - log.Printf("Fehler bei API-Aufruf: %v\n", err) - continue - } - - assistantMsg := resp.Choices[0].Message.Content - messages = append(messages, openai.AssistantMessage(assistantMsg)) - - fmt.Printf("\n🤖 Assistent:\n %s\n", assistantMsg) - } -}