Skip to main content
Alle Konfigurationen werden über .env durchgeführt. Kopieren Sie example.env und füllen Sie Ihre Werte aus:

Konfigurationsebenen

Jede Integration hat eine Konfigurationsebene, die ihre Bedeutung angibt:
Hinweis: Von Administratoren konfigurierte Modelle (Admin → Seite „Modelle”) können LLM-Umgebungsvariablen ersetzen. Die Integritätsprüfung berücksichtigt beide Quellen.

Frontend (Nur lokale Entwicklung)

Das Frontend hat eine separate Env-Datei nur für die lokale Entwicklung: frontend/.env.local.
Diese Datei wird NICHT in Docker verwendet. Innerhalb des Docker-Containers leitet Next.js /api/* intern an das Python-Backend weiter (Port 8000 ist intern im Container), daher ist keine Frontend-Env-Datei erforderlich.
Für die lokale Entwicklung funktionieren die Standardwerte sofort — Sie müssen frontend/.env.local nicht erstellen, es sei denn, Ihr Backend läuft auf einem nicht-standardmäßigen Port. Falls Sie überschreiben müssen, erstellen Sie frontend/.env.local manuell:
Hinweis zur Build-Zeit: NEXT_PUBLIC_*-Variablen werden zur pnpm build-Zeit in das JS-Bundle eingebettet. Das Ändern zur Laufzeit (z. B. über die root .env) hat keine Auswirkung — deshalb befinden sie sich nur für die lokale Entwicklung in frontend/.env.local.

LLM (erforderlich)

Auflösungsreihenfolge: Benutzereinstellung → Admin-Modelle (DB) → ENV-Fallback. Wenn ein Admin-Modell mit der Rolle „General” in Admin → Modelle konfiguriert ist, dienen diese ENV-Variablen nur als Fallback. Die Integritätsprüfung berücksichtigt beide Quellen.

MarkItDown OCR-Auflösung

Das convert_to_markdown Built-in-Tool und die RAG-Ingestion-Pipeline verwenden beide Microsofts MarkItDown + das offizielle markitdown-ocr Plugin, um Text aus Dokumenten zu extrahieren — einschließlich OCR auf eingebetteten Bildern und gescannten PDF-Seiten, wenn ein Vision-fähiges LLM verfügbar ist. Vision-LLM-Auflösungsreihenfolge (erste Übereinstimmung gewinnt): Reasoning-Modelle werden niemals für OCR bevorzugt. Reasoning-Tiers (o1, o3-mini, DeepSeek-R1) haben historisch keine Vision-Unterstützung und sind ohnehin das falsche Werkzeug für OCR — OCR ist eine Wahrnehmungsaufgabe, keine Überlegungsaufgabe. Wenn ein Workspace nur ein Reasoning-Modell mit supports_vision=True hat, wird es trotzdem über den Primary-LLM-Pfad aufgegriffen, aber der Resolver stuft es nicht aktiv über Fast/General ein. Null-Regressions-Fallback: Wenn auf keiner Ebene ein Vision-fähiges Modell gefunden wird, wird OCR stillschweigend deaktiviert und MarkItDown läuft im reinen Text-Modus. OCR für eingebettete Bilder in Word/PowerPoint/Excel wird nicht verfügbar (wie vor dieser Funktion), aber alle andere Textextraktion (Überschriften, Tabellen, Absatztext) funktioniert unverändert weiter. Es gibt niemals einen Fall, in dem das Hinzufügen dieser Funktion die Extraktion schlechter machte als das vorherige Verhalten. Nicht-OpenAI-Provider (Anthropic, Google Gemini, etc.) werden transparent unterstützt: das aufgelöste LLM wird in einem LiteLLMOpenAIShim verpackt, das chat.completions.create(...)-Aufrufe durch litellm.completion() leitet, was die Provider-spezifische Nachrichtenformat-Übersetzung handhabt (z. B. Anthropics source.type="base64" Image-Block). Ein Shim deckt jeden Provider ab, den LiteLLM unterstützt — das Hinzufügen eines neuen Providers kostet null Code-Änderungen in FIM One.

Extended Thinking (Reasoning)

Wenn LLM_REASONING_EFFORT gesetzt ist, aktiviert FIM One die Extended-Thinking-Funktion des Modells, sodass die interne Gedankenkette im UI-Schritt “thinking” angezeigt wird. FIM One verwendet LiteLLM, um den Reasoning-Effort-Parameter automatisch in das native Format jedes Anbieters zu übersetzen.

Unterstützte Anbieter

LiteLLM erkennt den Anbieter automatisch von LLM_BASE_URL und ordnet ihn dem korrekten API-Format zu. Unbekannte URLs werden als OpenAI-kompatibel behandelt.

Wichtige Einschränkungen

Third-Party-Proxies / benutzerdefinierte Endpunkte sind nicht garantiert. Wenn Ihr LLM_BASE_URL auf einen Third-Party-API-Proxy verweist (z. B. OpenRouter, one-api, benutzerdefiniertes Gateway), wird LiteLLM versuchen, basierend auf der URL korrekt weiterzuleiten. Wenn Ihr Proxy jedoch ein nicht standardisiertes Format erwartet, funktioniert das Reasoning möglicherweise nicht wie erwartet. Konsultieren Sie die Dokumentation des Proxys für das erwartete Parameterformat.

Temperatureinschränkungen mit Reasoning

Einige Anbieter haben Temperatureinschränkungen, wenn Reasoning aktiv ist:
  • Anthropic: Erfordert temperature=1, wenn erweitertes Denken aktiviert ist. Bei Verwendung von Anthropic mit erweitertem Denken müssen Sie LLM_TEMPERATURE=1 setzen — Anthropic lehnt andere Werte ab, wenn Denken aktiviert ist.
  • OpenAI GPT-5.x: Unterstützt nur temperature=1 zu allen Zeiten. LiteLLMs drop_params-Filterung handhabt dies automatisch — nicht unterstützte Temperaturwerte werden stillschweigend gelöscht. Für GPT-5.x ist keine Benutzeraktion erforderlich.

Wie LLM_REASONING_BUDGET_TOKENS funktioniert

Diese Variable ist hauptsächlich für den Anthropic-Pfad relevant. Wenn gesetzt, überschreibt sie das automatisch berechnete Budget und wird als budget_tokens im thinking-Parameter über LiteLLM gesendet. Wenn nicht gesetzt, wird das Budget aus LLM_MAX_OUTPUT_TOKENS x Aufwandsverhältnis abgeleitet: Das Mindestbudget beträgt 1.024 Token (Anthropics hartes Minimum). Für OpenAI und Gemini verwaltet der Anbieter die Token-Zuweisung intern basierend auf der reasoning_effort-Ebene — LLM_REASONING_BUDGET_TOKENS hat keine Auswirkung.

Agent-Ausführung

ReAct Agent

DAG Planner

Domain-Klassifizierung

Steuert die unabhängige LLM-basierte Domain-Erkennungsschicht, die vor der ReAct- und DAG-Ausführung ausgeführt wird. Wenn eine Abfrage als spezialisierte Domain klassifiziert wird, aktiviert das System Domain-bewusste Funktionen: Modellsteigerung auf Reasoning-Modell, Domain-spezifische SOP-Anweisungen und Zitierverifikation (nur DAG).

Context Guard

Steuert die automatische Verwaltung des Kontextfensters, die verhindert, dass Gespräche das Limit des Modells überschreiten.

Content Guardrails

Kommagetrennte Namen von Guardrails, die den Inhalt von Ein- oder Ausgabe überprüfen. Unabhängig vom Tool-Berechtigungsgate (core/hooks/*) und der Sicherheitsschicht (core/security/*). Siehe Content Guardrails für das vollständige Bild.

Agent-Arbeitsbereich

System


Web-Tools (Optional)

Schnellstart-Tipp: Das Setzen von nur JINA_API_KEY aktiviert Web-Suche, Web-Abruf, Einbettung und Reranking auf einmal – ein Schlüssel, vier Services. Sie können jeden Service einzeln mit den folgenden Variablen überschreiben.

RAG & Wissensdatenbank (Empfohlen)

Embedding

Embedding konvertiert Text in Vektoren für die Wissensdatenbank-Suche. FIM One verwendet den Standard-OpenAI-kompatiblen /v1/embeddings-Endpunkt, daher funktioniert er mit jedem Anbieter, der diese Schnittstelle bereitstellt — nicht nur Jina. Anbieterbeispiele — setzen Sie einfach die drei Variablen, um zu wechseln:
Das Ändern des Embedding-Modells oder der Dimension macht alle vorhandenen Wissensdatenbank-Vektoren ungültig. Alte Vektoren wurden in einem anderen Embedding-Raum berechnet — die Abrufgenauigkeit wird sich unmerklich verschlechtern. Sie müssen alle Wissensdatenbank-Indizes neu erstellen, nachdem Sie gewechselt haben.

Abruf

Reranker

Reranker bewertet abgerufene Dokumente neu, um die Relevanz zu verbessern. Drei Anbieter werden unterstützt — wählen Sie über RERANKER_PROVIDER oder lassen Sie das System automatisch aus verfügbaren API-Schlüsseln erkennen.
Jina verwendet JINA_API_KEY (aus Web Tools oben). OpenAI verwendet LLM_API_KEY / LLM_BASE_URL erneut — kein zusätzlicher Schlüssel erforderlich. Cohere benötigt seinen eigenen COHERE_API_KEY.
Reranker ist optional — die Wissensdatenbanksuche funktioniert ohne ihn mit Fusion-Scoring. Embedding wird empfohlen für Wissensdatenbankfunktionen.

Vektorspeicher


Code-Ausführung

Sicherheit: Der local-Modus führt von KI generierte Code direkt auf dem Host aus. Für internetgestützte oder Multi-User-Bereitstellungen sollten Sie immer CODE_EXEC_BACKEND=docker setzen.

Werkzeug-Artefakte

Größenlimits für Dateien, die durch Werkzeugausführung erstellt werden (Code-Ausführung, Template-Rendering, Bildgenerierung).

Dokumentverarbeitung (Optional)

Steuert, wie hochgeladene PDF-/DOCX-Dateien für die LLM-Verarbeitung verarbeitet werden. Vision-fähige Modelle (GPT-4o, Claude 3/4, Gemini) können PDF-Seiten als gerenderte Bilder für höhere Genauigkeit empfangen.
Hinweis: Die Vision-Unterstützung pro Modell wird über den supports_vision-Schalter in Admin → Models konfiguriert. Wenn nicht explizit festgelegt, erkennt das System die Vision-Fähigkeit automatisch anhand des Modellnamens.

Bildgenerierung (Optional)


Email (SMTP) (Empfohlen)

Registriert das email_send Built-in-Tool automatisch, wenn SMTP_HOST, SMTP_USER und SMTP_PASS alle gesetzt sind.

Konnektoren


Platform

Multi-Worker-Checkliste (WORKERS>1):
  • Stop (Streaming abbrechen) — funktioniert immer, keine zusätzliche Konfiguration erforderlich (Signal wird über die gleiche TCP-Verbindung übertragen).
  • Inject (Mid-Stream-Folgeanfrage)erfordert REDIS_URL. Ohne Redis kann die Inject-Anfrage auf einem anderen Worker landen, der keine Kenntnis von der laufenden Ausführung hat, was zu stillschweigendem Fehlschlag führt.
  • Produktion: verwenden Sie PostgreSQL (DATABASE_URL). Die Single-Writer-Sperre von SQLite kann unter gleichzeitigen Schreibvorgängen zu Konflikten führen.
  • Lokale Entwicklung: SQLite + Multi-Worker ist für leichte Nutzung in Ordnung; fügen Sie einfach REDIS_URL hinzu, wenn Sie die Inject-Funktion verwenden.

Workflow Run Retention

Background cleanup task that automatically purges old workflow runs. Per-workflow overrides (configured in the workflow settings UI) take priority over these global defaults.

Channel Confirmation Request Expiry

Background sweeper that marks stale pending approval requests (produced by channel hooks like FeishuGateHook or the Approval Playground) as expired. Ensures a click days later on a forgotten card doesn’t flip agent state that has already been torn down.

OAuth (Optional)

Wenn sowohl CLIENT_ID als auch CLIENT_SECRET für einen Anbieter gesetzt sind, zeigt die Anmeldeseite automatisch die entsprechende OAuth-Schaltfläche an.
Prod = lokal optional (Standardwerte funktionieren), aber erforderlich für jede Bereitstellung mit Internetzugriff.

OAuth-Callback-URLs zum Registrieren bei jedem Anbieter

Das Backend konstruiert Callback-URLs als: {API_BASE_URL}/api/auth/oauth/{provider}/callback

Cloudflare Tunnel (Optional)

Leiten Sie den gesamten Datenverkehr über Cloudflares Netzwerk um, anstatt Ports direkt freizulegen. Eliminiert die Notwendigkeit für Nginx, SSL-Zertifikate und offene Firewall-Regeln. Siehe den Abschnitt Production Deployment für Setupanweisungen.
Benutzer in Festlandchina: Cloudflare Free/Pro/Business-Pläne haben keine PoPs in Festlandchina. Der Datenverkehr wird zu Overseas-Edges weitergeleitet, was häufig zu 502-Fehlern führt. Verwenden Sie dies nicht, wenn Ihre primären Benutzer in Festlandchina sind, es sei denn, Sie haben Cloudflare Enterprise mit China Network.

Analytics (Optional)

Alle Analytics-Anbieter sind optional. Legen Sie eine beliebige Kombination fest — alle aktiven Anbieter werden gleichzeitig geladen. Lassen Sie alle leer, um Analytics vollständig zu deaktivieren (empfohlen für lokale Entwicklung).
Alle NEXT_PUBLIC_* Analytics-Variablen sind Build-Zeit — Änderungen erfordern einen Frontend-Rebuild, um wirksam zu werden.

Stripe Billing (Optional)

Stripe powers Pro subscriptions. Leave all three variables blank to disable billing — the rest of FIM One works unchanged. Both STRIPE_SECRET_KEY and STRIPE_WEBHOOK_SECRET must be set together; partial config raises an error at first use.