Treffen Sie unser Team in San Diego, USA, von Dienstag, 23., bis Donnerstag, 25. April, bei XPONENTIAL, Stand 4700

Aktualisierung (21 / 04 / 2024): Wir haben alle unsere Produkte auf Lager, finden Sie uns auch in und    Jetzt shoppen

Treffen Sie unser Team in San Diego, USA, von Dienstag, 23., bis Donnerstag, 25. April, bei XPONENTIAL, Stand 4700

Verwenden Sie Copilot, um einen KI-Code zu generieren

'Jede ausreichend fortgeschrittene Technologie ist von Magie nicht zu unterscheiden.' Arthur C. Clarke

Im Neurales SBC-Netzwerk Post sahen wir ein 1k-Gewichtungsnetzwerk, das mit 10k-Samples trainiert wurde, um die Sinusfunktion anzunähern. In diesem Beitrag verwenden wir ein 175-G-Gewicht, das mit 450-G-Proben trainiert wurde und besser programmieren kann als der durchschnittliche Programmierer. Die Größe dieser Modelle ist beeindruckend, aber eigentlich weiß niemand wirklich, wie sie funktionieren oder wo ihre Grenzen liegen.

GitHub Copilot ist ein KI-Tool, das die Softwareentwicklung beschleunigt und es dem Programmierer ermöglicht, viele Dinge zu tun, die zuvor unmöglich waren. Zunächst scheint es ähnlich zu sein, StackOverflow zu verwenden, eine Website, auf der Programmierer Fragen senden, wenn sie nicht wissen, wie sie etwas tun sollen, aber Copilot geht viel weiter, es ist in der Lage, eine neue Antwort für unser Problem zu synthetisieren.

Copilot ist in einem Microsoft Visual Studio Code enthalten und schlägt in Grau fortlaufend Codes vor, die Sie durch Drücken der Tab-Taste übernehmen können. Dieser vorgeschlagene Code kann grob als die „häufigste“ Übereinstimmung zwischen Ihrer Abfrage (Ihrem Code) und dem Trainingsdatensatz (GitHub-Code) definiert werden.

Beispiel 1

In diesem Beispiel definieren wir unsere Funktion und ihren Docstring und bitten Copilot um Vervollständigung. Wie wir sehen, entspricht die Vervollständigung dem Docstring. Die erste Intuition ist, dass Copilot als Suchmaschine fungiert und Ihre Suchanfrage einfach mit seinem Trainingsdatensatz (150 GB Open-Source-Projekte) abgleicht, aber so funktioniert es nicht.

Beispiel 2

Hier erstellen wir eine zufällige/verrückte Zeichenfolge, die nicht im Trainingssatz enthalten sein kann. Das Ergebnis sieht immer noch so aus, als wäre es die kohärenteste Lösung, die bereitgestellt werden kann, in diesem Fall: die Summe der Eingabeparameter.

Beispiel 3

In diesem Beispiel fragen wir (auf Spanisch) nach der Summe der Schnittfläche zweier Kreise mit gegebenem Mittelpunkt und Radius. Copilot versteht den spanischen Text ohne Probleme und schlägt den Funktionsnamen, die Parameter und den gesamten Funktionskörper vor. Nach einer kurzen Überprüfung sieht es so aus, als ob der Code funktionieren sollte.

Beispiel 4

Nun erstellen wir einen hypothetischen Frage/Antwort-Text. Dadurch ordnet Copilot die Abfrage einigen Untersuchungen zu, die sich in diesem Trainingsdatensatz befinden können. Wir fragen einfach nach der Hauptstadt von Spanien und Copilot generiert die richtige Antwort.

Beispiel 5

Wenn wir jedoch nach einem nicht existierenden Land fragen, gibt Copilot auch seine beste Antwort, die auch „richtig“ aussieht.

Beispiel 6

In diesem Beispiel kehren wir den Prozess um, wir geben die Antwort, um zu versuchen, die Frage zu generieren. Copilot generiert eine Frage, die wir nicht erwartet haben. Wir erwarteten 'Was ist die Hauptstadt von Frankreich?' und Copilot fragte: "Was ist das Ergebnis des folgenden Codes?" aber dennoch können wir einen richtigen Vorschlag verstehen.

Beispiel 7

Hier zwingen wir Copilot, nachzufragen, was wir in eine gebräuchlichere Sprache ändern und den Anfangsbuchstaben hinzufügen möchten. Es erzeugt jedoch eine andere Frage, diesmal völlig falsch und in keiner Beziehung zur Antwort.

Zusammenfassend, Copilot:

  • Erstellt einen Vorschlag basierend auf der gängigsten Lösung.
  • Stimmt meist einfach, wenn deine Abfrage Sinn macht.
  • Ist normalerweise falsch, wenn Ihre Abfrage wie ein allgemeines Problem aussieht, es aber nicht ist und eigentlich ein ganz anderes Ziel hat.

Copilot mit Open-Source-Bibliotheken

Copilot wurde mit Open-Source-Projekten geschult. Es enthält Millionen von Anwendungsfällen jeder Open-Source-Bibliothek wie numpy, opencv, qt … Das macht Copilot wirklich nützlich, weil es dem Programmierer mit dem häufigsten Vorschlag hilft, der normalerweise der beste ist.

Beispiel 8

In diesem Beispiel verwenden wir die Gerätetest Python-Modul, und Copilot weiß, dass das unittest.TestCase hat eine Methode namens behauptenGleich und weiß das auch foo( 1, 2 ) sollte 3 sein.

Beispiel 9

Oben erstellen wir eine komplexere foo Funktion (von der wir annehmen, dass sie nicht in den Trainingsdaten enthalten sein kann), um zu sehen, ob Copilot den Code wirklich versteht. Nachdem der Code mit 17 Testfällen ausgeführt wurde, sind nur 6 fehlgeschlagen, was eine Erfolgsquote von 65 % ergibt.

Es scheint nicht viel zu sein, aber denken Sie daran, dass Copilot kein Python-Interpreter ist, es hat die Funktion nicht ausgeführt, um seine Ausgabe zu erhalten … Copilot hat das, was während des Trainings gelernt wurde, verwendet, um unsere Abfrage in die Ausgabe zu konvertieren, die eine perfekte Python-Syntax und hat funktioniert auch gut 65% der Zeit.

Beispiel 10

Man könnte erwarten, dass ein langer Eingabetext dazu führt, dass Copilot fehlschlägt, aber das ist nicht der Fall, je mehr Informationen wir geben, desto bessere Antworten kann Copilot generieren.

Im obigen Beispiel bitten wir um eine komplexe Aufgabe, ein vollständiges Programm, für dessen Lösung verschiedene Kenntnisse erforderlich sind, wie z.

Der vollständige Hinweis wird in der nächsten Zelle angezeigt. Beachten Sie, dass es sehr gut zur Programmbeschreibung passt. Die Anwendungsklasse macht Sinn, und sogar die Micropython-Bibliotheken (PIN, UART, ADC, PIN.irq…) werden korrekt verwendet. Es ist nicht 100% perfekt, zum Beispiel in diesem Fall temp_senor ist ein ADC-Objekt, das nicht vorhanden ist temp_sensor.init() Methode, und andere kleine Fehler können generiert werden, aber die gesamte Struktur des Programms ist definitiv korrekt und die kleinen Fehler können leicht behoben werden.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
importieren Zeit
importieren Maschine

Klasse Anwendung:
    def __init__(selbst):
        selbst.Taste im nun erscheinenden Bestätigungsfenster nun wieder los. = Maschine.Stift(0Maschine.Pin.IM)
        selbst.Temperatursensor = Maschine.ADC (Maschine.Stift(1))
        selbst.uart = Maschine.UART(1, 115200)
        selbst.uart.drin(115200, Bits=8, Parität=Andere, Stopp=1)
        selbst.letzte Veranstaltung = 0
        selbst.last_temp = 0
        selbst.letztes Mal = 0
        selbst.Taste im nun erscheinenden Bestätigungsfenster nun wieder los..IRQ (Auslöser=Maschine.Pin.IRQ_FALLING, Handler=selbst.Knopf_gedrückt)
        selbst.Taste im nun erscheinenden Bestätigungsfenster nun wieder los..IRQ (Auslöser=Maschine.Pin.IRQ_RISING, Handler=selbst.button_released)
        selbst.Temperatursensor.drin()

    def Knopf_gedrückt(selbst, Stift):
        selbst.letzte Veranstaltung = 1
        selbst.letztes Mal = Zeit.ticks_ms()
        selbst.uart.schreiben (b'{},{},{}\n'.Format(selbst.letztes Mal, selbst.letzte Veranstaltung, selbst.last_temp))

    def button_released(selbst, Stift):
        selbst.letzte Veranstaltung = 0
        selbst.letztes Mal = Zeit.ticks_ms()
        selbst.uart.schreiben (b'{},{},{}\n'.Format(selbst.letztes Mal, selbst.letzte Veranstaltung, selbst.last_temp))

    def read_temp(selbst):
        selbst.last_temp = selbst.Temperatursensor.lesen()
        selbst.uart.schreiben (b'{},{},{}\n'.Format(selbst.letztes Mal, selbst.letzte Veranstaltung, selbst.last_temp))
    
    def Lauf(selbst):
        während Wahre:
            selbst.read_temp() Zeit.schlafen(0.1)

Beispiel 11

Schließlich verwenden wir im folgenden Beispiel Copilot, um die Kommentare zum vorherigen Code hinzuzufügen. Wir kopieren die Klasse zweimal und fügen Copilot eine Anleitung wie „Docstring-Version der obigen Klasse“ hinzu. Copilot generiert die Klasse und Kommentare für jede Zeile.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# Docstring-Version der obigen Klasse
Klasse Anwendung:
    """ Knapp:
        Dies ist eine einfache Anwendung, die den Temperatursensor liest und die Daten an den UART sendet.
        Die Daten werden im Format gesendet:
        Zeit, Ereignis, Temp
        Die Zeit ist die Zeit in Millisekunden seit dem Start der Anwendung.
        Das Ereignis ist 1, wenn die Taste gedrückt wird, und 0, wenn die Taste losgelassen wird.
        Die Temperatur ist die Temperatur in Grad Celsius.
    "" "
    def __init__(selbst):
        # Erstellen Sie ein Schaltflächenobjekt
        selbst.Taste im nun erscheinenden Bestätigungsfenster nun wieder los. = Maschine.Stift(0Maschine.Pin.IM)
        # Erstellen Sie ein Temperatursensorobjekt
        selbst.Temperatursensor = Maschine.ADC (Maschine.Stift(1))
        # Erstellen Sie ein UART-Objekt
        selbst.uart = Maschine.UART(1, 115200)
        # Initialisieren Sie das UART-Objekt
        selbst.uart.drin(115200, Bits=8, Parität=Andere, Stopp=1)
        # Erstellen Sie eine Variable, um das letzte Ereignis zu speichern
        selbst.letzte Veranstaltung = 0
        # Erstellen Sie eine Variable, um die letzte Temperatur zu speichern
        selbst.last_temp = 0
        # Erstellen Sie eine Variable, um das letzte Mal zu speichern
        selbst.letztes Mal = 0
        # Registrieren Sie den Ereignishandler für gedrückte Schaltflächen
        selbst.Taste im nun erscheinenden Bestätigungsfenster nun wieder los..IRQ (Auslöser=Maschine.Pin.IRQ_FALLING, Handler=selbst.Knopf_gedrückt)
        # Registrieren Sie den Ereignishandler für die Schaltfläche freigegeben
        selbst.Taste im nun erscheinenden Bestätigungsfenster nun wieder los..IRQ (Auslöser=Maschine.Pin.IRQ_RISING, Handler=selbst.button_released)
        # Den Temperatursensor initialisieren
        selbst.Temperatursensor.drin()

    def Knopf_gedrückt(selbst, Stift):
        # Setzen Sie das letzte Ereignis auf 1
        selbst.letzte Veranstaltung = 1
        # Setzen Sie die letzte Zeit auf die aktuelle Zeit
        selbst.letztes Mal = Zeit.ticks_ms()
        # Senden Sie die letzte Zeit, das letzte Ereignis und die letzte Temperatur an den UART
        selbst.uart.schreiben (b'{},{},{}\n'.Format(selbst.letztes Mal, selbst.letzte Veranstaltung, selbst.last_temp))

    def button_released(selbst, Stift):
        # Setzen Sie das letzte Ereignis auf 0
        selbst.letzte Veranstaltung = 0
        # Setzen Sie die letzte Zeit auf die aktuelle Zeit
        selbst.letztes Mal = Zeit.ticks_ms()
        # Senden Sie die letzte Zeit, das letzte Ereignis und die letzte Temperatur an den UART
        selbst.uart.schreiben (b'{},{},{}\n'.Format(selbst.letztes Mal, selbst.letzte Veranstaltung, selbst.last_temp))

    def read_temp(selbst):
        # Stellen Sie die letzte Temperatur auf die aktuelle Temperatur ein
        selbst.last_temp = selbst.Temperatursensor.lesen()
        # Senden Sie die letzte Zeit, das letzte Ereignis und die letzte Temperatur an den UART
        selbst.uart.schreiben (b'{},{},{}\n'.Format(selbst.letztes Mal, selbst.letzte Veranstaltung, selbst.last_temp))
    
    def Lauf(selbst):
        während Wahre:
            # Lesen Sie die Temperatur ab
            selbst.read_temp()
            # 0.1 Sekunden warten
            Zeit.schlafen(0.1)

Wenn Ihnen dieser Inhalt gefallen hat, können Sie uns weiter folgen Twitter, YouTube, Facebook or LinkedIn um über solche Inhalte auf dem Laufenden zu bleiben.

Haben Sie Fragen oder Wünsche?
Kontaktiere uns! Wir antworten <24 Stunden!

Symbol
Kontakt ArduSimple
Menu

Möchten Sie mehr über GPS erfahren/RTK?

1. Unser Engineering-Team wird sich mit Ihnen in Verbindung setzen, um alle Fragen zu klären
2. Wir halten Sie über Werbeaktionen und neue Produktveröffentlichungen auf dem Laufenden
3. Sie hören nur von uns, wenn wir wichtige Neuigkeiten haben, wir spammen Ihre E-Mail nicht zu