Claude peut utiliser un outil éditeur de texte défini par Anthropic pour visualiser et modifier des fichiers texte, vous aidant à déboguer, corriger et améliorer votre code ou autres documents texte.
Claude peut utiliser un outil éditeur de texte défini par Anthropic pour visualiser et modifier des fichiers texte, vous aidant à déboguer, corriger et améliorer votre code ou autres documents texte. Cela permet à Claude d’interagir directement avec vos fichiers, fournissant une assistance pratique plutôt que de simplement suggérer des modifications.
L’outil éditeur de texte d’Anthropic est disponible pour plusieurs modèles Claude :
Claude Sonnet 4, Opus 4, et Opus 4.1 : text_editor_20250728
Claude Sonnet 3.7 : text_editor_20250124
Claude Sonnet 3.5 (déprécié) : text_editor_20241022
Claude Sonnet 3.5 (déprécié) nécessite l’en-tête bêta computer-use-2024-10-22 lors de l’utilisation de l’outil éditeur de texte.L’outil éditeur de texte est généralement disponible dans les modèles Claude 4 et Claude Sonnet 3.7.
L’outil text_editor_20250728 pour les modèles Claude 4 n’inclut pas la commande undo_edit. Si vous avez besoin de cette fonctionnalité, vous devrez utiliser Claude Sonnet 3.7 ou Sonnet 3.5 avec leurs versions d’outil respectives.
Fournissez l’outil éditeur de texte (nommé str_replace_based_edit_tool) à Claude en utilisant l’API Messages.Vous pouvez optionnellement spécifier un paramètre max_characters pour contrôler la troncature lors de la visualisation de gros fichiers.
max_characters n’est compatible qu’avec text_editor_20250728 et les versions ultérieures de l’outil éditeur de texte.
Copy
curl https://api.anthropic.com/v1/messages \ -H "content-type: application/json" \ -H "x-api-key: $ANTHROPIC_API_KEY" \ -H "anthropic-version: 2023-06-01" \ -d '{ "model": "claude-opus-4-1-20250805", "max_tokens": 1024, "tools": [ { "type": "text_editor_20250728", "name": "str_replace_based_edit_tool", "max_characters": 10000 } ], "messages": [ { "role": "user", "content": "Il y a une erreur de syntaxe dans mon fichier primes.py. Pouvez-vous m'\''aider à la corriger ?" } ] }'
L’outil éditeur de texte peut être utilisé de la manière suivante :
1
Fournir à Claude l'outil éditeur de texte et une invite utilisateur
Inclure l’outil éditeur de texte dans votre requête API
Fournir une invite utilisateur qui peut nécessiter d’examiner ou de modifier des fichiers, comme “Pouvez-vous corriger l’erreur de syntaxe dans mon code ?”
2
Claude utilise l'outil pour examiner les fichiers ou répertoires
Claude évalue ce qu’il doit examiner et utilise la commande view pour examiner le contenu des fichiers ou lister le contenu des répertoires
La réponse de l’API contiendra un bloc de contenu tool_use avec la commande view
3
Exécuter la commande view et retourner les résultats
Extraire le chemin du fichier ou du répertoire de la demande d’utilisation d’outil de Claude
Lire le contenu du fichier ou lister le contenu du répertoire
Si un paramètre max_characters a été spécifié dans la configuration de l’outil, tronquer le contenu du fichier à cette longueur
Retourner les résultats à Claude en continuant la conversation avec un nouveau message user contenant un bloc de contenu tool_result
4
Claude utilise l'outil pour modifier les fichiers
Après avoir examiné le fichier ou le répertoire, Claude peut utiliser une commande telle que str_replace pour apporter des modifications ou insert pour ajouter du texte à un numéro de ligne spécifique.
Si Claude utilise la commande str_replace, Claude construit une demande d’utilisation d’outil correctement formatée avec l’ancien texte et le nouveau texte pour le remplacer
5
Exécuter la modification et retourner les résultats
Extraire le chemin du fichier, l’ancien texte et le nouveau texte de la demande d’utilisation d’outil de Claude
Effectuer le remplacement de texte dans le fichier
Retourner les résultats à Claude
6
Claude fournit son analyse et son explication
Après avoir examiné et possiblement modifié les fichiers, Claude fournit une explication complète de ce qu’il a trouvé et des modifications qu’il a apportées
La commande view permet à Claude d’examiner le contenu d’un fichier ou de lister le contenu d’un répertoire. Elle peut lire l’ensemble du fichier ou une plage spécifique de lignes.Paramètres :
command : Doit être “view”
path : Le chemin vers le fichier ou le répertoire à visualiser
view_range (optionnel) : Un tableau de deux entiers spécifiant les numéros de ligne de début et de fin à visualiser. Les numéros de ligne sont indexés à partir de 1, et -1 pour la ligne de fin signifie lire jusqu’à la fin du fichier. Ce paramètre ne s’applique que lors de la visualisation de fichiers, pas de répertoires.
Exemples de commandes view
Copy
// Exemple pour visualiser un fichier{ "type": "tool_use", "id": "toolu_01A09q90qw90lq917835lq9", "name": "str_replace_editor", "input": { "command": "view", "path": "primes.py" }}// Exemple pour visualiser un répertoire{ "type": "tool_use", "id": "toolu_02B19r91rw91mr917835mr9", "name": "str_replace_editor", "input": { "command": "view", "path": "src/" }}
La commande str_replace permet à Claude de remplacer une chaîne spécifique dans un fichier par une nouvelle chaîne. Elle est utilisée pour effectuer des modifications précises.Paramètres :
command : Doit être “str_replace”
path : Le chemin vers le fichier à modifier
old_str : Le texte à remplacer (doit correspondre exactement, y compris les espaces et l’indentation)
new_str : Le nouveau texte à insérer à la place de l’ancien texte
Exemple de commande str_replace
Copy
{ "type": "tool_use", "id": "toolu_01A09q90qw90lq917835lq9", "name": "str_replace_editor", "input": { "command": "str_replace", "path": "primes.py", "old_str": "for num in range(2, limit + 1)", "new_str": "for num in range(2, limit + 1):" }}
La commande insert permet à Claude d’insérer du texte à un emplacement spécifique dans un fichier.Paramètres :
command : Doit être “insert”
path : Le chemin vers le fichier à modifier
insert_line : Le numéro de ligne après lequel insérer le texte (0 pour le début du fichier)
new_str : Le texte à insérer
Exemple de commande insert
Copy
{ "type": "tool_use", "id": "toolu_01A09q90qw90lq917835lq9", "name": "str_replace_editor", "input": { "command": "insert", "path": "primes.py", "insert_line": 0, "new_str": "\"\"\"Module pour travailler avec les nombres premiers.\n\nCe module fournit des fonctions pour vérifier si un nombre est premier\net pour générer une liste de nombres premiers jusqu'à une limite donnée.\n\"\"\"\n" }}
La commande undo_edit permet à Claude d’annuler la dernière modification apportée à un fichier.
Cette commande n’est disponible que dans Claude Sonnet 3.7 et Claude Sonnet 3.5 (déprécié). Elle n’est pas prise en charge dans les modèles Claude 4 utilisant le text_editor_20250728.
Paramètres :
command : Doit être “undo_edit”
path : Le chemin vers le fichier dont la dernière modification doit être annulée
Exemple : Corriger une erreur de syntaxe avec l’outil éditeur de texte
Cet exemple démontre comment les modèles Claude 4 utilisent l’outil éditeur de texte pour corriger une erreur de syntaxe dans un fichier Python.D’abord, votre application fournit à Claude l’outil éditeur de texte et une invite pour corriger une erreur de syntaxe :
Copy
curl https://api.anthropic.com/v1/messages \ -H "content-type: application/json" \ -H "x-api-key: $ANTHROPIC_API_KEY" \ -H "anthropic-version: 2023-06-01" \ -d '{ "model": "claude-opus-4-1-20250805", "max_tokens": 1024, "tools": [ { "type": "text_editor_20250728", "name": "str_replace_based_edit_tool" } ], "messages": [ { "role": "user", "content": "Il y a une erreur de syntaxe dans mon fichier primes.py. Pouvez-vous m'\''aider à la corriger ?" } ] }'
Claude utilisera d’abord l’outil éditeur de texte pour visualiser le fichier :
Copy
{ "id": "msg_01XAbCDeFgHiJkLmNoPQrStU", "model": "claude-opus-4-1-20250805", "stop_reason": "tool_use", "role": "assistant", "content": [ { "type": "text", "text": "Je vais vous aider à corriger l'erreur de syntaxe dans votre fichier primes.py. D'abord, laissez-moi jeter un œil au fichier pour identifier le problème." }, { "type": "tool_use", "id": "toolu_01AbCdEfGhIjKlMnOpQrStU", "name": "str_replace_based_edit_tool", "input": { "command": "view", "path": "primes.py" } } ]}
Votre application devrait alors lire le fichier et retourner son contenu à Claude :
Copy
curl https://api.anthropic.com/v1/messages \ -H "content-type: application/json" \ -H "x-api-key: $ANTHROPIC_API_KEY" \ -H "anthropic-version: 2023-06-01" \ -d '{ "model": "claude-opus-4-1-20250805", "max_tokens": 1024, "tools": [ { "type": "text_editor_20250728", "name": "str_replace_based_edit_tool" } ], "messages": [ { "role": "user", "content": "Il y a une erreur de syntaxe dans mon fichier primes.py. Pouvez-vous m'\''aider à la corriger ?" }, { "role": "assistant", "content": [ { "type": "text", "text": "Je vais vous aider à corriger l'\''erreur de syntaxe dans votre fichier primes.py. D'\''abord, laissez-moi jeter un œil au fichier pour identifier le problème." }, { "type": "tool_use", "id": "toolu_01AbCdEfGhIjKlMnOpQrStU", "name": "str_replace_based_edit_tool", "input": { "command": "view", "path": "primes.py" } } ] }, { "role": "user", "content": [ { "type": "tool_result", "tool_use_id": "toolu_01AbCdEfGhIjKlMnOpQrStU", "content": "1: def is_prime(n):\n2: \"\"\"Check if a number is prime.\"\"\"\n3: if n <= 1:\n4: return False\n5: if n <= 3:\n6: return True\n7: if n % 2 == 0 or n % 3 == 0:\n8: return False\n9: i = 5\n10: while i * i <= n:\n11: if n % i == 0 or n % (i + 2) == 0:\n12: return False\n13: i += 6\n14: return True\n15: \n16: def get_primes(limit):\n17: \"\"\"Generate a list of prime numbers up to the given limit.\"\"\"\n18: primes = []\n19: for num in range(2, limit + 1)\n20: if is_prime(num):\n21: primes.append(num)\n22: return primes\n23: \n24: def main():\n25: \"\"\"Main function to demonstrate prime number generation.\"\"\"\n26: limit = 100\n27: prime_list = get_primes(limit)\n28: print(f\"Prime numbers up to {limit}:\")\n29: print(prime_list)\n30: print(f\"Found {len(prime_list)} prime numbers.\")\n31: \n32: if __name__ == \"__main__\":\n33: main()" } ] } ] }'
Numéros de ligneDans l’exemple ci-dessus, le résultat de l’outil view inclut le contenu du fichier avec des numéros de ligne ajoutés au début de chaque ligne (par exemple, “1: def is_prime(n):”). Les numéros de ligne ne sont pas requis, mais ils sont essentiels pour utiliser avec succès le paramètre view_range pour examiner des sections spécifiques de fichiers et le paramètre insert_line pour ajouter du contenu à des emplacements précis.
Claude identifiera l’erreur de syntaxe et utilisera la commande str_replace pour la corriger :
Copy
{ "id": "msg_01VwXyZAbCdEfGhIjKlMnO", "model": "claude-opus-4-1-20250805", "stop_reason": "tool_use", "role": "assistant", "content": [ { "type": "text", "text": "J'ai trouvé l'erreur de syntaxe dans votre fichier primes.py. Dans la fonction `get_primes`, il manque deux-points (:) à la fin de la ligne de la boucle for. Laissez-moi corriger cela pour vous." }, { "type": "tool_use", "id": "toolu_01PqRsTuVwXyZAbCdEfGh", "name": "str_replace_based_edit_tool", "input": { "command": "str_replace", "path": "primes.py", "old_str": " for num in range(2, limit + 1)", "new_str": " for num in range(2, limit + 1):" } } ]}
Votre application devrait alors effectuer la modification et retourner le résultat :
Copy
response = client.messages.create( model="claude-opus-4-1-20250805", max_tokens=1024, tools=[ { "type": "text_editor_20250728", "name": "str_replace_based_edit_tool" } ], messages=[ # Messages précédents... { "role": "assistant", "content": [ { "type": "text", "text": "J'ai trouvé l'erreur de syntaxe dans votre fichier primes.py. Dans la fonction `get_primes`, il manque deux-points (:) à la fin de la ligne de la boucle for. Laissez-moi corriger cela pour vous." }, { "type": "tool_use", "id": "toolu_01PqRsTuVwXyZAbCdEfGh", "name": "str_replace_based_edit_tool", "input": { "command": "str_replace", "path": "primes.py", "old_str": " for num in range(2, limit + 1)", "new_str": " for num in range(2, limit + 1):" } } ] }, { "role": "user", "content": [ { "type": "tool_result", "tool_use_id": "toolu_01PqRsTuVwXyZAbCdEfGh", "content": "Texte remplacé avec succès à exactement un emplacement." } ] } ])
Enfin, Claude fournira une explication complète de la correction :
Copy
{ "id": "msg_01IjKlMnOpQrStUvWxYzAb", "model": "claude-opus-4-1-20250805", "stop_reason": "end_turn", "role": "assistant", "content": [ { "type": "text", "text": "J'ai corrigé l'erreur de syntaxe dans votre fichier primes.py. Le problème était dans la fonction `get_primes` à la ligne 19. Il manquait deux-points (:) à la fin de la ligne de la boucle for.\n\nVoici ce que j'ai changé :\n\nDe :\n```python\nfor num in range(2, limit + 1)\n```\n\nVers :\n```python\nfor num in range(2, limit + 1):\n```\n\nEn Python, deux-points sont requis à la fin des instructions qui commencent un nouveau bloc de code, comme les boucles for, les instructions if, les définitions de fonction, etc. Sans les deux-points, Python lève une erreur de syntaxe car il ne sait pas où commence le bloc de code.\n\nVotre code devrait maintenant s'exécuter correctement. La fonction générera correctement une liste de nombres premiers jusqu'à la limite spécifiée." } ]}
L’outil éditeur de texte est implémenté comme un outil sans schéma. Lors de l’utilisation de cet outil, vous n’avez pas besoin de fournir un schéma d’entrée comme avec d’autres outils ; le schéma est intégré dans le modèle de Claude et ne peut pas être modifié.Le type d’outil dépend de la version du modèle :
Claude 4 : type: "text_editor_20250728"
Claude Sonnet 3.7 : type: "text_editor_20250124"
Claude Sonnet 3.5 (déprécié) : type: "text_editor_20241022"
1
Initialiser votre implémentation d'éditeur
Créer des fonctions d’aide pour gérer les opérations de fichier comme la lecture, l’écriture et la modification de fichiers. Considérer l’implémentation d’une fonctionnalité de sauvegarde pour récupérer des erreurs.
2
Gérer les appels d'outil d'éditeur
Créer une fonction qui traite les appels d’outil de Claude basés sur le type de commande :
Copy
def handle_editor_tool(tool_call, model_version): input_params = tool_call.input command = input_params.get('command', '') file_path = input_params.get('path', '') if command == 'view': # Lire et retourner le contenu du fichier pass elif command == 'str_replace': # Remplacer le texte dans le fichier pass elif command == 'create': # Créer un nouveau fichier pass elif command == 'insert': # Insérer du texte à l'emplacement pass elif command == 'undo_edit': # Vérifier si c'est un modèle Claude 4 if 'str_replace_based_edit_tool' in model_version: return {"error": "La commande undo_edit n'est pas prise en charge dans Claude 4"} # Restaurer depuis la sauvegarde pour Claude 3.7/3.5 pass
3
Implémenter des mesures de sécurité
Ajouter des vérifications de validation et de sécurité :
Valider les chemins de fichier pour empêcher la traversée de répertoire
Créer des sauvegardes avant d’apporter des modifications
Gérer les erreurs avec élégance
Implémenter des vérifications de permissions
4
Traiter les réponses de Claude
Extraire et gérer les appels d’outil des réponses de Claude :
Copy
# Traiter l'utilisation d'outil dans la réponse de Claudefor content in response.content: if content.type == "tool_use": # Exécuter l'outil basé sur la commande result = handle_editor_tool(content) # Retourner le résultat à Claude tool_result = { "type": "tool_result", "tool_use_id": content.id, "content": result }
Lors de l’implémentation de l’outil éditeur de texte, gardez à l’esprit :
Sécurité : L’outil a accès à votre système de fichiers local, donc implémentez des mesures de sécurité appropriées.
Sauvegarde : Créez toujours des sauvegardes avant de permettre des modifications de fichiers importants.
Validation : Validez toutes les entrées pour empêcher des modifications non intentionnelles.
Correspondance unique : Assurez-vous que les remplacements correspondent exactement à un emplacement pour éviter des modifications non intentionnelles.
Si la commande str_replace de Claude correspond à plusieurs emplacements dans le fichier, retournez un message d’erreur approprié :
Copy
{ "role": "user", "content": [ { "type": "tool_result", "tool_use_id": "toolu_01A09q90qw90lq917835lq9", "content": "Erreur : 3 correspondances trouvées pour le texte de remplacement. Veuillez fournir plus de contexte pour faire une correspondance unique.", "is_error": true } ]}
Aucune correspondance pour le remplacement
Si la commande str_replace de Claude ne correspond à aucun texte dans le fichier, retournez un message d’erreur approprié :
Copy
{ "role": "user", "content": [ { "type": "tool_result", "tool_use_id": "toolu_01A09q90qw90lq917835lq9", "content": "Erreur : Aucune correspondance trouvée pour le remplacement. Veuillez vérifier votre texte et réessayer.", "is_error": true } ]}
Erreurs de permission
S’il y a des problèmes de permission avec la création, la lecture ou la modification de fichiers, retournez un message d’erreur approprié :
Lorsque vous demandez à Claude de corriger ou de modifier du code, soyez spécifique sur les fichiers qui doivent être examinés ou les problèmes qui doivent être résolus. Un contexte clair aide Claude à identifier les bons fichiers et à apporter les modifications appropriées.Invite moins utile : “Pouvez-vous corriger mon code ?”Meilleure invite : “Il y a une erreur de syntaxe dans mon fichier primes.py qui l’empêche de s’exécuter. Pouvez-vous la corriger ?”
Être explicite sur les chemins de fichier
Spécifiez clairement les chemins de fichier lorsque nécessaire, surtout si vous travaillez avec plusieurs fichiers ou des fichiers dans différents répertoires.Invite moins utile : “Examinez mon fichier d’aide”Meilleure invite : “Pouvez-vous vérifier mon fichier utils/helpers.py pour des problèmes de performance ?”
Créer des sauvegardes avant la modification
Implémentez un système de sauvegarde dans votre application qui crée des copies de fichiers avant de permettre à Claude de les modifier, surtout pour du code important ou de production.
Copy
def backup_file(file_path): """Créer une sauvegarde d'un fichier avant modification.""" backup_path = f"{file_path}.backup" if os.path.exists(file_path): with open(file_path, 'r') as src, open(backup_path, 'w') as dst: dst.write(src.read())
Gérer soigneusement le remplacement de texte unique
La commande str_replace nécessite une correspondance exacte pour le texte à remplacer. Votre application devrait s’assurer qu’il y a exactement une correspondance pour l’ancien texte ou fournir des messages d’erreur appropriés.
Copy
def safe_replace(file_path, old_text, new_text): """Remplacer le texte seulement s'il y a exactement une correspondance.""" with open(file_path, 'r') as f: content = f.read() count = content.count(old_text) if count == 0: return "Erreur : Aucune correspondance trouvée" elif count > 1: return f"Erreur : {count} correspondances trouvées" else: new_content = content.replace(old_text, new_text) with open(file_path, 'w') as f: f.write(new_content) return "Texte remplacé avec succès"
Vérifier les modifications
Après que Claude apporte des modifications à un fichier, vérifiez les modifications en exécutant des tests ou en vérifiant que le code fonctionne toujours comme prévu.
Copy
def verify_changes(file_path): """Exécuter des tests ou des vérifications après avoir apporté des modifications.""" try: # Pour les fichiers Python, vérifier les erreurs de syntaxe if file_path.endswith('.py'): import ast with open(file_path, 'r') as f: ast.parse(f.read()) return "Vérification de syntaxe réussie" except Exception as e: return f"Vérification échouée : {str(e)}"
The text editor tool uses the same pricing structure as other tools used with Claude. It follows the standard input and output token pricing based on the Claude model you’re using.In addition to the base tokens, the following additional input tokens are needed for the text editor tool:
Publication d’un outil éditeur de texte mis à jour qui corrige certains problèmes et ajoute un paramètre optionnel max_characters. Il est par ailleurs identique à text_editor_20250429.
29 avril 2025
text_editor_20250429
Publication de l’outil éditeur de texte pour Claude 4. Cette version supprime la commande undo_edit mais maintient toutes les autres capacités. Le nom de l’outil a été mis à jour pour refléter son architecture basée sur str_replace.
13 mars 2025
text_editor_20250124
Introduction de la documentation autonome de l’outil éditeur de texte. Cette version est optimisée pour Claude Sonnet 3.7 mais a des capacités identiques à la version précédente.
22 octobre 2024
text_editor_20241022
Publication initiale de l’outil éditeur de texte avec Claude Sonnet 3.5 (déprécié). Fournit des capacités pour visualiser, créer et modifier des fichiers grâce aux commandes view, create, str_replace, insert et undo_edit.
Voici quelques idées sur comment utiliser l’outil éditeur de texte de manières plus pratiques et puissantes :
Intégrer avec votre flux de travail de développement : Intégrer l’outil éditeur de texte dans vos outils de développement ou IDE
Créer un système de révision de code : Faire réviser votre code par Claude et apporter des améliorations
Construire un assistant de débogage : Créer un système où Claude peut vous aider à diagnostiquer et corriger des problèmes dans votre code
Implémenter la conversion de format de fichier : Laisser Claude vous aider à convertir des fichiers d’un format à un autre
Automatiser la documentation : Configurer des flux de travail pour que Claude documente automatiquement votre code
Alors que vous construisez des applications avec l’outil éditeur de texte, nous sommes impatients de voir comment vous tirez parti des capacités de Claude pour améliorer votre flux de travail de développement et votre productivité.