Claude kann ein von Anthropic definiertes Texteditor-Tool verwenden, um Textdateien anzuzeigen und zu modifizieren, was Ihnen beim Debuggen, Beheben und Verbessern Ihres Codes oder anderer Textdokumente hilft. Dies ermöglicht es Claude, direkt mit Ihren Dateien zu interagieren und praktische Unterstützung zu leisten, anstatt nur Änderungen vorzuschlagen.

Vor der Verwendung des Texteditor-Tools

Verwenden Sie ein kompatibles Modell

Anthropics Texteditor-Tool ist nur für Claude 3.5 Sonnet und Claude 3.7 Sonnet verfügbar:

  • Claude 3.7 Sonnet: text_editor_20250124
  • Claude 3.5 Sonnet: text_editor_20241022

Beide Versionen bieten identische Funktionen - die Version, die Sie verwenden, sollte zum verwendeten Modell passen.

Bewerten Sie die Eignung für Ihren Anwendungsfall

Einige Beispiele für die Verwendung des Texteditor-Tools sind:

  • Code-Debugging: Lassen Sie Claude Bugs in Ihrem Code identifizieren und beheben, von Syntaxfehlern bis hin zu Logikproblemen.
  • Code-Refactoring: Lassen Sie Claude die Codestruktur, Lesbarkeit und Leistung durch gezielte Bearbeitungen verbessern.
  • Dokumentationserstellung: Bitten Sie Claude, Docstrings, Kommentare oder README-Dateien zu Ihrer Codebasis hinzuzufügen.
  • Test-Erstellung: Lassen Sie Claude Unit-Tests für Ihren Code basierend auf seinem Verständnis der Implementierung erstellen.

Verwenden Sie das Texteditor-Tool

Stellen Sie das Texteditor-Tool (mit Namen str_replace_editor) Claude über die Messages API zur Verfügung:

import anthropic

client = anthropic.Anthropic()

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

Das Texteditor-Tool kann auf folgende Weise verwendet werden:

1

Stellen Sie Claude das Texteditor-Tool und eine Benutzeranfrage zur Verfügung

  • Fügen Sie das Texteditor-Tool in Ihre API-Anfrage ein
  • Stellen Sie eine Benutzeranfrage bereit, die möglicherweise das Untersuchen oder Modifizieren von Dateien erfordert, wie zum Beispiel “Kannst du den Syntaxfehler in meinem Code beheben?”
2

Claude verwendet das Tool zum Untersuchen von Dateien oder Verzeichnissen

  • Claude bewertet, was es sich ansehen muss und verwendet den view-Befehl, um Dateiinhalte anzuzeigen oder Verzeichnisinhalte aufzulisten
  • Die API-Antwort wird einen tool_use-Inhaltsblock mit dem view-Befehl enthalten
3

Führen Sie den view-Befehl aus und geben Sie die Ergebnisse zurück

  • Extrahieren Sie den Datei- oder Verzeichnispfad aus Claudes Tool-Verwendungsanfrage
  • Lesen Sie den Inhalt der Datei oder listen Sie den Verzeichnisinhalt auf und geben Sie ihn an Claude zurück
  • Geben Sie die Ergebnisse an Claude zurück, indem Sie die Konversation mit einer neuen user-Nachricht fortsetzen, die einen tool_result-Inhaltsblock enthält
4

Claude verwendet das Tool zum Modifizieren von Dateien

  • Nach dem Untersuchen der Datei oder des Verzeichnisses kann Claude einen Befehl wie str_replace verwenden, um Änderungen vorzunehmen oder insert, um Text an einer bestimmten Zeilennummer hinzuzufügen
  • Wenn Claude den str_replace-Befehl verwendet, erstellt Claude eine korrekt formatierte Tool-Verwendungsanfrage mit dem alten Text und dem neuen Text zum Ersetzen
5

Führen Sie die Bearbeitung aus und geben Sie die Ergebnisse zurück

  • Extrahieren Sie den Dateipfad, alten Text und neuen Text aus Claudes Tool-Verwendungsanfrage
  • Führen Sie die Textersetzung in der Datei durch
  • Geben Sie die Ergebnisse an Claude zurück
6

Claude liefert seine Analyse und Erklärung

  • Nach dem Untersuchen und möglichen Bearbeiten der Dateien liefert Claude eine vollständige Erklärung dessen, was es gefunden und welche Änderungen es vorgenommen hat

Texteditor-Tool-Befehle

Das Texteditor-Tool unterstützt mehrere Befehle zum Anzeigen und Modifizieren von Dateien:

view

Der view-Befehl ermöglicht es Claude, den Inhalt einer Datei zu untersuchen oder den Inhalt eines Verzeichnisses aufzulisten. Er kann die gesamte Datei oder einen bestimmten Zeilenbereich lesen.

Parameter:

  • command: Muss “view” sein
  • path: Der Pfad zur anzuzeigenden Datei oder zum Verzeichnis
  • view_range (optional): Ein Array von zwei Ganzzahlen, die die Start- und Endzeilennummern zum Anzeigen angeben. Zeilennummern beginnen bei 1, und -1 für die Endzeile bedeutet bis zum Ende der Datei lesen. Dieser Parameter gilt nur beim Anzeigen von Dateien, nicht bei Verzeichnissen.

str_replace

Der str_replace-Befehl ermöglicht es Claude, einen bestimmten String in einer Datei durch einen neuen String zu ersetzen. Dies wird für präzise Bearbeitungen verwendet.

Parameter:

  • command: Muss “str_replace” sein
  • path: Der Pfad zur zu modifizierenden Datei
  • old_str: Der zu ersetzende Text (muss exakt übereinstimmen, einschließlich Leerzeichen und Einrückung)
  • new_str: Der neue Text, der anstelle des alten Texts eingefügt werden soll

create

Der create-Befehl ermöglicht es Claude, eine neue Datei mit angegebenem Inhalt zu erstellen.

Parameter:

  • command: Muss “create” sein
  • path: Der Pfad, an dem die neue Datei erstellt werden soll
  • file_text: Der Inhalt, der in die neue Datei geschrieben werden soll

insert

Der insert-Befehl ermöglicht es Claude, Text an einer bestimmten Stelle in einer Datei einzufügen.

Parameter:

  • command: Muss “insert” sein
  • path: Der Pfad zur zu modifizierenden Datei
  • insert_line: Die Zeilennummer, nach der der Text eingefügt werden soll (0 für Dateianfang)
  • new_str: Der einzufügende Text

undo_edit

Der undo_edit-Befehl ermöglicht es Claude, die letzte an einer Datei vorgenommene Änderung rückgängig zu machen.

Parameter:

  • command: Muss “undo_edit” sein
  • path: Der Pfad zur Datei, deren letzte Änderung rückgängig gemacht werden soll

Beispiel: Beheben eines Syntaxfehlers mit dem Texteditor-Tool

Dieses Beispiel zeigt, wie Claude das Texteditor-Tool verwendet, um einen Syntaxfehler in einer Python-Datei zu beheben.

Zunächst stellt Ihre Anwendung Claude das Texteditor-Tool und eine Aufforderung zum Beheben eines Syntaxfehlers zur Verfügung:

import anthropic

client = anthropic.Anthropic()

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

print(response)

Claude wird das Texteditor-Tool zuerst verwenden, um die Datei anzuzeigen:

{
  "id": "msg_01XAbCDeFgHiJkLmNoPQrStU",
  "model": "claude-3-7-sonnet-20250219",
  "stop_reason": "tool_use",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "Ich helfe Ihnen, den Syntaxfehler in Ihrer primes.py-Datei zu beheben. Lassen Sie mich zunächst die Datei ansehen, um das Problem zu identifizieren."
    },
    {
      "type": "tool_use",
      "id": "toolu_01AbCdEfGhIjKlMnOpQrStU",
      "name": "str_replace_editor",
      "input": {
        "command": "view",
        "path": "primes.py"
      }
    }
  ]
}

Ihre Anwendung sollte dann die Datei lesen und deren Inhalt an Claude zurückgeben:

response = client.messages.create(
    model="claude-3-7-sonnet-20250219",
    max_tokens=1024,
    tools=[
        {
            "type": "text_editor_20250124",
            "name": "str_replace_editor"
        }
    ],
    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": "Ich helfe Ihnen, den Syntaxfehler in Ihrer primes.py-Datei zu beheben. Lassen Sie mich zunächst die Datei ansehen, um das Problem zu identifizieren."
                },
                {
                    "type": "tool_use",
                    "id": "toolu_01AbCdEfGhIjKlMnOpQrStU",
                    "name": "str_replace_editor",
                    "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()"
                }
            ]
        }
    ]
)

Zeilennummern

Im obigen Beispiel enthält das view-Tool-Ergebnis Dateiinhalte mit vorangestellten Zeilennummern (z.B. “1: def is_prime(n):”). Zeilennummern sind nicht erforderlich, aber sie sind wesentlich für die erfolgreiche Verwendung des view_range-Parameters zum Untersuchen bestimmter Dateibereiche und des insert_line-Parameters zum Hinzufügen von Inhalten an präzisen Stellen.

Claude wird den Syntaxfehler identifizieren und den str_replace-Befehl verwenden, um ihn zu beheben:

{
  "id": "msg_01VwXyZAbCdEfGhIjKlMnO",
  "model": "claude-3-7-sonnet-20250219",
  "stop_reason": "tool_use",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "Ich habe den Syntaxfehler in Ihrer primes.py-Datei gefunden. In der `get_primes`-Funktion fehlt ein Doppelpunkt (:) am Ende der for-Schleifenzeile. Lassen Sie mich das für Sie beheben."
    },
    {
      "type": "tool_use",
      "id": "toolu_01PqRsTuVwXyZAbCdEfGh",
      "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):"
      }
    }
  ]
}

Ihre Anwendung sollte dann die Bearbeitung vornehmen und das Ergebnis zurückgeben:

response = client.messages.create(
    model="claude-3-7-sonnet-20250219",
    max_tokens=1024,
    tools=[
        {
            "type": "text_editor_20250124",
            "name": "str_replace_editor"
        }
    ],
    messages=[
        # Vorherige Nachrichten...
        {
            "role": "assistant",
            "content": [
                {
                    "type": "text",
                    "text": "Ich habe den Syntaxfehler in Ihrer primes.py-Datei gefunden. In der `get_primes`-Funktion fehlt ein Doppelpunkt (:) am Ende der for-Schleifenzeile. Lassen Sie mich das für Sie beheben."
                },
                {
                    "type": "tool_use",
                    "id": "toolu_01PqRsTuVwXyZAbCdEfGh",
                    "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):"
                    }
                }
            ]
        },
        {
            "role": "user",
            "content": [
                {
                    "type": "tool_result",
                    "tool_use_id": "toolu_01PqRsTuVwXyZAbCdEfGh",
                    "content": "Text wurde an genau einer Stelle erfolgreich ersetzt."
                }
            ]
        }
    ]
)

Schließlich wird Claude eine vollständige Erklärung der Behebung liefern:

{
  "id": "msg_01IjKlMnOpQrStUvWxYzAb",
  "model": "claude-3-7-sonnet-20250219",
  "stop_reason": "end_turn",
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "Ich habe den Syntaxfehler in Ihrer primes.py-Datei behoben. Das Problem lag in der `get_primes`-Funktion in Zeile 19. Es fehlte ein Doppelpunkt (:) am Ende der for-Schleifenzeile.\n\nHier ist, was ich geändert habe:\n\nVon:\n```python\nfor num in range(2, limit + 1)\n```\n\nZu:\n```python\nfor num in range(2, limit + 1):\n```\n\nIn Python ist ein Doppelpunkt am Ende von Anweisungen erforderlich, die einen neuen Codeblock beginnen, wie for-Schleifen, if-Anweisungen, Funktionsdefinitionen usw. Ohne den Doppelpunkt gibt Python einen Syntaxfehler aus, weil es nicht weiß, wo der Codeblock beginnt.\n\nIhr Code sollte jetzt korrekt ausgeführt werden. Die Funktion wird ordnungsgemäß eine Liste von Primzahlen bis zum angegebenen Limit generieren."
    }
  ]
}

Implementieren Sie das Texteditor-Tool

Das Texteditor-Tool wird als schema-loses Tool implementiert, das durch type: "text_editor_20250124" identifiziert wird. Bei der Verwendung dieses Tools müssen Sie kein Eingabeschema wie bei anderen Tools bereitstellen; das Schema ist in Claudes Modell eingebaut und kann nicht modifiziert werden.

1

Initialisieren Sie Ihre Editor-Implementierung

Erstellen Sie Hilfsfunktionen zum Umgang mit Dateioperationen wie Lesen, Schreiben und Modifizieren von Dateien. Erwägen Sie die Implementierung einer Backup-Funktionalität zur Wiederherstellung nach Fehlern.

2

Behandeln Sie Editor-Tool-Aufrufe

Erstellen Sie eine Funktion, die Tool-Aufrufe von Claude basierend auf dem Befehlstyp verarbeitet:

def handle_editor_tool(tool_call):
    input_params = tool_call.input
    command = input_params.get('command', '')
    file_path = input_params.get('path', '')
    
    if command == 'view':
        # Dateiinhalt lesen und zurückgeben
        pass
    elif command == 'str_replace':
        # Text in Datei ersetzen
        pass
    elif command == 'create':
        # Neue Datei erstellen
        pass
    elif command == 'insert':
        # Text an Position einfügen
        pass
    elif command == 'undo_edit':
        # Aus Backup wiederherstellen
        pass
3

Implementieren Sie Sicherheitsmaßnahmen

Fügen Sie Validierung und Sicherheitsprüfungen hinzu:

  • Validieren Sie Dateipfade, um Directory Traversal zu verhindern
  • Erstellen Sie Backups vor Änderungen
  • Behandeln Sie Fehler elegant
  • Implementieren Sie Berechtigungsprüfungen
4

Verarbeiten Sie Claudes Antworten

Extrahieren und behandeln Sie Tool-Aufrufe aus Claudes Antworten:

# Tool-Verwendung in Claudes Antwort verarbeiten
for content in response.content:
    if content.type == "tool_use":
        # Tool basierend auf Befehl ausführen
        result = handle_editor_tool(content)
        
        # Ergebnis an Claude zurückgeben
        tool_result = {
            "type": "tool_result",
            "tool_use_id": content.id,
            "content": result
        }

Beachten Sie bei der Implementierung des Texteditor-Tools:

  1. Sicherheit: Das Tool hat Zugriff auf Ihr lokales Dateisystem, implementieren Sie daher angemessene Sicherheitsmaßnahmen.
  2. Backup: Erstellen Sie immer Backups, bevor Sie Änderungen an wichtigen Dateien zulassen.
  3. Validierung: Validieren Sie alle Eingaben, um unbeabsichtigte Änderungen zu verhindern.
  4. Eindeutige Übereinstimmung: Stellen Sie sicher, dass Ersetzungen genau eine Stelle treffen, um unbeabsichtigte Bearbeitungen zu vermeiden.

Fehler behandeln

Bei der Verwendung des Texteditor-Tools können verschiedene Fehler auftreten. Hier sind Hinweise zur Behandlung:

Befolgen Sie Best Practices bei der Implementierung


Preise und Token-Nutzung

Das Texteditor-Tool verwendet die gleiche Preisstruktur wie andere Tools, die mit Claude verwendet werden. Es folgt der Standard-Eingabe- und Ausgabe-Token-Preisgestaltung basierend auf dem Claude-Modell, das Sie verwenden.

Zusätzlich zu den Basis-Tokens werden die folgenden zusätzlichen Eingabe-Tokens für das Texteditor-Tool benötigt:

ToolZusätzliche Eingabe-Tokens
text_editor_20241022 (Claude 3.5 Sonnet)700 Tokens
text_editor_20250124 (Claude 3.7 Sonnet)700 Tokens

Für detailliertere Informationen über Tool-Preise, siehe Tool-Nutzungspreise.

Integrieren Sie das Texteditor-Tool mit der Computer-Nutzung

Das Texteditor-Tool kann zusammen mit dem Computer-Nutzungs-Tool und anderen von Anthropic definierten Tools verwendet werden. Bei der Kombination dieser Tools müssen Sie:

  1. Den entsprechenden Beta-Header einschließen (wenn Sie es mit der Computer-Nutzung verwenden)
  2. Die Tool-Version mit dem von Ihnen verwendeten Modell abstimmen
  3. Die zusätzliche Token-Nutzung für alle in Ihrer Anfrage enthaltenen Tools berücksichtigen

Für weitere Informationen über die Verwendung des Texteditor-Tools im Kontext der Computer-Nutzung, siehe die Computer-Nutzung.

Änderungsprotokoll

DatumVersionÄnderungen
13. März 2025text_editor_20250124Einführung der eigenständigen Texteditor-Tool-Dokumentation. Diese Version ist für Claude 3.7 Sonnet optimiert, hat aber identische Fähigkeiten wie die vorherige Version.
22. Oktober 2024text_editor_20241022Erste Veröffentlichung des Texteditor-Tools mit Claude 3.5 Sonnet. Bietet Funktionen zum Anzeigen, Erstellen und Bearbeiten von Dateien durch die Befehle view, create, str_replace, insert und undo_edit.

Nächste Schritte

Hier sind einige Ideen, wie Sie das Texteditor-Tool auf bequemere und leistungsfähigere Weise nutzen können:

  • Integration in Ihren Entwicklungsworkflow: Bauen Sie das Texteditor-Tool in Ihre Entwicklungswerkzeuge oder IDE ein
  • Erstellen Sie ein Code-Review-System: Lassen Sie Claude Ihren Code überprüfen und verbessern
  • Bauen Sie einen Debugging-Assistenten: Erstellen Sie ein System, bei dem Claude Ihnen hilft, Probleme in Ihrem Code zu diagnostizieren und zu beheben
  • Implementieren Sie Dateiformat-Konvertierung: Lassen Sie Claude Ihnen helfen, Dateien von einem Format in ein anderes zu konvertieren
  • Automatisieren Sie die Dokumentation: Richten Sie Workflows ein, damit Claude Ihren Code automatisch dokumentiert

Während Sie Anwendungen mit dem Texteditor-Tool erstellen, sind wir gespannt darauf zu sehen, wie Sie Claudes Fähigkeiten nutzen, um Ihren Entwicklungsworkflow und Ihre Produktivität zu verbessern.