Heim > Artikel > Backend-Entwicklung > Teil: Verwendung von Claude, Claude-Dev und Aider zum Aufbau eines Ticketsystems
LINK ZU TEIL 1
Das Projekt ist Open Source, wenn Sie zu Hause mitspielen möchten: https://github.com/joegiglio/helpdesk-claude-dev-ai
TEIL 3 -
Ich möchte der Wissensdatenbank nun einige grundlegende Funktionen hinzufügen. Im Moment haben wir nur eine Skelett-Benutzeroberfläche. Mal sehen, ob Claude etwas Nützliches damit machen kann.
[PROMPT]
Ich möchte der Wissensdatenbank nun einige grundlegende Funktionen hinzufügen. Im Moment zeigt die Wissensdatenbank-URL eine Platzhalter-Benutzeroberfläche an, aber beginnen wir damit, damit etwas Nützliches zu tun. Beginnen wir mit Folgendem:
Fügen Sie in der linken Navigationsleiste einen Link für „Wissensdatenbankeinstellungen“ hinzu. Dies sollte auf eine neue Vorlage verweisen, die diese Einstellungen enthält.
Fügen Sie auf der Seite „Knowledge Base-Einstellungen“ ein Platzhalterbild und einen Platzhaltertext hinzu.
Fügen Sie auf der Seite „Knowledge Base-Einstellungen“ einen Link für „Themen“ hinzu, der vom Endbenutzer erstellt wird. Diese Themen werden in einem zukünftigen Schritt Artikel enthalten. Nehmen Sie die erforderlichen Datenbankaktualisierungen vor, um diese Änderungen zu unterstützen.
[/PROMPT]
Claude nahm die notwendigen Änderungen vor, hatte jedoch Probleme mit fehlenden Bibliotheken. Es verlor wieder einmal den Überblick über die virtuelle Umgebung .venv, an die ich es erinnern musste.
[PROMPT]
Bitte stellen Sie sicher, dass Sie die virtuelle Umgebung verwenden, Verzeichnis mit dem Namen .venv
[/PROMPT]
Am Ende hatten wir diese Benutzeroberfläche, der ein Bild fehlte, die mehrere verschiedene Schriftarten hatte und die Schaltfläche „Themen verwalten“ nicht funktionierte. Ich habe Claude gebeten, es aufzuräumen.
[PROMPT]
Wir müssen einige Änderungen an der Benutzeroberfläche der Wissensdatenbank-Einstellungsseite vornehmen.
Claude hat erneut versucht, ein lokales Platzhalterbild zu verwenden, aber ich habe ihn daran erinnert, den Dienst via.placeholder.com zu verwenden, wie in Teil 2 beschrieben.
Als ich mir die Ausgabe ansah, bemerkte ich einen DB-Migrationsfehler, den Claude beheben konnte:
Ausnahme während der DB-Migration:
raise ValueError("Constraint must have a name")
ValueError: Einschränkung muss einen Namen haben
Nach einigem Aufräumen war dies die Benutzeroberfläche, die mir nicht gefallen hat:
[PROMPT]
Bitte aktualisieren Sie die Benutzeroberfläche für die Seite „Wissensdatenbank/Einstellungen“ und verwenden Sie dabei die Seite „Integrationen/Slack“ als Leitfaden. Verbessern Sie die Schriftarten und ersetzen Sie das Platzhalterbild durch ein lokales Bild, das eine Wissensdatenbank darstellt – vielleicht ein Buch?
[/PROMPT]
API-Grenzwerte werden verschärft!
429 {"type":error,error:{"type"rate_limit_error,message:Anzahl der Anforderungstoken hat Ihr Minutenratenlimit überschritten (https://docs. anthropic.com/en/api/rate-limits); sehen Sie sich die aktuellen Verwendungszwecke in den Antwortheadern an oder versuchen Sie es später noch einmal .com/contact-sales, um Ihre Optionen für eine Erhöhung des Tariflimits zu besprechen.}}}
Als ich die vorbeiströmenden Anfragen beobachtete, sah ich, wie Claude einen cURL-Befehl verwendete, um ein Symbol herunterzuladen, das die Wissensdatenbank darstellte. Es wurde jedoch nicht geladen. Auf Nachfrage sagt Claude, dass eine SVG-Datei heruntergeladen, aber als PNG gespeichert wurde. Das ist etwas Neues. Noch eine Iteration und das Problem wurde behoben, sodass ich Folgendes hatte:
Ich bin mir nicht sicher, ob mir das Layout mit der großen Schaltfläche „Themen verwalten“ gefällt, aber vorerst reicht es. Weiter zur Themenverwaltung:
Nicht schlecht, aber wenn ich versuche, einen bereits vorhandenen Themennamen hinzuzufügen, erhalte ich eine Ausnahme:
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE-Einschränkung fehlgeschlagen: Knowledge_base_topic.name
[SQL: INSERT INTO Knowledge_base_topic (name) VALUES (?)]
[Parameter: ('Thema 1',)]
Dies ist die gleiche Einschränkung, bei deren Erstellung zuvor ein Problem aufgetreten ist. Mal sehen, ob Claude das Problem beheben kann.
[PROMPT]
Wenn ich versuche, einen Themennamen zu erstellen, der bereits vorhanden ist, erhalte ich eine Ausnahme. Bitte beheben? sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE-Einschränkung fehlgeschlagen: Knowledge_base_topic.name
[SQL: INSERT INTO Knowledge_base_topic (name) VALUES (?)]
[Parameter: ('Thema 1',)]
[/PROMPT]
…und ein weiterer 429-Fehler:
429 {"type":error,error:{"type"rate_limit_error,message:Anzahl der Anforderungstoken hat Ihr Minutenratenlimit überschritten (https://docs. anthropic.com/en/api/rate-limits); sehen Sie sich die aktuellen Verwendungszwecke in den Antwortheadern an oder versuchen Sie es später noch einmal .com/contact-sales, um Ihre Optionen für eine Erhöhung des Tariflimits zu besprechen.}}}
Claude muss sehr hart getroffen werden! Heute Abend fast unbrauchbar…
[PROMPT]
Ich bin jetzt daran gehindert, mehrere Themen mit demselben Namen zu erstellen, aber es gibt ein paar Probleme: 1. Fehlender Stil für die Flash-Meldung „Fehler“. Die Hintergrundfarbe sollte wahrscheinlich rot sein. 2. Bei den Themennamen sollte die Groß-/Kleinschreibung nicht beachtet werden. Wenn „Thema“ bereits existiert, „sollte ich nicht auch „TOPIC“ erstellen dürfen.
[/PROMPT]
Ein weiterer 429-Fehler. Das ist anstrengend…
Ich konnte noch eine weitere Anfrage einschleichen, bis ich angeblich mein TÄGLICHES Limit erreicht hatte:
429 {"type":error,error:{"type"rate_limit_error,message:Anzahl der Anforderungstoken hat Ihr tägliches Ratenlimit überschritten (https://docs.anthropic. com/en/api/rate-limits); sehen Sie sich die aktuellen Verwendungszwecke in den Antwortheadern an oder versuchen Sie es später noch einmal /contact-sales, um Ihre Optionen für eine Erhöhung des Tariflimits zu besprechen.}}}
Ich habe heute Abend nicht viel mit Claude gemacht, aber schnell mein Token-Limit erreicht. Ich bin mir nicht ganz sicher, wie das berechnet wird, aber die API scheint heute Abend sehr restriktiv zu sein. Ich kann nur lächeln und bis morgen warten.
Nächster Tag:
[PROMPT]
Lassen Sie uns die Benutzeroberfläche für Wissensdatenbankthemen weiter verbessern, indem wir die folgenden Änderungen vornehmen: 1. Bei den Themennamen sollte die Groß-/Kleinschreibung nicht beachtet werden. Wenn „Thema“ bereits existiert, „sollte ich nicht auch „TOPIC“ erstellen dürfen. 2. Legen Sie ein Limit von 10 für die Anzahl der Themen fest, die erstellt werden können, und zeigen Sie diese Anzahl in der Benutzeroberfläche an. Deaktivieren Sie die Schaltfläche „Thema erstellen“, wenn es 10 Themen gibt, und zeigen Sie eine entsprechende Meldung an.
[/PROMPT]
Claude hat sich einen ausgefallenen Klassenfunktionscode ausgedacht, um die Anzahl der Themen und die Groß-/Kleinschreibung zu überprüfen. Ziemlich elegant:
Mir ist aufgefallen, dass für den Themennamen keine maximale Länge erzwungen wurde, obwohl ich Claude in meiner Systemaufforderung dazu aufforderte, die für jede von mir gesendete Aufforderung gelten soll. Enttäuschend…
Obwohl das Feld in der Datenbank so konfiguriert ist, dass es 100 Zeichen akzeptiert, konnte ich einen Themennamen mit Tausenden einreichen, und nichts ging in die Luft. Ich bin mir nicht sicher, wie das alles funktioniert, aber wo ich herkomme, führt das Fehlen durchgesetzter Grenzwerte zu Problemen.
[PROMPT]
Es sieht nicht so aus, als würden Sie eine Längenbeschränkung für einen Themennamen erzwingen. Ist das richtig?
[/PROMPT]
Sie haben Recht und ich entschuldige mich dafür, dass ich dieses wichtige Detail übersehen habe. Fügen wir den Themennamen eine Längenbeschränkung hinzu. Wir legen eine maximale Länge von 50 Zeichen für Themennamen fest. Ich werde die notwendigen Änderungen vornehmen, um dieses Limit sowohl im Backend als auch im Frontend durchzusetzen.
Claude hat etwas Code hinzugefügt, aber es war reines Javascript und ich wollte jQuery, das bereits Teil des Projekts ist. Ich habe auch jQuery in meiner Systemeingabeaufforderung, aber es scheint auch das zu ignorieren. Claude hat es in jQuery geändert und sogar einen Zeichenzähler hinzugefügt (nette Geste!). Aber... es funktioniert nicht!
[PROMPT]
Ich sehe, dass Sie einen Zeichenzähler hinzugefügt haben, aber er funktioniert nicht. Ich sehe keine Fehler in der Webkonsole. Bitte beheben.
[/PROMPT]
Claude hat ein paar Änderungen an der Reihenfolge der Skript-Tags vorgenommen und jetzt funktioniert es. Wieder ähnliche Probleme wie zuvor.
[PROMPT]
Lassen Sie uns auf der Seite „Themen verwalten“ noch ein paar Verbesserungen an der Benutzeroberfläche vornehmen. 1. Sortieren Sie die Themen in alphabetischer Reihenfolge, ohne Berücksichtigung der Groß- und Kleinschreibung. 2. Verschieben Sie die Themenanzahl neben die Überschrift „Vorhandene Themen“ und entfernen Sie sie von unterhalb der Schaltfläche „Thema erstellen“.
[/PROMPT]
Mitten in dieser Iteration habe ich WIEDER mein tägliches API-Limit erreicht. Was auch immer Anthropic kürzlich mit „Prompt Caching“ geändert hat, hat mir nicht geholfen. Es scheint schlimmer geworden zu sein.
Und natürlich:
400 {"type":error,error:{"type":invalid_request_error,message:Ihr Guthaben ist zu niedrig, um auf die Claude-API zuzugreifen. Bitte gehen Sie zu Pläne & Abrechnung, um upgraden oder Credits kaufen."}}
Dies ist die aktuelle Benutzeroberfläche. Nicht schlecht!
Bis zum nächsten Tag… Als nächstes möchte ich den Code erstellen, um Artikel zur Wissensdatenbank hinzuzufügen.
[PROMPT]
Jetzt möchte ich eine weitere Funktion erstellen, mit der wir Artikel zur Wissensdatenbank hinzufügen können. Einige Anforderungen:
Jeder Artikel muss zu einem Thema gehören.
Wenn ein Thema Artikel enthält, sollten die Artikel auch gelöscht werden, wenn das übergeordnete Thema gelöscht wird. Die Löschbestätigung soll den Benutzer darüber informieren, wie viele Artikel ebenfalls gelöscht werden. Der Benutzer muss das Wort „delete“ (ohne Berücksichtigung der Groß- und Kleinschreibung) eingeben, um das Löschen des Themas zu bestätigen, wenn es Artikel enthält.
Klicken Sie auf einen Themennamen, um die darin enthaltenen Artikel anzuzeigen.
In der nächsten Eingabeaufforderung erstellen wir die Benutzeroberfläche für die Artikelerstellungsseite. Stellen Sie zunächst eine Platzhalterseite mit Platzhalterbildern und -text zusammen.
Bitte nehmen Sie die erforderlichen Änderungen an den Dateien und der Datenbankstruktur vor, um diese Funktion zu unterstützen.
[/PROMPT]
Das ist eine ziemlich deftige Aufforderung. Mal sehen, wie es Claude geht...
Es gab ein paar Probleme mit der Datenbankmigration, die offenbar darauf zurückzuführen waren, dass Claude die .venv-Datei erneut nicht erkannte
Umfeld. Ich werde das zur Systemaufforderungseinstellung in Claude-Dev hinzufügen. Hoffentlich hilft es.
Nachdem diese Probleme behoben waren, fand ich die Ergebnisse ziemlich gut. Natürlich bedarf es nach einigen kurzen Tests noch einiger Optimierungen. Ich werde diese in der nächsten Eingabeaufforderung auswählen:
[PROMPT]
Wir benötigen ein paar Anpassungen an der Implementierung der Artikelerstellung. Bitte nehmen Sie diese Änderungen vor:
Beim Löschen von Themen sollten wir immer eine Bestätigung anzeigen. Allerdings sollten wir nur dann um eine Bestätigung bitten, wenn ein Thema Artikel enthält, die den Benutzer dazu auffordert, das Wort „Löschen“ einzugeben, ohne Berücksichtigung der Groß- und Kleinschreibung.
Fügen Sie einen Mechanismus zum Löschen von Artikeln hinzu und bestätigen Sie diese Löschungen.
Blenden Sie auf der Hauptseite der Wissensdatenbank die Suchleiste und Platzhaltermeldungen aus, wenn keine Themen vorhanden sind. Fügen Sie einen Platzhaltertext hinzu, der besagt, dass noch keine Themen vorhanden sind.
Fügen Sie einen erweiterten Artikeleditor hinzu, damit Benutzer ihre Artikel während der Erstellung und Bearbeitung formatieren können. Schützen Sie sich vor potenziell gefährlichen Zeichen, indem Sie den Artikeltext beim Speichern und Abrufen kodieren und dekodieren.
[/PROMPT]
Ich war gespannt, welchen Artikelredakteur Claude auswählen würde. Es ging mit TinyMCE. Es erschien jedoch nicht.
[PROMPT]
Es sind noch einige weitere Anpassungen erforderlich:
Auf der Seite „Themen verwalten“ sollte angezeigt werden, wie viele Artikel es in jedem Thema gibt.
Die Schaltfläche „Alle Artikel anzeigen“ sollte nicht angezeigt werden, wenn zu einem Thema keine Artikel vorhanden sind. Zeigen Sie stattdessen Text wie „Es gibt keine Artikel zu diesem Thema“ an.
Sie haben versucht, den TinyMCE-Editor zum Hinzufügen und Bearbeiten von Artikeln hinzuzufügen, er wird jedoch nicht angezeigt. Ich sehe keine Fehler in der Konsole.
[/PROMPT]
TinyMCE funktioniert immer noch nicht. Das fühlt sich an wie ein weiteres Websocket- und JIRA-Ticket-Problem, bei dem Claude das Problem nicht beheben kann und mir die Anfragen ausgehen. Ich hoffe nicht. Weitere Optimierungen erforderlich!
[PROMPT]
Es sind noch einige weitere Anpassungen erforderlich:
Wenn in einem Thema keine Artikel vorhanden sind, zeigt die Themenverwaltung sowohl einen Artikelzähler als auch den Text „Es gibt keine Artikel in diesem Thema“ an. Es ist nicht erforderlich, beides anzuzeigen. Entfernen Sie daher den Text „Es gibt keine Artikel zu diesem Thema“.
Auf der Seite „Wissensdatenbank“ wird weiterhin die Schaltfläche „Alle Artikel anzeigen“ angezeigt, wenn zum Thema keine Artikel vorhanden sind. Zeigen Sie stattdessen Text wie „Es gibt keine Artikel zu diesem Thema“ an.
Der TinyMCE-Editor erscheint immer noch nicht zum Hinzufügen oder Bearbeiten von Artikeln. Ich sehe keine Fehler in der Konsole.
[/PROMPT]
Die TinyMCE-Benutzeroberfläche wird jetzt geladen, fragt jedoch nach einem API-Schlüssel. Ich werde Claude fragen, ob es stattdessen einen einfacheren, kostenlosen Editor gibt.
[PROMPT]
Der TinyMCE-Editor wird jetzt angezeigt, fragt jedoch nach einem API-Schlüssel. Gibt es einen anderen Editor, den wir verwenden können, der keinen Schlüssel erfordert? Grundlegende Formatierungsoptionen sollten vorerst in Ordnung sein. Wenn Sie eines finden, ersetzen Sie bitte TinyMCE durch dieses.
[/PROMPT]
Claude hat TinyMCE durch CKEditor ersetzt und jetzt wird es geladen! Allerdings ist es nicht ohne Probleme. Ich kann kein Bild hochladen oder den Artikel speichern. Fehler in der Entwicklungskonsole:
[PROMPT]
Ich kann CKEditor anzeigen, habe aber ein paar Probleme:
Ich kann einen Artikel nicht speichern. Die Entwicklungskonsole zeigt diesen Fehler an: new:1 Ein ungültiges Formularsteuerelement mit name='content' ist nicht fokussierbar.
Ich kann kein Bild hochladen. Die Entwicklungskonsole zeigt diesen Fehler an: ckeditorerror.ts:140 filerepository-no-upload-adapter
Bitte beheben?
[/PROMPT]
Claude sagt:
Ich entschuldige mich für die Probleme, die Sie haben. Lassen Sie uns beide Probleme angehen:
Der Fehler „Ein ungültiges Formularsteuerelement mit name='content' ist nicht fokussierbar“ ist wahrscheinlich darauf zurückzuführen, dass der CKEditor den Textbereich durch ein eigenes Element ersetzt, was zu Problemen bei der Formularvalidierung führt. Um dies zu bewältigen, müssen wir unseren Formularübermittlungsprozess aktualisieren.
Der Fehler „filerepository-no-upload-adapter“ tritt auf, weil wir keinen Upload-Adapter für CKEditor konfiguriert haben. Wir müssen einen einfachen Upload-Adapter implementieren, um Bild-Uploads zu verarbeiten.
Die erste Lösung sah einfach aus, aber Claude fügte sehr komplexen Javascript-Code hinzu, um das Hochladen von Dateien zu ermöglichen. Ich habe zurückgedrängt:
[PROMPT]
Das sieht nach einem sehr komplizierten Code für den Upload-Adapter aus. Sind Sie sicher, dass es keine einfachere Lösung gibt, vielleicht etwas, das in CKEditor integriert ist?
[/PROMPT]
Claude:
Ich entschuldige mich für die Komplexität. Sie haben Recht, es gibt eine einfachere Lösung mit den integrierten Funktionen von CKEditor. Vereinfachen wir unseren Ansatz, indem wir das Basispaket von CKEditor verwenden, das keine Bild-Uploads beinhaltet, aber grundlegende Formatierungsoptionen bietet. Dies sollte beide Probleme lösen, ohne dass ein komplexer Upload-Adapter erforderlich ist.
Ich möchte Datei-Upload-Funktionen haben, kann aber bei dieser Übung darauf verzichten. Leider habe ich mein tägliches API-Limit erreicht, sodass es für die heutigen Aktivitäten reicht. So ein Schwungkiller…
429 {"type":error,error:{"type"rate_limit_error,message:Anzahl der Anforderungstoken hat Ihr tägliches Ratenlimit überschritten (https://docs.anthropic. com/en/api/rate-limits); sehen Sie sich die aktuellen Verwendungszwecke in den Antwortheadern an oder versuchen Sie es später noch einmal /contact-sales, um Ihre Optionen für eine Erhöhung des Tariflimits zu besprechen.}}}
Allerdings habe ich mir einige von Claudes Korrekturen in der Vorschau angesehen. Ich kann einen Artikel jetzt speichern, aber in der Vorschau wird HTML-Code angezeigt. Es gibt auch keine Möglichkeit, tatsächlich einen gesamten Artikel anzuzeigen. Ein Versehen meinerseits. Muss repariert werden!
Aufgrund einiger Mängel in meinen früheren Eingabeaufforderungen beim Erstellen der Benutzeroberfläche werden Seiten und Funktionen, die für einen Administrator gedacht sind, mit denen eines Endbenutzers vermischt. Ich werde das eines Tages aufräumen müssen. Lassen Sie uns zunächst mit einigen Korrekturen und Optimierungen fortfahren … Hier ist eine weitere wichtige Sache. Mir gehen bald die Credits aus, aber los geht’s!
[PROMPT]
Es gibt noch einige Fehler und Mängel, die behoben werden müssen:
Beim Erstellen und Bearbeiten eines Artikels habe ich weiterhin die Möglichkeit, Bilder hochzuladen. Beim Versuch, ein Bild hochzuladen, wird ein Fehler angezeigt: ckeditorerror.ts:140. Ich möchte Bilder mit dem Editor hochladen können, bitte beheben Sie das Problem. Bei Bedarf können wir das Verzeichnis /static/uploads/ verwenden, um hochgeladene Bilder zu speichern.
Wenn ich zur Seite „Thema/[Themennummer]“ gehe, werden Artikelvorschauen angezeigt, die jedoch mit sichtbarem HTML-Code angezeigt werden. Diese Seite soll als Artikelvorschau dienen und wir sollten vielleicht eine Nur-Text-Version des Anfangs dieses Artikels sehen. Möglicherweise müssen wir dies später anpassen.
Wir benötigen eine neue Route, um einen Artikel anzuzeigen, und der Artikel sollte ordnungsgemäß formatiert angezeigt werden. Wenn Sie jetzt auf einen Artikel klicken, gelangen Sie in den Bearbeitungsmodus. Wir müssen das Betrachten vom Bearbeiten trennen.
Es sollte eine Möglichkeit geben, in jedem Thema über die Seite „Themen verwalten“ einen neuen Artikel zu erstellen.
Beim Erstellen eines neuen Artikels gibt es unten auf der Seite ein Themen-Dropdown. Dieses Dropdown-Menü erkennt kontextuell nicht, in welchem Thema sich der Benutzer befindet. Das Dropdown-Menü sollte das richtige Thema widerspiegeln.
[/PROMPT]
Als ich Claude dabei zusah, wie er den Code für die Funktion zum Hochladen von Dateien erstellte, bemerkte ich, dass dadurch derselbe Javascript-Block in einigen verschiedenen Dateien erstellt wurde.
[PROMPT]
Es sieht so aus, als gäbe es in den Dateien new_article.html und edit_article.html einen ähnlichen Javascript-Code. Können wir dies in einer gemeinsamen Datei erstellen und stattdessen den Code teilen?
[/PROMPT]
Claude:
Du hast recht, und das ist ein toller Vorschlag. Erstellen wir eine gemeinsame JavaScript-Datei für die CKEditor-Konfiguration und verwenden sie sowohl in new_article.html als auch in edit_article.html.
Erstellen wir zunächst eine neue Datei namens ckeditor_config.js im Verzeichnis static/js.
Das waren viele Veränderungen. Als ich die Codeänderungen überprüfte, fiel mir auf, dass im Diff eine Menge Code aus der app.py-Datei entfernt und durch den Text „# … (Rest des vorhandenen Codes)“ ersetzt wurde. Ich hatte das noch nie zuvor gesehen und obwohl Claude vielleicht so mit einer großen Datei umgegangen ist und der vorhandene Code dadurch nicht wirklich gelöscht wurde. Nun, ich habe mich geirrt!
Als Claude diese Optimierungen abgeschlossen hatte, versuchte ich, die Startseite aufzurufen, und sie war 404. Viele Codes und Routen wurden entfernt und Zeile 80 ist buchstäblich „# … (Rest des vorhandenen Codes)“. Wow, das ist schlecht! Hoffentlich können wir das beheben, aber ich rieche, dass API-Grenzwerte lauern!
[PROMPT]
Oh nein! Ich habe nach Ihrer letzten Änderung offenbar viel Code aus der Datei app.py verloren. Viele der Routen sind verschwunden und wurden in den Zeilen 29 und 80 von app.py durch „# ... (Rest des vorhandenen Codes)“ ersetzt. Bitte beheben!
[/PROMPT]
Claude:
Ich entschuldige mich für das Versehen. Sie haben völlig Recht und ich werde dieses Problem sofort beheben. Lassen Sie uns den fehlenden Code in der app.py-Datei wiederherstellen.
Claude konnte den Code reparieren, aber Wow – das ist schlecht. Was zum Teufel sollte das überhaupt bedeuten?
[PROMPT]
Wenn ich versuche, die Schaltfläche „Neuer Artikel“ zu erstellen, erhalte ich diese Fehlermeldung: jinja2.Exceptions.UndefinedError: 'csrf_token' ist undefiniert
[/PROMPT]
Claude sagt, wir brauchen jetzt das Flask-WTF-Paket und es wird es mit pip installieren. Mal sehen, ob die Systemaufforderung zur Verwendung des .venv-Verzeichnisses funktioniert …
Auf keinen Fall! Claude hat es noch einmal gemacht und den gesamten Code während der Codezusammenführung gelöscht! Sie müssen wirklich aufmerksam sein und den generierten Code nicht einfach akzeptieren.
[PROMPT]
Ich kann diesen Code nicht akzeptieren! Zeile 31 „hat # ... (Rest des vorhandenen Codes)“ und Sie haben den Rest des Codes wieder entfernt!
[/PROMPT]
Als Claude fertig war, versuchte der Server neu zu starten, scheiterte jedoch mit „ModuleNotFoundError: Kein Modul namens 'flask_wtf'“, was darauf hindeutet, dass das .venv-Verzeichnis nicht verwendet wurde. Ich glaube also nicht, dass die Systemaufforderung funktioniert. Dies könnte ein Problem mit der Claude-Dev-Erweiterung sein.
[PROMPT]
Ich erhalte die Fehlermeldung „ModuleNotFoundError: Kein Modul mit dem Namen ‚flask_wtf‘“. Bitte stellen Sie daher sicher, dass Sie das virtuelle Verzeichnis .venv verwenden, wenn Sie neue Bibliotheken hinzufügen!
[/PROMPT]
Claude:
Ich entschuldige mich für das Versehen. Sie haben Recht, wir müssen Flask-WTF in der virtuellen Umgebung installieren. Machen wir das jetzt.
Und… wie am Schnürchen:
429 {"type":error,error:{"type"rate_limit_error,message:Anzahl der Anforderungstoken hat Ihr tägliches Ratenlimit überschritten (https://docs.anthropic. com/en/api/rate-limits); sehen Sie sich die aktuellen Verwendungszwecke in den Antwortheadern an oder versuchen Sie es später noch einmal /contact-sales, um Ihre Optionen für eine Erhöhung des Tariflimits zu besprechen.}}}
Die gute Nachricht ist, dass Claude die richtige virtuelle Umgebung nutzen konnte und der Server gestartet ist.
Die schlechte Nachricht ist, dass beim Versuch, einen neuen Artikel einzureichen, ein weiterer CSRF-Fehler auftritt. Wach auf, Claude. Du hast noch einiges zu tun!
[PROMPT]
Bitte beheben Sie die folgenden Fehler:
Wenn ich versuche, einen neuen Artikel einzureichen, erhalte ich die Fehlermeldung „Ungültige Anfrage“. Das CSRF-Token fehlt.“
Wenn ich versuche, einen Artikel anzuzeigen, sind HTML-Tags sichtbar. Der Artikel sollte formatiert ohne die Tags angezeigt werden.
[/PROMPT]
Jemand ist mit schlechter Laune aufgewacht ... Ich nutze es kaum und bin bereits mit Ratenbeschränkungen konfrontiert.
429 {"type":error,error:{"type"rate_limit_error,message:Anzahl der Anforderungstoken hat Ihr Minutenratenlimit überschritten (https://docs. anthropic.com/en/api/rate-limits); sehen Sie sich die aktuellen Verwendungszwecke in den Antwortheadern an oder versuchen Sie es später noch einmal .com/contact-sales, um Ihre Optionen für eine Erhöhung des Tariflimits zu besprechen.}}}
[PROMPT]
Ich finde immer noch einige Fehler. Diese sind alle sehr einfach und hätten es nicht in den Code schaffen sollen. Bitte überprüfen Sie Ihren Code genauer, da diese mich jedes Mal Geld kosten, wenn Sie sie reparieren müssen! Vielleicht wird die Anwendung so kompliziert, dass es an der Zeit ist, automatisierte Tests hinzuzufügen, die bei jeder Codeänderung ausgeführt werden? Die Probleme, die ich finde:
Wenn ich versuche, einen Artikel wie den unter Artikel/2 gefundenen anzuzeigen, wird immer noch HTML-Markup angezeigt und der formatierte Artikel wird nicht gerendert. Vielleicht geht das kaputt, wenn der Artikel gespeichert wird? Ich sehe es; und gt; in der Datenbank und stellen Sie fest, dass Sie „content = html.escape(content)“ in app.py Zeile 416 haben.
Wenn ich versuche, ein neues Thema zu erstellen, erhalte ich jetzt die Fehlermeldung „Bad Request. Das CSRF-Token fehlt.“
Wenn ich versuche, einen neuen Artikel zu erstellen, erhalte ich die Meldung „Undefinierter Fehler jinja2.Exceptions.Undefinierter Fehler: 'form' ist undefiniert“
[/PROMPT]
Wenn ich Claude dabei zusehe, wie er Codeänderungen vornimmt, denke ich, dass es langsam dahinschmilzt. Warum wird dieser gesamte Code erneut gelöscht??
[PROMPT]
Warum löschen Sie den ganzen Code wieder? Zeile 35 enthält # ... (alle vorhandenen Modelldefinitionen und Hilfsfunktionen beibehalten) und der gesamte andere Code wird gelöscht? Seien Sie vorsichtig!
[/PROMPT]
Claude:
Ich entschuldige mich für die Verwirrung. Sie haben völlig Recht und ich schätze Ihre Liebe zum Detail. Lassen Sie uns die notwendigen Änderungen vornehmen und dabei den gesamten vorhandenen Code beibehalten. Wir aktualisieren nur die spezifischen Teile, die geändert werden müssen.
Lassen Sie uns die Datei app.py aktualisieren und uns dabei nur auf die Teile konzentrieren, die geändert werden müssen
429 {"type":error,error:{"type"rate_limit_error,message:Anzahl der Anforderungstoken hat Ihr Minutenratenlimit überschritten (https://docs. anthropic.com/en/api/rate-limits); sehen Sie sich die aktuellen Verwendungszwecke in den Antwortheadern an oder versuchen Sie es später noch einmal .com/contact-sales, um Ihre Optionen für eine Erhöhung des Tariflimits zu besprechen.}}}
Seufz…
[PROMPT]
Die Zeilen 35, 37 und 46 enthalten immer noch diese Kommentare und Sie löschen große Codeblöcke. Warum?
[/PROMPT]
Und natürlich -
429 {"type":error,error:{"type"rate_limit_error,message:Anzahl der Anforderungstoken hat Ihr tägliches Ratenlimit überschritten (https://docs.anthropic. com/en/api/rate-limits); sehen Sie sich die aktuellen Verwendungszwecke in den Antwortheadern an oder versuchen Sie es später noch einmal /contact-sales, um Ihre Optionen für eine Erhöhung des Tariflimits zu besprechen.}}}
Ich kann nicht der Einzige sein, der diese Probleme hat. Alle anderen sagen, dass sie mit Claude Millionen verdienen, und ich scheine alle Käfer zu finden! Ich habe eine Ausgabe im Claude-Dev-Github-Projekt geöffnet, da ich so nicht leben kann: Github-Link
Nach einigen weiteren Recherchen hört es sich so an, als würde mein Projekt an eine Art Token-Limit stoßen, das hier dokumentiert ist: Github-Problem. Dies schränkt die Komplexität des Projekts, mit dem Sie arbeiten können, erheblich ein und ist wahrscheinlich die Ursache für so viele API-Limit-Fehler, je komplexer das Projekt wurde.
Wenn ich das Problem richtig verstehe, sendet Claude-dev zur Steigerung der Codequalität den gesamten Inhalt der aktiven Datei in Anfragen hin und her. Das verschlingt Token und irgendwann wurde meine app.py-Datei zu groß, um sie zu verwalten. Ein Vorschlag besteht darin, den Code in kleinere Dateien aufzuteilen. Bereits in Teil 1 war dies die Richtung, in die wir gingen, aber wir hatten einige Probleme mit zirkulären Importen und Uvicorn, also sind wir hier ...
Ich denke, ich werde dieses Projekt vorerst ruhen lassen und dem Github-Thread für Updates folgen. Das gibt Anlass zur Hoffnung, dass ein bevorstehendes Claude-Update die Schmerzen lindern wird: Github-Kommentar
Als nächstes: Cursor? Als ich es das letzte Mal versuchte, gefiel mir die Benutzeroberfläche nicht so gut, aber viele Leute scheinen den Wechsel vorgenommen zu haben. Cursor scheint der Neuling in der Stadt für Entwickler zu sein, die die Benutzeroberfläche nutzen, um ihre Produktivität zu steigern. Denn was wir jetzt brauchen, ist eine weitere IDE.
Im Kreis drehen wir uns...
Also, einige Schlussfolgerungen?
Ist Claude bereit, Softwareentwickler zu ersetzen? Eh, noch nicht ganz, aber es kann bestehende Ingenieure produktiver machen. Die API-Grenzwerte sind für alles andere als ein kleines Projekt, Refactoring, Fehlerbehebungen und die Verwendung als virtueller Paarprogrammierer restriktiv.
Ich habe gelesen, dass Claude komplexe Codebasen lesen und Fehler darin beheben kann. Meiner Erfahrung nach sind einige Fehler aufgetreten, die in einem relativ einfachen Projekt mit Code, den es selbst erstellt hat, nicht behoben werden konnten, sodass ich nicht gerade warm und unscharf war. Wie würde es auf einer alten Codebasis funktionieren, die von Dutzenden von Leuten mit einer komplizierten Dateistruktur geschrieben wurde? Claude hatte keinen Geschäftskontext und wenn man ihn bat, einen UI-Fehler zu beheben, gelang es ihm nicht, die bereits vorhandene UI und den UX-Flow in diesem einfachen Projekt abzugleichen. Es waren mehrere Iterationen erforderlich, um nach sich selbst aufzuräumen.
Ich finde Backend-Code „einfacher“ als Frontend-Code, daher würde ich ihn persönlich verwenden, um mir beim Aufbau einer Projektstruktur und einer Skelett-Benutzeroberfläche zu helfen. Eine von Claudes Stärken ist „Computer Vision“, die es Ihnen ermöglicht, eine Datei hochzuladen und Claude zu bitten, sie im Code neu zu erstellen. Wenn Ihnen die Benutzeroberfläche einer Website gefällt, sollte Ihnen dies einen guten Ausgangspunkt bieten. Vielleicht ist dies die neue „Quelle anzeigen“. Umarmen und steigern, wie man so schön sagt.
Obwohl Claude bei einer meiner ersten Aufforderungen aufgefordert wurde, Bootstrap zu verwenden, um eine Responsive UI zu erstellen, habe ich gerade zum ersten Mal die mobile Ansicht überprüft und festgestellt, dass sie bei kleineren Auflösungen als der IPad Mini-Auflösung nicht wirklich funktionsfähig ist, und das ist auch nicht der Fall sehen auch toll aus. Machen Sie also keine Annahmen. Claudes Code erfordert den gleichen Testumfang wie jeder andere Code.
Tatsächlich wäre es sinnvoll, ein automatisiertes Testsystem aufzubauen, das vor dem Einchecken des Codes ausgeführt werden kann. Niemand macht gerne DIESE Arbeit. Machen Sie Claude für das Schreiben, Warten und Ausführen von Tests verantwortlich. Auf jeden Fall eine Straße, die es wert ist, erkundet zu werden.
Ich habe Claude gebeten, in einer meiner letzten Eingabeaufforderungen eine Automatisierung zu erstellen, aber die Token- und API-Beschränkungen machten diesem Experiment ein Ende, bevor wir überhaupt dort ankamen.
ÜBER DEN AUTOR
Über den Autor
Joe Giglio ist seit über 25 Jahren in der Softwarebranche tätig. Im Laufe seiner Karriere hat er für einen lokalen Einwahl-ISP, Start-ups jeder Größe und ein gut etabliertes, langsam wachsendes Unternehmen gearbeitet. Bei jedem Stopp wurden wichtige Erkenntnisse gewonnen.
Zu seinen jüngsten Projekten gehören:
Training und Beratung für Fernarbeit: Chiefremoteofficer.com
Kindle-Buch „Making Remote Work, Work For You“
Remote-Unternehmensrankings. Denken Sie an „Glassdoor für Remote-Unternehmen“: remotescorecard.com
Joes Leitprinzipien sind: Remote First, Qualitätsorientierung, Kundenverfechter und lebenslanges Lernen. Er war introvertiert und übte soziale Distanzierung, lange bevor es cool war!
Er lebt derzeit in North Carolina und ist immer an neuen Möglichkeiten interessiert, qualifizierte Leute kennenzulernen und spannende Projekte kennenzulernen.
Kontaktieren Sie Joe Giglio: joe -AT- joegiglio.org | Twitter | LinkedIn
Das obige ist der detaillierte Inhalt vonTeil: Verwendung von Claude, Claude-Dev und Aider zum Aufbau eines Ticketsystems. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!