.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 zurpnpm 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 infrontend/.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
Dasconvert_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)
WennLLM_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
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 SieLLM_TEMPERATURE=1setzen — Anthropic lehnt andere Werte ab, wenn Denken aktiviert ist. - OpenAI GPT-5.x: Unterstützt nur
temperature=1zu allen Zeiten. LiteLLMsdrop_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:
Abruf
Reranker
Reranker bewertet abgerufene Dokumente neu, um die Relevanz zu verbessern. Drei Anbieter werden unterstützt — wählen Sie überRERANKER_PROVIDER oder lassen Sie das System automatisch aus verfügbaren API-Schlüsseln erkennen.
Jina verwendetJINA_API_KEY(aus Web Tools oben). OpenAI verwendetLLM_API_KEY/LLM_BASE_URLerneut — kein zusätzlicher Schlüssel erforderlich. Cohere benötigt seinen eigenenCOHERE_API_KEY.
Reranker ist optional — die Wissensdatenbanksuche funktioniert ohne ihn mit Fusion-Scoring. Embedding wird empfohlen für Wissensdatenbankfunktionen.
Vektorspeicher
Code-Ausführung
Sicherheit: Derlocal-Modus führt von KI generierte Code direkt auf dem Host aus. Für internetgestützte oder Multi-User-Bereitstellungen sollten Sie immerCODE_EXEC_BACKEND=dockersetzen.
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 dasemail_send Built-in-Tool automatisch, wenn SMTP_HOST, SMTP_USER und SMTP_PASS alle gesetzt sind.
Konnektoren
Platform
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 likeFeishuGateHook 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 sowohlCLIENT_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.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. BothSTRIPE_SECRET_KEY and STRIPE_WEBHOOK_SECRET must be set together; partial config raises an error at first use.