AI Observability

Automatiser les tests de régression LLM avec Braintrust : Guide d'intégration CI/CD

Déployer des grands modèles de langage (LLM) en production ne se limite plus aux benchmarks de précision ; il s'agit de maintenir un comportement constant dans le temps. Contrairement au logiciel traditionnel, où les modifications de code sont déterministes, les sorties des LLM peuvent dériver en raison de mises à jour du modèle, de légères variations dans l'ingénierie des prompts ou de changements dans l'infrastructure sous-jacente. Cette nature non déterministe rend les tests de régression essentiels. Dans ce guide, nous explorons comment intégrer Braintrust à votre pipeline CI/CD pour automatiser les tests de régression LLM, garantissant que votre application IA reste fiable à chaque déploiement.

Pourquoi les tests traditionnels échouent pour les LLM

Dans le développement logiciel traditionnel, les tests unitaires affirment des sorties attendues spécifiques. Pour les LLM, cette approche est fragile car de légères variations de formulation n'indiquent pas nécessairement un bug. Au lieu de cela, nous avons besoin de tests évaluatifs. Braintrust change le paradigme des vérifications binaires succès/échec vers des évaluations basées sur des scores. En utilisant des fonctions d'évaluation personnalisées (telles que LLM-as-a-judge ou des scores de similarité sémantique), nous pouvons détecter des dégradations subtiles de la qualité sans être gênés par des différences syntaxiques inoffensives.

Configuration de la suite d'évaluation Braintrust

D'abord, vous devez définir votre suite de tests. Dans Braintrust, une suite est une collection de paires entrée/sortie accompagnée d'une fonction d'évaluation. Créez un répertoire pour vos tests et initialisez une expérience Braintrust.

import braintrust
from openai import OpenAI

# Initialisez votre client LLM
client = OpenAI(api_key="VOTRE_CLE_API")

# Définissez la fonction d'évaluation
def evaluate(input, output, expected_output):
    # Exemple : Vérification simple de mots-clés ou logique LLM-as-judge
    if expected_output.lower() in output.lower():
        return {"score": 1.0}
    return {"score": 0.0}

# Initialisez Braintrust
braintrust.init("ma-suite-llm")

# Chargez les données de test (par exemple, depuis JSON ou une base de données)
test_cases = [
    {"input": "Résumez ce texte", "expected_output": "résumé"},
    {"input": "Traduisez en français", "expected_output": "traduction"}
]

# Exécutez l'évaluation
braintrust.run(
    name="baseline-v1",
    data=test_cases,
    task=lambda x: client.chat.completions.create(
        model="gpt-4",
        messages=[{"role": "user", "content": x["input"]}]
    ).choices[0].message.content,
    evaluate=evaluate
)

Intégration dans GitHub Actions

Le cœur de l'automatisation réside dans le déclenchement de ces tests à chaque demande de tirage (pull request). Nous pouvons utiliser GitHub Actions pour exécuter le CLI Braintrust et faire échouer la construction si le score moyen tombe en dessous d'un seuil défini.

name: Test de Régression LLM

on:
  pull_request:
    branches: [ main ]

jobs:
  braintrust-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Configurer Python
        uses: actions/setup-python@v4
        with:
          python-version: '3.10'

      - name: Installer les dépendances
        run: |
          pip install braintrust openai

      - name: Exécuter l'évaluation Braintrust
        env:
          BRAINTRUST_API_KEY: ${{ secrets.BRAINTRUST_API_KEY }}
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
        run: |
          braintrust eval ma-suite-llm --threshold 0.85

      - name: Vérifier la régression
        if: ${{ failure() }}
        run: |
          echo "Régression LLM détectée : Le score est passé sous le seuil. Veuillez examiner les journaux dans Braintrust."

Surveillance de la dérive en production

Conclusion

L'automatisation des tests de régression LLM avec Braintrust fournit un filet de sécurité que les pipelines CI/CD traditionnels manquent. En traitant les sorties des LLM comme des résultats probabilistes et en utilisant des évaluations basées sur des scores, vous pouvez itérer avec confiance. Que vous affiniez vos prompts ou que vous changiez de fournisseur de modèles, cette intégration garantit que la qualité ne passe pas entre les mailles du filet. Commencez par établir une suite de référence, intégrez-la à votre flux de travail et laissez les données guider votre processus de développement IA.

Share: