Ce billet est la Partie 1 d’une série en 4 parties. Assure-toi de consulter les autres billets de la série pour une étude approfondie de notre générateur de plans d’affaires piloté par IA.
Partie 1 : Comment nous avons construit un générateur de plans d’affaires piloté par IA avec LangGraph & LangChain
Partie 2 : Comment nous avons optimisé la génération de plans d’affaires IA : Compromis entre vitesse et qualité
Partie 3 : Comment nous avons créé 273 tests unitaires en 3 jours sans écrire une seule ligne de code
Partie 4 : Cadre d’évaluation de l’IA — Comment nous avons construit un système pour évaluer et améliorer les plans d’affaires générés par IA
Lorsque nous avons développé un générateur de plans d’entreprise avec IA, nous avons commencé de zéro en utilisant LangChain et LangGraph, car nous avions besoin d’un cadre agentique capable de gérer des flux de travail complexes. Contrairement à notre projet précédent, Business Advisor — un agent basé sur le chat qui s’appuyait sur le SDK d’OpenAI et le traitement basé sur des pipelines — ce nouveau projet nécessitait un flux de travail IA structuré, en plusieurs étapes pour générer et affiner dynamiquement des plans d’entreprise.
Notre équipe de produit a défini les fonctionnalités principales comme suit :
- Les utilisateurs passeraient par un entretien commercial où ils répondraient à des questions structurées.
- Chaque paire question-réponse serait associée à des sections spécifiques du plan d’affaires.
- Les utilisateurs pourraient mettre à jour leurs réponses plus tard, déclenchant une régénération des sections affectées.
- Le système était conçu pour supporter des agents spécifiques à un domaine futur, tels que des spécialistes de la modélisation financière ou de la recherche de marché.
Étant donné la tendance croissante des flux de travail d’IA multi-agents dans les applications commerciales, nous avons structuré notre système avec des composants d’IA modulaires et évolutifs capables de collaborer efficacement tout en garantissant précision, cohérence et adaptabilité.
Pourquoi Nous Avons Choisi LangChain & LangGraph
Construire une application pilotée par l’IA complexe nécessitait plus que de simples requêtes LLM. Nous avions besoin :
- Une Architecture Indépendante Du Modèle : La capacité de passer entre les modèles OpenAI, Claude, et même des LLM locaux sans réécritures majeures.
- Exécution Basée Sur Les Graphes : Une manière de structurer les flux de travail de manière dynamique, en évitant les chaînes rigides.
- Mémoire Persistante : La capacité pour le système de retenir les résultats intermédiaires à travers les étapes.
- Scalabilité : La flexibilité d’ajouter plus d’agents IA spécialisés à l’avenir.
LangChain et LangGraph ont fourni ces capacités grâce à des flux de travail basés sur un graphe acyclique orienté (DAG), permettant des interactions complexes entre plusieurs nœuds de traitement.
Bien que nous n’ayons pas immédiatement mis en œuvre des agents spécifiques à chaque domaine, nous avons conçu le système pour supporter des modèles d’IA futurs spécialisés dans les projections financières, la conformité légale ou l’analyse de marché, assurant que le framework reste flexible.
Une grande tendance que nous avons identifiée était l’adoption croissante de workflows IA multi-agents dans des applications commerciales complexes. Des entreprises comme LinkedIn et Uber ont réussi à déployer des architectures basées sur des agents pour améliorer les opérations et la prise de décision. Inspirés par cela, nous avons conçu notre système de sorte que plusieurs nœuds IA puissent collaborer dynamiquement, garantissant que chaque étape de traitement puisse être optimisée indépendamment tout en maintenant une intégration transparente.
Mise en œuvre du workflow IA
L’architecture principale se composait de :
- Réponses des utilisateurs de l’entretien stockées en tant que données structurées.
- Flux de travail alimenté par LangGraph qui acheminait dynamiquement les tâches vers les nœuds IA pertinents.
- Une stratégie de sélection de modèle hybride, permettant à différentes tâches d’être gérées par différents modèles OpenAI (GPT-4o pour les sections détaillées, GPT-4o-mini pour la rédaction générale).
- Une approche de génération hybride, où certaines sections étaient générées individuellement pour la précision, tandis que d’autres étaient traitées en lots pour l’efficacité.
Démarche Détaillée Des Opérations
Notre workflow de génération de plan d’affaires impliquait plusieurs étapes séquentielles :
- Noeud de Rédaction — Génère un brouillon initial de plan d’affaires basé sur les réponses de l’utilisateur.
- Noeud d’Évaluation — Évalue le brouillon, identifiant les lacunes et les domaines d’amélioration.
- Affinement Post-Évaluation — Ajuste le brouillon en fonction des retours de l’évaluation.
- Génération Finale — Produit la version finale, en garantissant la complétude et la cohérence.
Cette approche en plusieurs étapes a assuré une amélioration progressive du plan d’affaires, plutôt que de se fier à une seule génération par IA. Cependant, en raison de contraintes de performance, nous avons par la suite simplifié cela en un processus de génération en une seule étape pour des raisons d’utilisabilité, que nous discuterons dans un futur article.
Exemple de Traitement Basé sur un Graph
graph TD;
A[Interview D'utilisateur] --> B[Génération de Brouillon];
B --> C[Évaluation];
C --> D[Raffinement Post-Évaluation];
D --> E[Plan d'Affaires Final];
Cette structure illustre comment les tâches circulent à travers différentes étapes, assurant une exécution modulaire et évolutive.
Exemple : Utilisation D’un Outil D’appel Pour La Génération Structurée
Une de nos décisions clés a été d’utiliser l’appel d’outil dans le mode strict d’OpenAI. Cela a permis aux modèles d’IA d’interagir avec des fonctions structurées et d’imposer des réponses prévisibles et formatées, réduisant les hallucinations.
Exemple D’Appel D’Outil : Génération De Sections De Plan D’Affaires
import { StructuredToolWithStrict } from 'langchain/tools';
import { z } from 'zod';
const sectionsSchema = z.object({ sections: z.array( z.object({ id: z.string().describe('L’ID de la section'), slug: z.string().describe('Le slug du modèle pour cette section'), content: z.string().describe('Le contenu généré pour cette section') }) ).describe('Un lot de sections de plan d’affaires') }).strict(); export class GenerateBusinessPlanSections extends StructuredToolWithStrict { name = 'generate_sections'; description = 'Générer des sections structurées de plan d’affaires basées sur les entrées des utilisateurs.'; schema = sectionsSchema; async _call(input) { return { sections: input.sections }; // Contenu généré par IA fourni comme arguments de l’outil } }
L’utilisation de Zod pour la validation de schéma a garanti que les réponses étaient toujours bien formées et sûres en termes de types, réduisant les erreurs de parsing et permettant la validation automatique du contenu généré par IA.
Défis & Modifications de LangChain
Malgré les avantages de LangChain et LangGraph, nous avons rencontré plusieurs obstacles qui nécessitaient des modifications personnalisées :
- Limitations de LangChain → Absence de mode strict pour l’appel des outils et manque de support de streaming pour les sorties des outils. Nous avons étendu les fonctions intégrées de LangChain pour imposer des contraintes de sortie plus strictes et modifié LangGraph pour permettre le streaming incrémentiel de réponses structurées.
- Documentation insuffisante de LangChain → Nous avons souvent dû lire et analyser le code source de LangChain en raison d’une documentation insuffisante, ce qui a ralenti l’implémentation et compliqué le débogage.
- Problèmes de qualité de code → Certaines parties de l’implémentation de LangChain manquaient de maintenabilité, nous obligeant à refactoriser et optimiser les composants clés.
- Goulots d’étranglement de performance avec l’API Assistants d’OpenAI → Nous avons initialement utilisé l’API Assistants mais avons constaté que la création de threads introduisait une latence importante, et les messages non structurés supplémentaires dans les appels d’outils ralentissaient les temps de réponse. Nous avons finalement opté pour l’API Chat pour des réponses structurées et une efficacité améliorée.
Pour répondre à ces points, nous avons développé un OpenAIAssistantRunnable personnalisé, un composant spécialisé basé sur l’implémentation existante de LangChain, mais amélioré pour supporter le streaming, les appels d’outils stricts et les flux de travail en plusieurs étapes.
Ajustement Final de l’Architecture
Bien que l’architecture originale des opérations soit restée intacte, nous avons réduit le nombre d’étapes de traitement de plusieurs itérations à une génération en une seule étape pour améliorer la vitesse et l’expérience utilisateur dans la version finale.
Points Clés
- LangChain + LangGraph étaient essentiels mais nécessitaient une personnalisation poussée pour les réponses structurées et l’appel d’outils.
- Approches de génération hybrides — combinant traitement individuel et par lots — nous ont permis d’équilibrer précision et efficacité.
- Les réponses structurées et la validation de schéma ont nettement amélioré la qualité et la fiabilité des sorties de l’IA.
- Une approche de traitement en plusieurs étapes a été initialement utilisée, mais en raison de contraintes de performance, une génération en une seule étape simplifiée a été mise en œuvre.
- Optimiser la vitesse d’exécution de l’IA en passant de l’API Assistants à l’API Chat a considérablement réduit le temps de génération tout en préservant les réponses structurées.
Essaie Notre Suite Commerciale Assistée Par IA
Découvre les capacités complètes de nos outils commerciaux pilotés par IA, conçus et hébergés sur DreamHost. De la planification d’entreprise à la génération de contenu, notre suite d’outils IA est conçue pour aider les entrepreneurs et les entreprises à rationaliser leurs opérations.
Les clients de DreamHost peuvent cliquer ici pour commencer et explorer notre générateur de plans d’affaires avec IA et autres outils IA.
Ce post est la Partie 1 d’une série en 4 parties. Assure-toi de consulter les autres posts de la série pour une exploration approfondie de notre générateur de plans d’affaires piloté par IA.
Partie 1 : Comment nous avons construit un générateur de plans d’affaires piloté par IA en utilisant LangGraph & LangChain
Partie 2 : Comment nous avons optimisé la génération de plans d’affaires IA : Compromis vitesse contre qualité
Partie 3 : Comment nous avons créé 273 tests unitaires en 3 jours sans écrire une seule ligne de code
Partie 4 : Cadre d’évaluation IA — Comment nous avons construit un système pour noter et améliorer les plans d’affaires générés par IA