Modèle / jeu de données
emcie-co/parlant avatar
emcie-co/parlant

Parlant : un harnais de contrôle interactionnel pour agents conversationnels

Build reliable customer-facing AI agents with Parlant: an interaction control harness optimized for controlled, consistent, and predictable LLM interactions.

18 288 étoiles1 553 forksPythonApache-2.0

En bref

De quoi s’agit-il ?
Parlant, sous licence Apache-2.0, propose de définir le comportement d'un agent client par des règles et des observations plutôt que par un prompt système. Le projet vise la constance et la traçabilité, au prix d'une complexité de configuration assumée.
À qui s’adresse-t-il ?
Parlant convient aux équipes qui doivent garantir un ton, des contraintes de conformité et une traçabilité sur des échanges clients sensibles, et qui acceptent de décrire le comportement en code plutôt qu'en prompt. Il ne convient pas si vous cherchez surtout à orchestrer des workflows ou à optimiser automatiquement des prompts : LangGraph et DSPy couvrent ces besoins avec une autre approche.
Puis-je l’utiliser commercialement ?
Oui. Apache-2.0 est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 65 jours.
En quel langage est-il écrit ?
Principalement Python, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

Le problème visé : des instructions qui se noient dans le prompt

Le README pose le diagnostic de façon directe. Un prompt système fonctionne jusqu'à ce que la complexité de production s'installe : plus vous ajoutez d'instructions, plus l'agent cesse d'en tenir compte. Les graphes routés corrigent cette surcharge, mais chaque route ajoutée fragilise l'ensemble face à la variabilité des échanges réels. Parlant se positionne entre les deux en traitant le problème comme une question de contexte : fournir au modèle le bon contexte, ni plus ni moins, au bon moment. La cible annoncée est l'entreprise, avec des interactions B2C et des échanges B2B sensibles qui doivent rester cohérents, conformes, alignés sur la marque et traçables. Le README revendique aussi une filiation avec des travaux sur la précision et la constance des modèles, en citant les Attentive Reasoning Queries. C'est un positionnement clair, mais il faut noter que ces garanties reposent sur la manière dont le moteur sélectionne le contexte, pas sur une vérification formelle des sorties.

Règles, observations et exclusions : le mécanisme de filtrage

L'unité de base n'est pas le prompt mais la règle. Le README indique que vous définissez règles, connaissances et outils une seule fois, et que le moteur réduit le contexte en temps réel à ce qui est pertinent pour le tour en cours. L'exemple du README montre deux primitives. create_observation attache des outils à une condition, ici un client qui emploie un vocabulaire financier comme DTI ou amortization, avec research_deep_answer. create_guideline associe un matcher et une action, avec des dépendances. Le point le plus intéressant est la ligne await beginner_answers.exclude(expert_customer) : quand les deux règles correspondent, celle du débutant l'emporte, et ni les données de l'outil expert ni ses instructions ne peuvent entrer dans le contexte. C'est une exclusion explicite, pas une priorité implicite laissée au modèle. Voilà pourquoi le projet parle de contraintes appliquées à l'usage des LLM plutôt que de garde-fous ajoutés après coup sur la sortie.

Ce que le README ne dit pas sur le moteur

La description du dépôt parle d'un harnais optimisé pour des interactions contrôlées et prévisibles, et le README affirme que le moteur resserre le contexte en temps réel. Le mécanisme exact de ce resserrement n'est pas exposé dans les extraits fournis. On ne sait pas comment les conditions sont évaluées, si un modèle juge la correspondance, ni comment les observations sont classées entre elles. Le README mentionne un matcher p.MATCH_ALWAYS, ce qui suggère qu'il existe d'autres valeurs, sans les nommer. Le diagramme de démonstration est une image, donc il ne documente rien de vérifiable ici. Pour un lecteur qui doit décider, c'est une zone d'ombre : la promesse de constance dépend entièrement de cette couche, et les extraits ne permettent pas de l'évaluer. Il faut aller lire le code de parlant.sdk et la documentation du site avant de s'engager.

Mise en route : pip, asyncio et le SDK

L'installation tient en une commande, pip install parlant. Le README annonce Python 3.10 et plus. Le code d'exemple s'articule autour d'un contexte asynchrone : async with p.Server(), puis server.create_agent avec un name et une description. Les règles se créent ensuite sur l'agent, avec des clés nommées condition, action, tools, matcher et dependencies. Le README renvoie à un quickstart de cinq minutes sur le site pour une prise en main complète. Rien dans les extraits ne décrit la configuration d'un fournisseur de modèle, alors que les topics mentionnent OpenAI, Gemini et Llama 3 : cette partie est absente du matériel fourni et doit être vérifiée dans la documentation. Le même constat vaut pour la persistance et le déploiement, que le README n'aborde pas dans ces extraits.

La complexité comme prix du contrôle

Le README l'écrit lui-même dans ses objectifs de conception : l'approche ajoute de la complexité, en échange d'un contrôle plus serré. C'est un aveu utile. Vous n'écrivez plus un texte, vous construisez un ensemble de règles, d'observations et de dépendances, avec des exclusions qui déterminent ce qui a le droit d'entrer dans le contexte. Ce graphe de règles peut lui-même devenir difficile à raisonner, exactement comme les graphes routés que le projet critique. La différence est que les règles portent sur le contexte plutôt que sur le flux. Autre limite : le projet cible explicitement les interactions clients. Si votre besoin est d'enchaîner des appels d'outils selon un ordre strict, avec reprise sur erreur et état de workflow, ce n'est pas le terrain visé. Le README le dit sans détour : LangGraph est présenté comme adapté à l'automatisation de workflows, et DSPy à l'optimisation de prompts de bas niveau.

Alternatives : graphe de workflow ou optimisation de prompt

La comparaison la plus honnête est celle que le README propose. LangGraph organise le contrôle comme un graphe de nœuds et d'arêtes : la logique de progression est explicite dans la topologie, et l'état circule entre les étapes. Parlant place le contrôle dans des règles et des observations qui filtrent le contexte tour par tour, sans dessiner de chemin. DSPy, de son côté, cherche à optimiser les prompts par programme plutôt qu'à gouverner le comportement conversationnel. Le choix se joue donc sur la nature du problème : si la difficulté est de garantir un ton et des contraintes sur des échanges ouverts, le modèle de Parlant est plus proche du besoin. Si la difficulté est de faire avancer un processus en plusieurs étapes avec des branches, un graphe reste plus lisible. Ces deux approches ne s'excluent pas forcément, mais les extraits ne montrent aucune intégration de ce type.

Maintenance, licence et coût de mise à jour

Le dépôt est actif : la branche par défaut est develop, la dernière poussée date de juillet 2026, et trois versions sont listées entre mars et avril 2026, de v3.3.0 à v3.3.2. Le rythme de publication est donc soutenu, ce qui signifie aussi des mises à jour fréquentes. Les versions mineures successives en trois mois suggèrent des changements réguliers dans le SDK, et un projet qui n'est pas encore figé sur une API stable. La licence est Apache-2.0, une licence permissive qui autorise l'usage commercial et la modification, avec les obligations habituelles de conservation des mentions et de l'avis de licence. Ce n'est pas un avis juridique : si vous redistribuez le logiciel ou le modifiez, faites relire les conditions par votre service compétent. Le coût réel de maintenance se situe moins dans la mise à jour que dans la réécriture des règles quand le comportement attendu évolue, puisque chaque ajustement passe par le code.

Conclusion éditoriale

Parlant convient aux équipes qui doivent garantir un ton, des contraintes de conformité et une traçabilité sur des échanges clients sensibles, et qui acceptent de décrire le comportement en code plutôt qu'en prompt. Il ne convient pas si vous cherchez surtout à orchestrer des workflows ou à optimiser automatiquement des prompts : LangGraph et DSPy couvrent ces besoins avec une autre approche. Avant d'adopter, vérifiez le contenu réel de parlant.sdk (Server, create_agent, create_observation, create_guideline, MATCH_ALWAYS, exclude) dans la version installée, puis testez le cas où deux règles se contredisent pour voir laquelle l'emporte.

Sources officielles

  1. emcie-co/parlant on GitHub
  2. License: Apache-2.0
  3. Project website
  4. README
  5. Releases
Notes de la communauté

Notes de la communauté