Claude peut utiliser un outil d’é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 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’éditeur de texte

Utilisez un modèle compatible

L’outil d’éditeur 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

La version plus récente 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.

Évaluez l’adéquation à votre cas d’utilisation

Voici quelques exemples de cas où utiliser l’outil d’éditeur de texte :

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

Utiliser l’outil d’éditeur de texte

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

import anthropic

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-opus-4-20250514",
    max_tokens=1024,
    tools=[
        {
            "type": "text_editor_20250429",
            "name": "str_replace_based_edit_tool"
        }
    ],
    messages=[
        {
            "role": "user", 
            "content": "There's a syntax error in my primes.py file. Can you help me fix it?"
        }
    ]
)

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

1

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

  • Incluez l’outil d’éditeur de texte dans votre requête API
  • Fournissez une invite utilisateur qui peut nécessiter d’examiner ou de modifier des fichiers, comme “Peux-tu corriger l’erreur de syntaxe dans mon code ?”
2

Claude utilise l'outil pour examiner des fichiers ou des 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 renvoyer les résultats

  • Extrayez le chemin du fichier ou du répertoire de la demande d’utilisation d’outil de Claude
  • Lisez le contenu du fichier ou listez le contenu du répertoire et renvoyez-les à Claude
  • Renvoyez les résultats à Claude en poursuivant la conversation avec un nouveau message user contenant un bloc de contenu tool_result
4

Claude utilise l'outil pour modifier des fichiers

  • Après avoir examiné le fichier ou le répertoire, Claude peut utiliser une commande comme 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 renvoyer les résultats

  • Extrayez le chemin du fichier, l’ancien texte et le nouveau texte de la demande d’utilisation d’outil de Claude
  • Effectuez le remplacement de texte dans le fichier
  • Renvoyez les résultats à Claude
6

Claude fournit son analyse et son explication

  • Après avoir examiné et éventuellement 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’éditeur de texte

L’outil d’éditeur de texte prend en charge plusieurs commandes pour visualiser et modifier des 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’intégralité 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 commencent à 1, et -1 pour la ligne de fin signifie lire jusqu’à la fin du fichier. Ce paramètre s’applique uniquement 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. 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

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 est uniquement disponible dans Claude Sonnet 3.7 et Claude Sonnet 3.5. Elle n’est pas prise en charge dans les modèles Claude 4 utilisant 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 : Correction d’une erreur de syntaxe avec l’outil d’éditeur de texte

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

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

import anthropic

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-opus-4-20250514",
    max_tokens=1024,
    tools=[
        {
            "type": "text_editor_20250429",
            "name": "str_replace_based_edit_tool"
        }
    ],
    messages=[
        {
            "role": "user", 
            "content": "There's a syntax error in my primes.py file. Can you help me fix it?"
        }
    ]
)

print(response)

Claude utilisera d’abord l’outil d’éditeur de texte pour visualiser le fichier :

{
  "id": "msg_01XAbCDeFgHiJkLmNoPQrStU",
  "model": "claude-opus-4-20250514",
  "stop_reason": "tool_use",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "I'll help you fix the syntax error in your primes.py file. First, let me take a look at the file to identify the issue."
    },
    {
      "type": "tool_use",
      "id": "toolu_01AbCdEfGhIjKlMnOpQrStU",
      "name": "str_replace_based_edit_tool",
      "input": {
        "command": "view",
        "path": "primes.py"
      }
    }
  ]
}

Votre application doit alors lire le fichier et renvoyer son contenu à Claude :

response = client.messages.create(
    model="claude-opus-4-20250514",
    max_tokens=1024,
    tools=[
        {
            "type": "text_editor_20250429",
            "name": "str_replace_based_edit_tool"
        }
    ],
    messages=[
        {
            "role": "user", 
            "content": "There's a syntax error in my primes.py file. Can you help me fix it?"
        },
        {
            "role": "assistant",
            "content": [
                {
                    "type": "text",
                    "text": "I'll help you fix the syntax error in your primes.py file. First, let me take a look at the file to identify the issue."
                },
                {
                    "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 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 à chaque ligne (par exemple, “1: def is_prime(n):”). Les numéros de ligne ne sont pas obligatoires, mais ils sont essentiels pour utiliser avec succès le paramètre view_range afin d’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": "I found the syntax error in your primes.py file. In the `get_primes` function, there is a missing colon (:) at the end of the for loop line. Let me fix that for you."
    },
    {
      "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 doit alors effectuer la modification et renvoyer 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": "I found the syntax error in your primes.py file. In the `get_primes` function, there is a missing colon (:) at the end of the for loop line. Let me fix that for you."
                },
                {
                    "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": "Successfully replaced text at exactly one location."
                }
            ]
        }
    ]
)

Enfin, 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": "I've fixed the syntax error in your primes.py file. The issue was in the `get_primes` function at line 19. There was a missing colon (:) at the end of the for loop line.\n\nHere's what I changed:\n\nFrom:\n```python\nfor num in range(2, limit + 1)\n```\n\nTo:\n```python\nfor num in range(2, limit + 1):\n```\n\nIn Python, a colon is required at the end of statements that start a new code block, such as for loops, if statements, function definitions, etc. Without the colon, Python raises a syntax error because it doesn't know where the code block begins.\n\nYour code should now run correctly. The function will properly generate a list of prime numbers up to the specified limit."
    }
  ]
}

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

L’outil d’éditeur de texte est implémenté comme un outil sans schéma. Lorsque vous utilisez 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é au 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éez des fonctions d’aide pour gérer les opérations sur les fichiers comme la lecture, l’écriture et la modification de fichiers. Envisagez d’implémenter une fonctionnalité de sauvegarde pour récupérer en cas d’erreurs.

2

Gérer les appels d'outils d'éditeur

Créez une fonction qui traite les appels d’outils de Claude en fonction du 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 renvoyer le contenu du fichier
        pass
    elif command == 'str_replace':
        # Remplacer du texte dans le fichier
        pass
    elif command == 'create':
        # Créer un nouveau fichier
        pass
    elif command == 'insert':
        # Insérer du texte à un emplacement
        pass
    elif command == 'undo_edit':
        # Vérifier s'il s'agit d'un modèle Claude 4
        if 'str_replace_based_edit_tool' in model_version:
            return {"error": "undo_edit command is not supported in Claude 4"}
        # Restaurer à partir d'une sauvegarde pour Claude 3.7/3.5
        pass
3

Implémenter des mesures de sécurité

Ajoutez des validations et des contrôles de sécurité :

  • Validez les chemins de fichiers pour éviter la traversée de répertoires
  • Créez des sauvegardes avant d’apporter des modifications
  • Gérez les erreurs avec élégance
  • Implémentez des vérifications de permissions
4

Traiter les réponses de Claude

Extrayez et gérez les appels d’outils des réponses de Claude :

# Traiter l'utilisation d'outils dans la réponse de Claude
for content in response.content:
    if content.type == "tool_use":
        # Exécuter l'outil en fonction de la commande
        result = handle_editor_tool(content)
        
        # Renvoyer 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’éditeur de texte, gardez à l’esprit :

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

Gérer les erreurs

Lors de l’utilisation de l’outil d’éditeur 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 des tokens

L’outil d’éditeur de texte utilise la même structure de tarification que les autres outils utilisés avec Claude. Il suit la tarification standard des tokens d’entrée et de sortie basée sur le modèle Claude que vous utilisez.

En plus des tokens de base, les tokens d’entrée supplémentaires suivants sont nécessaires pour l’outil d’éditeur de texte :

OutilTokens d’entrée supplémentaires
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, consultez Tarification de l’utilisation des outils.

Intégrer l’outil d’éditeur de texte avec l’utilisation de l’ordinateur

L’outil d’éditeur de texte peut être utilisé aux côtés de l’outil d’utilisation de l’ordinateur et d’autres outils définis par Anthropic. Lorsque vous combinez ces outils, vous devrez :

  1. Inclure l’en-tête bêta approprié (si utilisé avec l’utilisation de l’ordinateur)
  2. Faire correspondre la version de l’outil avec le modèle que vous utilisez
  3. Tenir compte de l’utilisation de tokens supplémentaires pour tous les outils inclus dans votre demande

Pour plus d’informations sur l’utilisation de l’outil d’éditeur de texte dans un contexte d’utilisation de l’ordinateur, consultez Utilisation de l’ordinateur.

Journal des modifications

DateVersionModifications
29 avril 2025text_editor_20250429Publication de l’outil d’éditeur de texte pour Claude 4. Cette version supprime la commande undo_edit mais conserve 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’éditeur de texte. Cette version est optimisée pour Claude Sonnet 3.7 mais possède des capacités identiques à la version précédente.
22 octobre 2024text_editor_20241022Publication initiale de l’outil d’éditeur 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’éditeur de texte de manière plus pratique et puissante :

  • Intégrer à votre flux de travail de développement : Intégrez l’outil d’éditeur de texte dans vos outils de développement ou IDE
  • Créer un système de revue de code : Demandez à Claude de réviser votre code et d’apporter des améliorations
  • Construire un assistant de débogage : Créez 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 : Laissez Claude vous aider à convertir des fichiers d’un format à un autre
  • Automatiser la documentation : Mettez en place des flux de travail pour que Claude documente automatiquement votre code

Alors que vous construisez des applications avec l’outil d’éditeur 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é.