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 может использовать инструмент текстового редактора на основе схемы Anthropic для просмотра и изменения текстовых файлов, помогая вам отлаживать, исправлять и улучшать ваш код или другие текстовые документы. Это позволяет Claude напрямую взаимодействовать с вашими файлами, обеспечивая практическую помощь вместо простых предложений по изменениям.
Для поддержки моделей см. Справочник инструментов.
Некоторые примеры использования инструмента текстового редактора:
Предоставьте инструмент текстового редактора (названный str_replace_based_edit_tool) Claude, используя Messages API.
Вы можете дополнительно указать параметр max_characters для управления усечением при просмотре больших файлов.
max_characters совместим только с text_editor_20250728 и более поздними версиями инструмента текстового редактора.
Инструмент текстового редактора можно использовать следующим образом:
Инструмент текстового редактора поддерживает несколько команд для просмотра и изменения файлов:
Команда view позволяет Claude изучить содержимое файла или список содержимого каталога. Она может прочитать весь файл или определенный диапазон строк.
Параметры:
command: Должно быть "view"path: Путь к файлу или каталогу для просмотраview_range (опционально): Массив из двух целых чисел, указывающих номера начальной и конечной строк для просмотра. Номера строк начинаются с 1, а -1 для конечной строки означает чтение до конца файла. Этот параметр применяется только при просмотре файлов, а не каталогов.Команда str_replace позволяет Claude заменить определенную строку в файле новой строкой. Это используется для внесения точных правок.
Параметры:
command: Должно быть "str_replace"path: Путь к файлу для измененияold_str: Текст для замены (должен совпадать точно, включая пробелы и отступы)new_str: Новый текст для вставки вместо старого текстаКоманда create позволяет Claude создать новый файл с указанным содержимым.
Параметры:
command: Должно быть "create"path: Путь, где должен быть создан новый файлfile_text: Содержимое для записи в новый файлКоманда insert позволяет Claude вставить текст в определенное место в файле.
Параметры:
command: Должно быть "insert"path: Путь к файлу для измененияinsert_line: Номер строки, после которой вставить текст (0 для начала файла)insert_text: Текст для вставкиЭтот пример демонстрирует, как Claude использует инструмент текстового редактора для исправления синтаксической ошибки в файле Python.
Сначала ваше приложение предоставляет Claude инструмент текстового редактора и запрос на исправление синтаксической ошибки:
Claude сначала использует инструмент текстового редактора для просмотра файла:
{
"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"
}
}
]
}Затем ваше приложение должно прочитать файл и вернуть его содержимое Claude:
Номера строк
В приведённом выше примере результат инструмента view включает содержимое файла с номерами строк, добавленными в начало каждой строки (например, "1: def is_prime(n):"). Номера строк не требуются, но они необходимы для успешного использования параметра view_range для изучения определённых разделов файлов и параметра insert_line для добавления содержимого в точные места.
Claude определяет синтаксическую ошибку и использует команду str_replace для её исправления:
{
"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):"
}
}
]
}Затем ваше приложение должно выполнить редактирование и вернуть результат:
Наконец, Claude предоставляет полное объяснение исправления:
{
"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."
}
]
}Инструмент текстового редактора реализован как инструмент без схемы. При использовании этого инструмента вам не нужно предоставлять входную схему, как с другими инструментами; схема встроена в модель Claude и не может быть изменена.
Тип инструмента — type: "text_editor_20250728" для моделей Claude 4.
При реализации инструмента текстового редактора помните:
При использовании инструмента текстового редактора могут возникнуть различные ошибки. Вот рекомендации по их обработке:
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 |
text_editor_20250124 (Claude Sonnet 3.7 (deprecated)) | 700 tokens |
Для получения более подробной информации о ценах на инструменты см. Цены на использование инструментов.
Инструмент текстового редактора можно использовать вместе с другими инструментами Claude. При объединении инструментов убедитесь, что вы:
| Дата | Версия | Изменения |
|---|---|---|
| 28 июля 2025 г. | text_editor_20250728 | Выпуск обновленного инструмента текстового редактора, который исправляет некоторые проблемы и добавляет необязательный параметр max_characters. В остальном идентичен text_editor_20250429. |
| 29 апреля 2025 г. | text_editor_20250429 | Выпуск инструмента текстового редактора для Claude 4. Эта версия удаляет команду undo_edit, но сохраняет все остальные возможности. Имя инструмента было обновлено, чтобы отразить его архитектуру на основе str_replace. |
| 13 марта 2025 г. | text_editor_20250124 | Введение документации автономного инструмента текстового редактора. Эта версия оптимизирована для Claude Sonnet 3.7, но имеет идентичные возможности предыдущей версии. |
| 22 октября 2024 г. | text_editor_20241022 | Первоначальный выпуск инструмента текстового редактора с Claude Sonnet 3.5 (). Предоставляет возможности для просмотра, создания и редактирования файлов через команды , , , и . |
Вот несколько идей о том, как использовать инструмент текстового редактора более удобным и мощным способом:
Инструмент текстового редактора позволяет Claude работать непосредственно с вашей кодовой базой, поддерживая рабочие процессы от отладки до автоматической документации.
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)Предоставьте Claude инструмент текстового редактора и запрос пользователя
Claude использует инструмент для изучения файлов или каталогов
view для изучения содержимого файлов или списка содержимого каталогаtool_use с командой viewВыполните команду view и верните результаты
max_characters был указан в конфигурации инструмента, усеките содержимое файла до этой длиныuser, содержащим блок содержимого tool_resultClaude использует инструмент для изменения файлов
str_replace, для внесения изменений или insert для добавления текста в определенный номер строки.str_replace, Claude создает правильно отформатированный запрос использования инструмента со старым текстом и новым текстом для его заменыВыполните редактирование и верните результаты
Claude предоставляет свой анализ и объяснение
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)Инициализируйте реализацию редактора
Создайте вспомогательные функции для обработки операций с файлами, таких как чтение, запись и изменение файлов. Рассмотрите возможность реализации функции резервного копирования для восстановления после ошибок.
Обработайте вызовы инструмента редактора
Создайте функцию, которая обрабатывает вызовы инструментов от Claude на основе типа команды:
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
passРеализуйте меры безопасности
Добавьте проверку и меры безопасности:
Обработайте ответы Claude
Извлеките и обработайте вызовы инструментов из ответов Claude:
# 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