Skip to content

Fehlerbehebung: LLM-Provider

Haeufige Provider-Fehler

401 Unauthorized / 403 Forbidden

Ihr API-Schluessel ist ungueltig, abgelaufen oder hat nicht ausreichende Berechtigungen.

Loesung:

bash
# API-Schluessel erneut speichern
triggerfish config set-secret provider:<name>:apiKey <ihr-schluessel>

# Daemon neu starten
triggerfish stop && triggerfish start

Provider-spezifische Hinweise:

ProviderSchluesselformatWo zu bekommen
Anthropicsk-ant-...console.anthropic.com
OpenAIsk-...platform.openai.com
GoogleAIza...aistudio.google.com
Fireworksfw_...fireworks.ai
OpenRoutersk-or-...openrouter.ai

429 Rate Limited

Sie haben das Rate-Limit des Providers ueberschritten. Triggerfish wiederholt bei 429 nicht automatisch fuer die meisten Provider (ausser Notion, das eingebautes Backoff hat).

Loesung: Warten Sie und versuchen Sie es erneut. Wenn Sie konsistent Rate-Limits erreichen, erwaegen Sie:

  • Upgrade Ihres API-Plans fuer hoehere Limits
  • Hinzufuegen eines Failover-Providers, damit Anfragen weitergeleitet werden, wenn der primaere gedrosselt wird
  • Reduzierung der Trigger-Frequenz, wenn geplante Aufgaben die Ursache sind

500 / 502 / 503 Server Error

Die Server des Providers haben Probleme. Diese sind typischerweise voruebergehend.

Wenn Sie eine Failover-Kette konfiguriert haben, versucht Triggerfish automatisch den naechsten Provider. Ohne Failover wird der Fehler an den Benutzer weitergegeben.

"No response body for streaming"

Der Provider hat die Anfrage akzeptiert, aber einen leeren Antwortkoerper fuer einen Streaming-Aufruf zurueckgegeben. Dies kann passieren, wenn:

  • Die Infrastruktur des Providers ueberlastet ist
  • Ein Proxy oder eine Firewall den Antwortkoerper entfernt
  • Das Modell voruebergehend nicht verfuegbar ist

Dies betrifft: OpenRouter, Local (Ollama/LM Studio), ZenMux, Z.AI, Fireworks.


Provider-spezifische Probleme

Anthropic

Tool-Format-Konvertierung. Triggerfish konvertiert zwischen dem internen Tool-Format und Anthropics nativem Tool-Format. Wenn Sie Tool-bezogene Fehler sehen, pruefen Sie, ob Ihre Tool-Definitionen gueltiges JSON Schema haben.

System-Prompt-Behandlung. Anthropic erfordert den System-Prompt als separates Feld, nicht als Nachricht. Diese Konvertierung erfolgt automatisch, aber wenn Sie "system"-Nachrichten in der Konversation erscheinen sehen, stimmt etwas mit der Nachrichtenformatierung nicht.

OpenAI

Frequency Penalty. Triggerfish wendet eine 0.3 Frequency Penalty auf alle OpenAI-Anfragen an, um repetitive Ausgabe zu verhindern. Dies ist fest codiert und kann nicht ueber die Konfiguration geaendert werden.

Bildunterstuetzung. OpenAI unterstuetzt base64-kodierte Bilder im Nachrichteninhalt. Wenn Vision nicht funktioniert, stellen Sie sicher, dass ein visionsfaehiges Modell konfiguriert ist (z.B. gpt-4o, nicht gpt-4o-mini).

Google Gemini

Schluessel im Query-String. Im Gegensatz zu anderen Providern verwendet Google den API-Schluessel als Query-Parameter, nicht als Header. Dies wird automatisch behandelt, bedeutet aber, dass der Schluessel in Proxy-/Zugriffsprotokollen erscheinen kann, wenn Sie ueber einen Firmenproxy routen.

Ollama / LM Studio (Lokal)

Server muss laufen. Lokale Provider erfordern, dass der Modellserver laeuft, bevor Triggerfish startet. Wenn Ollama oder LM Studio nicht laeuft:

Local LLM request failed (connection refused)

Server starten:

bash
# Ollama
ollama serve

# LM Studio
# Oeffnen Sie LM Studio und starten Sie den lokalen Server

Modell nicht geladen. Bei Ollama muss das Modell zuerst heruntergeladen werden:

bash
ollama pull llama3.3:70b

Endpunkt-Override. Wenn Ihr lokaler Server nicht auf dem Standard-Port laeuft:

yaml
models:
  providers:
    local:
      model: llama3.3:70b
      endpoint: "http://localhost:11434"   # Ollama-Standard
      # endpoint: "http://localhost:1234"  # LM-Studio-Standard

Fireworks

Native API. Triggerfish verwendet die native API von Fireworks, nicht deren OpenAI-kompatiblen Endpunkt. Modell-IDs koennen sich von dem unterscheiden, was Sie in der OpenAI-kompatiblen Dokumentation sehen.

Modell-ID-Formate. Fireworks akzeptiert mehrere Modell-ID-Muster. Der Wizard normalisiert gaengige Formate, aber wenn die Verifizierung fehlschlaegt, pruefen Sie die Fireworks-Modellbibliothek fuer die genaue ID.

OpenRouter

Modell-Routing. OpenRouter routet Anfragen an verschiedene Provider. Fehler vom zugrunde liegenden Provider werden in OpenRouters Fehlerformat eingewickelt. Die tatsaechliche Fehlermeldung wird extrahiert und angezeigt.

API-Fehlerformat. OpenRouter gibt Fehler als JSON-Objekte zurueck. Wenn die Fehlermeldung generisch erscheint, wird der Roh-Fehler auf DEBUG-Level protokolliert.

ZenMux / Z.AI

Streaming-Unterstuetzung. Beide Provider unterstuetzen Streaming. Wenn Streaming fehlschlaegt:

ZenMux stream failed (status): error text

Pruefen Sie, ob Ihr API-Schluessel Streaming-Berechtigungen hat (einige API-Tarife beschraenken den Streaming-Zugriff).


Failover

Wie Failover funktioniert

Wenn der primaere Provider fehlschlaegt, versucht Triggerfish jedes Modell in der failover-Liste der Reihe nach:

yaml
models:
  failover:
    - openai/gpt-4o
    - google/gemini-2.5-pro

Wenn ein Failover-Provider erfolgreich ist, wird die Antwort mit dem verwendeten Provider protokolliert. Wenn alle Provider fehlschlagen, wird der letzte Fehler an den Benutzer zurueckgegeben.

"All providers exhausted"

Jeder Provider in der Kette ist fehlgeschlagen. Pruefen Sie:

  1. Sind alle API-Schluessel gueltig? Testen Sie jeden Provider einzeln.
  2. Haben alle Provider Ausfaelle? Pruefen Sie deren Statusseiten.
  3. Blockiert Ihr Netzwerk ausgehende HTTPS-Verbindungen zu einem der Provider-Endpunkte?

Failover-Konfiguration

yaml
models:
  failover_config:
    max_retries: 3          # Versuche pro Provider vor dem Wechsel zum naechsten
    retry_delay_ms: 1000    # Basisverzoegerung zwischen Versuchen
    conditions:             # Welche Fehler Failover ausloesen
      - timeout
      - server_error
      - rate_limited

"Primary provider not found in registry"

Der Provider-Name in models.primary.provider stimmt mit keinem konfigurierten Provider in models.providers ueberein. Pruefen Sie auf Tippfehler.

"Classification model provider not configured"

Sie haben ein classification_models-Override gesetzt, das einen Provider referenziert, der nicht in models.providers vorhanden ist:

yaml
models:
  classification_models:
    RESTRICTED:
      provider: local        # Dieser Provider muss in models.providers existieren
      model: llama3.3:70b
  providers:
    # "local" muss hier definiert sein
    local:
      model: llama3.3:70b
      endpoint: "http://localhost:11434"

Wiederholungsverhalten

Triggerfish wiederholt Provider-Anfragen bei voruebergehenden Fehlern (Netzwerk-Timeouts, 5xx-Antworten). Die Wiederholungslogik:

  1. Wartet mit exponentiellem Backoff zwischen Versuchen
  2. Protokolliert jeden Wiederholungsversuch auf WARN-Level
  3. Nach Erschoepfung der Wiederholungsversuche fuer einen Provider wechselt zum naechsten in der Failover-Kette
  4. Streaming-Verbindungen haben separate Wiederholungslogik fuer Verbindungsaufbau vs. Fehler waehrend des Streams

Sie koennen Wiederholungsversuche in den Logs sehen:

Provider request failed with retryable error, retrying
Provider stream connection failed, retrying