Maison > Article > développement back-end > Partie utilisant Claude, Claude-Dev et Aider pour construire un système de billetterie
LIEN VERS LA PARTIE 1
Le projet est open source si vous souhaitez jouer le jeu chez vous : https://github.com/joegiglio/helpdesk-claude-dev-ai
PARTIE 3 -
Je voudrais maintenant ajouter quelques fonctionnalités de base à la base de connaissances. Pour le moment, nous n’avons qu’une interface utilisateur squelette. Voyons si nous pouvons demander à Claude d'en faire quelque chose d'utile.
[INVITE]
Je voudrais maintenant ajouter quelques fonctionnalités de base à la base de connaissances. À l'heure actuelle, l'URL de la base de connaissances affiche une interface utilisateur d'espace réservé, mais commençons par lui faire faire quelque chose d'utile. Commençons par ce qui suit :
Ajoutez un lien dans la barre de navigation de gauche pour « Paramètres de la base de connaissances ». Cela devrait créer un lien vers un nouveau modèle contenant ces paramètres.
Dans la page Paramètres de la base de connaissances, ajoutez une image d'espace réservé et un texte d'espace réservé.
Dans la page Paramètres de la base de connaissances, ajoutez un lien vers les « Sujets » qui seront créés par l'utilisateur final. Ces sujets contiendront des articles dans une étape ultérieure. Effectuez les mises à jour de base de données nécessaires pour prendre en charge ces modifications.
[/PROMPT]
Claude a apporté les modifications nécessaires mais a eu des problèmes avec les bibliothèques manquantes. Il a encore une fois perdu la trace de l'environnement virtuel, .venv, que je devais lui rappeler.
[INVITE]
Veuillez vous assurer que vous utilisez l'environnement virtuel, répertoire nommé .venv
[/PROMPT]
Nous nous sommes retrouvés avec cette interface utilisateur qui manquait une image, avait quelques polices différentes et le bouton Gérer les sujets n'était pas fonctionnel. J'ai demandé à Claude de le nettoyer.
[INVITE]
Nous devons apporter quelques modifications à l'interface utilisateur de la page des paramètres de la base de connaissances.
Claude a de nouveau essayé d'utiliser une image d'espace réservé local mais je lui ai rappelé d'utiliser le service via.placeholder.com comme indiqué dans la partie 2.
En regardant le résultat, j'ai remarqué une erreur de migration de base de données que Claude a pu corriger :
Exception lors de la migration de la base de données :
raise ValueError("La contrainte doit avoir un nom")
ValueError : La contrainte doit avoir un nom
Après quelques nettoyages, voici l'interface utilisateur, dont je ne me souciais pas :
[INVITE]
Veuillez mettre à jour l'interface utilisateur de la page base de connaissances/paramètres en utilisant la page intégrations/slack comme guide. Améliorez les polices et remplacez l'image d'espace réservé par une image locale qui représente une base de connaissances - peut-être un livre ?
[/PROMPT]
Les limites des API se resserrent !
429 {"type": "error", "error": {"type": "rate_limit_error", "message": "Le nombre de jetons de requête a dépassé votre limite de débit par minute (https://docs. anthropic.com/en/api/rate-limits) ; consultez les en-têtes de réponse pour l'utilisation actuelle. Veuillez réduire la longueur de l'invite ou le nombre maximal de jetons demandés, ou réessayer plus tard. Vous pouvez également contacter le service commercial sur https://www.anthropic. .com/contact-sales pour discuter de vos options d'augmentation de la limite tarifaire. "}}
En regardant les requêtes défiler, j'ai vu Claude utiliser une commande cURL pour télécharger une icône représentant la Base de Connaissances. Cependant, il ne se chargeait pas. Lorsqu'on lui a demandé, Claude a répondu qu'un fichier SVG avait été téléchargé mais enregistré au format PNG. C'est un nouveau. Une itération de plus et c'était corrigé, me laissant avec :
Je ne sais pas si j'aime la mise en page avec le gros bouton Gérer les sujets, mais cela fera l'affaire pour l'instant. Passons à la gestion des sujets :
Pas mal, mais si j'essaie d'ajouter un nom de sujet qui existe déjà, je rencontre une exception :
sqlalchemy.exc.IntegrityError : (sqlite3.IntegrityError) La contrainte UNIQUE a échoué : knowledge_base_topic.name
[SQL : INSÉRER DANS LES VALEURS knowledge_base_topic (nom) (?)]
[paramètres : ('thème 1',)]
C'est la même contrainte qu'elle a eu du mal à créer plus tôt. Voyons si Claude peut le réparer.
[INVITE]
Si j'essaie de créer un nom de sujet qui existe déjà, j'obtiens une exception. S'il vous plaît, corrigez ? sqlalchemy.exc.IntegrityError : (sqlite3.IntegrityError) La contrainte UNIQUE a échoué : knowledge_base_topic.name
[SQL : INSÉRER DANS LES VALEURS knowledge_base_topic (nom) (?)]
[paramètres : ('thème 1',)]
[/PROMPT]
…et une autre erreur 429 :
429 {"type": "error", "error": {"type": "rate_limit_error", "message": "Le nombre de jetons de requête a dépassé votre limite de débit par minute (https://docs. anthropic.com/en/api/rate-limits) ; consultez les en-têtes de réponse pour l'utilisation actuelle. Veuillez réduire la longueur de l'invite ou le nombre maximal de jetons demandés, ou réessayer plus tard. Vous pouvez également contacter le service commercial sur https://www.anthropic. .com/contact-sales pour discuter de vos options d'augmentation de la limite tarifaire. "}}
Claude doit être très durement touché ! Quasiment inutilisable ce soir…
[INVITE]
Je ne peux plus créer plusieurs sujets portant le même nom, mais il y a quelques problèmes : 1. Style manquant pour le message flash « erreur ». La couleur de fond devrait probablement être rouge. 2. Les noms des sujets ne doivent pas être sensibles à la casse. Si le « sujet » existe déjà, « je ne devrais pas non plus être autorisé à créer un « SUJET ».
[/PROMPT]
Une autre erreur 429. C'est épuisant…
J'ai pu introduire une demande supplémentaire jusqu'à ce que je sois censé atteindre ma limite QUOTIDIENNE :
429 {"type": "error", "error": {"type": "rate_limit_error", "message": "Le nombre de jetons de requête a dépassé votre limite de débit quotidienne (https://docs.anthropic. com/en/api/rate-limits) ; consultez les en-têtes de réponse pour l'utilisation actuelle. Veuillez réduire la longueur de l'invite ou le nombre maximal de jetons demandés, ou réessayer plus tard. Vous pouvez également contacter le service commercial sur https://www.anthropic.com. /contact-sales pour discuter de vos options d'augmentation de la limite tarifaire."}}
Je n'ai pas fait grand chose avec Claude ce soir mais j'ai rapidement atteint ma limite de jetons. Je ne sais pas vraiment comment cela est calculé mais l'API semble très restrictive ce soir. Tout ce que je peux faire, c'est sourire et attendre demain.
Le lendemain :
[INVITE]
Continuons à améliorer l'interface utilisateur des sujets de la base de connaissances en apportant les modifications suivantes : 1. Les noms des sujets ne doivent pas être sensibles à la casse. Si le « sujet » existe déjà, « je ne devrais pas non plus être autorisé à créer un « SUJET ». 2. Fixez une limite de 10 au nombre de sujets pouvant être créés et affichez ce nombre dans l'interface utilisateur. Désactivez le bouton Créer un sujet s'il y a 10 sujets et affichez un message approprié.
[/PROMPT]
Claude a proposé un code de fonction de classe sophistiqué pour vérifier le nombre de sujets et l'insensibilité à la casse. Assez élégant :
J'ai remarqué qu'une longueur maximale n'était pas appliquée pour le nom du sujet, même si je dis à Claude de le faire dans l'invite système qui est censée s'appliquer à chaque invite que j'envoie. Décevant…
Même si le champ de la base de données est configuré pour accepter 100 caractères, j'ai pu soumettre un nom de sujet contenant des milliers et rien n'a explosé. Je ne sais pas comment tout cela fonctionne, mais d'où je viens, l'absence de limites appliquées entraîne des problèmes.
[INVITE]
Il ne semble pas que vous imposiez une limite de longueur au nom d'un sujet. Est-ce exact ?
[/PROMPT]
Vous avez raison, et je m'excuse d'avoir négligé ce détail important. Ajoutons une limite de longueur aux noms de sujets. Nous définirons une longueur maximale de 50 caractères pour les noms de sujets. J'apporterai les modifications nécessaires pour faire respecter cette limite à la fois dans le backend et le frontend.
Claude a ajouté du code mais c'était du Javascript simple et je voulais jQuery qui fait déjà partie du projet. J'ai aussi jQuery dans l'invite de mon système, mais il semble l'ignorer également. Claude l'a changé en jQuery et a même ajouté un compteur de caractères (belle touche !). Mais… ça ne marche pas !
[INVITE]
Je vois que vous avez ajouté un compteur de caractères mais cela ne fonctionne pas. Je ne vois aucune erreur dans la console Web. Veuillez corriger.
[/PROMPT]
Claude a apporté quelques modifications à l'ordre des balises de script et maintenant ça fonctionne. Encore une fois, des problèmes similaires à ceux que nous avons rencontrés auparavant.
[INVITE]
Apportons quelques modifications supplémentaires à l'interface utilisateur sur la page de gestion des sujets. 1. Triez les sujets par ordre alphabétique, sans tenir compte de la casse. 2. Déplacez le nombre de sujets à côté de l'en-tête « Sujets existants », en le supprimant sous le bouton Créer un sujet.
[/PROMPT]
Au milieu de cette itération, j'ai ENCORE atteint ma limite API quotidienne. Ce qu'Anthropic a récemment changé avec la « mise en cache rapide » n'a rien fait pour m'aider. Il semble que cela ait empiré.
Et bien sûr :
400 {"type": "error", "error": {"type": "invalid_request_error", "message": "Votre solde créditeur est trop faible pour accéder à l'API Claude. Veuillez accéder à Forfaits et facturation pour mettre à niveau ou acheter des crédits."}}
Voici l'interface utilisateur actuelle. Pas mal !
Au lendemain… Ensuite, je souhaite créer le code pour ajouter des articles à la base de connaissances.
[INVITE]
Maintenant, j'aimerais créer une autre fonctionnalité permettant d'ajouter des articles à la base de connaissances. Quelques exigences :
Chaque article doit être dans un sujet.
Si un sujet contient des articles, ceux-ci doivent également être supprimés lorsque son sujet parent est supprimé. La confirmation de suppression doit avertir l'utilisateur du nombre d'articles qui seront également supprimés. L'utilisateur doit taper le mot « supprimer » (insensible à la casse) pour confirmer la suppression du sujet, s'il contient des articles.
Cliquez sur le nom d'un sujet pour afficher les articles qu'il contient.
Dans l'invite suivante, nous créerons l'interface utilisateur pour la page de création d'article. Pour l'instant, créez une page d'espace réservé avec des images et du texte d'espace réservé.
Veuillez apporter les modifications nécessaires aux fichiers et à la structure de la base de données pour prendre en charge cette fonctionnalité.
[/PROMPT]
C'est une invite assez charnue. Voyons comment Claude fait…
Il y a eu quelques problèmes avec la migration de la base de données qui semblent être dus au fait que Claude ne détectait pas encore le .venv
environnement. Je vais ajouter cela au paramètre Invite système dans Claude-Dev. J'espère que cela aide.
Une fois ces problèmes résolus, j’ai trouvé les résultats plutôt bons. Bien sûr, il nécessite quelques ajustements après quelques tests rapides. Je les sélectionnerai dans la prochaine invite :
[INVITE]
Nous avons besoin de quelques ajustements dans la mise en œuvre de la création d'articles. Veuillez apporter ces modifications :
Lors de la suppression de sujets, nous devons toujours afficher une confirmation. Cependant, ce n'est que si un sujet contient des articles que nous devons demander une confirmation qui oblige l'utilisateur à saisir le mot « supprimer », sans tenir compte de la casse.
Ajoutez un mécanisme pour supprimer des articles et confirmer ces suppressions.
Sur la page principale de la base de connaissances, masquez la barre de recherche et les messages fictifs s'il n'y a aucun sujet. Ajoutez un texte d'espace réservé indiquant qu'il n'y a pas encore de sujets.
Ajoutez un éditeur d'articles plus avancé afin que les utilisateurs puissent formater leurs articles lors de la création et de l'édition. Protégez-vous contre les caractères potentiellement dangereux en codant et en décodant le texte de l'article lors de l'enregistrement et de la récupération.
[/PROMPT]
J'étais curieux de voir quel rédacteur d'article Claude sélectionnerait. C'est allé avec TinyMCE. Cependant, cela n'est pas apparu.
[INVITE]
Quelques ajustements supplémentaires sont nécessaires :
La page de gestion des sujets doit indiquer le nombre d'articles dans chaque sujet.
Le bouton « Afficher tous les articles » ne devrait pas apparaître s'il n'y a aucun article dans un sujet. Au lieu de cela, affichez un texte tel que « Il n'y a aucun article dans ce sujet ».
Vous avez tenté d'ajouter l'éditeur TinyMCE pour ajouter et modifier des articles, mais il n'apparaît pas. Je ne vois aucune erreur dans la console.
[/PROMPT]
TinyMCE ne fonctionne toujours pas. Cela ressemble à un autre problème de websocket et de ticket JIRA où Claude ne peut pas résoudre le problème et je suis à court de demandes. J'espère que non. D'autres ajustements sont nécessaires !
[INVITE]
Quelques ajustements supplémentaires sont nécessaires :
S'il n'y a aucun article dans un sujet, la gestion des sujets affiche à la fois un compteur d'articles et le texte « Il n'y a aucun article dans ce sujet ». Il n'est pas nécessaire d'afficher les deux, alors supprimez le texte « Il n'y a aucun article dans ce sujet ».
Sur la page « base de connaissances », nous affichons toujours le bouton « Afficher tous les articles » s'il n'y a aucun article dans le sujet. Au lieu de cela, affichez un texte tel que « Il n'y a aucun article dans ce sujet ».
L'éditeur TinyMCE n'apparaît toujours pas pour ajouter ou modifier des articles. Je ne vois aucune erreur dans la console.
[/PROMPT]
L'interface utilisateur TinyMCE se charge maintenant mais elle demande une clé API. Je demanderai à Claude s'il existe un éditeur plus simple et gratuit.
[INVITE]
L'éditeur TinyMCE apparaît maintenant mais il demande une clé API. Existe-t-il un autre éditeur que nous pouvons utiliser et qui ne nécessite pas de clé ? Les options de formatage de base devraient convenir pour le moment. Si vous en trouvez un, veuillez remplacer TinyMCE par celui-ci.
[/PROMPT]
Claude a remplacé TinyMCE par CKEditor et maintenant ça charge ! Cependant, cela n’est pas sans problèmes. Je ne parviens pas à télécharger une image ou à enregistrer l'article. Erreurs dans la console de développement :
[INVITE]
Je parviens à afficher CKEditor mais je rencontre quelques problèmes :
Je n'arrive pas à sauvegarder un article. La console de développement affiche cette erreur : nouveau : 1 Un contrôle de formulaire non valide avec name='content' n'est pas focalisable.
Je ne peux pas télécharger une image. La console de développement affiche cette erreur : ckeditorerror.ts:140 filerepository-no-upload-adapter
S'il vous plaît, corrigez ?
[/PROMPT]
Claude dit :
Je m'excuse pour les problèmes que vous rencontrez. Abordons les deux problèmes :
L'erreur « Un contrôle de formulaire invalide avec name='content' n'est pas focalisable » est probablement dû au fait que CKEditor remplace la zone de texte par son propre élément, provoquant des problèmes de validation du formulaire. Nous devrons mettre à jour notre processus de soumission de formulaires pour gérer cela.
L'erreur "filerepository-no-upload-adapter" se produit car nous n'avons pas configuré d'adaptateur de téléchargement pour CKEditor. Nous devrons implémenter un adaptateur de téléchargement simple pour gérer les téléchargements d'images.
Le premier correctif semblait simple, mais Claude ajoutait du code Javascript très complexe pour permettre le téléchargement de fichiers. J'ai repoussé :
[INVITE]
Cela ressemble à un code très compliqué pour l'adaptateur de téléchargement. Êtes-vous sûr qu'il n'existe pas de solution plus simple, peut-être quelque chose de intégré à CKEditor ?
[/PROMPT]
Claude :
Je m'excuse pour la complexité. Vous avez raison, il existe une solution plus simple utilisant les fonctionnalités intégrées de CKEditor. Simplifions notre approche en utilisant le package Basic de CKEditor, qui n'inclut pas le téléchargement d'images mais fournit des options de formatage de base. Cela devrait résoudre les deux problèmes sans nécessiter un adaptateur de téléchargement complexe.
Je veux des fonctionnalités de téléchargement de fichiers, mais je peux m'en passer pendant cet exercice. Malheureusement, j’ai atteint ma limite quotidienne d’API, c’est donc tout pour les activités d’aujourd’hui. Un tel tueur d'élan…
429 {"type": "error", "error": {"type": "rate_limit_error", "message": "Le nombre de jetons de requête a dépassé votre limite de débit quotidienne (https://docs.anthropic. com/en/api/rate-limits) ; consultez les en-têtes de réponse pour l'utilisation actuelle. Veuillez réduire la longueur de l'invite ou le nombre maximal de jetons demandés, ou réessayer plus tard. Vous pouvez également contacter le service commercial sur https://www.anthropic.com. /contact-sales pour discuter de vos options d'augmentation de la limite tarifaire."}}
Cependant, j’ai prévisualisé certains des correctifs de Claude. Je peux maintenant enregistrer un article mais l'aperçu affiche du code HTML. Il n’existe également aucun moyen de visualiser un article dans son intégralité. Un oubli de ma part. Il faudra réparer !
En raison de certaines lacunes dans mes invites précédentes lors de la création de l'interface utilisateur, les pages et fonctions destinées à un administrateur sont mélangées avec celles d'un utilisateur final. Il faudra que je nettoie ça un de ces jours. Pour l’instant, continuons avec quelques corrections et ajustements… En voici un autre charnu. Je suis sur le point de manquer de crédits mais c'est parti !
[INVITE]
Il reste encore quelques bugs et lacunes qui doivent être corrigés :
J'ai toujours la possibilité de télécharger des images lors de la création et de la modification d'un article. La tentative de téléchargement d'une image affiche une erreur : ckeditorerror.ts:140. J'aimerais pouvoir télécharger des images à l'aide de l'éditeur, veuillez donc corriger. Nous pouvons utiliser le répertoire /static/uploads/ pour stocker les images téléchargées si nécessaire.
Lorsque je vais sur la page sujet/[numéro du sujet], je vois des aperçus d'articles mais ils apparaissent avec du code HTML visible. Cette page devrait faire office d'aperçu de l'article et nous devrions peut-être voir une version texte brut du début de cet article. Nous devrons peut-être modifier cela plus tard.
Nous avons besoin d’un nouvel itinéraire pour afficher un article, et l’article doit apparaître correctement formaté. À l'heure actuelle, lorsque vous cliquez sur un article, cela vous amène en mode édition. Nous devons séparer la visualisation de l'édition.
Il devrait y avoir un moyen de créer un nouvel article dans chaque sujet à partir de la page de gestion des sujets.
Lors de la création d'un nouvel article, il y a une liste déroulante de sujets en bas de la page. Cette liste déroulante ne tient pas compte du contexte du sujet dans lequel se trouve l'utilisateur. La liste déroulante doit refléter le bon sujet.
[/PROMPT]
En regardant Claude créer le code de la fonctionnalité de téléchargement de fichiers, j'ai remarqué qu'elle créait le même bloc de Javascript dans plusieurs fichiers différents.
[INVITE]
Il semble qu'il existe un code Javascript similaire dans les fichiers new_article.html et edit_article.html. Pouvons-nous créer cela dans un fichier commun et partager le code à la place ?
[/PROMPT]
Claude :
Vous avez raison, et c'est une excellente suggestion. Créons un fichier JavaScript commun pour la configuration CKEditor et utilisons-le à la fois dans new_article.html et edit_article.html.
Tout d'abord, créons un nouveau fichier appelé ckeditor_config.js dans le répertoire static/js.
Cela représentait beaucoup de changements. En examinant les modifications du code, j'ai remarqué que la différence montrait qu'un tas de code était supprimé du fichier app.py et remplacé par le texte « #… (reste du code existant) ». Je n'avais jamais vu cela auparavant et même si c'était peut-être ainsi que Claude traitait un gros fichier, cela n'allait pas vraiment supprimer le code existant. Eh bien, j'avais tort !
Quand Claude a terminé ces ajustements, j'ai essayé d'accéder à la page d'accueil et c'était 404. Beaucoup de code et de routes ont été supprimés et la ligne 80 est littéralement "#… (reste du code existant)". Wow, c'est mauvais ! J'espère que nous pourrons résoudre ce problème, mais je sens les limites de l'API qui se cachent !
[INVITE]
Oh non! Il me semble avoir perdu beaucoup de code du fichier app.py après votre dernière modification. De nombreuses routes ont disparu et ont été remplacées par "# ... (reste du code existant)" sur les lignes 29 et 80 de app.py. S'il vous plaît, corrigez !
[/PROMPT]
Claude :
Je m'excuse pour l'oubli. Vous avez tout à fait raison et je vais résoudre ce problème immédiatement. Restaurons le code manquant dans le fichier app.py.
Claude a réussi à corriger le code mais Wow, c'est un mauvais code. De quoi s'agissait-il ?
[INVITE]
Si j'essaie de créer le bouton « Nouvel article », j'obtiens cette erreur : jinja2.exceptions.UndefinedError : 'csrf_token' is undefined
[/PROMPT]
Claude dit que nous avons maintenant besoin du package Flask-WTF et qu'il l'installera en utilisant pip. Voyons si l'invite système pour utiliser le répertoire .venv fonctionnera…
Pas question ! Claude a récidivé en supprimant tout le code lors de la fusion de code ! Il faut vraiment faire attention et ne pas se contenter d'accepter le code généré.
[INVITE]
Je ne peux pas accepter ce code ! La ligne 31 « a #... (reste du code existant) » et vous avez à nouveau supprimé le reste du code !
[/PROMPT]
Lorsque Claude a eu terminé, le serveur a essayé de redémarrer mais a échoué avec « ModuleNotFoundError : Aucun module nommé 'flask_wtf' » qui indique qu'il n'utilisait pas le répertoire .venv, donc je ne crois pas que l'invite système fonctionne. Cela peut être un problème avec l'extension Claude-Dev.
[INVITE]
Je reçois l'erreur « ModuleNotFoundError : Aucun module nommé 'flask_wtf' », alors assurez-vous que vous utilisez le répertoire virtuel .venv lors de l'ajout de nouvelles bibliothèques !
[/PROMPT]
Claude :
Je m'excuse pour l'oubli. Vous avez raison, nous devons installer Flask-WTF dans l'environnement virtuel. Faisons-le maintenant.
Et… comme sur des roulettes :
429 {"type": "error", "error": {"type": "rate_limit_error", "message": "Le nombre de jetons de requête a dépassé votre limite de débit quotidienne (https://docs.anthropic. com/en/api/rate-limits) ; consultez les en-têtes de réponse pour l'utilisation actuelle. Veuillez réduire la longueur de l'invite ou le nombre maximal de jetons demandés, ou réessayer plus tard. Vous pouvez également contacter le service commercial sur https://www.anthropic.com. /contact-sales pour discuter de vos options d'augmentation de la limite tarifaire."}}
La bonne nouvelle est que Claude a pu utiliser le bon environnement virtuel et le serveur a démarré.
La mauvaise nouvelle est que si j'essaie de soumettre un nouvel article, je suis confronté à une autre erreur CSRF. Réveille-toi, Claude. Vous avez du travail à faire !
[INVITE]
Veuillez corriger les bugs suivants :
Si j'essaie de soumettre un nouvel article, j'obtiens une erreur : « Mauvaise demande. Le jeton CSRF est manquant. »
Si j'essaie de visualiser un article, les balises HTML sont visibles. L'article doit s'afficher formaté sans les balises.
[/PROMPT]
Quelqu'un s'est réveillé de mauvaise humeur… Je l'utilise à peine et je suis déjà confronté à des limites de débit.
429 {"type": "error", "error": {"type": "rate_limit_error", "message": "Le nombre de jetons de requête a dépassé votre limite de débit par minute (https://docs. anthropic.com/en/api/rate-limits) ; consultez les en-têtes de réponse pour l'utilisation actuelle. Veuillez réduire la longueur de l'invite ou le nombre maximal de jetons demandés, ou réessayer plus tard. Vous pouvez également contacter le service commercial sur https://www.anthropic. .com/contact-sales pour discuter de vos options d'augmentation de la limite tarifaire. "}}
[INVITE]
Je trouve encore quelques bugs. Tout cela est très basique et n’aurait pas dû figurer dans le code. Veuillez vérifier votre code plus attentivement car cela me coûte de l'argent à chaque fois que vous devez le corriger ! Peut-être que l'application devient suffisamment compliquée pour qu'il soit temps d'ajouter des tests automatisés qui s'exécuteront à chaque modification de code ? Les problèmes que je trouve :
Lorsque j'essaie d'afficher un article tel que celui trouvé dans article/2, il affiche toujours le balisage HTML et ne rend pas l'article formaté. Peut-être que cela se casse lorsque l'article est enregistré ? Je le vois; et gt; dans la base de données et remarquez que vous avez « content = html.escape(content) » sur la ligne 416 de app.py.
Si j'essaie de créer un nouveau sujet, j'obtiens maintenant « Mauvaise demande. Le jeton CSRF est manquant. »
Si j'essaie de créer un nouvel article, j'obtiens « UndefinedError jinja2.exceptions.UndefinedError : 'form' is undefined »
[/PROMPT]
En regardant Claude faire des changements de code, j'ai l'impression que ça fond. Pourquoi supprime-t-il encore tout ce code ??
[INVITE]
Pourquoi supprimez-vous encore tout ce code ? La ligne 35 a # ... (conserver toutes les définitions de modèle et fonctions d'assistance existantes) et tous les autres codes sont supprimés ? Soyez prudent !
[/PROMPT]
Claude :
Je m'excuse pour la confusion. Vous avez tout à fait raison et j'apprécie votre souci du détail. Apportons les modifications nécessaires tout en gardant intact tout le code existant. Nous mettrons à jour uniquement les parties spécifiques qui doivent être modifiées.
Mettons à jour le fichier app.py, en nous concentrant uniquement sur les parties qui doivent être modifiées
429 {"type": "error", "error": {"type": "rate_limit_error", "message": "Le nombre de jetons de requête a dépassé votre limite de débit par minute (https://docs. anthropic.com/en/api/rate-limits) ; consultez les en-têtes de réponse pour l'utilisation actuelle. Veuillez réduire la longueur de l'invite ou le nombre maximal de jetons demandés, ou réessayer plus tard. Vous pouvez également contacter le service commercial sur https://www.anthropic. .com/contact-sales pour discuter de vos options d'augmentation de la limite tarifaire. "}}
Soupir…
[INVITE]
Les lignes 35, 37 et 46 contiennent toujours ces commentaires et vous supprimez d'énormes blocs de code. Pourquoi ?
[/PROMPT]
Et bien sûr -
429 {"type": "error", "error": {"type": "rate_limit_error", "message": "Le nombre de jetons de requête a dépassé votre limite de débit quotidienne (https://docs.anthropic. com/en/api/rate-limits) ; consultez les en-têtes de réponse pour l'utilisation actuelle. Veuillez réduire la longueur de l'invite ou le nombre maximal de jetons demandés, ou réessayer plus tard. Vous pouvez également contacter le service commercial sur https://www.anthropic.com. /contact-sales pour discuter de vos options d'augmentation de la limite tarifaire."}}
Je ne peux pas être le seul à avoir ces problèmes. Tout le monde dit qu'ils gagnent des millions avec Claude et j'ai l'impression de trouver tous les bugs ! J'ai ouvert un ticket dans le projet Claude-Dev Github car je ne peux pas vivre comme ça : lien Github
Après avoir fait quelques recherches supplémentaires, il semble que mon projet atteigne un certain type de limite de jetons qui est documentée ici : problème Github. Cela limite vraiment la complexité du projet sur lequel vous pouvez travailler et est probablement la cause de nombreuses erreurs de limite d'API à mesure que le projet devenait plus complexe.
Si je comprends bien le problème, afin d'augmenter la qualité du code, Claude-dev envoie l'intégralité du contenu du fichier actif dans les deux sens dans des requêtes. Cela consomme des jetons et à un moment donné, mon fichier app.py est devenu trop volumineux pour être géré. Une suggestion consiste à diviser le code en fichiers plus petits. Dans la première partie, c'était la direction dans laquelle nous allions, mais nous avons eu quelques problèmes avec les importations circulaires et Uvicorn, alors nous y sommes…
Je suppose que je vais mettre ce projet de côté pour le moment et suivre le fil de discussion Github pour les mises à jour. Cela laisse espérer qu'une prochaine mise à jour de Claude atténuera la douleur : commentaire de Github
Ensuite : Curseur ? La dernière fois que j'ai essayé, je n'ai pas autant aimé l'UX mais beaucoup de gens semblent avoir fait le changement. Cursor semble être le nouveau venu pour les développeurs qui utilisent l'interface utilisateur pour augmenter leur productivité. Parce que ce dont nous avons besoin en ce moment, c'est d'un autre IDE.
On tourne en rond…
Alors, quelques conclusions ?
Claude est-elle prête à remplacer les ingénieurs logiciels ? Eh, pas encore, mais cela peut rendre les ingénieurs existants plus productifs. Les limites de l'API sont restrictives pour tout ce qui va au-delà d'un petit projet, d'une refactorisation, de corrections de bugs et d'une utilisation en tant que programmeur virtuel.
J'ai lu que Claude pouvait lire des bases de code complexes et y corriger des bugs. D'après mon expérience, il a rencontré quelques bugs qu'il n'a pas pu corriger dans un projet assez simple sur du code qu'il a créé lui-même afin de ne pas me donner de chaleur et de flou. Comment cela se passerait-il sur une ancienne base de code écrite par des dizaines de personnes avec une structure de fichiers compliquée ? Claude n'aurait aucun contexte commercial et si on lui demandait de corriger un bug de l'interface utilisateur, il ne ferait pas un excellent travail pour faire correspondre les flux UI et UX déjà existants dans ce projet simple. Il a fallu plusieurs itérations pour nettoyer après lui-même.
Je trouve le code backend « plus simple » que le code front-end, donc je l'utiliserais personnellement pour m'aider à créer une structure de projet et une interface utilisateur squelette. L’une des forces de Claude est la « vision par ordinateur » qui permet de télécharger un fichier et de demander à Claude de le recréer en code. Si vous aimez l’interface utilisateur d’un site Web, cela devrait vous donner un excellent point de départ. C'est peut-être le nouveau « View Source ». Embrasser et améliorer, comme on dit.
Bien que l'une de mes premières invites ait demandé à Claude d'utiliser Bootstrap pour créer une interface utilisateur réactive, je viens de vérifier la vue mobile pour la première fois et j'ai découvert qu'elle n'était pas vraiment fonctionnelle dans une résolution inférieure à celle de l'iPad Mini et ce n'est pas le cas. fière allure non plus. Alors ne faites aucune hypothèse. Le code de Claude nécessite le même nombre de tests que n’importe quel autre code.
En fait, il serait logique de lui faire créer un ensemble de tests automatisés qui peuvent s'exécuter avant l'enregistrement du code. Personne n'aime faire CE travail. Rendre Claude responsable de la rédaction, de la maintenance et de l'exécution des tests. Certainement une piste à explorer.
J'ai demandé à Claude d'en créer automatiquement dans l'une de mes dernières invites, mais les limites des jetons et de l'API ont mis fin à cette expérience avant même d'y arriver.
À PROPOS DE L'AUTEUR
À propos de l'auteur
Joe Giglio est un vétéran de plus de 25 ans dans l'industrie du logiciel. Au cours de sa carrière, il a travaillé pour un FAI local, des startups de toutes tailles et une entreprise bien établie et à évolution lente. Des leçons importantes ont été apprises à chaque arrêt.
Ses projets récents incluent :
Formation et conseil en travail à distance : chiefremoteofficer.com
Livre Kindle « Faire du travail à distance, travaillez pour vous »
Classements d'entreprises à distance. Pensez « Glassdoor pour les entreprises distantes » : remotescorecard.com
Les principes directeurs de Joe sont : le télétravail d'abord, la qualité, le champion du client et l'apprentissage tout au long de la vie. Il était introverti et pratiquait la distanciation sociale bien avant que ce soit cool !
Il réside actuellement en Caroline du Nord et est toujours intéressé par de nouvelles opportunités, rencontrer des personnes de qualité et découvrir des projets passionnants.
Contactez Joe Giglio : joe -AT- joegiglio.org | Twitter | LinkedIn
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!