À propos du projet
Iris est un serveur MCP (Model Context Protocol) open source conçu pour évaluer les sorties d'agents IA en termes de qualité, de sécurité et de coût. Il fonctionne entièrement sur votre machine, stocke les traces dans une base de données SQLite locale et ne nécessite ni compte, ni SDK, ni télémétrie. Le projet est sous licence MIT et nécessite Node.js 20 ou une version ultérieure.
Les capacités principales incluent la journalisation des traces avec des arbres de spans hiérarchiques, la latence par appel d'outil, l'utilisation de jetons et le suivi des coûts en USD. L'évaluation des sorties utilise 20 règles déterministes intégrées réparties en quatre catégories : exhaustivité, pertinence, sécurité et coût. Les règles de sécurité détectent les PII (19 modèles, notamment SSN, carte de crédit, téléphone, e-mail, IBAN, date de naissance, numéro de dossier médical, IP, clés API, passeport et jetons de fournisseur cloud), l'injection de prompts (37 modèles), les marqueurs d'hallucination (25 signaux de fabrication non fondés sur le contexte) et les violations de trajectoire telles que les appels d'outils échoués non signalés, les appels répétés, les arguments rejetés par schéma et les sources citées que l'agent n'a jamais lues. Une fonctionnalité optionnelle de juge LLM fournit une évaluation sémantique via Anthropic ou OpenAI avec un plafond de coût fixe par évaluation (0,25 $ par défaut).
Iris enregistre douze outils MCP que tout agent compatible MCP peut invoquer : log_trace, evaluate_output, get_traces, list_rules, deploy_rule, delete_rule, delete_trace, evaluate_with_llm_judge, verify_citations, compare_runs, compare_traces et evaluate_runs. L'outil verify_citations extrait les citations des sorties, récupère les sources derrière un résolveur protégé contre les SSRF et utilise un juge LLM pour vérifier si chaque source soutient l'affirmation citée.
Un tableau de bord web est disponible à l'adresse http://localhost:6920, affichant les échecs triés du pire au plus récent. Il fournit une visualisation des traces, des résultats d'évaluation, des ventilations des coûts et une palette de commandes (Cmd+K) pour rechercher les règles, les traces et les évaluations. Le tableau de bord expose également un point de terminaison d'ingestion HTTP (POST /api/v1/traces) pour capturer des traces sans modèle dans la boucle, et un point de terminaison de capacités (GET /api/v1/capabilities) qui décrit ce que le serveur peut juger.
Pour l'intégration CI/CD, la commande CLI d'ingestion lit les traces JSON ou NDJSON depuis l'entrée standard ou un fichier, les évalue, imprime une ligne JSON par trace avec le verdict et se termine avec le code 1 lorsqu'un verdict correspond à un filtre --fail-on. Cela permet de conditionner les déploiements d'agents aux résultats d'évaluation.
Des règles personnalisées peuvent être rédigées en ligne (jusqu'à 10 par appel evaluate_output) ou déployées de manière persistante via deploy_rule. Les types de règles incluent regex_match, regex_no_match, min_length, max_length, contains_keywords, excludes_keywords, json_schema et cost_threshold. Les règles déployées persistent dans custom-rules.json sous le répertoire personnel d'Iris et s'exécutent à chaque future évaluation de sortie de leur catégorie. Les niveaux de gravité (faible, moyen, élevé, critique) déterminent si un échec de règle fait échouer l'évaluation ou n'affecte que le score.
Le verdict de réussite est décidé par un compositeur qui lit chaque règle selon le type de revendication qu'elle fait : les politiques configurées bloquent, les détecteurs critiques opposent leur veto, les vérifications critiques qui n'ont pas pu répondre produisent un verdict inconnu, et les détecteurs restants se combinent en une probabilité pondérée par rapport à un ratio de perte configurable. Les violations de sécurité réelles (no_pii, no_injection_patterns, no_blocklist_words) échouent par défaut.
Chaque règle intégrée a des scores de précision, de rappel et de F1 publiés avec des intervalles de confiance à 95 %, mesurés sur un corpus étiqueté dans le dépôt. La CI réexécute la mesure à chaque demande d'extraction et échoue si les chiffres validés diffèrent de ce que produit le code.
Iris est local-first : tout vit dans SQLite sur disque. Le HTTP sortant ne se produit que là où vous optez — votre propre clé de juge LLM, la récupération de citations ou un exportateur OpenTelemetry que vous configurez. Le projet prend en charge le déploiement Docker avec deux ports (3000 pour le transport HTTP MCP, 6920 pour le tableau de bord et l'ingestion) et s'intègre à Claude Desktop, Claude Code, Cursor, Windsurf, Continue, VS Code, Cline, Zed, Codex CLI, Gemini CLI et tout autre agent compatible MCP.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.