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 直接與您的檔案互動,提供實際操作協助,而不僅僅是建議變更。
如需模型支援,請參閱工具參考。
以下是一些使用文字編輯器工具的範例:
使用 Messages API 將文字編輯器工具(名為 str_replace_based_edit_tool)提供給 Claude。
您可以選擇指定 max_characters 參數來控制檢視大型檔案時的截斷。
max_characters 僅與 text_editor_20250728 及更新版本的文字編輯器工具相容。
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 參數,請將檔案內容截斷到該長度tool_result 內容區塊的新 user 訊息將結果返回給 ClaudeClaude 使用工具修改檔案
str_replace 等命令進行變更,或使用 insert 在特定行號新增文字。str_replace 命令,Claude 會構造一個格式正確的工具使用請求,其中包含舊文字和要替換它的新文字執行編輯並返回結果
Claude 提供其分析和解釋
文字編輯器工具支援多個用於檢視和修改檔案的命令:
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 提供文字編輯工具和修復語法錯誤的提示:
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)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:
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)行號
在上面的範例中,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):"
}
}
]
}您的應用程式應該進行編輯並返回結果:
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 提供修復的完整說明:
{
"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 的模型中,無法修改。
工具類型是 Claude 4 模型的 type: "text_editor_20250728"。
初始化編輯器實現
建立輔助函數來處理檔案操作,例如讀取、寫入和修改檔案。考慮實現備份功能以從錯誤中恢復。
處理編輯器工具呼叫
建立一個函數,根據命令類型處理來自 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,
}實現文字編輯工具時,請記住:
使用文字編輯工具時,可能會發生各種錯誤。以下是如何處理它們的指導:
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 工具一起使用。組合工具時,請確保:
| 日期 | 版本 | 變更 |
|---|---|---|
| 2025 年 7 月 28 日 | text_editor_20250728 | 發布更新的文字編輯工具,修復了一些問題並新增了可選的 max_characters 參數。除此之外,它與 text_editor_20250429 相同。 |
| 2025 年 4 月 29 日 | text_editor_20250429 | 發布 Claude 4 的文字編輯工具。此版本移除了 undo_edit 命令,但保留了所有其他功能。工具名稱已更新以反映其基於 str_replace 的架構。 |
| 2025 年 3 月 13 日 | text_editor_20250124 | 引入獨立文字編輯工具文件。此版本針對 Claude Sonnet 3.7 進行了最佳化,但具有與先前版本相同的功能。 |
| 2024 年 10 月 22 日 | text_editor_20241022 | 使用 Claude Sonnet 3.5(已停用)發布文字編輯工具的初始版本。透過 view、create、str_replace、insert 和 undo_edit 命令提供檔案查看、建立和編輯功能。 |
以下是如何以更便利和強大的方式使用文字編輯工具的一些想法:
文字編輯工具使 Claude 能夠直接使用您的程式碼庫,支援從除錯到自動化文件的工作流程。
Was this page helpful?