Un composant personnalisé encapsule une opération Python réutilisable dans l’éditeur visuel. Il est pertinent pour appeler un service métier, normaliser des données ou fournir un outil à un agent.
Structure minimale
La classe hérite de Component, décrit ses entrées et sorties, puis associe chaque sortie à une méthode. Les imports recommandés évoluent avec Langflow ; utilisez le chemin indiqué par la documentation de votre version.
from lfx.custom.custom_component.component import Component
from lfx.io import MessageTextInput, Output
from lfx.schema import Data
class NormalizeQuery(Component):
display_name = "Normalize Query"
description = "Nettoie une requête avant la recherche."
name = "normalize_query"
inputs = [MessageTextInput(name="query", display_name="Query")]
outputs = [Output(name="result", display_name="Result", method="build")]
def build(self) -> Data:
normalized = " ".join(self.query.strip().split())
return Data(data={"query": normalized})Placez le fichier dans un sous-dossier de catégorie contenant un __init__.py, puis configurez LANGFLOW_COMPONENTS_PATH si le répertoire est externe à l’installation.
Concevoir l’interface
Utilisez des noms stables, des types étroits et une description orientée comportement. Une entrée doit représenter une donnée nécessaire, pas un objet global rempli de secrets. Une sortie doit rester petite et sérialisable.
Pour un appel externe, définissez délai, traitement des erreurs et limites de volume. Ne renvoyez pas les détails internes d’une exception à l’utilisateur ou au modèle.
Tester hors du graphe
Extrayez la logique métier dans une fonction ou un service Python testable sans Langflow. Le composant devient alors un adaptateur mince. Testez entrées vides, Unicode, réponse lente et erreur du service.
Ajoutez ensuite un test de flux pour vérifier le câblage et les types transmis aux composants voisins.
Sécurité
L’éditeur de composants exécute du Python. Sur une instance partagée, activez la restriction aux superutilisateurs ou désactivez les composants personnalisés. Maintenez une liste approuvée et exécutez Langflow dans un environnement isolé avec droits minimaux.
Ne placez pas de clé directement dans le code ou l’export du flux. Utilisez la gestion de secrets et limitez les identités réseau accessibles au conteneur.
Versionnement
Conservez les composants dans Git, épinglez leurs dépendances et livrez-les avec l’image de déploiement. Un flux exporté doit référencer une version compatible. Testez les migrations avant de mettre à jour Langflow ou le paquet lfx.
À retenir
Un composant personnalisé est du code de production présenté comme un nœud. Sa qualité dépend de la même discipline qu’un service classique : interface limitée, tests, revue, secrets externes et environnement d’exécution contrôlé.