DE ▾
API-Schlüssel erhalten

StartseiteLeitfaden

AnythingLLM-API-Schlüssel: Verbinde einen benutzerdefinierten OpenAI-Endpunkt

Um einen AnythingLLM-API-Schlüssel mit einem benutzerdefinierten Endpunkt zu verwenden, wähle den Anbieter Generic OpenAI und gib eine Basis-URL, einen Schlüssel und eine Modell-ID ein. Die Schritte und Tests findest du unten.

Welchen API-Schlüssel meinst du

Wer nach anything llm api key sucht, meint meist eines von zwei Dingen, die leicht zu verwechseln sind. Das erste ist der Schlüssel, den AnythingLLM an einen Modellanbieter sendet, um Antworten zu generieren. Das zweite ist ein Entwickler-API-Schlüssel, den AnythingLLM selbst erstellt, damit andere Programme die API von AnythingLLM aufrufen können. Es sind verschiedene Schlüssel mit unterschiedlichen Aufgaben.

Dieser Artikel behandelt das erste Szenario: AnythingLLM einen Schlüssel und einen Endpunkt für eine OpenAI-kompatible Chat-API zu geben. Du nimmst den Schlüssel von der API-Schlüssel-Seite, fügst ihn zusammen mit der Basis-URL https://api.llmapisource.com/v1 in AnythingLLM ein und verwendest die Modell-ID uncensored. Wenn du stattdessen AnythingLLM aus deinem eigenen Code aufrufen möchtest, generiere diesen Schlüssel in den AnythingLLM-Einstellungen; er hat nichts mit diesem Anbieter-Schlüssel zu tun.

Bevor du startest: Teste den Schlüssel außerhalb von AnythingLLM

Die Hälfte der Support-Fragen zu benutzerdefinierten Endpunkten ergibt sich aus einem falschen Schlüssel oder einem Tippfehler in der URL. Ein 30-Sekunden-Test mit curl trennt „der Endpunkt ist falsch“ von „die App ist falsch konfiguriert“. Liste zuerst die Modelle auf:

curl https://api.llmapisource.com/v1/models \
  -H "Authorization: Bearer YOUR_KEY" | grep uncensored

Du solltest eine Zeile sehen, die uncensored enthält. Sende dann eine Chat-Anfrage:

curl https://api.llmapisource.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "messages": [{"role": "user", "content": "Reply with the word ready."}],
    "max_tokens": 20
  }'

Wenn beide Aufrufe funktionieren, sind Schlüssel und URL korrekt und alles, was später fehlschlägt, liegt an einer Einstellung in der App. Wenn du noch keinen Schlüssel hast, melde dich mit Google oder mit E-Mail und Passwort an. Neue Nutzer können auf der Schlüsselseite mit einem Klick 0,50 $ kostenloses Testguthaben beanspruchen, das keine Karte benötigt und 7 Tage gültig ist. Das reicht, um diese gesamte Einrichtung abzuschließen und zu testen.

Einrichtung in AnythingLLM

AnythingLLM unterstützt mehrere LLM-Anbieter, darunter eine generische OpenAI-kompatible Option. Die Menübeschriftungen ändern sich je nach Version, betrachte die folgenden Namen daher als Richtlinie und nicht als exaktes Skript.

  1. Öffne die AnythingLLM-Einstellungen und suche die LLM-Präferenz (manchmal als LLM-Anbieter bezeichnet).
  2. Wähle Generic OpenAI aus der Anbieterliste.
  3. Setze die Base URL auf https://api.llmapisource.com/v1. Füge /v1 hinzu und lasse ein abschließendes /chat/completions weg; die App fügt den Pfad selbst hinzu.
  4. Füge deinen Schlüssel in das Feld API-Schlüssel ein. Die App sendet ihn als Authorization: Bearer, was diese API erwartet.
  5. Setze den Chat-Modellnamen auf uncensored.
  6. Setze das Token-Kontextfenster auf 100000. Das Fenster des Modells beträgt 100.000 Token (Prompt plus Completion). Ein niedrigerer Wert lässt AnythingLLM deinen Verlauf früher kürzen, als nötig.
  7. Lasse max_tokens leer oder setze eine Obergrenze, die dir zusagt. Dies ist auf API-Seite optional.
  8. Speichere, öffne einen Workspace und sende eine Nachricht.

Wenn der Workspace eigene Chat-Einstellungen hat, prüfe, ob er den systemweiten Standardanbieter und nicht eine ältere Überschreibung verwendet. Ein Workspace, der an einen früheren Anbieter gepinnt ist, ist ein häufiger Grund, warum Änderungen nichts zu bewirken scheinen.

Embeddings und Dokumente benötigen ein separates Modul

AnythingLLM erledigt zwei Aufgaben. Es chattet mit einem Modell und indiziert deine Dokumente, damit das Modell darauf antworten kann. Die zweite Aufgabe verwendet ein Embedding-Modell, und diese API bietet keine Embeddings an. Sie stellt POST /v1/chat/completions und GET /v1/models aus, mit Text als Eingabe und Text als Ausgabe.

Das hindert dich nicht. AnythingLLM lässt dich den Embedder separat vom Chat-Modell wählen, und es kann einen integrierten lokalen Embedder oder einen anderen von dir konfigurierten Anbieter verwenden. Stelle den Embedder auf etwas anderes als diesen Endpunkt ein und nutze diesen Endpunkt nur für das Chat-Modell. Das Gleiche gilt für Bild- oder Audio-Funktionen: Das Modell ist nur Text, ohne Bild-, Audio- oder Videogenerierung und ohne Fine-Tuning.

Wenn du mit Dokumenten chattest, werden abgerufene Textpassagen in den Prompt eingefügt, sodass die Input-Token zunehmen. Bei 0,15 $ pro 1 Mio. Input-Token kostet ein Prompt mit 6.000 Token und 500 Output-Token 6.000 x 0,15 $ / 1.000.000 = 0,0009 $ für Input plus 500 x 0,50 $ / 1.000.000 = 0,00025 $ für Output, also 0,00115 $ pro Frage. Dokumentlastige Arbeitsbereiche kosten mehr als reiner Chat, aber immer noch nur einen Bruchteil eines Cents pro Frage.

Streaming, Tools und JSON-Modus prüfen

AnythingLLM streamt Antworten, und die API unterstützt Server-Sent Events mit stream: true, endend mit einem Usage-Chunk. Wenn deine Antworten auf einmal statt Token für Token erscheinen, liegt das Problem meist an einem Proxy vor der App, der Antworten puffert, nicht am Endpunkt. Du kannst das Streaming aus einem Skript heraus mit dem OpenAI Python SDK prüfen:

from openai import OpenAI

client = OpenAI(
    base_url="https://api.llmapisource.com/v1",
    api_key="YOUR_KEY",
)

stream = client.chat.completions.create(
    model="uncensored",
    messages=[{"role": "user", "content": "List three uses of a local knowledge base."}],
    stream=True,
    stream_options={"include_usage": True},
)

for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)
    if chunk.usage:
        print("\ntokens:", chunk.usage.prompt_tokens, chunk.usage.completion_tokens)

Tool Calling und JSON-Modus funktionieren über denselben Chat-Endpunkt, was wichtig ist, wenn du Agenten oder Workflows um die App herum aufbaust. JSON-Modus ist ein einzelnes Feld:

curl https://api.llmapisource.com/v1/chat/completions \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "response_format": {"type": "json_object"},
    "messages": [
      {"role": "system", "content": "Return a JSON object with keys title and summary."},
      {"role": "user", "content": "Summarize: a notes app that works offline."}
    ]
  }'

Tools nutzen die üblichen tools- und tool_choice-Felder, wobei Ergebnisse als role: "tool"-Nachrichten zurückgegeben werden. Ob AnythingLLM eine bestimmte Agentenfunktion freischaltet, hängt von der App-Version ab. Teste den Aufruf also zuerst in einem Skript und probiere die Funktion dann in der App. Die docs zeigen ein vollständiges Tool-Calling-Beispiel.

Häufige Fehler beheben

SymptomWahrscheinliche UrsacheLösung
401 oder ein AuthentifizierungsfehlerSchlüssel mit einem Leerzeichen eingefügt oder ein alter SchlüsselKopiere den Schlüssel erneut von der Schlüssel-Seite und füge ihn ohne Leerzeichen ein
404 oder „nicht gefunden“Base URL fehlt /v1 oder hat /chat/completions am EndeVerwende exakt https://api.llmapisource.com/v1
Modell nicht gefundenModellname anders eingegebenVerwende uncensored, kleingeschrieben, nichts hinzugefügt
429 mit rate_limitedMehr als 300 Anfragen pro Minute (60 bei einem Test-Schlüssel)Verlangsame oder batche weniger aggressiv
429 mit concurrencyMehr als 8 Anfragen gleichzeitig (2 bei einem Test-Schlüssel)Reduziere parallele Workspaces oder Agenten; ein Stream hält seinen Slot bis zum Ende belegt
429 mit einem Retry-After: 5-HeaderVorübergehende ÜberlastungWarte 5 Sekunden und versuche es erneut
Antworten werden früh abgeschnittenNiedrige max_tokens in der AppErhöhe es oder lösche es

Der Header X-Request-Id in jedem Antwort-Header hilft, wenn du dich wegen eines bestimmten Aufrufs an Support wendest. Der Saldo in X-Balance-USD zeigt dir auch schnell, ob ein Fehler einfach auf ein leeres Konto zurückzuführen ist.

Bessere Antworten aus einem Workspace erhalten

Sobald die Verbindung funktioniert, machen einige Workspace-Gewohnheiten einen sichtbaren Unterschied. Schreibe einen System-Prompt für den Workspace, der die Rolle, den Tonfall und das Verhalten angibt, wenn die Dokumente die Antwort nicht enthalten. Ohne diese letzte Anweisung wird ein Modell oft raten, und ein selbstbewusstes Raten ist schlechter als ein einfaches „Ich habe das in den Dokumenten nicht gefunden“.

Die Temperatur ist der andere Hebel. Für Fragen zu deinen eigenen Dateien sorgt ein niedriger Wert wie 0,2 bis 0,4 dafür, dass die Antworten nah am abgerufenen Text bleiben. Für Brainstorming oder Entwürfe erhöhe ihn auf bis zu 0,8. Die API übergibt temperature, top_p, stop, seed und die Strafpunkte unverändert, sodass das, was die App sendet, unverändert beim Modell ankommt.

Behalte im Auge, wie viele Snippets der Workspace an jede Frage anhängt. Jedes zusätzliche Snippet bedeutet mehr Input-Token. Bei einem 100.000-Token-Fenster hast du zwar Platz, aber du zahlst für jedes Snippet in jeder Runde. Beginne mit einer kleinen Anzahl von Snippets und erhöhe sie nur, wenn Antworten relevante Materialien vermissen lassen.

Hinweise zu Datenschutz und Kosten

Prompts, die über die API gesendet werden, werden nicht zum Training verwendet. Deine Dokumente wandern jedoch weiterhin über den Endpunkt in die Prompts, wenn AnythingLLM Passagen abruft. Entscheide daher, welche Workspaces du sicher senden möchtest. Für Materialien, die deine Maschine niemals verlassen dürfen, verwende stattdessen ein lokales Modell.

Die Abrechnung erfolgt nach dem Pay as you go-Modell vom Prepaid-Guthaben: $0,15 pro 1 Mio. Input-Token und $0,50 pro 1 Mio. Output-Token, Aufladungen von $20 bis $500, mit Boni von 5 % ab $50, 10 % ab $100 und 15 % ab $200. Das Guthaben verfällt nie, und fehlgeschlagene oder abgelehnte Anfragen werden nicht berechnet. Die Preise-Seite listet die Zahlungsmethoden auf.

Fragen und Antworten

Welche Anbieteroption wähle ich in AnythingLLM?

Wähle Generic OpenAI. Gib https://api.llmapisource.com/v1 als Basis-URL, deinen Schlüssel als API-Schlüssel und uncensored als Chat-Modellname ein.

Welches Token-Kontextfenster soll ich eingeben?

Verwende 100000, was dem 100.000-Token-Kontextfenster des Modells für Prompt und Completion entspricht.

Kann ich diesen Endpunkt für Embeddings in AnythingLLM verwenden?

Nein. Die API bietet nur Chat-Vervollständigungen und eine Modellliste an. Wähle in AnythingLLM einen anderen Embedder und behalte diesen Endpunkt für das Chat-Modell.

Ist der AnythingLLM API-Schlüssel für Entwickler dasselbe?

Nein. Dieser Schlüssel wird innerhalb von AnythingLLM erstellt, damit andere Programme die App aufrufen können. Der Schlüssel von diesem Dienst ist das, was AnythingLLM an den Chat-Endpunkt sendet.

Isometrische Szene eines App-Blocks, der über ein leuchtendes Kabel mit einem Server verbunden ist, sowie ein Schlüssel, der eine API-Schlüssel-Verbindung zeigt