Skip to main content
Toute la configuration se fait via .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 variables NEXT_PUBLIC_* sont intégrées au bundle JS au moment de pnpm build. Les modifier à l’exécution (par ex. via le fichier .env racine) n’a aucun effet — c’est pourquoi elles se trouvent dans frontend/.env.local pour 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)

Lorsque LLM_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

Les proxies tiers / points de terminaison personnalisés ne sont pas garantis. Si votre LLM_BASE_URL pointe vers un proxy API tiers (par exemple, OpenRouter, one-api, passerelle personnalisée), LiteLLM tentera d’acheminer correctement en fonction de l’URL. Cependant, si votre proxy s’attend à un format non standard, le raisonnement peut ne pas fonctionner comme prévu. Consultez la documentation du proxy pour connaître le format de paramètre attendu.

Contraintes de température avec le raisonnement

Certains fournisseurs imposent des restrictions de température lorsque le raisonnement est actif :
  • Anthropic : Nécessite temperature=1 lorsque la réflexion étendue est activée. Si vous utilisez Anthropic avec la réflexion étendue, vous devez définir LLM_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 filtrage drop_params de 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_effortLLM_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 :
Modifier le modèle d’intégration ou la dimension invalide tous les vecteurs de base de connaissances existants. Les anciens vecteurs ont été calculés dans un espace d’intégration différent — la précision de la récupération se dégradера silencieusement. Vous devez reconstruire tous les index de base de connaissances après le basculement.

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 via RERANKER_PROVIDER ou laissez le système détecter automatiquement à partir des clés API disponibles.
Jina utilise JINA_API_KEY (à partir des outils Web ci-dessus). OpenAI réutilise LLM_API_KEY / LLM_BASE_URL — aucune clé supplémentaire nécessaire. Cohere nécessite sa propre COHERE_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 mode local exé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 toujours CODE_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

Liste de contrôle multi-worker (WORKERS>1) :
  • Stop (arrêter le streaming) — fonctionne toujours, aucune configuration supplémentaire nécessaire (le signal voyage sur la même connexion TCP).
  • Inject (suivi en cours de flux)nécessite REDIS_URL. Sans Redis, la demande d’injection peut atterrir sur un worker différent qui n’a aucune connaissance de l’exécution en cours, ce qui provoque un échec silencieux.
  • Production : utilisez PostgreSQL (DATABASE_URL). Le verrou single-writer de SQLite peut causer de la contention lors d’écritures concurrentes.
  • Développement local : SQLite + multi-worker est correct pour une utilisation légère ; ajoutez simplement REDIS_URL si vous utilisez la fonctionnalité d’injection.

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 comme FeishuGateHook 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)

Quand CLIENT_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.
Utilisateurs de la Chine continentale : Les plans Cloudflare Free/Pro/Business n’ont pas de PoPs en Chine continentale. Le trafic est acheminé vers des edges à l’étranger, causant des erreurs 502 fréquentes. N’utilisez pas ceci si vos utilisateurs principaux sont en Chine continentale, sauf si vous disposez de Cloudflare Enterprise avec China Network.

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. Both STRIPE_SECRET_KEY and STRIPE_WEBHOOK_SECRET must be set together; partial config raises an error at first use.