Gewinne:
- Fähigkeit zu erklären, wie ein Codierungsassistent als Sprachmodell funktioniert und die Konzepte von Token, Kontextfenster und Halluzination
- Fähigkeit, Softwareaufgaben, bei denen die KI stark und schwach ist, mithilfe einer mentalen Karte zu unterscheiden
- Fähigkeit, den grundlegenden Arbeitszyklus „Vorschlagen-Produzieren-Überprüfen“ auf ihre eigenen Aufgaben anzuwenden
Der Tag eines Softwareentwicklers wird selten damit verbracht, „Code von Grund auf neu zu schreiben“. Echtzeit; Lesen des von jemand anderem geschriebenen Codes, Versuch, einen Fehler zu reproduzieren, Scannen des Protokolls (von der Anwendung während der Ausführung erstellte Protokollzeilen), Schreiben von Tests, Schreiben einer PR-Erklärung (Pull-Anfrage – eine Zusammenführungsanforderung, bei der eine Codeänderung zur Teamüberprüfung eingereicht wird) und Aktualisierung der Dokumentation. Künstliche Intelligenz (KI) ist ein Geschwindigkeitsmultiplikator, der fast alle dieser ungesehenen Aufgaben erfüllen kann. Aber die erste Voraussetzung für eine sichere Verwendung ist, richtig zu verstehen, was es ist und was nicht.
In dieser Einheit erklären wir zunächst die zugrunde liegende Technologie eines Codierungsassistenten im Klartext; Anschließend erstellen wir eine mentale Karte der Stärken und Schwächen des Modells. Abschließend legen wir die grundlegende Arbeitsdisziplin fest, die wir im gesamten Modul anwenden werden: vorschlagen, produzieren, überprüfen. Diese drei Schritte bilden das Rückgrat der nächsten elf Einheiten.
Hinweis: Bei diesem Modul handelt es sich um eine allgemeine Schulung. Bei sicherheitskritischer Software (Zahlungsabwicklung, Gesundheitswesen, Authentifizierung, kritische Infrastruktur) ist die KI-Ausgabe kein Ersatz für die Prüfung und Genehmigung durch einen qualifizierten Ingenieur. KI ist ein Assistent; Der Unterzeichner ist der Ingenieur.
Was macht eigentlich ein Programmierassistent?
Die meisten Codierungsassistenten basieren auf einem großen Sprachmodell (LLM – eine auf riesigen Text- und Codemengen trainierte KI, die den nächstwahrscheinlichsten „Chunk“ vorhersagt). Das Modell „versteht“ den Code nicht wie ein Mensch; Es generiert die wahrscheinlichste Fortsetzung des Kontexts, den Sie ihm geben, basierend auf den Mustern, die es aus einem riesigen Pool von Beispielen lernt. Dieser scheinbar einfache Mechanismus liefert in der Praxis überraschend gute Ergebnisse – denn die meiste Software besteht aus sich wiederholenden Mustern: einer HTTP-Anfrage, einer Schleife, einer Nullprüfung, einem Testmuster.
Drei Begriffe sind hier entscheidend. Token ist die kleinste Einheit, die das Modell verarbeitet, indem es den Text teilt. Es handelt sich ungefähr um ein paar Buchstaben oder Teile eines Wortes. Das Kontextfenster ist die Anzahl der Token, die das Modell gleichzeitig „sehen“ kann; Ihr Code, Ihre Fehlermeldung und Ihre Anweisung müssen in dieses Fenster passen. Eine Eingabeaufforderung besteht aus allen Anweisungen und dem Kontext, die Sie dem Modell geben. Die Qualität der Ausgabe, die Sie erhalten, hängt direkt von diesen beiden Faktoren ab: Je besser der Kontext und die klareren Anweisungen, die Sie dem Modell geben, desto bessere Ergebnisse erhalten Sie. Schlechte Eingaben führen zu schlechten Ausgaben, selbst wenn es sich um ein intelligentes Modell handelt – die klassische „Garbage in, Garbage out“-Regel der Software gilt auch für KI.
Karte der Stärken und Schwächen
Um der KI die richtigen Aufgaben zuzuweisen, muss man wissen, wo sie glänzt und wo sie stolpert. Wenn Sie sich diese Karte merken, werden Sie sich bei jeder nächsten Mission fragen: „Soll ich diesen Job an die KI auslagern oder ihn selbst erledigen?“ Damit können Sie die Frage in Sekundenschnelle beantworten.
Seine Stärken sind: Generieren von Boilerplate-Code, Übersetzen von einer Sprache in eine andere, Schreiben eines regulären Ausdrucks (Regex), Beschreiben einer Funktion, Erstellen eines Testskeletts, Interpretieren einer Fehlermeldung, Verfassen einer Dokumentation, Vorschlagen von Variablen-/Funktionsnamen und kleinere Refactorings (Verbessern der Struktur des Codes, ohne sein Verhalten zu ändern).
Schwächen: Kenntnis Ihrer unternehmensspezifischen Geschäftsregeln, Merken Ihrer gesamten Codebasis, tatsächliche Ausführung und Überprüfung des Codes, sichere Kenntnis der neuesten Bibliotheksversionen, Erkennung von Sicherheitslücken mit hundertprozentiger Garantie. Das Gefährlichste ist die Halluzination: Das Modell erfindet eine nicht existierende Funktion, Bibliothek oder API (Schnittstelle, die den Datenaustausch zwischen Anwendungen ermöglicht) in einer sehr überzeugenden Sprache. Dieses Risiko kann tatsächlich zu Ihrem Vorteil genutzt werden, da der Code im Gegensatz zu reinem Text getestet werden kann, um zu sehen, ob er „funktioniert“ – überspringen Sie den Überprüfungsschritt nur nicht.
Missionstyp
Die Rolle der KI
Rolle des Mannes
Erstellen Sie ein Grundgerüst/Grundgerüst
erzeugt Entwurf
Anpassungen, Rezensionen
Codebeschreibung
Gibt eine kurze Zusammenfassung
Überprüft den kritischen Teil im Code
Schreibtests
Fall legt nahe
Bestätigt Abdeckung und Genauigkeit
Sicherheitskritische Logik
hilfreiche Idee
Entscheidung und Verantwortung liegen vollständig beim Menschen.
API-/Bibliotheksnutzung
Erzeugt ein Beispiel
Überprüft Existenz und Version
architektonische Entscheidung
Verschiedene Optionen
Wählt aus und verteidigt, wenn er den Kontext kennt
Schritt für Schritt: Grundlegender Arbeitszyklus
- Klären Sie die Aufgabe. Wenn Sie nicht in einem Satz schreiben können, was Sie wollen, kann das Modell es auch nicht. Je früher die Unsicherheit in den Input eindringt, desto größer wird sie im Output.
- Geben Sie Kontext an. Fügen Sie der Eingabeaufforderung den relevanten Code, die vollständige Fehlermeldung, die Sprach-/Framework-Version und Einschränkungen hinzu. Sagen Sie nicht „das Problem beheben“, sondern „Python 3.11, FastAPI 0.110; diese Funktion gibt einen 500-Fehler aus, sie explodiert, wenn der Anforderungstext leer ist“.
- Rolle und Format des Ausschießens. Ein Framework wie „Sie sind ein erfahrener Go-Entwickler; geben Sie einfach den Code und eine Begründung aus zwei Sätzen an“ fokussiert die Ausgabe.
- Fragen Sie nach Kleinigkeiten. Teilen Sie es in Schritte auf und nicht in eine einzige riesige Anfrage. Überprüfen Sie jeden Schritt einzeln. Größere Änderungen sind riskant, da sie schwer zu überprüfen sind und die Gefahr besteht, dass Fehler verborgen bleiben.
- Verifizieren. Führen Sie es aus, testen Sie es, lesen Sie es visuell. Nicht verifizierter KI-Code ist eine „Skizze“, keine „Lösung“. Dies ist der nicht verhandelbarste Schritt des Zyklus.
Drei Mini-Hüllen
Fall 1 – Die Zeitersparnis ist real, aber bescheiden. Als ein Team neue CRUD-Endpunkte (Create-Read-Update-Delete) mit KI skelettierte, sank die Zeit für den ersten Entwurf von etwa 40 Minuten auf 8 Minuten. Mit Durchsicht und Tests betrug die Gesamtzeit jedoch 25 Minuten; Der tatsächliche Gewinn beträgt also 40 bis 25, etwa 38 %. Diese Rate, gemessen anstelle der Erwartung „Wir haben zehnmal beschleunigt“, ist ein nachhaltiger Gewinn.
Fall 2 – Halluzination ist kostspielig. Ein Entwickler verwendete den von der KI vorgeschlagenen Aufruf „requests.get_json()“ ohne Validierung; Es gab keine solche Methode (genauer gesagt „response.json()“). Es gingen 20 Minuten verloren, als der Code nicht kompiliert wurde. Ein einfaches „Gibt es diese Methode wirklich?“ Eine Überprüfung würde den Verlust zurücksetzen.
Fall 3 – Guter Kontext verdoppelt die Ausgabe. Für denselben Fehler schrieb ein Entwickler einfach „Ich erhalte eine Fehlermeldung“ und der andere fügte den vollständigen Stack-Trace, die Version und das Eingabebeispiel hinzu. Letzterer bekam gleich beim ersten Versuch die richtige Lösung; Der erste verbrachte drei Runden. Der Unterschied lag nicht im Modell, sondern in der Eingabe.
Vier kopierbare Vorlagen
Eine universelle, leistungsstarke Startaufforderung:
Rolle: Sie sind ein erfahrener {{Sprache}}-Entwickler. Aufgabe: {{what_want}}Kontext: – Framework/Version: {{framework_and_version}} – Einschränkungen: {{Leistung, Stil, Abhängigkeitsregeln}}Regeln: – Verwenden Sie keine nicht vorhandene Bibliothek/Funktion; Wenn Sie sich nicht sicher sind, markieren Sie es als „bestätigen“. - Geben Sie zunächst einen kurzen Plan, dann den Code und dann zwei Begründungssätze an. - Erstellen Sie testbaren, funktionierenden Code.
So filtern Sie die Unsicherheit zurück in das Modell:
Bevor Sie die unten stehende Aufgabe lösen, listen Sie MINDESTENS 3 Punkte auf, die Ihrer Meinung nach fehlen oder als Fragen unklar sind. Schreiben Sie KEINEN Code, bevor ich antworte. Aufgabe: {{task}}
So überprüfen Sie die Ausgabe selbst:
Sie haben den folgenden Code erstellt. Ändern Sie nun Ihre Rolle und kritisieren Sie diesen Code: – Listen Sie 3 Fälle (Randfälle) auf, die möglicherweise nicht funktionieren. – Gibt es APIs/Funktionen, die Sie sich hätten ausdenken können? Mark.- Korrigierte Version angeben.Code:{{code}}
So unterteilen Sie eine Entscheidung in Optionen:
Schlagen Sie 2-3 Lösungsansätze für {{Problem}} vor. Für jedes: kurze Beschreibung, Plus/Minus, Zeitpunkt der Auswahl. Geben Sie tabellarisch an. Wählt NICHT für mich; Klären Sie einfach die Option.
Schwache Eingabeaufforderung / Starke Eingabeaufforderung
Schwach: „Beheben Sie den Fehler in diesem Code.“ (Welcher Fehler? Welche Sprache? Was ist das erwartete Verhalten?)
Strong: „Python 3.11 / FastAPI 0.110. Der folgende Endpunkt gibt 500 mit KeyError zurück, wenn der Anforderungstext leer ist; ich möchte, dass er 400 und eine aussagekräftige Nachricht für den leeren Text zurückgibt. Erklären Sie zuerst den Grund, geben Sie dann die korrigierte Funktion an und schreiben Sie dann einen Test für dieses Szenario. [Code]“
Leistungsstarke Version; Es gibt die Sprache, die Version, den tatsächlichen Fehler, das erwartete Verhalten und das Ausgabeformat an. Das Modell muss nicht mehr vorhersagen.
Häufige Fehler
- Vertrauen ohne Verifizierung. Der häufigste und teuerste Fehler. Sagen Sie nicht „gelöst“, bis der Code kompiliert und getestet wurde.
- Fragen ohne Kontext stellen. Die Antwort ohne Version, Fehlertext und Einschränkungen ist allgemein gehalten und oft falsch.
- Eine große Bitte. Wenn eine 300-Linien-Produktion nicht auf einmal angefordert und überprüft werden kann, werden Fehler unsichtbar.
- Das Selbstvertrauen des Models als Beweis verwechseln. KI kann getrost etwas Falsches sagen; Der Ton ist kein Indikator für Genauigkeit.
- Das Firmengeheimnis willkürlich einfügen. Private Schlüssel, Kundendaten oder privater Quellcode sollten nicht in nicht genehmigte Tools eingegeben werden (wir werden uns in Einheit 10 mit diesem Thema befassen).
Tipp: Behandeln Sie jede KI-Ausgabe als „Dies ist ein Entwurf“. Diese einzige mentale Angewohnheit beseitigt die meisten Risiken, die Sie im Laufe des Moduls sehen werden.
Zusammenfassend
Ein Codierungsassistent ist ein Sprachmodell, das das nächstwahrscheinlichste Fragment vorhersagt; Es versteht den Code nicht, es erzeugt Muster. Deshalb ist er stark in sich wiederholenden, formelhaften Aufgaben; Es sollte mit Vorsicht bei Arbeiten verwendet werden, die eine für Ihren Kontext spezifische Überprüfung erfordern. Das größte Risiko ist die Halluzination, und das einzige Gegenmittel ist die Verifizierung. Die Disziplin, die wir während des gesamten Moduls befolgen werden, ist klar: Klären Sie die Aufgabe, geben Sie den Kontext an, bitten Sie um kleine Details und validieren Sie jede Leistung.
Anwendungsaufgabe
Schreiben Sie drei Softwareaufgaben auf, die Sie in der letzten Woche erledigt haben (z. B. eine Fehlerbehebung, einen Test, ein README-Update). Schauen Sie sich jeweils die „Stärken- und Schwächenkarte“ an und beschreiben Sie in einem Satz, welche Rolle Sie und die der KI spielen würden, wenn Sie die KI dies tun lassen würden. Geben Sie dann eine dieser Aufgaben an die KI mit der obigen Vorlage „Startaufforderung“ und führen Sie sie aus und überprüfen Sie die Ausgabe. Beachten Sie, wie viele Minuten Sie gespart haben und wie viele Fehler Sie beheben mussten.
Checkliste
- [ ] Mir wurde klar, dass LLM Muster erzeugt und keinen Code „versteht“.
- [ ] Ich kann die Konzepte von Token, Kontextfenster und Eingabeaufforderung in einem Satz erklären.
- [ ] Ich kann zwischen Arten von Aufgaben unterscheiden, bei denen die KI stark und schwach ist.
- [ ] Ich weiß, was eine Halluzination ist und das einzige Gegenmittel ist die Verifizierung.
- [ ] Ich habe den Zyklus „Vorschlagen, Produzieren, Verifizieren“ an meine eigene Aufgabe angepasst.
- [ ] Ich kann den Unterschied zwischen einem starken und einem schwachen Prompt an einem konkreten Beispiel zeigen.