.env. Copiez example.env et remplissez vos valeurs :
Niveaux de Configuration
Chaque intégration a un niveau de configuration indiquant son importance :Remarque : Les modèles configurés par l’administrateur (Admin → page Modèles) peuvent remplacer les variables d’environnement LLM. La vérification de santé considère les deux sources.
Frontend (Développement local uniquement)
Le frontend a un fichier env séparé uniquement pour le développement local :frontend/.env.local.
Ce fichier n’est PAS utilisé dans Docker. À l’intérieur du conteneur Docker, Next.js proxifie /api/* vers le backend Python en interne (le port 8000 est interne au conteneur), donc aucun fichier env frontend n’est nécessaire.
Pour le développement local, les valeurs par défaut fonctionnent directement — vous n’avez pas besoin de créer frontend/.env.local sauf si votre backend s’exécute sur un port non-standard.
Si vous devez remplacer les valeurs, créez frontend/.env.local manuellement :
Note au moment de la compilation : les variablesNEXT_PUBLIC_*sont intégrées au bundle JS au moment depnpm build. Les modifier à l’exécution (par ex. via le fichier.envracine) n’a aucun effet — c’est pourquoi elles se trouvent dansfrontend/.env.localpour le développement local uniquement.
LLM (Requis)
Ordre de résolution : Préférence utilisateur → Modèles Admin (DB) → Fallback ENV. Si un modèle admin avec le rôle « General » est configuré dans Admin → Modèles, ces variables ENV servent de fallback uniquement. La vérification de santé considère les deux sources.
Résolution OCR MarkItDown
L’outil intégréconvert_to_markdown et le pipeline d’ingestion RAG utilisent tous deux MarkItDown de Microsoft + le plugin officiel markitdown-ocr pour extraire du texte à partir de documents — y compris l’OCR sur les images intégrées et les pages PDF numérisées lorsqu’un LLM capable de vision est disponible.
Ordre de résolution du LLM Vision (première correspondance gagne) :
Les modèles de reasoning ne sont jamais préférés pour l’OCR. Les niveaux de reasoning (
o1, o3-mini, DeepSeek-R1) manquent historiquement de support vision et ne sont pas l’outil approprié pour l’OCR de toute façon — l’OCR est une tâche de perception, pas de délibération. Si un espace de travail n’a qu’un modèle de reasoning avec supports_vision=True, il sera toujours sélectionné via le chemin du LLM principal, mais le résolveur ne le classe pas activement au-dessus des modèles rapides/généraux.
Fallback sans régression : lorsqu’aucun modèle capable de vision n’est trouvé à aucun niveau, l’OCR est silencieusement désactivé et MarkItDown s’exécute en mode texte uniquement. L’OCR des images intégrées dans Word/PowerPoint/Excel devient indisponible (comme avant le lancement de cette fonctionnalité), mais toute autre extraction de texte (titres, tableaux, texte de paragraphe) continue de fonctionner sans modification. Il n’y a jamais de cas où l’ajout de cette fonctionnalité a rendu l’extraction pire que le comportement précédent.
Les fournisseurs non-OpenAI (Anthropic, Google Gemini, etc.) sont pris en charge de manière transparente : le LLM résolu est enveloppé dans un LiteLLMOpenAIShim qui achemine les appels chat.completions.create(...) via litellm.completion(), qui gère la traduction du format de message spécifique au fournisseur (par exemple, le bloc d’image source.type="base64" d’Anthropic). Un seul shim couvre chaque fournisseur que LiteLLM supporte — l’ajout d’un nouveau fournisseur ne coûte aucune modification de code dans FIM One.
Réflexion étendue (Raisonnement)
LorsqueLLM_REASONING_EFFORT est défini, FIM One active la capacité de réflexion étendue du modèle afin que la chaîne de pensée interne soit affichée dans l’étape « thinking » de l’interface utilisateur. FIM One utilise LiteLLM pour traduire automatiquement le paramètre d’effort de raisonnement dans le format natif de chaque fournisseur.
Fournisseurs pris en charge
LiteLLM détecte automatiquement le fournisseur à partir de
LLM_BASE_URL et le mappe au format API correct. Les URL inconnues sont traitées comme compatibles avec OpenAI.
Avertissements importants
Contraintes de température avec le raisonnement
Certains fournisseurs imposent des restrictions de température lorsque le raisonnement est actif :- Anthropic : Nécessite
temperature=1lorsque la réflexion étendue est activée. Si vous utilisez Anthropic avec la réflexion étendue, vous devez définirLLM_TEMPERATURE=1— Anthropic rejette les autres valeurs lorsque la réflexion est activée. - OpenAI GPT-5.x : Supporte uniquement
temperature=1à tout moment. Le filtragedrop_paramsde LiteLLM gère cela automatiquement — les valeurs de température non supportées sont silencieusement supprimées. Aucune action de l’utilisateur n’est nécessaire pour GPT-5.x.
Comment fonctionne LLM_REASONING_BUDGET_TOKENS
Cette variable est principalement significative pour le chemin Anthropic. Lorsqu’elle est définie, elle remplace le budget calculé automatiquement et est envoyée en tant que budget_tokens dans le paramètre thinking via LiteLLM. Lorsqu’elle n’est pas définie, le budget est dérivé de LLM_MAX_OUTPUT_TOKENS x ratio d’effort :
Le budget minimum est de 1 024 tokens (minimum absolu d’Anthropic).
Pour OpenAI et Gemini, le fournisseur gère l’allocation de tokens en interne en fonction du niveau
reasoning_effort — LLM_REASONING_BUDGET_TOKENS n’a aucun effet.
Exécution de l’agent
Agent ReAct
Planificateur DAG
Classification des domaines
Contrôle la couche de détection de domaine indépendante basée sur LLM qui s’exécute avant l’exécution de ReAct et DAG. Lorsqu’une requête est classée comme appartenant à un domaine spécialisé, le système active les fonctionnalités sensibles au domaine : escalade du modèle vers le modèle de raisonnement, instructions SOP spécifiques au domaine et vérification des citations (DAG uniquement).Context Guard
Contrôle la gestion automatique de la fenêtre de contexte qui empêche les conversations de dépasser la limite du modèle.Garde-fous de contenu
Noms de garde-fous séparés par des virgules qui inspectent le contenu des entrées ou sorties. Indépendants de la porte de permission d’outil (core/hooks/*) et de la couche de sécurité (core/security/*). Voir Garde-fous de contenu pour l’image complète.
Espace de travail de l’agent
Système
Outils Web (Optionnel)
Conseil de démarrage rapide : Définir simplement JINA_API_KEY active la recherche web, le fetch web, l’embedding et le reranking en même temps — une clé, quatre services. Vous pouvez remplacer chaque service individuellement avec les variables ci-dessous.
RAG et Base de Connaissances (Recommandé)
Intégration
L’intégration convertit le texte en vecteurs pour la recherche de base de connaissances. FIM One utilise le point de terminaison standard compatible OpenAI/v1/embeddings, il fonctionne donc avec n’importe quel fournisseur qui expose cette interface — pas seulement Jina.
Exemples de fournisseurs — définissez simplement les trois variables pour basculer :
Récupération
Réorganiseur
Le réorganiseur reclasse les documents récupérés pour améliorer la pertinence. Trois fournisseurs sont pris en charge — sélectionnez viaRERANKER_PROVIDER ou laissez le système détecter automatiquement à partir des clés API disponibles.
Jina utiliseJINA_API_KEY(à partir des outils Web ci-dessus). OpenAI réutiliseLLM_API_KEY/LLM_BASE_URL— aucune clé supplémentaire nécessaire. Cohere nécessite sa propreCOHERE_API_KEY.
Le réorganiseur est optionnel — la recherche de base de connaissances fonctionne sans lui en utilisant le score de fusion. L’intégration est recommandée pour les fonctionnalités de base de connaissances.
Magasin vectoriel
Exécution de Code
Sécurité : Le modelocalexécute le code généré par l’IA directement sur l’hôte. Pour les déploiements accessibles sur Internet ou multi-utilisateurs, définissez toujoursCODE_EXEC_BACKEND=docker.
Artefacts d’outil
Limites de taille pour les fichiers produits par l’exécution d’outils (exécution de code, rendu de modèle, génération d’image).Traitement des documents (Optionnel)
Contrôle le traitement des fichiers PDF/DOCX téléchargés pour la consommation par LLM. Les modèles compatibles avec la vision (GPT-4o, Claude 3/4, Gemini) peuvent recevoir les pages PDF sous forme d’images rendues pour une meilleure fidélité.
Remarque : Le support de la vision par modèle est configuré via le bouton supports_vision dans Admin → Models. Lorsqu’il n’est pas explicitement défini, le système détecte automatiquement la capacité de vision à partir du nom du modèle.
Génération d’images (Optionnel)
Email (SMTP) (Recommandé)
Enregistre automatiquement l’outil intégréemail_send lorsque SMTP_HOST, SMTP_USER et SMTP_PASS sont tous définis.
Connecteurs
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.Expiration des demandes de confirmation de canal
Sweeper en arrière-plan qui marque les demandes d’approbation en attente obsolètes (produites par des hooks de canal commeFeishuGateHook ou le Playground d’approbation) comme expirées. Garantit qu’un clic quelques jours plus tard sur une carte oubliée ne bascule pas l’état de l’agent qui a déjà été démantelé.
OAuth (Optionnel)
QuandCLIENT_ID et CLIENT_SECRET sont tous les deux définis pour un fournisseur, la page de connexion affiche automatiquement le bouton OAuth correspondant.
Prod = optionnel localement (les valeurs par défaut fonctionnent), mais requis pour tout déploiement accessible sur Internet.
URLs de rappel OAuth à enregistrer auprès de chaque fournisseur
Le backend construit les URLs de rappel comme :{API_BASE_URL}/api/auth/oauth/{provider}/callback
Tunnel Cloudflare (Optionnel)
Acheminez tout le trafic via le réseau de Cloudflare au lieu d’exposer directement les ports. Élimine le besoin de Nginx, de certificats SSL et de règles de pare-feu ouvertes. Consultez la section Déploiement en Production pour les instructions de configuration.Analyse (Optionnel)
Tous les fournisseurs d’analyse sont optionnels. Définissez n’importe quelle combinaison — tous les fournisseurs actifs se chargent simultanément. Laissez tous les champs vides pour désactiver complètement l’analyse (recommandé pour le développement local).
Toutes les variables d’analyse NEXT_PUBLIC_* sont au moment de la compilation — les modifications nécessitent une reconstruction du frontend pour prendre effet.
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.