Go-Clients für Ollama: SDK-Vergleich und Beispiele für Qwen3/GPT-OSS
Ollama mit Go integrieren: SDK-Leitfaden, Beispiele und Best Practices für den Produktiveinsatz.
Dieser Leitfaden bietet einen umfassenden Überblick über die verfügbaren Go-SDKs für Ollama und vergleicht deren Funktionsumfang.
Wir werden praktische Go-Beispiele zum Aufruf von Qwen3- und GPT-OSS-Modellen, die auf Ollama gehostet werden, untersuchen — sowohl über rohe REST-API-Aufrufe als auch über den offiziellen Go-Client — einschließlich einer detaillierten Behandlung der Denk- und Nicht-Denk-Modi in Qwen3.

Warum Ollama + Go?
Ollama stellt eine kleine, pragmatische HTTP-API bereit (die typischerweise unter http://localhost:11434 läuft), die für Generierungs- und **Chat-**Workloads konzipiert wurde, mit integrierter Streaming-Unterstützung und Funktionen zum Modellmanagement. Die offizielle Dokumentation behandelt die Anforderungs- und Antwortstrukturen sowie die Streaming-Semantik von /api/generate und /api/chat eingehend.
Go ist eine ausgezeichnete Wahl zum Aufbau von Ollama-Clients, da es eine starke Standardbibliothekenunterstützung für HTTP, eine hervorragende JSON-Behandlung, native Concurrentie-Primitives und statisch typisierte Schnittstellen bietet, die Fehler zur Kompilierzeit erkennen. Um zu sehen, wie Ollama sich im Vergleich zu vLLM, Docker Model Runner, LocalAI und Cloud-Anbietern verhält — einschließlich der Kriterien, wann man welche Option wählen sollte — siehe LLM-Hosting: Lokale, Self-Hosted- & Cloud-Infrastruktur im Vergleich.
Stand Oktober 2025 sind dies die Go-SDK-Optionen, die Sie höchstwahrscheinlich in Betracht ziehen werden.
Go-SDKs für Ollama — was ist verfügbar?
| SDK / Paket | Status & „Besitzer“ | Umfang (Generieren/Chat/Streaming) | Modellverwaltung (pull/list/etc.) | Extras / Hinweise |
|---|---|---|---|---|
github.com/ollama/ollama/api |
Offizielles Paket im Ollama-Repository; wird vom ollama-CLI selbst verwendet |
Vollständige Abdeckung, abgebildet auf die REST-API; Streaming wird unterstützt | Ja | Wird als der kanonische Go-Client betrachtet; die API spiegelt die Dokumentation eng wider. |
LangChainGo (github.com/tmc/langchaingo/llms/ollama) |
Community-Framework (LangChainGo) mit Ollama-LLM-Modul | Chat/Vervollständigung + Streaming über Framework-Abstraktionen | Eingeschränkt (Modellverwaltung ist nicht das primäre Ziel) | Ideal, wenn Sie Ketten, Tools und Vektorspeicher in Go wünschen; weniger ein rohes SDK. |
github.com/swdunlop/ollama-client |
Community-Client | Fokus auf Chat; gute Tool-Calling-Experimente | Teilweise | Für Experimente mit Tool Calling gebaut; nicht eine 1:1-vollständige Oberfläche. |
Andere Community-SDKs (z. B. ollamaclient, Drittanbieter-„go-ollama-sdk`) |
Community | Variiert | Variiert | Qualität und Abdeckung variieren; pro Repository bewerten. |
Empfehlung: Für die Produktion bevorzugen Sie github.com/ollama/ollama/api — es wird mit dem Kernprojekt gewartet und spiegelt die REST-API wider.
Qwen3 & GPT-OSS auf Ollama: Denkmodus vs. Nicht-Denkmodus (was man wissen sollte)
- Der Denkmodus in Ollama trennt das „Schließen“ des Modells von der finalen Ausgabe, wenn er aktiviert ist. Unser Ollama-Spickzettel dokumentiert die Aktivieren/Deaktivieren-Denk-Flags (
--think,--hidethinking) über die unterstützten Modelle hinweg. - (https://www.glukhov.org/de/llm-performance/benchmarks/qwen3-30b-vs-gpt-oss-20b/ “Qwen3:30b vs GPT-OSS:20b: Technische Details, Leistung und Geschwindigkeitsvergleich”) unterstützt dynamisches Umschalten: Fügen Sie
/thinkoder/no_thinkin System- oder Benutzermitteilungen ein, um die Modi rundenweise zu wechseln; die neueste Anweisung gilt. - GPT-OSS: Benutzer berichten, dass das Deaktivieren des Denkens (z. B.
/set nothinkoder--think=false) beigpt-oss:20bunzuverlässig sein kann; planen Sie ein, jegliches Schlussfolgerungsgepräge zu filtern/verbergen, das Ihre UI nicht anzeigen sollte.
Teil 1 — Aufruf von Ollama über rohes REST (Go, net/http)
Gemeinsame Typen
Definieren Sie zunächst die gemeinsamen Typen und Hilfsfunktionen, die wir in unseren Beispielen verwenden werden:
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
"time"
)
// ---- Chat API Types ----
type ChatMessage struct {
Role string `json:"role"`
Content string `json:"content"`
}
type ChatRequest struct {
Model string `json:"model"`
Messages []ChatMessage `json:"messages"`
// Some servers expose thinking control as a boolean flag.
// Even if omitted, you can still control Qwen3 via /think or /no_think tags.
Think *bool `json:"think,omitempty"`
Stream *bool `json:"stream,omitempty"`
Options map[string]any `json:"options,omitempty"`
}
type ChatResponse struct {
Model string `json:"model"`
CreatedAt string `json:"created_at"`
Message struct {
Role string `json:"role"`
Content string `json:"content"`
Thinking string `json:"thinking,omitempty"` // present when thinking is on
} `json:"message"`
Done bool `json:"done"`
}
// ---- Generate API Types ----
type GenerateRequest struct {
Model string `json:"model"`
Prompt string `json:"prompt"`
Think *bool `json:"think,omitempty"`
Stream *bool `json:"stream,omitempty"`
Options map[string]any `json:"options,omitempty"`
}
type GenerateResponse struct {
Model string `json:"model"`
CreatedAt string `json:"created_at"`
Response string `json:"response"` // final text for non-stream
Thinking string `json:"thinking,omitempty"` // present when thinking is on
Done bool `json:"done"`
}
// ---- Helper Functions ----
func httpPostJSON(url string, payload any) ([]byte, error) {
body, err := json.Marshal(payload)
if err != nil {
return nil, err
}
c := &http.Client{Timeout: 60 * time.Second}
resp, err := c.Post(url, "application/json", bytes.NewReader(body))
if err != nil {
return nil, err
}
defer resp.Body.Close()
return io.ReadAll(resp.Body)
}
// bptr returns a pointer to a boolean value
func bptr(b bool) *bool { return &b }
Chat — Qwen3 mit Denken AKTIVIERT (und wie man es deaktiviert)
func chatQwen3Thinking() error {
endpoint := "http://localhost:11434/api/chat"
req := ChatRequest{
Model: "qwen3:8b-thinking", // any :*-thinking tag you have pulled
Think: bptr(true),
Stream: bptr(false),
Messages: []ChatMessage{
{Role: "system", Content: "You are a precise assistant."},
{Role: "user", Content: "Explain recursion with a short Go example."},
},
}
raw, err := httpPostJSON(endpoint, req)
if err != nil {
return err
}
var out ChatResponse
if err := json.Unmarshal(raw, &out); err != nil {
return err
}
fmt.Println("🧠 thinking:\n", out.Message.Thinking)
fmt.Println("\n💬 answer:\n", out.Message.Content)
return nil
}
// Turn thinking OFF for the next turn by:
// (a) setting Think=false, and/or
// (b) adding "/no_think" to the most-recent system/user message (Qwen3 soft switch).
// Qwen3 honors the latest /think or /no_think instruction in multi-turn chats.
func chatQwen3NoThinking() error {
endpoint := "http://localhost:11434/api/chat"
req := ChatRequest{
Model: "qwen3:8b-thinking",
Think: bptr(false),
Stream: bptr(false),
Messages: []ChatMessage{
{Role: "system", Content: "You are brief. /no_think"},
{Role: "user", Content: "Explain recursion in one sentence."},
},
}
raw, err := httpPostJSON(endpoint, req)
if err != nil {
return err
}
var out ChatResponse
if err := json.Unmarshal(raw, &out); err != nil {
return err
}
// Expect thinking to be empty; still handle defensively.
if out.Message.Thinking != "" {
fmt.Println("🧠 thinking (unexpected):\n", out.Message.Thinking)
}
fmt.Println("\n💬 answer:\n", out.Message.Content)
return nil
}
(Der weiche Schalter /think und /no_think von Qwen3 wird vom Qwen-Team dokumentiert; die letzte Anweisung gilt in Multi-Turn-Chats.)
Chat — GPT-OSS mit Denken (und einer Einschränkung)
func chatGptOss() error {
endpoint := "http://localhost:11434/api/chat"
req := ChatRequest{
Model: "gpt-oss:20b",
Think: bptr(true), // request separated reasoning if supported
Stream: bptr(false),
Messages: []ChatMessage{
{Role: "user", Content: "What is dynamic programming? Explain the core idea."},
},
}
raw, err := httpPostJSON(endpoint, req)
if err != nil {
return err
}
var out ChatResponse
if err := json.Unmarshal(raw, &out); err != nil {
return err
}
// Known quirk: disabling thinking may not fully suppress reasoning on gpt-oss:20b.
// Always filter/hide thinking in UI if you don't want to surface it.
fmt.Println("🧠 thinking:\n", out.Message.Thinking)
fmt.Println("\n💬 answer:\n", out.Message.Content)
return nil
}
Benutzer berichten, dass das Deaktivieren des Denkens bei gpt-oss:20b (z. B. /set nothink oder --think=false) ignoriert werden kann — planen Sie clientseitiges Filtern, falls erforderlich.
Generierung — Qwen3 und GPT-OSS
func generateQwen3() error {
endpoint := "http://localhost:11434/api/generate"
req := GenerateRequest{
Model: "qwen3:4b-thinking",
Prompt: "In 2–3 sentences, what are B-Trees used for in databases?",
Think: bptr(true),
}
raw, err := httpPostJSON(endpoint, req)
if err != nil {
return err
}
var out GenerateResponse
if err := json.Unmarshal(raw, &out); err != nil {
return err
}
if out.Thinking != "" {
fmt.Println("🧠 thinking:\n", out.Thinking)
}
fmt.Println("\n💬 answer:\n", out.Response)
return nil
}
func generateGptOss() error {
endpoint := "http://localhost:11434/api/generate"
req := GenerateRequest{
Model: "gpt-oss:20b",
Prompt: "Briefly explain backpropagation in neural networks.",
Think: bptr(true),
}
raw, err := httpPostJSON(endpoint, req)
if err != nil {
return err
}
var out GenerateResponse
if err := json.Unmarshal(raw, &out); err != nil {
return err
}
if out.Thinking != "" {
fmt.Println("🧠 thinking:\n", out.Thinking)
}
fmt.Println("\n💬 answer:\n", out.Response)
return nil
}
Die REST-Strukturen und das Streaming-Verhalten stammen direkt aus der Ollama-API-Referenz.
Teil 2 — Aufruf von Ollama über das offizielle Go-SDK (github.com/ollama/ollama/api)
Das offizielle Paket stellt einen Client mit Methoden bereit, die der REST-API entsprechen. Die Ollama-CLI selbst verwendet dieses Paket, um mit dem Dienst zu kommunizieren, was es zur sichersten Wahl für Kompatibilität macht.
Installation
go get github.com/ollama/ollama/api
Chat — Qwen3 (Denken AKTIVIERT / DEAKTIVIERT)
package main
import (
"context"
"fmt"
"log"
"github.com/ollama/ollama/api"
)
func chatWithQwen3Thinking(ctx context.Context, thinking bool) error {
client, err := api.ClientFromEnvironment() // honors OLLAMA_HOST if set
if err != nil {
return err
}
req := &api.ChatRequest{
Model: "qwen3:8b-thinking",
// Many server builds expose thinking as a top-level flag;
// additionally, you can control Qwen3 via /think or /no_think in messages.
Think: api.Ptr(thinking),
Messages: []api.Message{
{Role: "system", Content: "You are a precise assistant."},
{Role: "user", Content: "Explain merge sort with a short Go snippet."},
},
}
var resp api.ChatResponse
if err := client.Chat(ctx, req, &resp); err != nil {
return err
}
if resp.Message.Thinking != "" {
fmt.Println("🧠 thinking:\n", resp.Message.Thinking)
}
fmt.Println("\n💬 answer:\n", resp.Message.Content)
return nil
}
func main() {
ctx := context.Background()
if err := chatWithQwen3Thinking(ctx, true); err != nil {
log.Fatal(err)
}
// Example: non-thinking
if err := chatWithQwen3Thinking(ctx, false); err != nil {
log.Fatal(err)
}
}
Chat — GPT-OSS (Schlussfolgerungen defensiv behandeln)
func chatWithGptOss(ctx context.Context) error {
client, err := api.ClientFromEnvironment()
if err != nil {
return err
}
req := &api.ChatRequest{
Model: "gpt-oss:20b",
Think: api.Ptr(true),
Messages: []api.Message{
{Role: "user", Content: "What is memoization and when is it useful?"},
},
}
var resp api.ChatResponse
if err := client.Chat(ctx, req, &resp); err != nil {
return err
}
// If you intend to hide reasoning, do it here regardless of flags.
if resp.Message.Thinking != "" {
fmt.Println("🧠 thinking:\n", resp.Message.Thinking)
}
fmt.Println("\n💬 answer:\n", resp.Message.Content)
return nil
}
Generierung — Qwen3 & GPT-OSS
func generateWithQwen3(ctx context.Context) error {
client, err := api.ClientFromEnvironment()
if err != nil {
return err
}
req := &api.GenerateRequest{
Model: "qwen3:4b-thinking",
Prompt: "Summarize the role of a B-Tree in indexing.",
Think: api.Ptr(true),
}
var resp api.GenerateResponse
if err := client.Generate(ctx, req, &resp); err != nil {
return err
}
if resp.Thinking != "" {
fmt.Println("🧠 thinking:\n", resp.Thinking)
}
fmt.Println("\n💬 answer:\n", resp.Response)
return nil
}
func generateWithGptOss(ctx context.Context) error {
client, err := api.ClientFromEnvironment()
if err != nil {
return err
}
req := &api.GenerateRequest{
Model: "gpt-oss:20b",
Prompt: "Explain gradient descent in simple terms.",
Think: api.Ptr(true),
}
var resp api.GenerateResponse
if err := client.Generate(ctx, req, &resp); err != nil {
return err
}
if resp.Thinking != "" {
fmt.Println("🧠 thinking:\n", resp.Thinking)
}
fmt.Println("\n💬 answer:\n", resp.Response)
return nil
}
Die Oberfläche des offiziellen Pakets spiegelt die REST-Dokumentation wider und wird mit dem Kernprojekt aktualisiert.
Streaming-Antworten
Für Echtzeit-Streaming setzen Sie Stream: bptr(true) in Ihrer Anfrage. Die Antwort wird als zeilengrenzte JSON-Chunks geliefert:
func streamChatExample() error {
endpoint := "http://localhost:11434/api/chat"
req := ChatRequest{
Model: "qwen3:8b-thinking",
Think: bptr(true),
Stream: bptr(true), // Enable streaming
Messages: []ChatMessage{
{Role: "user", Content: "Explain quicksort algorithm step by step."},
},
}
body, _ := json.Marshal(req)
resp, err := http.Post(endpoint, "application/json", bytes.NewReader(body))
if err != nil {
return err
}
defer resp.Body.Close()
decoder := json.NewDecoder(resp.Body)
for {
var chunk ChatResponse
if err := decoder.Decode(&chunk); err == io.EOF {
break
} else if err != nil {
return err
}
// Process thinking and content as they arrive
if chunk.Message.Thinking != "" {
fmt.Print(chunk.Message.Thinking)
}
fmt.Print(chunk.Message.Content)
if chunk.Done {
break
}
}
return nil
}
Mit dem offiziellen SDK verwenden Sie eine Callback-Funktion, um Streaming-Chunks zu verarbeiten:
func streamWithOfficialSDK(ctx context.Context) error {
client, _ := api.ClientFromEnvironment()
req := &api.ChatRequest{
Model: "qwen3:8b-thinking",
Think: api.Ptr(true),
Messages: []api.Message{
{Role: "user", Content: "Explain binary search trees."},
},
}
err := client.Chat(ctx, req, func(resp api.ChatResponse) error {
if resp.Message.Thinking != "" {
fmt.Print(resp.Message.Thinking)
}
fmt.Print(resp.Message.Content)
return nil
})
return err
}
Umgang mit Qwen3 Denkmodus vs. Nicht-Denkmodus (praktische Anleitung)
-
Zwei Regler:
- Ein boolesches
thinking-Flag, das von der Thinking-Funktion von Ollama unterstützt wird; und - Die Weiche-Schalter-Befehle
/thinkund/no_thinkvon Qwen3 in der neuesten System-/Benutzermitteilung. Die neueste Anweisung steuert die nächste/n Runde(n).
- Ein boolesches
-
Standardhaltung: Nicht-Denken für schnelle Antworten; Eskalation zu Denken für Aufgaben, die schrittweise Schlussfolgerung erfordern (Mathematik, Planung, Debugging, komplexe Codeanalyse).
-
Streaming-UIs: Wenn Denken aktiviert ist, können Sie in gestreamten Frames abwechselnd Schlussfolgerung/Inhalt sehen — puffern Sie sie separat aus oder rendern Sie sie getrennt und geben Sie Benutzern ein „Schlussfolgerung anzeigen“-Umschaltfeld. (Siehe API-Dokumentation für das Streaming-Format.)
-
Multi-Turn-Gespräche: Qwen3 erinnert sich an den Denkmodus aus vorherigen Runden. Wenn Sie ihn mitten im Gespräch umschalten möchten, verwenden Sie sowohl das Flag als auch den Weiche-Schalter-Befehl für Zuverlässigkeit.
Hinweise für GPT-OSS
- Behandeln Sie Schlussfolgerungen als vorhanden, auch wenn Sie versucht haben, sie zu deaktivieren; filtern Sie clientseitig, wenn Ihre UX sie nicht anzeigen sollte.
- Implementieren Sie in Produktanwendungen, die GPT-OSS verwenden, clientseitige Logik zum Filtern, die Schlussfolgerungsmuster bei Bedarf erkennen und entfernen kann.
- Testen Sie Ihre spezifische GPT-OSS-Modellvariante gründlich, da das Verhalten zwischen verschiedenen Quantisierungen und Versionen variieren kann.
Best Practices und Produktionstipps
Fehlerbehandlung und Timeouts
Implementieren Sie immer eine ordnungsgemäße Timeouthandhabung und Fehlerwiederherstellung:
func robustChatRequest(ctx context.Context, model string, messages []api.Message) (*api.ChatResponse, error) {
// Set a reasonable timeout
ctx, cancel := context.WithTimeout(ctx, 2*time.Minute)
defer cancel()
client, err := api.ClientFromEnvironment()
if err != nil {
return nil, fmt.Errorf("creating client: %w", err)
}
req := &api.ChatRequest{
Model: model,
Messages: messages,
Options: map[string]interface{}{
"temperature": 0.7,
"num_ctx": 4096, // context window size
},
}
var resp api.ChatResponse
if err := client.Chat(ctx, req, &resp); err != nil {
return nil, fmt.Errorf("chat request failed: %w", err)
}
return &resp, nil
}
Verbindungspooling und Wiederverwendung
Wiederverwenden Sie den Ollama-Client über Anfragen hinweg, anstatt jedes Mal einen neuen zu erstellen:
type OllamaService struct {
client *api.Client
}
func NewOllamaService() (*OllamaService, error) {
client, err := api.ClientFromEnvironment()
if err != nil {
return nil, err
}
return &OllamaService{client: client}, nil
}
func (s *OllamaService) Chat(ctx context.Context, req *api.ChatRequest) (*api.ChatResponse, error) {
var resp api.ChatResponse
if err := s.client.Chat(ctx, req, &resp); err != nil {
return nil, err
}
return &resp, nil
}
Umgebungs Konfiguration
Verwenden Sie Umgebungsvariablen für eine flexible Bereitstellung:
export OLLAMA_HOST=http://localhost:11434
export OLLAMA_NUM_PARALLEL=2
export OLLAMA_MAX_LOADED_MODELS=2
Das offizielle SDK respektiert OLLAMA_HOST automatisch über api.ClientFromEnvironment().
Überwachung und Protokollierung
Implementieren Sie strukturierte Protokollierung für Produktionssysteme:
func loggedChat(ctx context.Context, logger *log.Logger, req *api.ChatRequest) error {
start := time.Now()
client, _ := api.ClientFromEnvironment()
var resp api.ChatResponse
err := client.Chat(ctx, req, &resp)
duration := time.Since(start)
logger.Printf("model=%s duration=%v error=%v tokens=%d",
req.Model, duration, err, len(resp.Message.Content))
return err
}
Fazit
-
Für Go-Projekte ist
github.com/ollama/ollama/apidie vollständigste und produktionsreife Wahl. Es wird neben dem Ollama-Kernprojekt gewartet, vom offiziellen CLI verwendet und bietet eine umfassende API-Abdeckung mit garantierter Kompatibilität. -
Für höherstufige Abstraktionen kommt LangChainGo in Betracht, wenn Sie Ketten, Tools, Vektorspeicher und RAG-Pipelines benötigen, auch wenn Sie dabei etwas Low-Level-Kontrolle gegen Bequemlichkeit eintauschen.
-
Qwen3 bietet Ihnen eine saubere, zuverlässige Kontrolle über den Denkmodus mit beiden Flags und auf Mitteilungsebene (
/think,/no_think), was es ideal für Anwendungen macht, die sowohl schnelle Antworten als auch tiefe Schlussfolgerungen benötigen. -
Für GPT-OSS sollten Sie immer planen, die Schlussfolgerungsausgabe clientseitig zu bereinigen, wenn erforderlich, da das Deaktivierungsflag für das Denken nicht konsequent respektiert wird.
-
In der Produktion sollten Sie eine ordnungsgemäße Fehlerbehandlung, Verbindungspooling, Timeouts und Überwachung implementieren, um robuste, von Ollama angetriebene Anwendungen zu erstellen.
Die Kombination aus Go’s starkem Typsystem, hervorragender Concurrentie-Unterstützung und Ollamas geradliniger API macht es zu einem idealen Stack für den Aufbau von KI-gestützten Anwendungen — von einfachen Chatbots bis hin zu komplexen RAG-Systemen.
Kernaussagen
Hier ist eine schnelle Referenz für die Auswahl Ihres Ansatzes:
| Fall | Empfohlener Ansatz | Warum |
|---|---|---|
| Produktionsanwendung | github.com/ollama/ollama/api |
Offizielle Unterstützung, vollständige API-Abdeckung, mit Kernprojekt gewartet |
| RAG/Ketten/Tools-Pipeline | LangChainGo | Höherstufige Abstraktionen, Integrationen mit Vektorspeichern |
| Lernen/Experimente | Rohe REST mit net/http | Volle Transparenz, keine Abhängigkeiten, lehrreich |
| Schnelles Prototyping | Offizielles SDK | Balance zwischen Einfachheit und Leistungsfähigkeit |
| Streaming-Chat-UI | Offizielles SDK mit Callbacks | Integrierte Streaming-Unterstützung, saubere API |
Anleitung zur Modellauswahl:
- Qwen3: Beste für Anwendungen, die einen kontrollierbaren Denkmodus und zuverlässige Multi-Turn-Gespräche erfordern
- GPT-OSS: Starke Leistung, erfordert aber defensive Behandlung der Denk-/Schlussfolgerungsausgabe
- Andere Modelle: Gründlich testen; das Denkverhalten variiert je nach Modellfamilie
Referenzen & weitere Lektüre
Offizielle Dokumentation
- Ollama API-Referenz — Vollständige REST-API-Dokumentation
- Offizielles Ollama Go-Paket — Go-SDK-Dokumentation
- Ollama GitHub-Repository — Quellcode und Issues
Go-SDK-Alternativen
- LangChainGo Ollama-Integration — Für kettenbasierte Anwendungen
- swdunlop/ollama-client — Community-Client mit Tool Calling
- xyproto/ollamaclient — Eine weitere Community-Option
Modell-spezifische Ressourcen
- Qwen-Dokumentation — Offizielle Qwen-Modellinformationen
- GPT-OSS-Informationen — GPT-OSS-Modell-Details
Verwandte Themen
- Erstellen von RAG-Anwendungen mit Go — LangChainGo-Beispiele
- Go context-Paket — Wesentlich für Timeouts und Abbrechung
- Go HTTP-Client Best Practices — Standardbibliothek-Dokumentation
Weitere nützliche Links
Für einen breiteren Vergleich von Ollama mit anderen lokalen und Cloud-LLM-Infrastrukturen, schauen Sie sich unseren LLM-Hosting: Lokale, Self-Hosted- & Cloud-Infrastruktur im Vergleich an.
- Ollama installieren und konfigurieren
- Ollama-Spickzettel
- Go-Spickzettel
- Architektur und Implementierung von RAG-Systemen
- Reranking von Textdokumenten mit Ollama und Qwen3 Embedding-Modell - in Go
- LLMs mit Strukturierten Ausgaben einschränken: Ollama, Qwen3 & Python oder Go
- LLM-Vergleich: Qwen3:30b vs GPT-OSS:20b
- Probleme mit strukturierten Ausgaben von Ollama GPT-OSS