You need to enable JavaScript to run this app.
文档中心
火山方舟

火山方舟

复制全文
下载 pdf
工具调用
Apply Patch(代码补丁工具)
复制全文
下载 pdf
Apply Patch(代码补丁工具)
apply_patch 工具适用于让模型以结构化补丁格式生成文件修改方案。开发者可以通过 Responses API 调用该工具,或在 Codex 中使用该工具,让模型对指定文件执行创建、更新或删除操作,并根据返回的补丁结果继续后续流程。
适用场景
apply_patch 工具适用于以下场景:
  • 批量代码改写:例如重命名函数、统一替换旧接口调用方式、批量修正文档或配置文件中的固定格式。
  • 机械化重构:例如拆分文件、补充样板代码、批量插入测试桩或模板化内容。
  • 自动生成修改方案:例如根据用户描述直接生成可执行的补丁内容,再由业务侧执行补丁并回传结果。
支持的接入场景
apply_patch 工具支持通过 API 直接接入,也支持在 Codex 中使用。
接入场景
适用对象
配置要求
API 直接接入
通过 Responses API 自行编排工具调用流程的应用。
在请求体的 tools 字段中配置 apply_patch。该场景支持内置工具和自定义工具两种调用方式。
Codex 接入
通过后付费 API、Coding Plan 或 Agent Plan接入 Codex 的开发者。
按照下方配置 ~/.codex/config.toml~/.codex/models.json,使 Codex 在自定义工具场景中以 FREEFORM 格式触发 apply_patch
Codex 配置要求
要在 Codex 中触发 apply_patch 自定义工具形态,需要配置以下两个文件。
  1. ~/.codex/config.toml 中通过新增的字段 model_catalog_json 配置模型目录文件路径。请参考以下示例配置。
说明
请将 model 的值替换为您的真实模型 ID。
  • model = "doubao-seed-2-1-pro-260628"
    model_provider = "volcengine"
    model_catalog_json = "~/.codex/models.json"
    [model_providers.volcengine]
    name = "volcengine"
    base_url = "https://ark-stg.cn-beijing.volces.com/api/v3"
    env_key = "ARK_API_KEY"
    wire_api = "responses"
  1. ~/.codex/models.json 中声明 apply_patch 的工具输出格式。请参考以下示例配置。
说明
请将 slug 的值替换为您的真实模型 ID。
  • 点击查看 models.json 的完整配置内容
配置完成后,Codex 会在自定义工具场景中按 FREEFORM 文本格式生成 apply_patch 补丁内容。
后付费 API、Coding Plan 和 Agent Plan 接入 Codex 时,均适用上述 Codex 配置要求。关于详细的配置方法,请参考:
接入要点
接入 apply_patch 工具时,建议关注以下几点:
  • 建议在输入中明确提供当前文件内容、目标文件路径、允许修改的文件范围和预期结果,便于模型生成更稳定的补丁。
  • 内置工具模式返回 apply_patch_call,补丁内容位于 operation.diff 字段。
  • 自定义工具模式返回 custom_tool_call,补丁内容位于 input 字段。
  • 调用方需要在业务侧执行补丁,并在执行后校验目标文件内容是否符合预期。
支持的调用方式
apply_patch 支持以下两种调用方式:
调用方式
工具声明
说明
内置工具
{"type": "apply_patch"}
适用于直接启用平台内置的 apply_patch 能力。
自定义工具
{"type": "custom", "name": "apply_patch", ...}
适用于需要兼容现有自定义工具编排方式的场景。模型应直接输出符合语法定义的 FREEFORM 补丁文本,而不是将补丁内容再次包裹为 JSON。
示例代码
请求示例
内置工具
自定义工具
import os
from arkruntime import Ark
client = Ark(
# Get API Key: https://ark.volcengine.com/region:cn-beijing/apikey
api_key=os.getenv("ARK_API_KEY"),
base_url="https://ark.cn-beijing.volces.com/api/v3",
)
response = client.responses.create(
model="doubao-seed-2-1-pro-260628",
input=[
{
"type": "message",
"role": "user",
"content": [
{
"type": "input_text",
"text": (
"The user has the following files:\n"
"<BEGIN_FILES>\n"
"===== /Users/bytedance/Desktop/test/demo.py\n"
'print("world")\n'
'print("hello world")\n'
'print("hello")\n'
"<END_FILES>\n\n"
"You are a helpful coding assistant that should assist the user with whatever they ask.\n\n"
"User query:\n"
"Use the apply_patch tool to delete the output of the last print statement. "
"Leave the other two lines unchanged."
),
}
],
}
],
tools=[
{
"type": "apply_patch",
}
],
tool_choice="auto",
stream=False,
)
print(response)
返回示例
内置工具模式返回 apply_patch_call,自定义工具模式返回 custom_tool_call。以下为返回示例:
内置工具
自定义工具
{
"created_at": 1789975802,
"id": "resp_021789975802046183e4040fe376304d94******",
"model": "doubao-seed-2-1-pro-260628",
"object": "response",
"output": [
{
"id": "rs_02178997580281600000000000000000000f******",
"type": "reasoning",
"summary": [
{
"type": "summary_text",
"text": "已确认需要删除目标文件中最后一条 print 语句,同时保留前两条语句不变。"
}
],
"status": "completed"
},
{
"id": "apc_02178997581916900000000000000000000f******",
"type": "apply_patch_call",
"call_id": "call_xu8oddz51kcf8881q3nn******",
"status": "completed",
"operation": {
"type": "update_file",
"path": "/tmp/ark_apply_patch_demo/demo.py",
"diff": "@@\n print(\"world\")\n print(\"hello world\")\n-print(\"hello\")\n"
}
}
],
"status": "completed",
"tool_choice": "auto"
}
最近更新时间:2026.09.22 10:40:47
这个页面对您有帮助吗?
有用
有用
无用
无用