Μονάδα 1 / 12

Τεχνητή νοημοσύνη για ομάδες λογισμικού: μοντέλο εργασίας και όρια

Κέρδη:

  • Ικανότητα να εξηγήσει πώς λειτουργεί ένας βοηθός κωδικοποίησης ως μοντέλο γλώσσας και τις έννοιες του διακριτικού, του παραθύρου περιβάλλοντος, της ψευδαίσθησης
  • Δυνατότητα διάκρισης εργασιών λογισμικού όπου η τεχνητή νοημοσύνη είναι ισχυρή και αδύναμη με έναν νοητικό χάρτη
  • Δυνατότητα εφαρμογής του βασικού κύκλου εργασίας πρότασης-παραγωγής-επαλήθευσης στα δικά τους καθήκοντα

Η μέρα ενός προγραμματιστή λογισμικού σπάνια ξοδεύεται «γράφοντας κώδικα από την αρχή». Πραγματικός χρόνος; Ανάγνωση του κώδικα που έγραψε κάποιος άλλος, προσπάθεια αναπαραγωγής ενός σφάλματος, σάρωση του αρχείου καταγραφής (γραμμές καταγραφής που παράγονται από την εφαρμογή κατά την εκτέλεση), σύνταξη δοκιμών, σύνταξη PR (αίτημα έλξης - αίτημα συγχώνευσης όπου υποβάλλεται αλλαγή κώδικα για έλεγχο ομάδας) επεξήγηση και ενημέρωση της τεκμηρίωσης. Η τεχνητή νοημοσύνη (AI) είναι ένας πολλαπλασιαστής ταχύτητας που μπορεί να αγγίξει σχεδόν όλες αυτές τις αόρατες εργασίες. Αλλά η πρώτη προϋπόθεση για να το χρησιμοποιήσετε με ασφάλεια είναι να κατανοήσετε σωστά τι είναι και τι δεν είναι.

Σε αυτή την ενότητα, εξηγούμε πρώτα την υποκείμενη τεχνολογία ενός βοηθού κωδικοποίησης σε απλή γλώσσα. Στη συνέχεια, δημιουργούμε έναν νοητικό χάρτη των δυνατών και αδυναμιών του μοντέλου. Τέλος, καθιερώνουμε τη βασική πειθαρχία εργασίας που θα χρησιμοποιήσουμε σε ολόκληρη την ενότητα: πρόταση, παραγωγή, επαλήθευση. Αυτά τα τρία βήματα είναι η ραχοκοκαλιά των επόμενων έντεκα μονάδων.

Σημείωση: Αυτή η ενότητα είναι μια γενική εκπαίδευση. Σε λογισμικό κρίσιμο για την ασφάλεια (επεξεργασία πληρωμών, υγειονομική περίθαλψη, έλεγχος ταυτότητας, κρίσιμες υποδομές) η έξοδος AI δεν υποκαθιστά την εξέταση και την έγκριση από ειδικευμένο μηχανικό. Το AI είναι βοηθός. Ο υπογράφων είναι ο μηχανικός.

Τι κάνει πραγματικά ένας βοηθός κωδικοποίησης;

Οι περισσότεροι βοηθοί κωδικοποίησης είναι χτισμένοι σε ένα μεγάλο μοντέλο γλώσσας (LLM—μια τεχνητή νοημοσύνη που εκπαιδεύεται σε τεράστιες ποσότητες κειμένου και κώδικα που προβλέπει το επόμενο πιο πιθανό «κομμάτι»). Το μοντέλο δεν «καταλαβαίνει» τον κώδικα σαν άνθρωπος. Δημιουργεί την πιο πιθανή συνέχεια του περιβάλλοντος που του δίνετε, με βάση τα μοτίβα που μαθαίνει από μια τεράστια δεξαμενή παραδειγμάτων. Αυτός ο φαινομενικά απλός μηχανισμός αποδίδει εκπληκτικά καλά αποτελέσματα στην πράξη — επειδή το μεγαλύτερο μέρος του λογισμικού αποτελείται από επαναλαμβανόμενα μοτίβα: ένα αίτημα HTTP, έναν βρόχο, έναν μηδενικό έλεγχο, ένα δοκιμαστικό μοτίβο.

Τρεις όροι είναι κρίσιμοι εδώ. Token είναι η μικρότερη μονάδα που επεξεργάζεται το μοντέλο διαιρώντας το κείμενο. Είναι περίπου λίγα γράμματα ή μέρος μιας λέξης. Το παράθυρο περιβάλλοντος είναι η ποσότητα των διακριτικών που μπορεί να «δει» ταυτόχρονα το μοντέλο. Ο κωδικός, το μήνυμα σφάλματος και η οδηγία πρέπει να χωρούν σε αυτό το παράθυρο. Μια προτροπή είναι όλες οι οδηγίες και το πλαίσιο που δίνετε στο μοντέλο. Η ποιότητα του αποτελέσματος που λαμβάνετε εξαρτάται άμεσα από αυτά τα δύο: όσο καλύτερο πλαίσιο και σαφέστερες οδηγίες δίνετε στο μοντέλο, τόσο καλύτερο αποτέλεσμα θα έχετε. Η κακή είσοδος παράγει κακό αποτέλεσμα, ακόμα κι αν είναι ένα έξυπνο μοντέλο — ο κλασικός κανόνας λογισμικού "σκουπίδια μέσα, σκουπίδια έξω" ισχύει και για την τεχνητή νοημοσύνη.

Χάρτης δυνατών και αδυναμιών

Για να κατευθύνετε την τεχνητή νοημοσύνη στις σωστές δουλειές, είναι απαραίτητο να γνωρίζετε πού λάμπει και πού σκοντάφτει. Η απομνημόνευση αυτού του χάρτη θα σας κάνει να αναρωτιέστε με κάθε επόμενη αποστολή, "Πρέπει να αναθέσω αυτήν τη δουλειά στο AI ή να την κάνω μόνος μου;" Σας επιτρέπει να απαντήσετε στην ερώτηση σε δευτερόλεπτα.

Τα δυνατά του σημεία είναι: Δημιουργία κώδικα boilerplate, μετάφραση από μια γλώσσα σε άλλη, σύνταξη κανονικής έκφρασης (regex), περιγραφή συνάρτησης, δημιουργία δοκιμαστικού σκελετού, ερμηνεία μηνύματος σφάλματος, σύνταξη τεκμηρίωσης, πρόταση ονομάτων μεταβλητών/συναρτήσεων και μικρές ανακατασκευές (βελτίωση της δομής του κώδικα χωρίς αλλαγή της συμπεριφοράς του).

Αδυναμίες: Γνωρίζοντας τους επιχειρηματικούς κανόνες της εταιρείας σας, απομνημόνευση ολόκληρης της βάσης του κώδικα, εκτέλεση και επαλήθευση του κώδικα, γνωρίζοντας με βεβαιότητα τις πιο πρόσφατες εκδόσεις της βιβλιοθήκης, ανίχνευση τρωτών σημείων ασφαλείας με εκατό τοις εκατό εγγύηση. Το πιο επικίνδυνο πράγμα είναι η ψευδαίσθηση: το μοντέλο επινοεί μια ανύπαρκτη λειτουργία, βιβλιοθήκη ή API (διεπαφή που επιτρέπει την ανταλλαγή δεδομένων μεταξύ εφαρμογών) σε μια πολύ πειστική γλώσσα. Αυτός ο κίνδυνος μπορεί πραγματικά να μετατραπεί προς όφελός σας, καθώς ο κώδικας, σε αντίθεση με το απλό κείμενο, μπορεί να ελεγχθεί για να διαπιστωθεί εάν «δουλεύει» — απλώς μην παραλείψετε το βήμα επαλήθευσης.

Τύπος αποστολής

Ο ρόλος του AI

ο ρόλος του ανθρώπου

Κατασκευάστε boilerplate/σκελετό

παράγει βύθισμα

Προσαρμόζει, αξιολογεί

Περιγραφή κώδικα

Δίνει μια γρήγορη περίληψη

Επαληθεύει το κρίσιμο μέρος του κώδικα

γραπτά τεστ

Η υπόθεση προτείνει

Επιβεβαιώνει την κάλυψη και την ακρίβεια

Ασφάλεια-κρίσιμη λογική

χρήσιμη ιδέα

Η απόφαση και η ευθύνη ανήκουν αποκλειστικά στους ανθρώπους.

Χρήση API/βιβλιοθήκης

Δημιουργεί δείγμα

Επαληθεύει την ύπαρξη και την έκδοση

αρχιτεκτονική απόφαση

Είδη επιλογών

Επιλέγει και υπερασπίζεται γνωρίζοντας το πλαίσιο

Βήμα προς βήμα: Βασικός κύκλος εργασίας

  1. Αποσαφηνίστε την εργασία. Αν δεν μπορείτε να γράψετε αυτό που θέλετε σε μια πρόταση, ούτε το μοντέλο μπορεί. Όσο νωρίτερα εισχωρεί η αβεβαιότητα στην είσοδο, τόσο μεγαλύτερη αυξάνεται στην έξοδο.
  2. Δώστε πλαίσιο. Προσθέστε τον σχετικό κωδικό, το πλήρες μήνυμα σφάλματος, την έκδοση γλώσσας/πλαισίου και περιορισμούς στην προτροπή. Μην πείτε "διορθώστε αυτό", πείτε "Python 3.11, FastAPI 0.110. Αυτή η συνάρτηση δίνει ένα σφάλμα 500, εκρήγνυται όταν το σώμα του αιτήματος είναι κενό".
  3. Ρόλος και μορφή επιβολής. Ένα πλαίσιο όπως "Είστε ανώτερος προγραμματιστής της Go; απλά δώστε τον κώδικα και μια λογική με δύο προτάσεις" εστιάζει στην έξοδο.
  4. Ζητήστε μικρό. Αναλύστε το σε βήματα αντί για ένα τεράστιο αίτημα. Επαληθεύστε κάθε βήμα ξεχωριστά. Οι μεγάλες αλλαγές είναι επικίνδυνες επειδή είναι δύσκολο να επαληθευτούν και είναι επιρρεπείς στην απόκρυψη σφαλμάτων.
  5. Επαληθεύω. Εκτελέστε το, δοκιμάστε το, διαβάστε το οπτικά. Ο μη επαληθευμένος κώδικας AI είναι "σκίτσο", όχι "λύση". Αυτό είναι το πιο αδιαπραγμάτευτο βήμα του κύκλου.

Τρεις Μίνι Θήκες

Περίπτωση 1 — Η εξοικονόμηση χρόνου είναι πραγματική αλλά μέτρια. Όταν μια ομάδα σκελετοποίησε νέα τελικά σημεία CRUD (Δημιουργία-Ανάγνωση-Ενημέρωση-Διαγραφή) με AI, ο χρόνος του πρώτου σχεδίου μειώθηκε από περίπου 40 λεπτά σε 8 λεπτά. Ωστόσο, με την επανεξέταση και τη δοκιμή, ο συνολικός χρόνος ήταν 25 λεπτά. οπότε το πραγματικό κέρδος είναι από 40 έως 25, περίπου 38%. Αυτός ο ρυθμός, μετρημένος αντί για την προσδοκία «έχουμε επιταχυνθεί 10 φορές», είναι ένα βιώσιμο κέρδος.

Περίπτωση 2 — Η ψευδαίσθηση είναι δαπανηρή. Ένας προγραμματιστής χρησιμοποίησε την κλήση requests.get_json() που προτείνει το AI χωρίς επικύρωση. Δεν υπήρχε τέτοια μέθοδος (ακριβώς answer.json()). Χάθηκαν 20 λεπτά όταν ο κώδικας δεν μεταγλωττίστηκε. Ένα απλό "υπάρχει πραγματικά αυτή η μέθοδος;" η επαλήθευση θα επαναφέρει την απώλεια.

Περίπτωση 3 — Το καλό πλαίσιο διπλασιάζει την έξοδο. Για το ίδιο σφάλμα, ένας προγραμματιστής έγραψε απλώς "Λαμβάνω ένα σφάλμα" και ο άλλος πρόσθεσε το πλήρες ίχνος στοίβας, την έκδοση και το δείγμα εισόδου. Το τελευταίο πήρε τη σωστή λύση με την πρώτη προσπάθεια. Ο πρώτος πέρασε τρεις στροφές. Η διαφορά δεν ήταν στο μοντέλο, αλλά στην είσοδο.

Τέσσερα αντιγράψιμα πρότυπα

Μια ισχυρή προτροπή εκκίνησης γενικής χρήσης:

Ρόλος: Είστε έμπειρος προγραμματιστής {{language}}. Εργασία: {{what_want}}Πλαίσιο:- Πλαίσιο/έκδοση: {{framework_and_version}}- Περιορισμοί: {{κανόνες απόδοσης, στυλ, εξάρτησης}}Κανόνες:- Μην χρησιμοποιείτε ανύπαρκτη βιβλιοθήκη/λειτουργία. Εάν δεν είστε σίγουροι, σημειώστε το ως "επαλήθευση". - Πρώτα, δώστε ένα σύντομο σχέδιο, μετά τον κωδικό και μετά 2 προτάσεις αιτιολόγησης. - Παραγωγή κώδικα που λειτουργεί με δυνατότητα δοκιμής.

Για να φιλτράρετε ξανά την αβεβαιότητα στο μοντέλο:

Πριν λύσετε την παρακάτω εργασία, αναφέρετε ΤΟΥΛΑΧΙΣΤΟΝ 3 σημεία που θεωρείτε ότι λείπουν ή είναι ασαφή ως ερωτήσεις. ΜΗΝ γράψετε κώδικα πριν απαντήσω. Εργασία: {{εργασία}}

Για να γίνει αυτοέλεγχος της εξόδου:

Έχετε δημιουργήσει τον ακόλουθο κώδικα. Αλλάξτε τώρα τον ρόλο σας και ασκήστε κριτική σε αυτόν τον κώδικα: - Καταγράψτε 3 περιπτώσεις (περιπτώσεις άκρων) που μπορεί να μην λειτουργούν.- Υπάρχουν κάποια API/λειτουργίες που θα μπορούσατε να δημιουργήσετε; Σημείωση.- Δώστε τη διορθωμένη έκδοση.Κωδικός:{{code}}

Για να αναλύσετε μια απόφαση σε επιλογές:

Προτείνετε 2-3 προσεγγίσεις λύσης για το {{πρόβλημα}}. Για καθένα: σύντομη περιγραφή, συν/πλην, πότε να επιλέξετε. Δώστε σε μορφή πίνακα. ΜΗΝ επιλέγεις για μένα. απλά διευκρίνισε την επιλογή.

Αδύναμη προτροπή / Ισχυρή προτροπή

Αδύναμο: "Διόρθωση του σφάλματος σε αυτόν τον κώδικα." (Ποιο σφάλμα; Ποια γλώσσα; Ποια είναι η αναμενόμενη συμπεριφορά;)
Ισχυρό: "Python 3.11 / FastAPI 0.110. Το ακόλουθο τελικό σημείο επιστρέφει 500 με KeyError όταν το σώμα του αιτήματος είναι κενό. Θέλω να επιστρέψει 400 και ουσιαστικό μήνυμα σε κενό σώμα. Αρχικά εξηγήστε τον λόγο, μετά δώστε τη διορθωμένη συνάρτηση και μετά γράψτε μια δοκιμή για αυτό το σενάριο. [κωδικός]."

Ισχυρή έκδοση. Δίνει τη γλώσσα, την έκδοση, το πραγματικό σφάλμα, την αναμενόμενη συμπεριφορά και τη μορφή εξόδου. Το μοντέλο δεν χρειάζεται πλέον να προβλέπει.

Συνήθη λάθη

  • Εμπιστοσύνη χωρίς επαλήθευση. Το πιο συνηθισμένο και πιο ακριβό λάθος. Μην πείτε "λύθηκε" μέχρι να μεταγλωττιστεί και να δοκιμαστεί ο κώδικας.
  • Θέτοντας ερωτήσεις χωρίς πλαίσιο. Η απάντηση χωρίς έκδοση, κείμενο σφάλματος και περιορισμούς είναι γενική και συχνά λανθασμένη.
  • Ένα τεράστιο αίτημα. Το να μην μπορείτε να ζητήσετε και να ελέγξετε μια παραγωγή 300 γραμμών ταυτόχρονα κάνει τα λάθη αόρατα.
  • Παρεξηγώντας την αυτοπεποίθηση του μοντέλου ως απόδειξη. Το AI μπορεί με σιγουριά να πει κάτι λάθος. Ο τόνος δεν είναι δείκτης ακρίβειας.
  • Τυχαία επικόλληση του εταιρικού μυστικού. Τα ιδιωτικά κλειδιά, τα δεδομένα πελατών ή ο ιδιωτικός πηγαίος κώδικας δεν πρέπει να εισάγονται σε μη εγκεκριμένα εργαλεία (θα εμβαθύνουμε σε αυτό το θέμα στην ενότητα 10).
Συμβουλή: Αντιμετωπίστε κάθε έξοδο τεχνητής νοημοσύνης ως "αυτό είναι ένα προσχέδιο". Αυτή η μοναδική νοητική συνήθεια εξαλείφει τους περισσότερους από τους κινδύνους που θα δείτε σε όλη την ενότητα.

Συνοπτικά

Ένας βοηθός κωδικοποίησης είναι ένα μοντέλο γλώσσας που προβλέπει το επόμενο πιο πιθανό τμήμα. Δεν καταλαβαίνει τον κώδικα, παράγει μοτίβα. Γι' αυτό είναι δυνατός σε επαναλαμβανόμενες, τυποποιημένες δουλειές. Θα πρέπει να χρησιμοποιείται με προσοχή για εργασίες που απαιτούν επαλήθευση που είναι συγκεκριμένη για το περιβάλλον σας. Ο μεγαλύτερος κίνδυνος είναι η ψευδαίσθηση και το μόνο αντίδοτο είναι η επαλήθευση. Η πειθαρχία που θα ακολουθήσουμε σε ολόκληρη την ενότητα είναι σαφής: αποσαφηνίστε την εργασία, δώστε το πλαίσιο, ζητήστε μικρά, επικυρώστε κάθε παραδοτέο.

Εργασία εφαρμογής

Καταγράψτε τρεις εργασίες λογισμικού που κάνατε την τελευταία εβδομάδα (π.χ. μια διόρθωση σφαλμάτων, μια δοκιμή, μια ενημέρωση README). Κοιτάξτε τον "χάρτη δυνατών και αδυναμιών" για το καθένα και περιγράψτε με μία πρόταση ποιος θα ήταν ο ρόλος σας και του AI εάν είχατε το AI να το κάνει αυτό. Στη συνέχεια, δώστε μία από αυτές τις εργασίες στο AI με το πρότυπο "start prompt" παραπάνω και εκτελέστε και επαληθεύστε την έξοδο. Σημειώστε πόσα λεπτά εξοικονομήσατε και πόσα λάθη έπρεπε να διορθώσετε.

λίστα ελέγχου

  • [ ] Συνειδητοποίησα ότι το LLM παράγει μοτίβα, όχι "καταλαβαίνει" κώδικα.
  • [ ] Μπορώ να εξηγήσω τις έννοιες του token, του παραθύρου περιβάλλοντος και της προτροπής σε μία πρόταση.
  • [ ] Μπορώ να διακρίνω τους τύπους εργασιών όπου η τεχνητή νοημοσύνη είναι ισχυρή και αδύναμη.
  • [ ] Ξέρω τι είναι η παραίσθηση και το μόνο αντίδοτο είναι η επαλήθευση.
  • [ ] Προσάρμοσα τον κύκλο "πρόταση, παραγωγή, επαλήθευση" στη δική μου εργασία.
  • [ ] Μπορώ να δείξω τη διαφορά μεταξύ μιας ισχυρής προτροπής και μιας αδύναμης προτροπής σε ένα συγκεκριμένο παράδειγμα.