Aller au contenu

Gérer les serveurs d'intelligence artificielle

Attention

La génération de cas de test par intelligence artificielle est accessible avec le plugin Squash TM Premium et la licence Ultimate.
C'est une fonctionnalité expérimentale : elle fonctionne, mais il est possible qu'elle ne soit pas assez puissante pour être utilisée en production.
Le but est de permettre aux utilisateurs d'expérimenter la génération de cas de test avec l'intelligence artificielle, afin de déterminer si ce type de fonctionnalité peut les intéresser et, le cas échéant, de faire part à Henix de retours éventuels concernant l'intégration de l'IA dans Squash.

Ajouter et supprimer un serveur d'intelligence artificielle

Page de gestion des serveurs d'IA

Depuis le tableau de gestion des serveurs d'intelligence artificielle, accessible en cliquant sur l'icône icône-artificial-intelligence.png, il est possible d'ajouter Ajouter ou de supprimer Supprimer des serveurs de façon unitaire ou en masse.

La suppression d'un serveur lié à un projet entraîne la suppression du lien entre le projet et le serveur d'IA.

Ajouter un serveur d'IA

Lors de la création d'un serveur, il faut obligatoirement renseigner les champs Nom et URL. L'URL doit correspondre à l'URL de l'API du serveur d'intelligence artificielle. L'information est présente dans la documentation de l'API du serveur choisi.
Par exemple, pour Mistral, l'URL est https://api.mistral.ai/v1/chat/completions.

En cliquant sur le numéro de ligne # ou le nom d'un serveur, sa page de consultation s'affiche permettant sa configuration complète.

Vue d'un serveur d'IA

Depuis la page de consultation d'un serveur d'intelligence artificielle, plusieurs actions sont possibles :

  • modifier le nom, l'URL et la description du serveur ;
  • renseigner le token d'identification au serveur ;
  • configurer le serveur en renseignant le modèle de la requête et le chemin JSON de la réponse du serveur ;
  • renseigner une exigence modèle afin de tester la configuration du serveur ;
  • supprimer le serveur depuis le bouton [...].

Paramétrer un serveur d'intelligence artificielle

Il est indispensable de paramétrer son serveur afin de pouvoir l'utiliser dans des projets pour générer des cas de test à partir d'une exigence.

Ajouter un jeton d'identification au serveur

Bloc authentification d'un serveur d'IA

Pour les serveurs d'intelligence artificielle, l'authentification se fait grâce à un jeton. Pour certains serveurs, ce jeton n'est pas nécessaire : dans ce cas, ne pas renseigner le champ.

Configurer le serveur

Bloc configuration d'un serveur d'IA

Pour pouvoir contacter le serveur, Squash TM doit connaître le modèle du corps de la requête attendu. Pour connaître les paramètres à renseigner, consulter la documentation liée au modèle choisi.

Certaines données sont absolument indispensables pour que la génération de cas de test fonctionne :

  1. Le format JSON du retour attendu :

    {
      "testCases": [
        {
          "name": "",
          "description": "",
          "prerequisites": "",
          "testSteps": [
            {
              "index": 0,
              "action": "",
              "expectedResult": ""
            }
          ]
        }
      ]
    }
    
    (Qui doit être encodé sous la forme de la chaîne de caractères \"{\"testCases\":[{\"name\":\"\",\"description\":\"\",\"prerequisites\":\"\",\"testSteps\":[{\"index\":0,\"action\":\"\",\"expectedResult\":\"\"}]}]}\".)
    Squash TM ne peut interpréter que des réponses JSON respectant ce schéma.

  2. Le placeholder {{requirement}} : il permet d'alimenter par la suite le corps de la requête avec l'exigence choisie pour créer des cas de test.

Tester la configuration du serveur

Afin de tester le bon fonctionnement de la configuration, il est nécessaire de fournir un exemple d'exigence.

Bloc test de configuration d'un serveur d'IA

Appuyer sur [Tester la configuration] : une requête vers le serveur choisi est envoyée. Si la configuration est bonne, une pop-up affiche les cas de test générés.

Pop-up cas de test générés par l'IA

En cas d'erreur, celle-ci est renseignée sous l'exigence, pour permettre l'analyse et la résolution du problème.

Erreur pas de jeton renseigné IA

Si besoin, ajuster les paramètres Top-P, Top-K, Temperature… (selon le modèle d'IA choisi) pour obtenir de meilleurs résultats.

Exemples de configuration

OpenAI

gpt-4-1106-preview est un des nombreux modèles proposés par OpenAI.

URL : https://api.openai.com/v1/chat/completions

Modèle du corps de la requête :

{
  "model": "gpt-4-1106-preview",
  "messages": [
    {
      "role": "system",
      "content": "Vous êtes un expert en test logiciel manuel. Vous êtes chargé de définir les cas de test nécessaires pour valider une exigence spécifique. Ces cas de test doivent obligatoirement être rédigés en français. Vous devez fournir les cas de test au format JSON sous forme de tableau avec le format suivant : \"{\"testCases\":[{\"name\":\"\",\"description\":\"\",\"prerequisites\":\"\",\"testSteps\":[{\"index\":0,\"action\":\"\",\"expectedResult\":\"\"}]}]}\". Votre réponse ne doit contenir rien d'autre que ce JSON ! La première étape d'un test doit être numérotée 0."
    },
    {
      "role": "user",
      "content": "Écrivez des cas de test pour l'exigence suivante : {{requirement}}"
    }
  ],
  "temperature": 0.9,
  "top_p": 0.9,
  "n": 1,
  "stream": false,
  "max_tokens": 2000,
  "presence_penalty": 0,
  "frequency_penalty": 0
}

Chemin JSON du texte généré : choices[0].message.content

Mistral

mistral-large-latest est un modèle proposé par Mistral.

URL : https://api.mistral.ai/v1/chat/completions

Modèle du corps de la requête :

{
  "model": "mistral-large-latest",
  "messages": [
    {
      "role": "system",
      "content": "Vous êtes un expert en test logiciel manuel. Vous êtes chargé de définir les cas de test nécessaires pour valider une exigence spécifique. Ces cas de test doivent obligatoirement être rédigés en français. Vous devez fournir les cas de test au format JSON sous forme de tableau avec le format suivant : \"{\"testCases\":[{\"name\":\"\",\"description\":\"\",\"prerequisites\":\"\",\"testSteps\":[{\"index\":0,\"action\":\"\",\"expectedResult\":\"\"}]}]}\". Votre réponse ne doit contenir rien d'autre que ce JSON ! La première étape d'un test doit être numérotée 0."
    },
    {
      "role": "user",
      "content": "Écrivez des cas de test pour l'exigence suivante : {{requirement}}"
    }
  ],
  "response_format": {
    "type": "json_object"
  },
  "temperature": 0.7,
  "max_tokens": 2048,
  "stream": false,
  "safe_prompt": false,
  "random_seed": null
}

Chemin JSON du texte généré : choices[0].message.content

Mistral-7B-Instruct chez Hugging Face

mistralai/Mistral-7B-Instruct-v0.3 est un petit modèle "open-weight" créé par Mistral et utilisable gratuitement chez Hugging Face.
Il n'est sans doute pas adéquat pour des exigences compliquées, mais il est inclus ici pour ceux qui veulent expérimenter gratuitement avec la génération d'IA (il faut cependant créer un compte et un jeton d'accès chez Hugging Face). Il s'agit également d'un exemple de configuration différent de ceux-ci dessus.

URL : https://api-inference.huggingface.co/models/mistralai/Mistral-7B-Instruct-v0.3

Modèle du corps de la requête :

{
  "inputs": "<s>[INST]Vous êtes un expert en test logiciel manuel. Vous êtes chargé de définir les cas de test nécessaires pour valider une exigence spécifique. Ces cas de test doivent obligatoirement être rédigés en français. Vous devez fournir les cas de test au format JSON sous forme de tableau avec le format suivant : {\"testCases\":[{\"name\":\"\",\"description\":\"\",\"prerequisites\":\"\",\"testSteps\":[{\"index\":0,\"action\":\"\",\"expectedResult\":\"\"}]}]}. Votre réponse ne doit contenir rien d'autre que ce JSON ! La première étape d'un test doit être numérotée 0. Écrivez des cas de test pour l'exigence suivante : {{requirement}}[/INST]</s>",
  "parameters": {
    "return_full_text": false,
    "temperature": 1.0,
    "max_new_tokens": 4096
  }
}

Chemin JSON du texte généré : [0].generated_text