Claude peut utiliser un outil d’édition de texte défini par Anthropic pour visualiser et modifier des fichiers texte, vous aidant à déboguer, corriger et améliorer votre code ou d’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.

Avant d’utiliser l’outil d’édition de texte

Utiliser un modèle compatible

L’outil d’édition de texte d’Anthropic est disponible pour plusieurs modèles Claude :

  • Claude 4 Opus & Sonnet : text_editor_20250429
  • Claude Sonnet 3.7 : text_editor_20250124
  • Claude Sonnet 3.5 : text_editor_20241022

Claude Sonnet 3.5 nécessite l’en-tête bêta computer-use-2024-10-22 lors de l’utilisation de l’outil d’édition de texte.

L’outil d’édition de texte est généralement disponible dans Claude 4 et Sonnet 3.7.

Le plus récent text_editor_20250429 pour les modèles Claude 4 n’inclut pas la commande undo_edit. Si vous avez besoin de cette fonctionnalité, vous devrez utiliser Claude 3.7 ou Sonnet 3.5 avec leurs versions d’outils respectives.

Évaluer l’adéquation de votre cas d’usage

Quelques exemples de quand utiliser l’outil d’édition de texte sont :

  • Débogage de code : Faire identifier et corriger les bogues dans votre code par Claude, des erreurs de syntaxe aux problèmes de logique.
  • Refactorisation de code : Laisser Claude améliorer la structure, la lisibilité et les performances de votre code grâce à des modifications ciblées.
  • Génération de documentation : Demander à Claude d’ajouter des docstrings, des commentaires ou des fichiers README à votre base de code.
  • Création de tests : Faire créer des tests unitaires pour votre code par Claude basés sur sa compréhension de l’implémentation.

Utiliser l’outil d’édition de texte

Fournir l’outil d’édition de texte (nommé str_replace_based_edit_tool) à Claude en utilisant l’API Messages :

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-20250514",
    "max_tokens": 1024,
    "tools": [
      {
        "type": "text_editor_20250429",
        "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 ?"
      }
    ]
  }'

L’outil d’édition de texte peut être utilisé de la manière suivante :

1

Fournir à Claude l'outil d'édition de texte et une invite utilisateur

  • Inclure l’outil d’édition de texte dans votre requête API
  • Fournir une invite utilisateur qui peut nécessiter l’examen ou la modification de 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 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 et les retourner à Claude
  • 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

Commandes de l’outil d’édition de texte

L’outil d’édition de texte prend en charge plusieurs commandes pour visualiser et modifier les fichiers :

view

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.

str_replace

La commande str_replace permet à Claude de remplacer une chaîne spécifique dans un fichier par une nouvelle chaîne. Ceci est utilisé 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

create

La commande create permet à Claude de créer un nouveau fichier avec un contenu spécifié.

Paramètres :

  • command : Doit être “create”
  • path : Le chemin où le nouveau fichier doit être créé
  • file_text : Le contenu à écrire dans le nouveau fichier

insert

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

undo_edit

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. Elle n’est pas prise en charge dans les modèles Claude 4 utilisant le text_editor_20250429.

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 d’édition de texte

Cet exemple démontre comment Claude 4 utilise l’outil d’édition de texte pour corriger une erreur de syntaxe dans un fichier Python.

D’abord, votre application fournit à Claude l’outil d’édition de texte et une invite pour corriger une erreur de syntaxe :

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-20250514",
    "max_tokens": 1024,
    "tools": [
      {
        "type": "text_editor_20250429",
        "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 d’édition de texte pour visualiser le fichier :

{
  "id": "msg_01XAbCDeFgHiJkLmNoPQrStU",
  "model": "claude-opus-4-20250514",
  "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 coup d'œ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 :

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-20250514",
    "max_tokens": 1024,
    "tools": [
      {
        "type": "text_editor_20250429",
        "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 coup d'\''œ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:     \"\"\"Vérifier si un nombre est premier.\"\"\"\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:     \"\"\"Générer une liste de nombres premiers jusqu'\''à la limite donnée.\"\"\"\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:     \"\"\"Fonction principale pour démontrer la génération de nombres premiers.\"\"\"\n26:     limit = 100\n27:     prime_list = get_primes(limit)\n28:     print(f\"Nombres premiers jusqu'\''à {limit}:\")\n29:     print(prime_list)\n30:     print(f\"Trouvé {len(prime_list)} nombres premiers.\")\n31: \n32: if __name__ == \"__main__\":\n33:     main()"
                }
            ]
        }
    ]
  }'

Numéros de ligne

Dans 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 :

{
  "id": "msg_01VwXyZAbCdEfGhIjKlMnO",
  "model": "claude-opus-4-20250514",
  "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 un 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 :

response = client.messages.create(
    model="claude-opus-4-20250514",
    max_tokens=1024,
    tools=[
        {
            "type": "text_editor_20250429",
            "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 un 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."
                }
            ]
        }
    ]
)

Finalement, Claude fournira une explication complète de la correction :

{
  "id": "msg_01IjKlMnOpQrStUvWxYzAb",
  "model": "claude-opus-4-20250514",
  "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 un 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\nÀ :\n```python\nfor num in range(2, limit + 1):\n```\n\nEn Python, un deux-points est requis à la fin des instructions qui commencent un nouveau bloc de code, comme les boucles for, les instructions if, les définitions de fonctions, etc. Sans le 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."
    }
  ]
}

Implémenter l’outil d’édition de texte

L’outil d’édition 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_20250429"
  • Claude Sonnet 3.7 : type: "text_editor_20250124"
  • Claude Sonnet 3.5 : type: "text_editor_20241022"
1

Initialiser votre implémentation d'éditeur

Créer des fonctions d’aide pour gérer les opérations de fichiers 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'outils d'éditeur

Créer une fonction qui traite les appels d’outils de Claude basés sur le type de commande :

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 à partir de 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 fichiers pour empêcher la traversée de répertoires
  • 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’outils des réponses de Claude :

# Traiter l'utilisation d'outil dans la réponse de Claude
for 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 d’édition de texte, gardez à l’esprit :

  1. Sécurité : L’outil a accès à votre système de fichiers local, donc implémentez des mesures de sécurité appropriées.
  2. Sauvegarde : Créez toujours des sauvegardes avant de permettre des modifications de fichiers importants.
  3. Validation : Validez toutes les entrées pour empêcher des modifications non intentionnelles.
  4. Correspondance unique : Assurez-vous que les remplacements correspondent exactement à un emplacement pour éviter des modifications non intentionnelles.

Gérer les erreurs

Lors de l’utilisation de l’outil d’édition de texte, diverses erreurs peuvent survenir. Voici des conseils sur la façon de les gérer :

Suivre les meilleures pratiques d’implémentation


Tarification et utilisation de jetons

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:

ToolAdditional input tokens
text_editor_20250429 (Claude 4)700 tokens
text_editor_20250124 (Claude Sonnet 3.7)700 tokens
text_editor_20241022 (Claude Sonnet 3.5)700 tokens

Pour des informations plus détaillées sur la tarification des outils, voir Tarification de l’utilisation d’outils.

Intégrer l’outil d’édition de texte avec d’autres outils

L’outil d’édition de texte peut être utilisé aux côtés d’autres outils Claude. Lors de la combinaison d’outils, assurez-vous de :

  • Faire correspondre la version de l’outil avec le modèle que vous utilisez
  • Tenir compte de l’utilisation supplémentaire de jetons pour tous les outils inclus dans votre requête

Journal des modifications

DateVersionModifications
29 avril 2025text_editor_20250429Publication de l’outil d’édition 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 2025text_editor_20250124Introduction de la documentation autonome de l’outil d’édition 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 2024text_editor_20241022Publication initiale de l’outil d’édition de texte avec Claude Sonnet 3.5. Fournit des capacités pour visualiser, créer et modifier des fichiers grâce aux commandes view, create, str_replace, insert et undo_edit.

Prochaines étapes

Voici quelques idées sur la façon d’utiliser l’outil d’édition de texte de manières plus pratiques et puissantes :

  • Intégrer avec votre flux de travail de développement : Intégrer l’outil d’édition 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 les 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 d’édition de texte, nous sommes impatients de voir comment vous exploitez les capacités de Claude pour améliorer votre flux de travail de développement et votre productivité.