Κέρδη:
- Δυνατότητα διάκρισης πού η τεχνητή νοημοσύνη παρέχει πραγματική ταχύτητα στον κύκλο ζωής ανάπτυξης λογισμικού και πού η απόφαση και η ευθύνη παραμένουν στον μηχανικό
- Δυνατότητα εφαρμογής μιας πειθαρχίας μηχανικής τριών επιπέδων που επαληθεύει κάθε κώδικα και σχέδιο που παράγονται μέσω συλλογής, δοκιμών και αναθεώρησης.
- Αποκτήστε τη συνήθεια να καθαρίζετε το πλαίσιο για να αξιοποιήσετε την τεχνητή νοημοσύνη χωρίς να μοιράζεστε εμπιστευτικό πηγαίο κώδικα, διαπιστευτήρια και δεδομένα πελατών
Όταν κοιτάζετε την ημέρα ενός μηχανικού υπολογιστών, η εικόνα είναι παρόμοια στις περισσότερες ομάδες: κατανόηση ενός επαγγελματικού αιτήματος, σχεδιασμός, σύνταξη κώδικα, ανάγνωση κώδικα κάποιου άλλου, εντοπισμός σφαλμάτων (η διαδικασία εύρεσης γιατί ένα πρόγραμμα λειτουργεί λανθασμένα και επιδιόρθωσή του), σύνταξη δοκιμών, προετοιμασία τεκμηρίωσης, έλεγχος κώδικα και συμμετοχή σε συσκέψεις. Με άλλα λόγια, ο χρόνος που αφιερώνεται στην πραγματική «μηχανική κρίση», δηλαδή αν μια λύση είναι σωστή, ασφαλής και βιώσιμη, συνθλίβεται κάτω από επαναλαμβανόμενες εργασίες. Εδώ παίζει ρόλο η τεχνητή νοημοσύνη (τεχνητή νοημοσύνη για συντομία· λογισμικό που λειτουργεί σε κείμενο και κώδικα με ένα μεγάλο μοντέλο γλώσσας). Το AI δεν παίρνει την απόφαση για εσάς. Σας προετοιμάζει για την απόφαση, δημιουργεί έναν σκελετό κώδικα, περιορίζει το σφάλμα και βάζει ένα επεξεργασμένο σχέδιο μπροστά σας. Σε όλη αυτή την ενότητα θα τοποθετήσουμε την τεχνητή νοημοσύνη όχι ως «αυτόματο προγραμματιστή» αλλά ως έναν πειθαρχημένο συνεργάτη προγραμματισμού ζεύγους του οποίου η έξοδος μεταγλωττίζεται, δοκιμάζεται και ελέγχεται κάθε φορά.
Σε αυτήν την πρώτη ενότητα, διευκρινίζουμε τρία πράγματα: Σε ποια στάδια του κύκλου ζωής ανάπτυξης λογισμικού (τα στάδια που περνά ένα λογισμικό από την ιδέα στην παραγωγή: ανάλυση, σχεδιασμός, κωδικοποίηση, δοκιμή, ανάπτυξη, συντήρηση) προσθέτει πραγματική αξία η τεχνητή νοημοσύνη. ποιες αποφάσεις θα πρέπει να παραμείνουν αυστηρά στον μηχανικό· και ποια είναι η πειθαρχία επαλήθευσης και εμπιστευτικότητας που πρέπει να τηρείτε όταν το κάνετε αυτό. Χωρίς τη σωστή εγκατάσταση αυτής της οροφής, οι τεχνικές στις επόμενες μονάδες μπορεί να γίνουν επικίνδυνες. Επειδή ένα σφάλμα στο λογισμικό φτάνει σε εκατομμύρια χρήστες ταυτόχρονα και μπορεί να μετατραπεί σε ευπάθεια ασφαλείας.
Έννοιες: Παραισθήσεις: Η πειστική κατασκευή μιας μεθόδου, βιβλιοθήκης, API ή συμπεριφοράς από την τεχνητή νοημοσύνη που στην πραγματικότητα δεν υπάρχει. Πλαίσιο: Η είσοδος που δίνετε στο AI (κωδικός, μήνυμα σφάλματος, απαίτηση, περιορισμοί). Επαλήθευση: Έλεγχος της εξόδου με ανεξάρτητο τρόπο (σύνταξη, δοκιμή, τεκμηρίωση). Αυτές οι τρεις έννοιες είναι η ραχοκοκαλιά ολόκληρης της ενότητας.
Σε ποιες επιχειρήσεις είναι το AI Accelerator, σε ποιες επιχειρήσεις είναι επικίνδυνο;
Οι εργασίες λογισμικού εμπίπτουν σε ένα φάσμα δύο πλευρών όσον αφορά τα αποτελέσματα. Στο ένα άκρο υπάρχουν αναστρέψιμες, χαμηλού κινδύνου προπαρασκευαστικές εργασίες. Από την άλλη πλευρά, υπάρχουν εργασίες που είναι δύσκολο να επιστραφούν που εισέρχονται στο περιβάλλον παραγωγής και μπορεί να προκαλέσουν απώλεια δεδομένων, ευπάθειες ασφαλείας ή διακοπές. Η τιμή του AI ποικίλλει ανάλογα με το πού βρίσκεστε σε αυτό το φάσμα.
τύπο επιχείρησης
συνεισφορά AI
Ο ρόλος του μηχανικού
Κωδικός σκελετός / boilerplate
Ταχεία δημιουργία επαναλαμβανόμενης δομής
Λογική και έλεγχος κατάστασης άκρων
αποσφαλμάτωση
Υπόθεση και λίστα πιθανών αιτιών
Αναπαραγωγή και επιβεβαίωση της βασικής αιτίας
γραπτά τεστ
Δοκιμή σχεδίου και δημιουργίας σεναρίου
Έλεγχος με νόημα και διεκδίκηση
ανακατασκευή
Πρόταση ανακατασκευής
Διατήρηση συμπεριφοράς μέσω δοκιμών
Τεκμηρίωση
Πρώτο σχέδιο και δομή
Έλεγχος ορθότητας έναντι κώδικα
Απόφαση αρχιτεκτονικής/ασφάλειας
Λίστα επιλογών και πλεονεκτήματα και μειονεκτήματα
Τελική απόφαση και ευθύνη
Ο κανόνας είναι απλός: ο κίνδυνος μιας εξόδου AI ισούται με τη ζημιά που θα υποστεί εάν αυτή η έξοδος κάνει λάθος. Η εσφαλμένη πρόταση ενός ονόματος μεταβλητής είναι αβλαβής. Ο εσφαλμένος έλεγχος ταυτότητας (έλεγχος ότι ο χρήστης είναι πραγματικά αυτός που ισχυρίζονται ότι είναι) καθιστά ολόκληρο το σύστημα ευάλωτο. Επομένως, η πρώτη ερώτηση που πρέπει να κάνετε πριν χρησιμοποιήσετε την έξοδο είναι: "Τι συμβαίνει εάν αυτό είναι λάθος και ποιος το παρατηρεί και πότε;"
Προσοχή: Η τεχνητή νοημοσύνη παράγει άπταιστα και σίγουρο κώδικα. Η ευχέρεια δεν αποτελεί εγγύηση για την ακρίβεια. Ένα μοντέλο γλώσσας μπορεί αξιόπιστα να παράγει ένα όνομα συνάρτησης που στην πραγματικότητα δεν υπάρχει, μια εσφαλμένη ακολουθία παραμέτρων ή ακόμα και ένα μη ασφαλές μοτίβο. Στο λογισμικό, αυτό δεν μένει στα χαρτιά. Μεταγλωττίζει, εκτελείται και εκρήγνυται στην παραγωγή.
Αποφάσεις που πρέπει να αφεθούν στον Μηχανικό
Ορισμένες αποφάσεις δεν πρέπει ποτέ να είναι πλήρως αυτοματοποιημένες. εγκυμονεί τεχνικούς, νομικούς και ηθικούς κινδύνους:
- Έγκριση για παραγωγή: Η κυκλοφορία ενός κωδικού στην παραγωγή και η ευθύνη για αυτό.
- Ασφάλεια και αρχιτεκτονική: Ακριβές αποφάσεις όπως έλεγχος ταυτότητας, εξουσιοδότηση, κρυπτογράφηση και μοντέλο δεδομένων.
- Άδεια χρήσης και πνευματικά δικαιώματα: Ευχρηστία του παραγόμενου κωδικού στο εμπορικό προϊόν και συμμόρφωση με άδεια χρήσης.
- Εργασία με εμπιστευτικά δεδομένα: Συναλλαγές με δεδομένα πελατών, μυστικά πηγαίου κώδικα και πληροφορίες ταυτότητας.
Προειδοποίηση: Ακόμα κι αν το AI λέει "αυτός ο κωδικός είναι ασφαλής και έτοιμος για παραγωγή", η αποδοχή αυτού χωρίς δοκιμή ασφαλείας, έλεγχος κώδικα και επικύρωση υπό πραγματικό φορτίο είναι απαράδεκτη. Σε εργασίες κρίσιμες για την ασφάλεια, η έξοδος AI δεν υποκαθιστά ποτέ την έγκριση από έναν ικανό μηχανικό. Οποιαδήποτε έξοδος που οδηγεί σε απόφαση πρέπει να επαληθεύεται ανεξάρτητα και να εγκρίνεται από τον εξουσιοδοτημένο μηχανικό πριν από την εφαρμογή.
Πειθαρχία επαλήθευσης: Έλεγχος τριών επιπέδων
Εφαρμόστε τρία επίπεδα ελέγχου για να χρησιμοποιήσετε την έξοδο AI σαν ανώτερος αναθεωρητής και όχι στα τυφλά. Αυτό είναι το βασικό αντανακλαστικό που θα επαναλάβουμε σε όλη την ενότητα.
- Μεταγλώττιση και στατικός έλεγχος: Ο κώδικας μεταγλωττίζεται/εκτελείται πραγματικά; Υπάρχουν σφάλματα τύπου, αχρησιμοποίητες μεταβλητές, ανύπαρκτα API; Τι λέει το εργαλείο στατικής ανάλυσης (το εργαλείο που εξετάζει τον κώδικα χωρίς να τον εκτελεί);
- Ανεξάρτητη αναπαραγωγή (δοκιμή): Εκτελέστε τον κώδικα με μικρές, γνωστές εισόδους και δείτε εάν έχετε την αναμενόμενη έξοδο. Δοκιμάστε ακραίες περιπτώσεις (null, zero, αρνητικό, τεράστιο).
- Επαλήθευση πηγής: Κάθε χαρακτηριστικό API, έκδοση βιβλιοθήκης και γλώσσα που χρησιμοποιεί το AI θα πρέπει να επαληθεύεται από την επίσημη τεκμηρίωση.
Ερώτηση επαλήθευσης (καθιστά ευκολότερο τον έλεγχο της εξόδου): "Παραθέστε ΟΛΕΣ τις εξωτερικές βιβλιοθήκες, τις μεθόδους και τα χαρακτηριστικά γλώσσας που χρησιμοποιείτε στον κώδικά σας. Για καθεμία, υποδείξτε σε ποια έκδοση είναι διαθέσιμη και επισημάνετε την ετικέτα "πρέπει να επαληθευτεί από την τεκμηρίωση". Μην δημιουργήσετε κανένα API για το οποίο δεν είστε σίγουροι. Εάν δεν είστε βέβαιοι, γράψτε ξεκάθαρα "μη βέβαιη διεύθυνση".
Επικρίνετε το δικό σας μήνυμα κώδικα: "Κοιτάξτε κριτικά τον κώδικα που μόλις γράψατε, όπως ένας ανώτερος μηχανικός που σας προσέλαβε. Δώστε συγκεκριμένα στοιχεία κάτω από αυτές τις τρεις επικεφαλίδες: (1) σφάλματα λογικής/περίπτωσης άκρων, (2) κινδύνους ασφαλείας, (3) προβλήματα απόδοσης ή αναγνωσιμότητας. Για κάθε στοιχείο, γράψτε "γιατί είναι το πρόβλημα" και "προτείνεται δεν υπάρχει πρόβλημα, δεν μπορώ να λύσω". προσπάθησε να το εξωραΐσεις».
Αδύναμη προτροπή / Ισχυρή προτροπή
WEAK:"Write me a user authentication function."(Αποτέλεσμα: ασαφές ποια γλώσσα, ποιος κανόνας, ποια συμπεριφορά σφάλματος; γενικός κώδικας, συχνά ανασφαλής ή εκτός πλαισίου.)STRONG:"Γράψτε μια συνάρτηση επικύρωσης ηλεκτρονικού ταχυδρομείου για Python 3.11. Είσοδος: συμβολοσειρά. Έξοδος: True εάν είναι έγκυρη, False. Διαφορετικά, απαιτείται επαρκής μορφή RDO, RFC απαιτείται επαρκής μορφή, RFC ΜΗ ΧΡΗΣΙΜΟΠΟΙΕΙΤΕ Εξωτερική βιβλιοθήκη Μια δοκιμή 5 δειγμάτων κάτω από το μπλοκ προσάρτησης συνάρτησης: έγκυρη, κενή, χωρίς '@', διπλή '@', που περιέχει μόνο κενά."
Η διαφορά είναι στο πλαίσιο. Ισχυρή προτροπή. Περιλαμβάνει τη γλώσσα, την έκδοση, τη σύμβαση εισόδου-εξόδου, τους περιορισμούς και την προσδοκία δοκιμής. Αυτή η ενιαία πειθαρχία μειώνει σημαντικά τον κίνδυνο παραισθήσεων και μη ασφαλούς κώδικα.
Μίνι Θήκες
Περίπτωση 1 — Επινοημένη μέθοδος. Ένας προγραμματιστής ακούει από την τεχνητή νοημοσύνη ότι υπάρχει μια μέθοδος που ονομάζεται date.addBusinessDays(5) σε μια βιβλιοθήκη ημερομηνιών και εξηγείται με σιγουριά. Κοιτάζοντας την τεκμηρίωση, βλέπει ότι δεν υπάρχει τέτοια μέθοδος, ο σωστός τρόπος είναι ένας χειροκίνητος βρόχος. Η ψευδαίσθηση αποτυπώνεται πριν βγει στην παραγωγή με μια επαλήθευση 10 λεπτών.
Περίπτωση 2 — Απώλεια κατάστασης ακμής. Το AI παράγει μια συνάρτηση «υπολογισμός μέσου όρου». Λειτουργεί όταν δοκιμάζεται με 1.000 σειρές δεδομένων. Ωστόσο, όταν η λίστα είναι κενή, δίνει διαίρεση με μηδενικό σφάλμα. Εφόσον ο μηχανικός πρόσθεσε την κενή δοκιμή εισαγωγής, βλέπει και διορθώνει το σφάλμα πριν βγει ζωντανά. Μια δοκιμή κατάστασης ενός άκρου αποτρέπει έναν συναγερμό παραγωγής στις 3 π.μ.
Περίπτωση 3 — Κίνδυνος απορρήτου. Ένας ειδικός πρόκειται να επικολλήσει ένα αρχείο με μια πραγματική συμβολοσειρά σύνδεσης βάσης δεδομένων και ένα κλειδί API σε ένα δημόσιο εργαλείο. Θυμάται την πολιτική του ιδρύματος. Αντικαθιστά τα μυστικά με <REDACTED>, μειώνει τον κώδικα σε αντιπροσωπευτικό παράδειγμα και τον ζητά. Έτσι, παίρνει βοήθεια σε 5 λεπτά, αλλά δεν βγαίνουν τα στοιχεία της ταυτότητάς του.
Αρχή της εργασίας με μυστικό κωδικό και στοιχεία ταυτότητας
Το πιο ευαίσθητο μέρος του λογισμικού. μυστικά πηγαίου κώδικα, πληροφορίες ταυτότητας (κλειδί API, κωδικός πρόσβασης, διακριτικό) και δεδομένα πελάτη/προσωπικά δεδομένα. Βασική αρχή: καθαρίστε πριν από την κοινή χρήση, ρωτήστε μόνο την ουσία του προβλήματος με ένα αντιπροσωπευτικό παράδειγμα, εάν είναι δυνατόν.
Ανώνυμα μοτίβο προτροπής: "Υπάρχει σφάλμα στην ακόλουθη συνάρτηση. Αντικατέστησα την πραγματική επιχειρηματική λογική και τις κρυφές σταθερές με αντιπροσωπευτικές τιμές (κλειδί API, ονόματα πινάκων, ονόματα πεδίων γενικά). Πρόβλημα: Λαμβάνω το σφάλμα Y στην είσοδο X. Απλώς βρείτε το λογικό σφάλμα σε αυτόν τον αντιπροσωπευτικό κώδικα και εξηγήστε τη διορθωμένη έκδοση. [αντιπροσωπευτικός κώδικας]"
Συμβουλή: Εάν έχετε αμφιβολίες, κάντε αυτό το τεστ: "Θα είχε πρόβλημα ο οργανισμός μου αν το έγραφα δημόσια σε ένα φόρουμ;" Ακόμα κι αν η απάντηση είναι ασαφής, ξεκαθαρίστε την πρώτα. Η επαναφορά είναι πάντα φθηνότερη από το να κυνηγήσετε τη διαρροή αργότερα.
Συνήθη λάθη
- Χρήση της εξόδου χωρίς μεταγλώττιση/δοκιμή. Το "AI έγραψε" δεν είναι δικαιολογία. Κάθε κομμάτι κώδικα επαληθεύεται εκτελώντας το.
- Υποβολή αιτημάτων χωρίς πλαίσιο. Εάν η γλώσσα, η έκδοση, η είσοδος-έξοδος και οι περιορισμοί δεν δίνονται, ο κώδικας γίνεται γενικός και συχνά ανασφαλής.
- Κοινή χρήση εμπιστευτικών πληροφοριών χωρίς σκέψη. Το κλειδί API, ο κωδικός πρόσβασης και τα δεδομένα πελατών δεν πρέπει να αποδεσμεύονται χωρίς να διαγραφούν.
- Συγχέοντας την ακριβή γλώσσα με την ακρίβεια. Όσο πιο σίγουρος μιλάει το AI, τόσο πιο προσεκτικός πρέπει να είστε. Ο σίγουρος τόνος δεν είναι απόδειξη.
- Ανάθεση της απόφασης στην ΑΙ. Η απόφαση για την παραγωγή, την ασφάλεια και την αρχιτεκτονική παραμένει στον μηχανικό. Το AI παράγει μόνο υλικά.
Συνοπτικά
Η τεχνητή νοημοσύνη επιταχύνει τα επαναλαμβανόμενα και χρονοβόρα μέρη της εργασίας λογισμικού: σκελετός κώδικας, σύνταξη δοκιμής, περιορισμός σφαλμάτων, τεκμηρίωση. Ωστόσο, η απόφαση και η ευθύνη παραμένει στον μηχανικό. Κάθε έξοδος πρέπει να περάσει από τρία επίπεδα ελέγχου (μεταγλώττιση/στατική, δοκιμή, πηγή). Η σύνταξη προτροπών με περιεχόμενο και η εκκαθάριση κρυφών πληροφοριών είναι δύο βασικές συνήθειες που θα επαναλάβουμε σε κάθε ενότητα αυτής της ενότητας. Όταν χρησιμοποιείτε την τεχνητή νοημοσύνη με πειθαρχία, κερδίζετε ταχύτητα. Όταν το χρησιμοποιείτε χωρίς πειθαρχία, μεταφέρετε λάθη και τρωτά σημεία στην παραγωγή.
Εργασία εφαρμογής
Επιλέξτε μια μικρή εργασία κωδικοποίησης από τη δική σας εργασία ή από ένα φανταστικό έργο (π.χ. μια συνάρτηση επικύρωσης). Πρώτα γράψτε μια αδύναμη προτροπή και λάβετε την έξοδο. Στη συνέχεια, εφαρμόστε το ισχυρό μοτίβο προτροπής από αυτήν τη μονάδα: προσθέστε γλώσσα/έκδοση, σύμβαση εισόδου-εξόδου, περιορισμούς και προσδοκία δοκιμής. Βάλτε τις δύο εκτυπώσεις δίπλα δίπλα και γράψτε τη διαφορά. Στη συνέχεια, μεταγλωττίστε το ισχυρό αποτέλεσμα και δοκιμάστε το με τουλάχιστον τρεις περιπτώσεις ακμών (μηδενική, μηδενική/αρνητική, απροσδόκητη μορφή) και σημειώστε τι βρίσκετε σε ποια δοκιμή.
λίστα ελέγχου
- [ ] Πρόσθεσα τη γλώσσα, την έκδοση και το συμβόλαιο εισόδου-εξόδου στο μήνυμα.
- [ ] Έγραψα "Μην το φτιάχνεις, πες μου αν δεν είσαι σίγουρος" και τον περιορισμό εύρους.
- [ ] Έκανα μεταγλώττιση/έτρεξα τον κώδικα, έλεγξα για στατικές προειδοποιήσεις.
- [ ] Δοκίμασα με τουλάχιστον τρεις θήκες άκρων.
- [ ] Έχω επαληθεύσει τα API που χρησιμοποιήθηκαν από την επίσημη τεκμηρίωση.
- [ ] Διέγραψα τυχόν μυστικό κωδικό/διαπιστευτήρια ή χρησιμοποίησα εταιρικό εργαλείο.
- [ ] Επιβεβαίωσα ότι η απόφαση για την παραγωγή και την ασφάλεια παραμένει στον άνθρωπο.