Heim >Backend-Entwicklung >Python-Tutorial >Automatisieren Sie das Kommentieren von Code mit VS Code und Ollama
Geschrieben von Carlos Mucuho✏️
Codekommentare spielen eine wichtige Rolle in der Softwareentwicklung. Sie:
Während einige argumentieren, dass gut geschriebener Code selbsterklärend sein sollte, betonen andere die Bedeutung von Kommentaren für die Erfassung der Gründe für bestimmte Implementierungen. Die Idee, die Kommentargenerierung zu automatisieren, hat eine Diskussion darüber ausgelöst, ob KI wirklich die menschlichen Erkenntnisse erfassen kann, die Kommentare wertvoll machen.
KI-gestützte Codierungsassistenten wie GitHub Copilot erfreuen sich immer größerer Beliebtheit, doch die Community kämpft mit Fragen zum Datenschutz und den Risiken einer Abhängigkeit von proprietären Plattformen. Trotz dieser Bedenken bieten Tools wie Ollama eine Möglichkeit, von den KI-Funktionen zu profitieren und gleichzeitig Bedenken hinsichtlich des Datenschutzes und der Plattformbindung auszuräumen.
Ollama ist selbst kein Programmierassistent, sondern vielmehr ein Tool, mit dem Entwickler große Sprachmodelle (LLMs) ausführen können, um die Produktivität zu steigern, ohne Ihre Daten weiterzugeben oder teure Abonnements zu bezahlen.
In diesem Tutorial erfahren Sie, wie Sie eine VS Code-Erweiterung erstellen, die Ollama verwendet, um die Kommentargenerierung zu automatisieren. Dieses Projekt zeigt, wie Sie mithilfe eines LLM-Modells die Produktivität steigern können, ohne Ihre Daten weiterzugeben oder für teure Abonnements zu zahlen.
Am Ende des Tutorials verfügen Sie über eine Erweiterung, die etwa wie folgt aussieht:
Um mitzumachen, benötigen Sie:
Um Ollama einzurichten, laden Sie zunächst das entsprechende Installationsprogramm für Ihr Betriebssystem von der offiziellen Website von Ollama herunter:
Für Linux-Benutzer ist die Installation von Ollama so einfach wie das Ausführen des folgenden Befehls in Ihrem Terminal:
curl -fsSL https://ollama.com/install.sh | sh
Sobald die Ollama-Installation abgeschlossen ist, können Sie mit der Interaktion mit LLMs beginnen. Bevor Sie Befehle ausführen, müssen Sie Ollama starten, indem Sie die App öffnen oder den folgenden Befehl im Terminal ausführen:
curl -fsSL https://ollama.com/install.sh | sh
Dieser Befehl startet die Ollama-App, sodass Sie die verfügbaren Befehle verwenden können. Außerdem wird der Ollama-Server gestartet, der auf Port 11434 ausgeführt wird. Sie können überprüfen, ob der Server ausgeführt wird, indem Sie ein neues Browserfenster öffnen und zu http://localhost:11434/ navigieren. Um ein Modell aus der Ollama-Registrierung abzurufen, ohne es auszuführen, verwenden Sie die Ollama Pull-Befehl. Um beispielsweise das Phi3.5-Modell abzurufen, führen Sie Folgendes aus:
ollama serve
Dieser Befehl ruft das Modell ab und stellt es für die spätere Verwendung zur Verfügung. Mit dem folgenden Befehl können Sie alle gezogenen Modelle auflisten:
ollama pull phi3.5
Dadurch wird eine Liste der Modelle mit ihrer Größe und Änderungszeit angezeigt:
ollama list
Um ein Modell sofort abzurufen und auszuführen, verwenden Sie den Befehl ollama run. Um beispielsweise phi3.5 auszuführen, führen Sie Folgendes aus:
NAME ID SIZE MODIFIED phi3.5:latest 61819fb370a3 2.2 GB 11 days ago llava:latest 8dd30f6b0cb1 4.7 GB 2 weeks ago phi3:latest 64c1188f2485 2.4 GB 3 months ago csfm1993:~$
Dieser Befehl ruft das Modell ab – falls es noch nicht abgerufen wurde – und beginnt mit der Ausführung, sodass Sie sofort mit der Abfrage beginnen können. In Ihrem Terminal sollte Folgendes angezeigt werden:
ollama run phi3.5
In diesem Tutorial verwenden Sie das Phi3.5-Modell, um Kommentare für einen bestimmten Codeblock zu generieren. Dieses Sprachmodell wurde aufgrund seines ausgewogenen Verhältnisses zwischen Größe und Leistung ausgewählt. Obwohl es kompakt ist, liefert es starke Ergebnisse und eignet sich daher ideal für die Erstellung einer Proof-of-Concept-App.
Das phi3.5-Modell ist leicht genug, um auf Computern mit begrenztem RAM und ohne GPU effizient zu laufen. Wenn Sie über eine GPU verfügen, können Sie gerne ein größeres LLM ausführen. Senden Sie die folgende Eingabeaufforderung an das Modell:
csfm1993:~$ ollama run phi3.5 >>> Send a message (/? for help)
Die Eingabeaufforderung fordert das Phi3.5-Modell auf, zu erklären, was in einem bestimmten Codeblock passiert. Sie sollten eine Antwort ähnlich der folgenden erhalten:
complete code: " const express = require('express') const app = express() const port = 3000 app.get('/', (req, res) => { res.send('Hello World!') }) app.listen(port, () => { console.log(`Example app listening on port ${port}`) }) " Given the code block below, write a brief, insightful comment that explains its purpose and functionality within the script. If applicable, mention any inputs expected in the code block. Keep the comment concise (maximum 2 lines). Wrap the comment with the appropriate comment syntax (//). Avoid assumptions about the complete code and focus on the provided block. Don't rewrite the code block. code block: " app.get('/', (req, res) => { res.send('Hello World!') }) "
Das Modell gibt einen Kommentar mit der angegebenen Kommentarsyntax zurück, gefolgt von der Erklärung. Sobald Sie mit der Interaktion mit dem Modell fertig sind, senden Sie den Befehl /bye, um den Chat zu beenden.
In diesem Abschnitt erstellen Sie ein neues VS Code-Erweiterungsprojekt und installieren die erforderlichen Module für die Interaktion mit Ollama. Sie verwenden Yeoman und den VS Code Extension Generator, um ein TypeScript-Projekt zu erstellen.
Führen Sie in Ihrem Terminal den folgenden Befehl aus, um ein neues VS Code-Erweiterungsprojekt zu erstellen:
// This Express.js route handler responds to GET requests at the root URL ('/'), sending back a plain text 'Hello World!' message as an HTTP response. No additional inputs are required for this specific block of code, which serves as a basic setup example within a web server context.
Wählen Sie TypeScript als die für das Projekt verwendete Sprache aus und füllen Sie dann die restlichen Felder aus:
npx --package yo --package generator-code -- yo code
Führen Sie nun den folgenden Befehl aus, um die für die Interaktion mit dem Ollama-Server erforderlichen Module zu installieren:
? What type of extension do you want to create? New Extension (TypeScript) ? What's the name of your extension? commentGenerator ? What's the identifier of your extension? commentgenerator ? What's the description of your extension? Leave blank ? Initialize a git repository? Yes ? Which bundler to use? unbundled ? Which package manager to use? npm ? Do you want to open the new folder with Visual Studio Code? Open with `code`
Mit dem obigen Befehl haben Sie die folgenden Pakete installiert:
Öffnen Sie die Datei package.json und stellen Sie sicher, dass die vscode-Version in der Engine-Eigenschaft mit der in Ihrem System installierten VS-Code-Version übereinstimmt:
curl -fsSL https://ollama.com/install.sh | sh
Beachten Sie, dass der Haupteinstiegspunkt Ihrer Erweiterung in der Datei „package.json“ eine Datei mit dem Namen „extension.js“ ist, die sich im Out-Verzeichnis befindet, obwohl es sich um ein TypeScript-Projekt handelt. Dies liegt daran, dass der TypeScript-Code durch Ausführen des npm-Kompilierungsbefehls vor der Ausführung des Projekts in JavaScript kompiliert wird:
ollama serve
Beachten Sie außerdem, wie die Befehle, die Ihre Erweiterung ausführen soll, in der commands-Eigenschaft deklariert sind:
ollama pull phi3.5
Derzeit ist nur ein Befehl mit dem Namen Hello World mit der ID commentgenerator.helloWorld deklariert. Dies ist der Standardbefehl, der mit einem Gerüstprojekt geliefert wird.
Navigieren Sie als Nächstes zum src-Verzeichnis und öffnen Sie die Datei extension.ts:
ollama list
Die Datei extension.ts ist der Einstiegspunkt für eine VS Code-Erweiterung. Der Code in dieser Datei importiert zunächst das vscode-Modul und deklariert zwei Funktionen mit den Namen „activate“ und „deactivate“.
Die Aktivierungsfunktion wird aufgerufen, wenn die Erweiterung aktiviert wird. Diese Funktion protokolliert eine Nachricht und registriert den Hello World-Befehl, der in der Datei package.json definiert ist. Jedes Mal, wenn dieser Befehl ausgeführt wird, wird ein Benachrichtigungsfenster mit der Meldung „Hallo Welt“ angezeigt.
Die Deaktivierungsfunktion wird aufgerufen, wenn die Erweiterung deaktiviert ist (z. B. wenn VS Code geschlossen ist). Es ist derzeit leer, da keine Bereinigung erforderlich ist, kann jedoch zum Freigeben von Ressourcen verwendet werden.
Öffnen Sie im Editor src/extension.ts und drücken Sie F5 oder führen Sie den Befehl Debug: Debuggen starten aus der Befehlspalette aus (Strg-Umschalt-P). Dadurch wird die Erweiterung kompiliert und in einem neuen Fenster Extension Development Host ausgeführt.
Führen Sie den Befehl „Hello World“ aus der Befehlspalette (Strg-Umschalt-P) im neuen Fenster aus.
Navigieren Sie im Editor zu src/extension.ts und drücken Sie entweder F5 oder verwenden Sie die Option „Debug: Debuggen starten“ aus der Befehlspalette (Strg-Umschalttaste P). Durch diese Aktion wird die Erweiterung kompiliert und in einem separaten Extension Development Host-Fenster gestartet.
Öffnen Sie in diesem neuen Fenster die Befehlspalette (Strg-Umschalt-P) und führen Sie den Befehl „Hello World“ aus:
Um Ihr Projekt kontinuierlich auf Änderungen zu überwachen und es automatisch zu kompilieren, kehren Sie zu Ihrem Terminal zurück und führen Sie den folgenden Befehl aus:
curl -fsSL https://ollama.com/install.sh | sh
Dadurch wird der TypeScript-Compiler im Überwachungsmodus gestartet und sichergestellt, dass Ihr Projekt neu kompiliert wird, wenn Sie Änderungen vornehmen.
In diesem Abschnitt ersetzen Sie den Standardbefehl „Hello World“ durch einen Befehl mit dem Namen „Kommentar generieren“. Dieser Befehl wird ausgelöst, wenn – Sie haben es erraten – der Benutzer einen Kommentar generieren möchte. Sie definieren den Befehl und stellen sicher, dass er ordnungsgemäß in der Erweiterung registriert wird.
Öffnen Sie die Datei package.json und ersetzen Sie den Befehl „Hello World“ wie unten gezeigt:
ollama serve
Öffnen Sie die Datei mit dem Namen extension.ts und ersetzen Sie den Code in der Aktivierungsfunktion durch Folgendes:
ollama pull phi3.5
Dieser Code ersetzt den Hello-Befehl durch den Generate Comment-Befehl mit der ID commentgenerator.generateComment. Der Befehl „Kommentar generieren“ zeigt bei Auslösung auch eine Informationsmeldung an.
Der Befehl wird dann an das Array context.subscriptions übertragen, um sicherzustellen, dass er ordnungsgemäß entsorgt wird, wenn die Erweiterung deaktiviert wird oder nicht mehr benötigt wird.
Drücken Sie F5 oder führen Sie den Befehl „Debuggen: Debuggen starten“ aus der Befehlspalette aus (Strg-Umschalttaste P). Dadurch wird die Erweiterung in einem neuen Extension Development Host-Fenster ausgeführt.
Führen Sie den Befehl „Kommentar generieren“ aus der Befehlspalette (Strg-Umschalt-P) im neuen Fenster aus:
In diesem Abschnitt erstellen Sie die Eingabeaufforderung, die an den Ollama-Server gesendet wird. Die Eingabeaufforderung enthält den Codeblock und seinen Kontext sowie Anweisungen für das LLM. Dieser Schritt ist entscheidend, um das LLM dabei zu unterstützen, auf der Grundlage des bereitgestellten Codes aussagekräftige Kommentare zu generieren.
Um einen Kommentar für einen bestimmten Codeblock zu generieren, muss der Benutzer zunächst den Block in die Zwischenablage kopieren, den Cursor auf der Zeile platzieren, in der der Kommentar erscheinen soll, und dann den Befehl „Kommentar generieren“ auslösen. Der gesamte Code aus der Datei, die diesen Block enthält, dient als Kontext für die Eingabeaufforderung.
Erstellen Sie eine Datei mit dem Namen promptBuilder.ts im src-Verzeichnis und fügen Sie den folgenden Code hinzu:
ollama list
Dieser Code definiert drei Funktionen: getScriptContext, getCodeBlock und getCodeBlock.
Jetzt erstellen wir die Eingabeaufforderung mithilfe des Codekontexts, des Codeblocks und der Kommentarsyntax. Fügen Sie den folgenden Code zur Datei promptBuilder.ts hinzu:
curl -fsSL https://ollama.com/install.sh | sh
Dieser Code definiert eine Funktion namens buildPrompt, die den aktuellen Texteditor als Argument verwendet und die Eingabeaufforderungszeichenfolge zurückgibt.
Zunächst werden der Codeblock, der Codekontext und die Kommentarsyntax mithilfe der zuvor definierten Funktionen abgerufen. Anschließend wird mithilfe von Vorlagenliteralen die Eingabeaufforderungszeichenfolge erstellt und die Platzhalter durch die tatsächlichen Werte ersetzt.
Die Eingabeaufforderungszeichenfolge weist den LLM an, einen kurzen, aufschlussreichen Kommentar zu schreiben, der den Zweck und die Funktionalität des Codeblocks im Skript erläutert, ihn prägnant zu halten (maximal zwei Zeilen) und mit der richtigen Kommentarsyntax umschließt. Der LLM konzentriert sich ausschließlich auf den bereitgestellten Block und stellt sicher, dass der Kommentar relevant und korrekt ist.
Jetzt aktualisieren wir die Datei extension.ts, um die buildPrompt-Funktion zu verwenden. Gehen Sie zum Importblock der Datei extension.ts und importieren Sie die buildPrompt-Funktion:
ollama serve
Aktualisieren Sie als Nächstes den genericCommentCommand mit dem folgenden Code:
ollama pull phi3.5
Dieser Code aktualisiert den genericCommentCommand, um den aktiven Texteditor abzurufen und die Eingabeaufforderung mithilfe der buildPrompt-Funktion zu erstellen. Anschließend wird die Eingabeaufforderung protokolliert und eine Fehlermeldung angezeigt, wenn die Eingabeaufforderung nicht generiert werden kann.
Drücken Sie F5 oder führen Sie den Befehl „Debuggen: Debuggen starten“ aus der Befehlspalette aus (Strg-Umschalttaste P). Dadurch wird die Erweiterung in einem neuen Extension Development Host-Fenster ausgeführt.
Führen Sie den Befehl „Kommentar generieren“ aus der Befehlspalette (Strg-Umschalt-P) im neuen Fenster aus.
Gehen Sie zurück zum ursprünglichen Fenster, in dem Sie den Erweiterungscode haben, öffnen Sie das integrierte Terminal, klicken Sie auf die Debug-Konsole und suchen Sie nach der generierten Eingabeaufforderung:
In diesem Abschnitt verwenden Sie die Ollama.js-Bibliothek, um Kommentare aus Eingabeaufforderungen zu generieren. Sie richten die notwendigen Funktionen ein, um mit dem Ollama-Server zu kommunizieren, Eingabeaufforderungen an den Server zu senden, mit dem LLM zu interagieren und die generierten Kommentare zu empfangen.
Erstellen Sie eine Datei mit dem Namen ollama.ts im src-Verzeichnis und fügen Sie den folgenden Code hinzu:
curl -fsSL https://ollama.com/install.sh | sh
Dieser Code importiert die Ollama-Klasse aus dem Ollama-Modul und die Fetch-Funktion aus dem Cross-Fetch-Modul. Anschließend wird eine neue Instanz der Ollama-Klasse mit dem angegebenen Host und der angegebenen Abruffunktion erstellt.
Hier verwenden Sie das Cross-Fetch-Modul, um eine Ollama-Instanz zu erstellen, um einen Timeout-Fehler zu vermeiden, den der Ollama-Server möglicherweise auslöst, wenn ein LLM zu lange braucht, um eine Antwort zu generieren.
Jetzt definieren wir die Funktion „generateComment“, die die Eingabeaufforderung als Argument verwendet und den generierten Kommentar zurückgibt. Fügen Sie der Datei ollama.ts den folgenden Code hinzu:
ollama serve
Dieser Code definiert die Funktion „generateComment“, die die Eingabeaufforderung als Argument verwendet und den generierten Kommentar zurückgibt.
Es zeichnet zunächst die Startzeit mit der Funktion performance.now auf. Anschließend sendet es mithilfe der Generate-Methode der Ollama-Instanz eine Anfrage an den Ollama-Server und übergibt dabei phi3.5 als Modellnamen und Eingabeaufforderung.
Als nächstes zeichnet es die Endzeit auf und protokolliert die Zeit, die das LLM benötigt hat, um eine Antwort zu generieren.
Schließlich wird der generierte Kommentar zurückgegeben, der in der Antwort gespeichert ist.
Jetzt aktualisieren wir die Datei extension.ts, um die Funktion „generateComment“ zu verwenden. Gehen Sie zunächst zum Importblock der Datei extension.ts und importieren Sie die Funktion „generateComment“:
ollama pull phi3.5
Aktualisieren Sie als Nächstes den Code in genericCommentCommand:
ollama list
Dieser Code aktualisiert „generateCommentCommand“, um den Kommentar mithilfe der Funktion „generateComment“ zu generieren. Anschließend wird der generierte Kommentar protokolliert und eine Fehlermeldung angezeigt, wenn der Kommentar nicht generiert werden kann.
Drücken Sie F5 oder führen Sie den Befehl „Debuggen: Debuggen starten“ aus der Befehlspalette aus (Strg-Umschalttaste P). Dadurch wird die Erweiterung kompiliert und in einem neuen Fenster Extension Development Host ausgeführt.
Öffnen Sie die Datei, in der Sie Kommentare generieren möchten, navigieren Sie zum gewünschten Codeblock, kopieren Sie ihn und platzieren Sie den Cursor in der Zeile, in der der Kommentar hinzugefügt werden soll. Führen Sie als Nächstes den Befehl „Kommentar generieren“ aus der Befehlspalette (Strg-Umschalt-P) im neuen Fenster aus.
Gehen Sie zurück zum ursprünglichen Fenster, in dem Sie den Erweiterungscode haben, öffnen Sie das integrierte Terminal, klicken Sie auf die Debug-Konsole und suchen Sie nach dem generierten Kommentar:
Beachten Sie, dass die Zeit, die das LLM benötigt, um eine Antwort zu generieren, je nach Hardware variieren kann.
In diesem Abschnitt fügen Sie den generierten Kommentar zum Skript in der Zeile hinzu, in der der Benutzer den Befehl „Kommentar generieren“ aufgerufen hat. Bei diesem Schritt muss der Editor so gesteuert werden, dass er den Kommentar an der entsprechenden Stelle im Code einfügt.
Erstellen Sie im src-Verzeichnis eine Datei mit dem Namen manageEditor.ts und fügen Sie den folgenden Code hinzu:
curl -fsSL https://ollama.com/install.sh | sh
Dieser Code importiert zunächst die gesamte Visual Studio Code-API in das aktuelle Modul und definiert dann zwei Funktionen namens getCurrentLine und addCommentToFile.
Die Funktion getCurrentLine verwendet den aktuellen Texteditor als Argument und gibt die aktuelle Zeilennummer zurück.
Die Funktion addCommentToFile verwendet den Datei-URI, den Dateinamen, die Zeilennummer und den generierten Kommentar als Argumente und fügt den Kommentar in der angegebenen Zeile zur Datei hinzu. Es erstellt zunächst ein neues WorkspaceEdit-Objekt und fügt den Kommentar an der angegebenen Position ein. Anschließend wird die Bearbeitung übernommen und eine Informationsmeldung angezeigt.
Jetzt aktualisieren wir die Datei extension.ts, um die Funktion addCommentToFile zu verwenden.
Gehen Sie zum Importblock der Datei extension.ts und importieren Sie die Funktionen getCurrentLine und addCommentToFile:
ollama serve
Als nächstes aktualisieren Sie den Code im genericCommentCommand:
ollama pull phi3.5
Dieser Code aktualisiert den genericCommentCommand, um den Datei-URI, den Dateinamen und die aktuelle Zeilennummer mithilfe der getCurrentLine-Funktion abzurufen. Anschließend wird der Kommentar mithilfe der Funktion „addCommentToFile“ in der aktuellen Zeile zur Datei hinzugefügt.
Drücken Sie F5 oder führen Sie den Befehl „Debuggen: Debuggen starten“ aus der Befehlspalette aus (Strg-Umschalttaste P). Dadurch wird die Erweiterung in einem neuen Extension Development Host-Fenster ausgeführt.
Öffnen Sie die Datei, in der Sie Kommentare generieren möchten, navigieren Sie zum gewünschten Codeblock, kopieren Sie ihn und platzieren Sie den Cursor in der Zeile, in der der Kommentar hinzugefügt werden soll.
Führen Sie als Nächstes den Befehl „Kommentar generieren“ aus der Befehlspalette aus (Strg-Umschalt-P) und nach ein paar Sekunden (oder Minuten, abhängig von Ihrer Hardware) wird der Kommentar in der angegebenen Zeile platziert (Sie können Alt Z drücken). um die Kommentarzeile umzubrechen, wenn sie zu lang ist):
Die Welt der Softwareentwicklung ist voller Diskussionen über den Einsatz von KI zur Unterstützung bei Codierungsaufgaben, einschließlich der Generierung von Codekommentaren.
In diesem Tutorial haben wir den Aufbau einer VS-Code-Erweiterung zur Automatisierung der Codekommentierung mithilfe der Ollama.js-Bibliothek und eines lokalen LLM erläutert. Wir haben gezeigt, wie einige KI-Codierungstools Ihren Dokumentationsprozess optimieren können, ohne den Datenschutz zu beeinträchtigen oder kostenpflichtige Abonnements zu erfordern.
NPM:
ollama list
Skript-Tag:
NAME ID SIZE MODIFIED phi3.5:latest 61819fb370a3 2.2 GB 11 days ago llava:latest 8dd30f6b0cb1 4.7 GB 2 weeks ago phi3:latest 64c1188f2485 2.4 GB 3 months ago csfm1993:~$
3. (Optional) Installieren Sie Plugins für tiefere Integrationen mit Ihrem Stack:
Jetzt loslegen
Das obige ist der detaillierte Inhalt vonAutomatisieren Sie das Kommentieren von Code mit VS Code und Ollama. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!