載入中

文字編輯器工具

第 32 課7 分鐘

重要提示:文字編輯器工具的最新工具 ID 可在此處的 AWS 文件中找到: https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters-anthropic-claude-messages-tool-use.html#model-parameters-anthropic-anthropic-defined-tools

文字編輯器工具是 Claude 內建的能力,賦予其檔案系統存取與文字編輯能力。與其他需要您同時撰寫結構描述(schema)和實作的工具不同,Claude 已經知道如何請求文字編輯器操作——您只需要處理這些請求即可。

文字編輯器工具的功能

此工具賦予 Claude 像軟體工程師一樣處理檔案與目錄的能力:

  • 檢視檔案或目錄內容
  • 檢視檔案中特定範圍的行
  • 替換檔案中的文字
  • 建立新檔案
  • 在特定行號插入文字

運作方式

文字編輯器工具與自訂工具不同之處在於,只有 JSON 結構描述內建於 Claude 中。您仍然需要提供實際的實作。

當您建立自訂工具時,您需要撰寫兩個部分——告訴 Claude 有關該工具的結構描述,以及實際執行工作的函式。使用文字編輯器工具時,Claude 已經擁有結構描述,但您必須撰寫函式來處理 Claude 檢視、編輯或建立檔案的請求。

設定工具

要使用文字編輯器工具,您需要提供與您的模型相符的工具版本:

python
# 適用於 Claude 4 及更新版本的模型
text_editor = "text_editor_20250728"

# 適用於較早版本的 Claude 模型
text_editor = "text_editor_20250124"

本課程的其餘部分使用 Claude 4 及更新版本;使用 text_editor_20250124 時,工具名稱改為 str_replace_editor,並且還存在 undo_edit 指令。

您還需要修改您的聊天函式,使其能接受文字編輯器參數並將其包含在模型設定中。

工具指令

當 Claude 想要使用文字編輯器時,它會傳回帶有特定指令的工具使用請求:

您的實作需要處理全部四種指令:view、str_replace、create 和 insert。以下是處理這些請求的基本結構:

python
def run_tool(tool_name, tool_input):
    if tool_name == "str_replace_based_edit_tool":
        command = tool_input.get("command", "")
        if command == "view":
            path = tool_input.get("path", "")
            return text_editor_tool.view(path)
        elif command == "str_replace":
            path = tool_input.get("path", "")
            old_str = tool_input.get("old_str", "")
            new_str = tool_input.get("new_str", "")
            return text_editor_tool.str_replace(path, old_str, new_str)
        # ... 處理其他指令

範例:檔案分析

以下是此工具在實務中的運作方式。當您要求 Claude「用一句話描述 ./main.py 檔案中程式碼的內容」時,會發生以下情況:

Claude 傳送一個工具使用請求,內容為 {"command": "view", "path": "./main.py"}。您的伺服器使用 TextEditorTool 類別讀取檔案並回傳內容。接著 Claude 根據其讀取的程式碼提供分析。

實際應用

文字編輯器工具本質上將 Claude 轉變為一個程式碼助手,能夠:

  • 讀取現有程式碼並提供分析
  • 建立新檔案與函式
  • 修改現有程式碼
  • 設定測試檔案
  • 跨多個檔案重構程式碼

舉例來說,您可以要求 Claude「在 main.py 中撰寫一個計算圓周率到小數點後第 5 位的函式,然後建立一個 test.py 檔案來測試它」。Claude 會讀取現有檔案、新增新函式、建立測試檔案,並撰寫完整的測試——這一切都會自動使用文字編輯器指令完成。

這使得建構類似現代整合 AI 功能的程式碼編輯器的 AI 驅動開發工具成為可能,您可以要求進行程式碼變更,並直接在您的檔案系統中實作這些變更。