Unité 12 / 12

Limites : sécurité, confidentialité, licence et éthique

Gains :

  • Capacité à reconnaître et à vérifier que l'IA peut produire de fausses API, du code non sécurisé et du contenu protégé par le droit d'auteur
  • Capacité à gérer l'utilisation de l'IA dans les limites de la confidentialité du code source, des données personnelles et de la politique de l'entreprise
  • Comprendre que la responsabilité ultime de la conformité, de la sécurité et de l’éthique des licences incombe à l’ingénieur.

Examen de module

1. En tant qu'ingénieur informaticien, lorsque vous travaillez avec un outil de génération de code d'IA, la responsabilité ultime pour laquelle des éléments suivants devrait toujours incomber à l'humain ?

  • A) Approbation finale de l'exactitude, de la sécurité, ainsi que de la révision et des tests du code mis en production ✔
  • B) Création du premier squelette de code pour une fonction
  • C) Produire une liste de suggestions de noms de variables
  • D) Préparer un projet de texte pour les commentaires sur le code

Description : IA ; Il peut accélérer des tâches telles que le squelette de code, les ébauches de tests et la documentation. Cependant, il est de la responsabilité de l'ingénieur de réviser, tester et approuver le code généré pour s'assurer qu'il est correct, sécuritaire et conforme aux exigences, et de le mettre en production ; cela ne peut pas être délégué à AI sans vérification indépendante.

2. L’IA a produit une fonction pour vous et elle semble fonctionner dans le bon sens. Quelle est la meilleure étape avant de le mettre en production ?

  • A) Puisque la fonction semble fonctionner, mettez-la directement en production
  • B) Vérifiez le comportement en écrivant et en exécutant de petits tests unitaires incluant des cas extrêmes ✔
  • C) Il suffit de regarder le nombre de lignes de la fonction
  • D) Rendre le nom de la fonction plus descriptif

Explication : Apparaître au travail ne veut pas dire avoir raison. L'écriture et l'exécution de petits tests unitaires qui couvrent des cas extrêmes tels qu'une entrée vide, zéro, négative, une valeur très grande et une non-concordance vérifient le comportement réel de la fonction sans la déplacer vers l'environnement réel.

3. AI a suggéré une méthode appelée 'array.sortStable()' qui n'existe pas dans votre langue et l'a expliquée de manière claire. Quelle est la première action correcte à entreprendre ?

  • A) Utiliser la méthode directement car l’IA semble confiante
  • B) Définissez vous-même la méthode et utilisez son nom exactement
  • C) Vérifier l'existence de la méthode à partir de la documentation officielle de la langue/bibliothèque ✔
  • D) Fermez l'avertissement du compilateur et continuez

Explication : les modèles de langage peuvent vraisemblablement constituer des noms de bibliothèques, de packages ou de méthodes qui n'existent pas réellement (halluciner). Chaque API proposée doit être vérifiée textuellement par rapport à la documentation officielle et actuelle du langage ou de la bibliothèque ; S’il n’est pas inclus dans le document, il ne doit pas être utilisé.

4. Vous souhaitez coller le code source confidentiel de votre entreprise et une clé API intégrée dans un outil d'IA public et demander de l'aide. Quelle est l’approche la plus correcte ?

  • A) Coller le code tel quel avec la clé API pour plus de rapidité
  • B) Il suffit de supprimer le nom de l'entreprise et de partager tout le reste
  • C) Partager le code puis demander à l'IA de le supprimer
  • D) Supprimer les secrets et la logique cachée et réduire le problème à un exemple représentatif ou en utilisant un outil institutionnel ✔

Description : Code source secret et informations d'identification (clé API, mot de passe, chaîne de connexion) ; C’est risqué en termes de secret d’entreprise et de sécurité. Il est nécessaire d'éliminer les secrets et la logique métier cachée et de réduire le problème à un exemple anonyme/représentatif ou d'utiliser un outil d'entreprise/sans partage de données.

5. AI a déclaré que la complexité d'une fonction de recherche qu'il a écrite était O(n) ; mais il y a deux boucles imbriquées dans le code. Quel est le comportement d’ingénierie correct ?

  • A) Analysez le code manuellement et extrayez vous-même la complexité et mesurez-la si nécessaire ✔
  • B) Acceptez O(n) et continuez parce que AI a dit
  • C) En supposant que le nombre de cycles n'a rien à voir avec les performances
  • D) Changez simplement le nom de la fonction

Explication : La complexité temporelle (Big-O) montre comment le nombre d'opérations augmente à mesure que l'entrée augmente. Deux boucles imbriquées signifient généralement O(n^2). L'allégation de complexité de l'IA doit être vérifiée en analysant manuellement le code et en mesurant avec des entrées croissantes si nécessaire ; Se fier à cette affirmation produit une fausse hypothèse de performance.

6. Code généré par l'IA qui insère directement l'entrée de l'utilisateur dans une requête SQL en concaténant du texte. Quel est le problème principal et la bonne solution ici ?

  • A) Pas de problème ; la fusion de texte est la méthode la plus rapide
  • B) Il existe un risque d'injection SQL ; Une requête paramétrée (instruction préparée) qui sépare l'entrée doit être utilisée ✔
  • C) Il suffit de convertir la requête en majuscules
  • D) Écrire la requête plus courte résoudra le problème

Description : l'ajout d'une entrée utilisateur directement au texte de la requête crée une vulnérabilité d'injection SQL ; L'attaquant peut modifier la requête avec l'entrée. La bonne solution consiste à utiliser une requête paramétrée (instruction préparée) qui sépare l'entrée du texte de la requête. Il s’agit de l’une des erreurs de sécurité les plus fréquemment manquées dans le code de l’IA.

7. Vous disposez d'un temps limité pour examiner un morceau de code produit par l'IA. Quelles sont les questions qu’il est préférable de prioriser ?

  • A) Uniquement les détails de format tels que l'indentation et l'espacement
  • B) Uniquement la longueur des noms de variables
  • C) Exactitude logique, vulnérabilités et comportement dans les cas extrêmes ✔
  • D) Uniquement le nombre total de lignes du fichier

Description : risque le plus élevé lors de la révision du code ; Il s’agit de problèmes qui causent de graves dommages, tels que des erreurs logiques, des failles de sécurité et des fuites d’informations confidentielles. Les problèmes de format et de style sont résolus avec des outils automatiques ; La principale attention humaine doit être consacrée à la précision, à la sécurité et au comportement dans les cas extrêmes.

8. Vous souhaitez que l’IA résolve un bug. Quelle entrée aiderait le mieux l’IA à trouver la cause profonde ?

  • A) Je dis simplement "le code ne fonctionne pas, corrigez-le".
  • B) Donnez simplement le nom du fichier
  • C) Dire simplement le résultat attendu, sans le texte d'erreur
  • D) Fournir un message d'erreur complet, une trace de pile, le code pertinent et un exemple de reproduction minimum ✔

Explication : Pour un débogage efficace, il est nécessaire de fournir à l'IA le message d'erreur complet, la trace de la pile, l'extrait de code pertinent et le plus petit échantillon reproductible qui produit l'erreur. La vague déclaration « ne fonctionne pas » oblige l'IA à deviner et à formuler des recommandations générales.

9. Tous les tests unitaires produits par l'IA réussissent dès la première exécution. Quel risque ne faut-il pas ignorer dans cette situation ?

  • A) Les tests peuvent confirmer l'état actuel du code mais pas le comportement réel/attendu ✔
  • B) Le code est absolument sans erreur car tous les tests ont réussi
  • C) La qualité est garantie si le nombre de tests est important
  • D) La réussite du test prouve que la couverture est complète

Explication : les tests peuvent valider le comportement actuel (peut-être bogué) du code, et non son comportement prévu ; ou il peut ne contenir aucune assertion significative et est toujours transmis. Pour voir que les tests vérifient les attentes réelles, il est nécessaire de casser consciemment le code et de confirmer que le test devient rouge.

10. L’IA vous a produit un bloc de code prêt à l’emploi pour un problème. Vous pensez que le code a peut-être été copié textuellement à partir d'un projet open source. Quelle est la bonne approche ?

  • A) Utiliser la licence sans réfléchir car le code fonctionne
  • B) Vérifier la source/licence du code, réécrire si nécessaire et respecter la politique de l'entreprise ✔
  • C) Changez simplement les noms des variables et considérez le problème comme résolu
  • D) En supposant que les licences ne concernent que les grandes entreprises

Description : L'IA peut reproduire textuellement le code protégé par le droit d'auteur/sous licence dans les données de formation. La violation de licence dans un produit commercial crée de graves risques juridiques. Il est nécessaire de vérifier la source et la licence du code, de le réécrire dans vos propres mots si nécessaire et de respecter la politique de licence de l'établissement.

11. AI vous a suggéré de passer immédiatement à l'architecture de microservices pour votre projet. Quelle est l’approche technique la plus appropriée lors de l’évaluation de cette proposition ?

  • A) Divisez immédiatement l'ensemble du système en microservices car l'IA le suggère
  • B) En supposant que le microservice soit toujours le meilleur choix
  • C) Évaluer la proposition en fonction du besoin réel, de la charge, de la structure de l'équipe et de l'équilibre plus-moins ✔
  • D) Prendre la décision basée uniquement sur la popularité de l'architecture

Explication : Les décisions architecturales dépendent du contexte ; Les microservices ajoutent de la valeur à des besoins tels que l'évolutivité et la séparation des équipes, mais entraînent des coûts tels que la complexité opérationnelle, le débogage distribué et les coûts. Évaluer la proposition en fonction du besoin réel, de la charge, de la structure de l'équipe et de l'équilibre des avantages et des inconvénients ; Les conseils généraux ne doivent pas être suivis aveuglément.

12. AI a produit une documentation README et API simplifiée pour votre code ; mais certains points de terminaison et paramètres ne correspondent pas dans le code. Quel est le comportement correct ?

  • A) Publier le document tel quel car le texte est fluide
  • B) Corrigez simplement le titre et laissez le reste tel quel
  • C) Ajouter le document à l'entrepôt sans le lire
  • D) Comparez chaque point de terminaison et paramètre au code réel et corrigez ceux qui ne correspondent pas ✔

Description : la documentation doit refléter fidèlement le code réel ; Un mauvais document pousse les développeurs qui le lisent à mal l’utiliser. Chaque point de terminaison, paramètre et valeur de retour doit être vérifié par rapport au code réel et toute incohérence doit être corrigée.

13. Quelle approche de saisie est la bonne pour obtenir un résultat de la plus haute qualité lors de la demande de code à l'IA ?

  • A) Fournir clairement la langue/version, le contrat d'entrée-sortie, les contraintes et les situations d'erreur ✔
  • B) Je dis simplement « écrivez-moi du code fonctionnel »
  • C) Écrivez la requête la plus courte sans donner de contexte
  • D) Il suffit de spécifier combien de lignes de code il y aura

Description : invite puissante ; Il comprend la langue et la version utilisées, le contrat d'entrée-sortie, les contraintes de performances et de style, les conditions d'erreur et l'instruction « rester uniquement dans la portée demandée ». Une requête sans contexte « écrivez-moi une fonction » est générique et produit souvent du code inapproprié.

14. AI a généré une configuration pour votre pipeline CI/CD (intégration/déploiement continu) et y a intégré le mot de passe de la base de données en texte brut. Quelle est la bonne solution ?

  • A) Laisser le mot de passe sous forme de texte brut car il fonctionne
  • B) Déplacer les secrets via une variable d'environnement ou un outil de gestion des secrets, sans mettre de texte en clair dans le référentiel ✔
  • C) Déplacez le mot de passe uniquement vers la ligne de commentaire
  • D) Changer le nom du fichier résout le problème

Explication : L'écriture de secrets tels que des mots de passe et des clés en texte brut dans le fichier de configuration présente un risque de fuite du contrôle de version et d'accès non autorisé. Secrets ; Il doit être tenu à l'écart par des variables d'environnement ou un gestionnaire de secrets spécial, et ne doit jamais entrer dans le référentiel en texte brut.