Μονάδα 2 / 12

Scripting και AutoComplete

Κέρδη:

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

Το πρώτο σημείο επαφής ενός προγραμματιστή με την τεχνητή νοημοσύνη είναι συχνά η αυτόματη συμπλήρωση - μια δυνατότητα που προτείνει την επόμενη γραμμή καθώς πληκτρολογείτε - ή λέγοντας "πληκτρολογήστε τη λειτουργία" σε ένα παράθυρο συνομιλίας. Και οι δύο χρησιμοποιούν τον ίδιο κινητήρα αλλά απαιτούν διαφορετικούς κλάδους. Σε αυτήν την ενότητα, μετατρέπουμε τη δημιουργία κώδικα από ένα τυχαίο «καταγράψτε το» σε ένα βήμα μηχανικής του οποίου η έξοδος είναι προβλέψιμη και επαληθεύσιμη.

Ο στόχος είναι να μετατρέψετε την τεχνητή νοημοσύνη από ένα εργαλείο που επιταχύνει τη δακτυλογραφική μηχανή σας σε έναν μαθητευόμενο που λειτουργεί εντός των περιορισμών που ορίζετε. Ένας καλά καθοδηγούμενος μαθητευόμενος εξοικονομεί χρόνο. Ένας μαθητευόμενος χωρίς καθοδήγηση δημιουργεί ένα χάος που πρέπει να καθαρίσετε αργότερα.

Δύο τρόποι χρήσης: Ενσωματωμένη ολοκλήρωση και συνομιλία

Η ενσωματωμένη ολοκλήρωση μπαίνει στο παιχνίδι καθώς πληκτρολογείτε στον επεξεργαστή σας. Πληκτρολογείτε μια υπογραφή συνάρτησης ή μια γραμμή σχολίου και σας προτείνει τα υπόλοιπα. Είναι εξαιρετικό για ταχύτητα, αλλά έχει ένα στενό πλαίσιο: βλέπει κώδικα μόνο στην άμεση περιοχή. Γι' αυτό λειτουργεί καλύτερα όταν γράφεις ξεκάθαρα την πρόθεσή σου σε ένα σχόλιο. Για παράδειγμα, το //validate email χρήστη, ρίχνει το ValidationError εάν μη έγκυρο σχόλιο βελτιώνει σημαντικά την παρακάτω πρόταση.

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

Συμβουλή: Μην αποδεχτείτε τυφλά την πρόταση ολοκλήρωσης με "Tab". Διαβάστε την προτεινόμενη γραμμή για ένα δευτερόλεπτο. Ένα λανθασμένο όνομα μεταβλητής ή μια ανεστραμμένη κατάσταση διαρρέει συνήθως από εδώ.

Βήματα για τη μετάφραση της πρόθεσης σε κώδικα

  1. Ορίστε τη σύμβαση. Ποια είναι η συμπεριφορά εισόδου, εξόδου και σφάλματος της συνάρτησης; Όπως "Λήψη email, κανονικοποίηση εάν είναι έγκυρο, ρίξε σφάλμα εάν δεν είναι έγκυρο".
  2. Δηλώστε τους περιορισμούς. Δεν χρησιμοποιείτε εξωτερική εξάρτηση; Ένας συγκεκριμένος οδηγός στυλ; Υπάρχει όριο απόδοσης;
  3. Δώστε ένα παράδειγμα. Ένα ζεύγος εισόδου-εξόδου ("ali@x.com → έγκυρο, ali@ → σφάλμα") μετακινεί την κατανόηση της πρόθεσης του μοντέλου από την πρόβλεψη στην ακρίβεια.
  4. Ζητήστε μικρά κομμάτια. Μία λειτουργία, μία ευθύνη. Στη συνέχεια, προχωρήστε στο επόμενο.
  5. Διαβάστε και εκτελέστε τον κώδικα που δημιουργήθηκε. Η μεταγλώττιση + μια γρήγορη μη αυτόματη προσπάθεια είναι το φθηνότερο βήμα διασφάλισης.

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

Περίπτωση 1 — Η παραγωγή που βασίζεται στα σχόλια αυξάνει την ακρίβεια. Ένας προγραμματιστής ζήτησε αρχικά μια συνάρτηση ανάλυσης ημερομηνιών με κενό σώμα και έλαβε το σωστό αποτέλεσμα σε 3 γύρους. Στη δεύτερη προσπάθεια, όταν όρισα τη συνάρτηση με ένα σχόλιο 4 γραμμών (αποδεκτές μορφές, κανόνας ζώνης ώρας, συνθήκη σφάλματος) και την ζήτησα, ήρθε ο κωδικός που λειτούργησε στον πρώτο γύρο. Ίδιο μοντέλο, ίδια μέρα. η διαφορά ήταν μόνο η σαφήνεια της πρόθεσης.

Περίπτωση 2 — Το να μην προσδιορίσετε μια έκδοση είναι ακριβό. Μια ομάδα δυσκολεύτηκε με το παλαιού τύπου API που βασίζεται σε επανάκληση που αντικαθιστά το fs.promises στον κώδικα που δημιουργήθηκε για το Node.js. Όταν η γραμμή "Χρήση κόμβου 20, ESM, async/wait" προστέθηκε στην προτροπή, η παραγωγή ακολούθησε το έργο την πρώτη φορά. Ο μέσος όρος των 12 λεπτών που δαπανήθηκαν για τη διόρθωση επαναφέρθηκε.

Περίπτωση 3 — Πραγματικό κέρδος στον κωδικό λέβητα. Μια μικρουπηρεσία απαιτούσε 6 νέα DTO (Data Transfer Object — μια απλή κλάση δεδομένων που μεταφέρει δεδομένα μεταξύ επιπέδων) και τους κανόνες επικύρωσής τους. Αυτό που ήταν περίπου 90 λεπτά χειρωνακτικής εργασίας μειώθηκε σε 35 λεπτά όταν παρήχθη και αναθεωρήθηκε από την τεχνητή νοημοσύνη. Δεδομένου ότι η επανάληψη κώδικα είναι υψηλή και το μοτίβο είναι σαφές, η τεχνητή νοημοσύνη λειτούργησε στον πιο αποτελεσματικό τομέα της εδώ.

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

Δημιουργία συναρτήσεων βάσει συμβάσεων:

Ρόλος: Είστε επιμελής προγραμματιστής {{language}}. Συμβόλαιο λειτουργίας:- Όνομα: {{όνομα}}- Είσοδος: {{τύποι και η σημασία τους}}- Έξοδος: {{τύπος και νόημα}}- Κατάσταση σφάλματος: {{what is thrown/returned when}}Περιορισμοί: {{χωρίς εξωτερικές εξαρτήσεις / styles /_} {{output_1}}- {{entry_2}} -> {{error_2}}Δώστε πρώτα υπογραφή + σύντομο σχέδιο και μετά κωδικό. Δοκιμές γραφής, απλώς λειτουργικότητα.

Για να ταιριάζει με το υπάρχον στυλ (προσαρμογή στη βάση κώδικα):

Παρακάτω είναι ένα παράδειγμα συνάρτησης από το έργο μας. Μάθετε την ονομασία, τη διαχείριση σφαλμάτων και το στυλ σχολιασμού εδώ. Γράψτε μια συνάρτηση για το {{new_task}} με το ΙΔΙΟ στυλ. Παράδειγμα: {{current_code}}

Από τον σκελετό στο γέμισμα (stub → υλοποίηση):

Συμπληρώστε τον παρακάτω σκελετό συναρτήσεων σύμφωνα με τους TODO στα σχόλια. ΑΛΛΑΞΤΕ την υπογραφή και τον τύπο επιστροφής. Μην κάνετε μια βοηθητική συνάρτηση που δεν υπάρχει. αν χρειαστεί, ενημερώστε με "αυτός ο βοηθός χρειάζεται". {{skelet_kod}}

Εναλλακτική σύγκριση εφαρμογών:

Δώστε 2 διαφορετικές υλοποιήσεις για το {{task}}: (α) ιεράρχηση της αναγνωσιμότητας, (β) ιεράρχηση της απόδοσης. Γράψτε 1 πρόταση "όταν είναι προτιμότερο" κάτω από κάθε μία.

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

Αδύναμο: "Γράψε μου μια λειτουργία επαλήθευσης email."
Ισχυρό: "TypeScript 5, μόνο τυπική βιβλιοθήκη. Γράψτε isValidEmail(εισαγωγή: συμβολοσειρά): boolean. Περικόψτε κενά, κάντε το χωρίς διάκριση πεζών-κεφαλαίων, το a@b.co είναι έγκυρο, το a@, @b.co, η κενή συμβολοσειρά δεν είναι έγκυρη. Εάν πρόκειται να χρησιμοποιήσετε regex, μην είστε υπερβολικά σύνθετες γραμμές σχολίων.

Ισχυρή έκδοση. Επιστρέφει τη γλώσσα, την έκδοση, την υπογραφή, τις θήκες και έναν περιορισμό στυλ. Έτσι, ο κώδικας που δημιουργείται λειτουργεί και ταιριάζει στο έργο σας.

Προσέγγιση

Πότε να χρησιμοποιείται

Προσοχή

Ενσωματωμένη ολοκλήρωση

Μικρά ένθετα στη ροή

Μην αποδεχτείτε την πρόταση χωρίς να τη διαβάσετε

Παραγωγή βάσει σύμβασης στο chat

Νέα λειτουργία/κλάση

Δώστε παράδειγμα και ακμή

Παραγωγή ανά δείγμα στυλ

Προσθήκη στον υπάρχοντα κώδικα

Επιλέξτε τρέχον δείγμα κώδικα

γέμιση σκελετού

Η υπογραφή σταθερή, το σώμα κενό

Αλλαγή υπογραφής

Διπλασιασμός κώδικα και παγίδα εξάρτησης

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

Προσοχή: Ελέγξτε τις γραμμές εισαγωγής που προτείνονται από την τεχνητή νοημοσύνη. Ένα ανύπαρκτο όνομα πακέτου (το οποίο μπορεί επίσης να μοιάζει με πλαστά πακέτα που ονομάζονται "τυποκατάληψη") τόσο σπάει τη συλλογή όσο και θέτει σε κίνδυνο την ασφάλεια.

Συνήθη λάθη

  • Έχοντας την υπογραφή που καθορίζεται από το μοντέλο. Εάν δεν διορθώσετε τους τύπους εισόδου/εξόδου, έρχεται διαφορετική υπογραφή με κάθε παραγωγή και η ενσωμάτωση γίνεται δύσκολη.
  • Για να μην αναφέρουμε τις ακραίες περιπτώσεις. Κενή είσοδος, μηδενικός, αρνητικός αριθμός, πολύ μεγάλη τιμή — αν δεν τα προσδιορίσετε, το μοντέλο γράφει το "ευτυχισμένο μονοπάτι", παρακάμπτοντας τις άκρες.
  • Συνδυάζοντας την πρόταση χωρίς να την δοκιμάσετε. Ο κώδικας που φαίνεται να λειτουργεί δεν σημαίνει ότι λειτουργεί.
  • Αποδοχή περιττής εξάρτησης. Η προσθήκη μιας ολόκληρης βιβλιοθήκης για ένα μονοθέσιο δημιουργεί τεχνικό χρέος.
  • Ασυνέπεια στυλ. Η διαφορετική ονομασία και ο χειρισμός σφαλμάτων από το υπόλοιπο έργο καθιστά τη βάση κώδικα ανομοιογενή.

Συνοπτικά

Η δημιουργία κώδικα είναι ισχυρή όταν μετατρέπετε την πρόθεση σε ένα ξεκάθαρο συμβόλαιο. Χρησιμοποιήστε την ενσωματωμένη ολοκλήρωση για μικρές εργασίες σε ροή και για εργασίες που δημιουργούν δομή στη συνομιλία. Καθορίζετε τύπους εισόδου/εξόδου, περιβλήματα άκρων, έκδοση και στυλ. Δώστε ένα παράδειγμα του μοντέλου. επαληθεύστε κάθε νέα εξάρτηση. και τρέξτε και διαβάστε κάθε κομμάτι που παράγεται. Η τεχνητή νοημοσύνη αποδίδει καλύτερα σε τυπικό, επαναλαμβανόμενο κώδικα — εκτελέστε το ακριβώς εκεί, εντός των ορίων που έχετε ορίσει.

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

Επιλέξτε μια πραγματική μικρή συνάρτηση από το έργο σας που πρέπει να γράψετε. Πρώτα εκτυπώστε το στο AI με το πρότυπο «δημιουργία λειτουργιών βάσει συμβάσεων», δίνοντας τύπους εισόδου/εξόδου, δύο περιβλήματα άκρων και έναν περιορισμό στυλ. Μεταγλωττίστε τον κώδικα που δημιουργήθηκε και δοκιμάστε τον με δύο διαφορετικές εισόδους. Στη συνέχεια, ρωτήστε ξανά την ίδια συνάρτηση, αυτή τη φορά "γράψτε μου αυτό" χωρίς κανένα πλαίσιο, και συγκρίνετε τις δύο εξόδους γραμμή προς γραμμή: ποιες περιπτώσεις άκρων χάθηκαν, πόσες διορθώσεις απαιτήθηκαν;

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

  • [ ] Ξέρω πού να χρησιμοποιήσω τη λειτουργία συνομιλίας με ενσωματωμένη ολοκλήρωση.
  • [ ] Καθορίζω το συμβόλαιο εισόδου/εξόδου και τις περιπτώσεις ακμών στη δημιουργία συναρτήσεων.
  • [ ] Έχω κάνει συνήθεια να προσθέτω πληροφορίες γλώσσας και έκδοσης στο μήνυμα.
  • [ ] Μεταγλωττίζω και δοκιμάζω κάθε παραγόμενο κομμάτι πριν το συναρμολογήσω.
  • [ ] Επιβεβαιώνω κάθε νέα εξάρτηση που προτείνει η AI, επαληθεύοντας την ύπαρξη και την αναγκαιότητά της.
  • [ ] Ελέγχω ότι ο κώδικας που δημιουργείται ταιριάζει με το στυλ του έργου.