Was this page helpful?
This feature is eligible for Zero Data Retention (ZDR). When your organization has a ZDR arrangement, data sent through this feature is not stored after the API response is returned.
Claude kann ein Anthropic-Schema-Text-Editor-Tool verwenden, um Textdateien anzuzeigen und zu ändern und Ihnen beim Debuggen, Beheben und Verbessern Ihres Codes oder anderer Textdokumente zu helfen. Dies ermöglicht Claude, direkt mit Ihren Dateien zu interagieren und praktische Unterstützung zu bieten, anstatt nur Änderungen vorzuschlagen.
Informationen zur Modellunterstützung finden Sie in der Tool-Referenz.
Einige Beispiele für die Verwendung des Text-Editor-Tools sind:
Stellen Sie das Text-Editor-Tool (benannt str_replace_based_edit_tool) Claude über die Messages API zur Verfügung.
Sie können optional einen max_characters-Parameter angeben, um die Kürzung beim Anzeigen großer Dateien zu steuern.
max_characters ist nur mit text_editor_20250728 und späteren Versionen des Text-Editor-Tools kompatibel.
Das Text-Editor-Tool kann auf folgende Weise verwendet werden:
Das Text-Editor-Tool unterstützt mehrere Befehle zum Anzeigen und Ändern von Dateien:
Der view-Befehl ermöglicht 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" seinpath: Der Pfad zur anzuzeigenden Datei oder zum Verzeichnisview_range (optional): Ein Array von zwei Ganzzahlen, die die Start- und Endzeilennummern zum Anzeigen angeben. Zeilennummern sind 1-indiziert, und -1 für die Endzeilennummer bedeutet, bis zum Ende der Datei zu lesen. Dieser Parameter gilt nur beim Anzeigen von Dateien, nicht von Verzeichnissen.Der str_replace-Befehl ermöglicht Claude, eine bestimmte Zeichenkette in einer Datei durch eine neue Zeichenkette zu ersetzen. Dies wird für präzise Änderungen verwendet.
Parameter:
command: Muss „str_replace" seinpath: Der Pfad zur zu ändernden Dateiold_str: Der zu ersetzende Text (muss genau übereinstimmen, einschließlich Leerzeichen und Einrückung)new_str: Der neue Text, der an Stelle des alten Textes eingefügt werden sollDer create-Befehl ermöglicht Claude, eine neue Datei mit angegebenem Inhalt zu erstellen.
Parameter:
command: Muss „create" seinpath: Der Pfad, in dem die neue Datei erstellt werden sollfile_text: Der Inhalt, der in die neue Datei geschrieben werden sollDer insert-Befehl ermöglicht Claude, Text an einer bestimmten Stelle in einer Datei einzufügen.
Parameter:
command: Muss „insert" seinpath: Der Pfad zur zu ändernden Dateiinsert_line: Die Zeilennummer, nach der der Text eingefügt werden soll (0 für Anfang der Datei)insert_text: Der einzufügende TextDieses Beispiel zeigt, wie Claude das Text-Editor-Tool verwendet, um einen Syntaxfehler in einer Python-Datei zu beheben.
Zunächst stellt Ihre Anwendung Claude mit dem Text-Editor-Tool und einer Aufforderung zur Behebung eines Syntaxfehlers bereit:
Claude verwendet das Text-Editor-Tool zunächst zum Anzeigen der Datei:
{
"id": "msg_01XAbCDeFgHiJkLmNoPQrStU",
"model": "claude-opus-4-7",
"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"
}
}
]
}Ihre Anwendung sollte dann die Datei lesen und ihren Inhalt an Claude zurückgeben:
Zeilennummern
Im obigen Beispiel enthält das view-Tool-Ergebnis Dateiinhalte mit Zeilennummern, die jeder Zeile vorangestellt sind (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 genauen Positionen.
Claude identifiziert den Syntaxfehler und verwendet den str_replace-Befehl, um ihn zu beheben:
{
"id": "msg_01VwXyZAbCdEfGhIjKlMnO",
"model": "claude-opus-4-7",
"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):"
}
}
]
}Ihre Anwendung sollte dann die Bearbeitung durchführen und das Ergebnis zurückgeben:
Abschließend bietet Claude eine vollständige Erklärung der Behebung:
{
"id": "msg_01IjKlMnOpQrStUvWxYzAb",
"model": "claude-opus-4-7",
"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."
}
]
}Das Text-Editor-Tool wird als schemafreies Tool implementiert. Bei der Verwendung dieses Tools müssen Sie kein Eingabeschema wie bei anderen Tools bereitstellen; das Schema ist in Claudes Modell integriert und kann nicht geändert werden.
Der Tool-Typ ist type: "text_editor_20250728" für Claude 4-Modelle.
Beachten Sie bei der Implementierung des Text-Editor-Tools Folgendes:
Bei der Verwendung des Text-Editor-Tools können verschiedene Fehler auftreten. Hier finden Sie Anleitungen zur Fehlerbehandlung:
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:
| Tool | Additional input tokens |
|---|---|
text_editor_20250429 (Claude 4.x) | 700 tokens |
Weitere detaillierte Informationen zur Tool-Preisgestaltung finden Sie unter Tool-Nutzungspreisgestaltung.
Das Text-Editor-Tool kann zusammen mit anderen Claude-Tools verwendet werden. Beim Kombinieren von Tools sollten Sie Folgendes sicherstellen:
| Datum | Version | Änderungen |
|---|---|---|
| 28. Juli 2025 | text_editor_20250728 | Veröffentlichung eines aktualisierten Text-Editor-Tools, das einige Probleme behebt und einen optionalen max_characters-Parameter hinzufügt. Es ist ansonsten identisch mit text_editor_20250429. |
| 29. April 2025 | text_editor_20250429 | Veröffentlichung des Text-Editor-Tools für Claude 4. Diese Version entfernt den undo_edit-Befehl, behält aber alle anderen Funktionen bei. Der Tool-Name wurde aktualisiert, um seine str_replace-basierte Architektur widerzuspiegeln. |
| 13. März 2025 | text_editor_20250124 | Einführung der eigenständigen Text-Editor-Tool-Dokumentation. Diese Version ist für Claude Sonnet 3.7 optimiert, hat aber identische Funktionen wie die vorherige Version. |
| 22. Oktober 2024 | text_editor_20241022 | Erste Veröffentlichung des Text-Editor-Tools mit Claude Sonnet 3.5 (). Bietet Funktionen zum Anzeigen, Erstellen und Bearbeiten von Dateien über die Befehle , , , und . |
Hier sind einige Ideen, wie Sie das Text-Editor-Tool auf bequemere und leistungsfähigere Weise verwenden können:
Das Text-Editor-Tool ermöglicht Claude, direkt mit Ihrer Codebasis zu arbeiten und unterstützt Workflows von Debugging bis zur automatisierten Dokumentation.
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-7",
max_tokens=1024,
tools=[
{
"type": "text_editor_20250728",
"name": "str_replace_based_edit_tool",
"max_characters": 10000,
}
],
messages=[
{
"role": "user",
"content": "There's a syntax error in my primes.py file. Can you help me fix it?",
}
],
)
print(response)Stellen Sie Claude das Text-Editor-Tool und eine Benutzereingabe zur Verfügung
Claude verwendet das Tool, um Dateien oder Verzeichnisse zu untersuchen
view-Befehl, um Dateiinhalte zu untersuchen oder Verzeichnisinhalte aufzulistentool_use-Inhaltsblock mit dem view-BefehlFühren Sie den view-Befehl aus und geben Sie die Ergebnisse zurück
max_characters-Parameter in der Tool-Konfiguration angegeben wurde, kürzen Sie den Dateiinhalt auf diese Längeuser-Nachricht fortsetzen, die einen tool_result-Inhaltsblock enthältClaude verwendet das Tool, um Dateien zu ändern
str_replace verwenden, um Änderungen vorzunehmen, oder insert, um Text in einer bestimmten Zeilennummer hinzuzufügenstr_replace-Befehl verwendet, erstellt Claude eine ordnungsgemäß formatierte Tool-Use-Anfrage mit dem alten Text und dem neuen Text, um ihn zu ersetzenFühren Sie die Bearbeitung aus und geben Sie die Ergebnisse zurück
Claude bietet seine Analyse und Erklärung
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-4-7",
max_tokens=1024,
tools=[{"type": "text_editor_20250728", "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)response = client.messages.create(
model="claude-opus-4-7",
max_tokens=1024,
tools=[{"type": "text_editor_20250728", "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()',
}
],
},
],
)
print(response)response = client.messages.create(
model="claude-opus-4-7",
max_tokens=1024,
tools=[{"type": "text_editor_20250728", "name": "str_replace_based_edit_tool"}],
messages=[
# Previous messages...
{
"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.",
}
],
},
],
)
print(response)Initialisieren Sie Ihre Editor-Implementierung
Erstellen Sie Hilfsfunktionen zur Verarbeitung von Dateivorgängen wie Lesen, Schreiben und Ändern von Dateien. Erwägen Sie die Implementierung einer Sicherungsfunktion, um sich von Fehlern zu erholen.
Verarbeiten 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":
# Read and return file contents
pass
elif command == "str_replace":
# Replace text in file
pass
elif command == "create":
# Create new file
pass
elif command == "insert":
# Insert text at location
passImplementieren Sie Sicherheitsmaßnahmen
Fügen Sie Validierungs- und Sicherheitsprüfungen hinzu:
Verarbeiten Sie Claudes Antworten
Extrahieren und verarbeiten Sie Tool-Aufrufe aus Claudes Antworten:
# Process tool use in Claude's response
for content in response.content:
if content.type == "tool_use":
# Execute the tool based on command
result = handle_editor_tool(content)
# Return result to Claude
tool_result = {
"type": "tool_result",
"tool_use_id": content.id,
"content": result,
}viewcreatestr_replaceinsertundo_edit