Inspect AI - Framework d’évaluation pour LLM
Inspect est un framework open-source pour les évaluations de modèles de langage, créé par le UK AI Safety Institute. Il donne aux évals une structure claire — un ensemble de données d’échantillons, un pipeline de solutionneur qui produit des réponses, et un scoreur qui les évalue — plus une visionneuse de première classe pour inspecter exactement ce que le modèle a vu et fait sur chaque échantillon. Il est conçu pour une évaluation rigoureuse et reproductible, incluant les tâches agentiques et l’utilisation d’outils, et est largement utilisé pour les tests de sécurité et de capacité.
Installation
| Méthode | Commande |
|---|
| pip | pip install inspect-ai |
| uv | uv add inspect-ai |
| Clé de modèle | export OPENAI_API_KEY=... / ANTHROPIC_API_KEY=... |
| VS Code | Installez l’extension Inspect pour la visionneuse |
| Vérifier | inspect --version |
Les trois blocs de construction
| Composant | Rôle |
|---|
| Dataset | Échantillons avec input et target |
| Solver | Étapes qui transforment l’entrée en sortie du modèle |
| Scorer | Évalue la sortie par rapport à la cible |
Une éval minimale
from inspect_ai import Task, task
from inspect_ai.dataset import example_dataset
from inspect_ai.scorer import model_graded_fact
from inspect_ai.solver import generate, system_message
@task
def security_qa():
return Task(
dataset=example_dataset("theory_of_mind"),
solver=[
system_message("You are a concise security expert."),
generate(),
],
scorer=model_graded_fact(),
)
inspect eval security_qa.py --model openai/gpt-4o
Exécution d’évals
| Commande | Description |
|---|
inspect eval task.py --model openai/gpt-4o | Exécuter une éval |
inspect eval task.py --limit 20 | Uniquement les 20 premiers échantillons |
inspect eval task.py --model-base-url URL | Endpoint personnalisé/local |
inspect eval task.py -T param=value | Passer les paramètres de tâche |
inspect eval-retry <log> | Réessayer les échantillons échoués |
inspect view | Ouvrir la visionneuse de log |
Solutionneurs
| Solutionneur | Fait |
|---|
generate() | Appelle le modèle |
system_message(...) | Prépend un prompt système |
chain_of_thought() | Ajoute le prompting CoT |
self_critique() | Le modèle examine sa propre réponse |
use_tools([...]) | Active l’appel d’outil |
basic_agent() | Une boucle d’agent de style ReAct |
Scoreurs
| Scoreur | Évalue par |
|---|
match() | Correspondance exacte/sous-chaîne |
includes() | La cible apparaît dans la sortie |
pattern(regex) | Extraction regex |
model_graded_qa() | Juge LLM par rapport à une rubrique |
model_graded_fact() | Juge LLM pour l’équivalence factuelle |
choice() | Réponse à choix multiples |
Évals agentiques et outils
from inspect_ai.tool import bash, python
from inspect_ai.solver import basic_agent
solver = basic_agent(tools=[bash(), python()], max_attempts=3)
| Capacité | Note |
|---|
| Utilisation d’outils | Outils intégrés bash, python, web |
| Sandboxing | Exécutez les outils en Docker pour l’isolation |
| Multi-turn | Boucles d’agent avec limites de tentatives |
| Outils personnalisés | Décorez les fonctions Python comme outils |
La visionneuse
| Affiche | Pourquoi c’est important |
|---|
| Chaque échantillon | Entrée, cible, sortie, score |
| Transcript complet | Chaque message, appel d’outil, et résultat |
| Justification de l’évaluation | Pourquoi le juge a évalué comme il l’a fait |
| Métriques | Précision et métriques personnalisées |
Pouvoir lire la transcript des défaillances est ce qui transforme un score en découverte exploitable.
Inspect vs autres frameworks d’éval
| Aspect | Inspect | DeepEval | Ragas |
|---|
| Origine | UK AI Safety Institute | Confident AI | Exploding Gradients |
| Focus | Évals générales + agentiques | Évals de style unit-test | Métriques spécifiques à RAG |
| Visionneuse | Riche, de première classe | Rapports/tableau de bord | Scores |
| Meilleur pour | Évals rigoureuses de capacité/sécurité | Gating de test CI | Notation de pipeline RAG |
Complète DeepEval pour les tests de style CI et Ragas pour les métriques spécifiques à RAG.
Ressources