# Prompt 调优

> 全部文档的索引见 [llms.txt](https://ark.volcengine.com/llms.txt)；在任一文档页面地址后追加 `.md` 可获取该页的 Markdown 版本。

在Prompt调优阶段，用户将跟进一个调优任务。通过「**调试**」「**批量**」「**智能优化**」三个环节，完成Prompt的版本迭代。

<span id="4b077a86"></span>
# 1. 调试

「调试」流程中，用户可结合模型回答，初步调试优化Prompt，并将生成的种子样本（提问、回答、评分）加入评测集。

<span id="2532d19f"></span>
## 1.1 构建提问

不同任务场景中，「提问」的构成要素各异。

<span id="12cbe890"></span>
### 文本理解/单轮对话任务

文本理解/单轮对话任务的提问包含「Prompt」及其「变量（文本）」。变量在Prompt中的占位符为{{变量名}}，支持「用户手动输入」或「**AI联网生成变量**」。开启联网功能后，能辅助AI生成更多样化的变量内容，但可能会产生额外 tokens 消耗和时长。

![](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/84a66d37de454162809fe6d381b0c485~tplv-goo7wpa0wc-image.image)

<span id="c8346f0a"></span>
### 多轮对话任务

多轮对话的提问包括「系统Prompt」和「用户内容」。「用户内容」支持「手动输入」与「文件上传」。

<span id="7878104e"></span>
### 视觉理解任务

视觉理解任务的提问包含「Prompt」及其「变量（文本、图像）」。变量在Prompt中的占位符为{{变量名}}，支持「文本手动输入」与「图片本地、TOS、URL上传」。 

<span id="bea7dad8"></span>
## 1.2 生成回答

<span id="0edd6db3"></span>
### 文本理解/单轮对话任务

* **模型回答**
  点击「生成模型回答」按钮，模型回答会在输出框中流式展示。
* **理想回答/参照回答**

    [视频](https://p9-arcosite.byteimg.com/obj/tos-cn-i-goo7wpa0wc/ab99ead6f20a4d46a4308775e7c54dd2)

    * 在「评分模式」中需添加「理想回答」。用户没有明确的理想回答时，可参考AI生成内容，或进一步提供用户反馈、修改AI思考步骤以优化AI生成结果。

    * 在「GSB比较模式」中需通过AI生成方式或手动修改方式，来添加「参照回答」。

<span id="5bc96017"></span>
### 多轮对话任务

* **助手回答**
  在多轮对话中，点击「生成/发送」按钮，或通过手动编辑、文件上传方式输入「助手回答」。

<div style="text-align: center">![](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/82938a1a30724b3e86adc32da47e5977~tplv-goo7wpa0wc-image.image)</div>

* **理想回答/参照回答**

    * 选择「评分模式」的「多轮对话」任务无需添加「理想回答」。

    * 选择「GSB比较模式」的「多轮对话」任务需通过AI生成、文件上传、手动编辑等方式添加「参照回答」。

<span id="57ebb4b0"></span>
### 视觉理解任务

* **模型回答**
  点击「生成模型回答」按钮，模型回答会在输出框中流式展示。
* **理想回答/参照回答**

    * 在「评分模式」中需添加「理想回答」。用户没有明确的理想回答时，可参考AI生成内容，或进一步提供用户反馈、修改AI思考步骤以优化AI生成结果。

    * 「视觉理解」任务当前不支持「GSB比较模式」，无需添加「参照回答」。

<span id="c98b89d6"></span>
## 1.3 完成评分

不同调优模式下采取不同的评分标准。
* 「评分模式」：依据「模型回答」，按 1-5 分进行评分。
* 「GSB比较模式」：对比「模型回答」与「参照回答」，判断“Good更好/Same等同/Bad更差”。可选择是否给出「评分原因」。

<span id="aa3ced24"></span>
## 1.4 添加至评测集

点击「添加至评测集」按钮，此条数据将会被添加至评测集，在下一流程「批量」中显示。

<span id="fce427ce"></span>
## 1.5 Prompt快速优化

在「调试」流程中，用户可随时手动修改Prompt，或使用AI优化。
支持 **「一键改写」** 与 **「基于反馈的调整」** 两种AI优化方式。
* **一键改写**：若对当前Prompt整体不满意，点击魔法棒图标「一键改写Prompt」。
* **基于反馈的调整**：若对Prompt局部不满意，点击「优化你的Prompt」后输入用户优化建议（文本理解/单轮对话、视觉理解任务），或点击「应用反馈优化Prompt」（多轮对话任务）。

<span id="3eec63d2"></span>
# 2.批量

「批量」流程用于处理和准备用于Prompt「智能优化」的评测集。批量增加样本的提问、回答和评分。
若用户想对单条样本进行精细化调试，可点击样本后的「方框」图标，进入「**调试模式**」。

<div style="text-align: center">![](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/0ef494b70cbf4fb9988ca524d4515314~tplv-goo7wpa0wc-image.image)</div>

<span id="5772299b"></span>
## 2.1 批量构建提问

支持添加行后手动输入、AI生成、文件上传多种方式批量构建提问。
在「文本理解/单轮对话」任务中，支持「**AI批量生成变量**」。点击上方「AI生成变量」按键，填入新生成的行数。如需修改变量生成规则，则点击按键侧边下拉菜单「变量生成规则」即可跳转。

<div style="text-align: center">![](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/013d6eec399847c58f05e0301f93f7ff~tplv-goo7wpa0wc-image.image)</div>

<span id="4c6ab80e"></span>
## 2.2 批量生成回答

回答包括「模型/助手回答」和「理想/参照回答」。「模型/助手回答」点击对应按钮生成。「理想/参照回答」支持手动输入、AI生成、文件上传等方式。

<span id="27e95b85"></span>
## 2.3 批量完成评分

支持「用户打分」与「**AI智能评分**」。在「AI智能评分」中，首先需明确「评分标准」。支持「用户输入评分标准」与「AI生成评分标准」两种方式。
* **用户输入评分标准**：根据提示输入，支持一种「**领域特定语言 (DSL)** 」来满足复杂评分需求，具体参考[评分DSL](/docs/dsl)。
* **AI生成评分标准**：当用户至少为3条样本打分后，AI将学习用户的评分标准。启用后支持用户进一步编辑。

**注意**：AI自动生成的评分理由及结果仅供参考，建议人工仔细复查与修正。若评分结果有偏差，可能影响后续Prompt优化方向与效果。**一旦确认对所有回答重新评分，新AI评分将覆盖原记录，且原数据无法恢复，请谨慎操作**。 

<div style="text-align: center">![](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/51d605c335694fb98facf61138ad4584~tplv-goo7wpa0wc-image.image)</div>

<span id="b8ca9551"></span>
## 2.4 导出评测集

点击上方「...」折叠按钮和「导出为XLSX」，实现评测集导出。

<div style="text-align: center">![](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/839c083f7cd4472bbf07a418b2c62213~tplv-goo7wpa0wc-image.image)</div>

<span id="905ad27d"></span>
## 2.5 Prompt 版本比对

在使用「评分模式」的「文本理解/单轮对话」或「视觉理解」任务中，点击评测表格操作列的「＋」符号，选择对比版本后，数据集将新增「被选版本 Prompt 的模型回答」和「评分」，以便对比不同版本 Prompt 的效果。

<div style="text-align: center">![](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/1c4d4f46f2e94a9a95ab7c125f6c1370~tplv-goo7wpa0wc-image.image)</div>

<span id="223113b5"></span>
# 3.智能优化

「智能优化」流程会基于「批量」流程中所构建的评测集，以提高样本整体评分为目标，对Prompt进行优化，从而生成优化报告、新版本的Prompt和评测集。用户需完成以下步骤：
* **数据准备**：根据平台提示，确认相关数据准备完善。
* **效果和成本配置**：平衡智能优化过程的 Tokens 消耗和 Prompt 优化效果。
* **免费智能精调**：在选择「评分模式」的「文本理解/单轮对话」任务中，可以选择开启「免费智能精调」。生成优化结果后，平台将智能判断是否自动进入精调继续提升优化效果，若有精调结果将更新报告，当前精调方法为 SFT精调，用理想回答作为训练目标。

完成数据准备与配置后，点击「已准备好数据，开始智能优化」。优化过程中，会实时展示优化结果，可点击「下载为Excel」。 **注意：中间结果会实时更新为当前最佳的Prompt。若未进行下载操作，被后续结果覆盖的历史中间优化结果将无法找回**。 

<span id="f6fe6ad9"></span>
# 4.工具调用（可选）

在使用「评分模式」的「文本理解/单轮对话」任务中，可开启「**工具调用**」。

> **说明**
>
> 「调试」、「批量」、「智能优化 」三个模块均支持开启工具调用。推荐在「调试」时开启，方便直接观测工具调用效果。

点击顶部菜单栏「工具」图标左滑出现创建工具页面，输入或上传工具代码。当用户输入与工具匹配时，模型将自动基于工具规则进行回答。

<span id="83cc1291"></span>
## 4.1 视频介绍

[视频](https://p9-arcosite.byteimg.com/obj/tos-cn-i-goo7wpa0wc/9634e7eaa5904ccd9e96e1971d86d333)

<span id="619091e1"></span>
## **4.2 工具代码格式**

支持Json格式，点击「本地上传」下载样例文件查看详细格式，代码中必须包含 function.name（工具名称）、function.description（工具描述）和 function.parameters（参数）。

<div style="text-align: center">![](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/ae3cc00437c24d089533f5d30c5f9d7d~tplv-goo7wpa0wc-image.image)</div>

<div style="text-align: center">![](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/5e0aaa2f6a8d4c6f8f8f39ffb3a2929e~tplv-goo7wpa0wc-image.image)</div>

<span id="c2277ccb"></span>
## **4.3 示例**

<span id="a878acf8"></span>
### **Prompt**

任务：让大模型充当汽车智能助手，根据用户与助手的历史对话{{user_prompt}}，输出能够控制车机空调的准确参数，以调整车内温度。

```Markdown
你是汽车智能助手，能够控制多种车机空调功能，每种功能可以通过一个函数来调用。
用户会在车内与你对话，你需要将用户的语言输入转换为对应的车机空调功能操作的函数调用。 

# 要求
- 你需要仔细阅读对话，综合上下文信息，理解用户指令，并将用户指令转换为车机空调功能的函数调用。
- 如果用户指令中不涉及车机空调功能，你要根据对话历史进行合理推测。
- 如果用户指令中没有提到具体的操作对象，你也要根据对话历史进行合理的推测。
- 如果用户指令中提到多个具体的操作对象，你需要优先参考更近的对话历史中提到的操作对象。

# 针对函数定义中可能会出现的座位参数position的补充说明
## 当前座位信息
- 当前用户所在座位=副驾。
- 当前用户旁边那个座位是主驾。
- 当前用户后面那个座位是右后。
## 参数取值解释
- 主驾：主驾驶座位（也称左前，前排左边座位）。
- 副驾：副驾驶座位（也称右前，前排右边座位）。
- 左后：后排左边的座位。
- 右后：后排右边的座位（也称老板位）。
- 左侧：所有左边的座位。
- 右侧：所有右边的座位。
- 前排：所有第一排的座位，一般是主驾座位和副驾座位。
- 后排：所有后排座位（除了第一排以外的后排座位，如第二排/第三排等）。
- 全车：所有座位。
- 空：对话中没有提到座位信息。
- 其他：除了上述提到的座位以外的其他所有情况。
## 参数取值要求
- 如果用户指令明确要求操作自己所在的座位，则用position应取值为副驾。
- 如果用户指令中没有提到座位，但前文对话中有座位信息，则应参考前文对话，对position的值做出合理的推测。
- 如果用户指令和前文对话中都没有提到座位信息，且用户没有明确要求操作自己座位，应该用"position=空"表示。

# 举例
- 对话历史：
{'role': 'user', 'content': '空调AC是什么意思'}
{'role': 'assistant', 'content': '...'}
{'role': 'user', 'content': '打开这个功能'}
- 函数调用：
{"parameters": {"action": "打开", "position": "空"}, "name": "ac_switch"}

**对话历史**： 
{{user_prompt}}
**对话历史结束**

你的回答是：
```

<span id="860f2fb5"></span>
### **工具函数**

包括两个工具函数（可直接复制粘贴进平台工具创建页面的代码框）：
* ac_switch：控制车内不同座位的空调开关，参数为座位位置position，开关动作action
* ac_temperature_adjustment：控制车内空调的温度，参数为座位位置position，温度取值value

```JSON
      
[
    {
        "function": {
            "description": "该函数可以控制车内不同座位的空调开关",
            "name": "ac_switch",
            "parameters": {
                "properties": {
                    "action": {
                        "description": "参数为枚举类型，取值范围：[打开，关闭]，参数解释：表示对车内空调打开或关闭。",
                        "type": "string"
                    },
                    "position": {
                        "description": "参数为枚举类型，取值范围：[主驾，副驾，左后，右后，左侧，右侧，前排，后排，全车，空，其他]，参数解释：表示对车内哪个位置的空调进行开关操作。",
                        "type": "string"
                    }
                },
                "required": [
                    "action",
                    "position"
                ],
                "type": "object"
            }
        },
        "type": "function"
    },
    {
        "function": {
            "description": "该函数可以控制汽车车内空调的温度。当空调处于关闭状态下调整空调温度时，会直接开启空调并调整空调温度，所以当用户需要打开并调整空调温度时，应该选择本函数。",
            "name": "ac_temperature_adjustment",
            "parameters": {
                "properties": {
                    "position": {
                        "description": "参数为枚举类型，参数取值范围：[主驾，副驾，左后，右后，左侧，右侧，前排，后排，全车，空，其他]，参数解释：表示对哪个座位的空调温度进行调节。",
                        "type": "string"
                    },
                    "value": {
                        "description": "参数值取值存在3种情况，1）情况1：，参数取值范围：[high，mid，low，max，min]，参数解释：表示要调整空调温度到什么档位，可选值的说明：，high：调到高档，mid：调到中档，low：调到低档，max：调到最大档/最高档，即温度最高的档位，min：调到最小档/最低档，即温度最低的档位；2）情况2：，参数解释：表示按照数值调整空调温度，有两种表达方式：，- 无符号x，表示将空调温度直接调整到x度（摄氏度或华氏度），例如”26“表示将空调温度直接调整到26度，无符号数值不需要携带单位，- 正负号和x，表示在当前空调温度的基础上，增大/减小x度，例如+2表示在当前空调温度的基础上增加2度，-3表示在当前空调温度的基础上减小3度（有正负号的情况下不需要携带单位）。当用户使用类似”调高(热)一点/开低(冷)点“等表达时，但没有表明具体开高/低多少档位，用value=+1或-1表示；3）情况3：，参数解释：表示按照百分比调整空调温度，1%表示温度最低，100%表示温度最高。，表达方式为：，- 正负号和x%，表示在当前空调温度的基础上，增大/减小x%的温度，例如+35%表示在当前空调温度的基础上增加30%，-70%表示在当前空调温度的基础上减小70%",
                        "type": "string"
                    }
                },
                "required": [
                    "value",
                    "position"
                ],
                "type": "object"
            }
        },
        "type": "function"
    }
]
```

<span id="ba77674b"></span>
### **模型回答**

工具调用是连接大模型与物理世界控制系统的桥梁。启用工具后，大模型可精准输出适配车机空调控制系统的函数及参数；若未启用，模型将输出编造的函数和参数，无法用于控制车机空调。
例如，当用户在历史对话中表达“帮我把第二排左侧调到25度吧”，大模型会准确输出ac_temperature_adjustment函数，位置参数为“左后”，温度参数为25。ac_temperature_adjustment及其参数就能输入给车机空调控制系统，进而控制物理世界的温度。

|{{user_prompt}} |理想回答 |使用工具调用的模型回答 |不使用工具调用的模型回答 |
|---|---|---|---|
|{'role': 'user', 'content': '好热啊，今天几度啊？'}\n{'role': 'assistant', 'content': '...'}\n{'role': 'user', 'content': '帮我把第二排左侧调到25度吧'} |{"parameters": {"position": "左后", "value": "25"}, "name": "ac_temperature_adjustment"} |{"parameters": {"position": "左后", "value": "25"}, "name": "ac_temperature_adjustment"} |{"parameters": {"action": "设置温度", "position": "左后", "temperature": 25}, "name": "set_temperature"} |
|{'role': 'user', 'content': '感觉有点冷，'}\n{'role': 'assistant', 'content': '...'}\n{'role': 'user', 'content': '帮我调高点'} |{"parameters": {"position": "空", "value": "+1"}, "name": "ac_temperature_adjustment"} |{"parameters": {"position": "副驾", "value": "+1"}, "name": "ac_temperature_adjustment"} |{"parameters": {"action": "调高", "position": "空"}, "name": "temperature_adjust"} |
|{'role': 'user', 'content': '空调怎么调节？'}\n{'role': 'assistant', 'content': '...'}\n{'role': 'user', 'content': '打开老板位的'} |{"parameters": {"action": "打开", "position": "右后"}, "name": "ac_switch"} |{"parameters": {"action": "打开", "position": "右后"}, "name": "ac_switch"} |{"parameters": {"action": "打开", "position": "右后"}, "name": "air_conditioning_switch"} |

<span id="f03d58d5"></span>
# 5.报告

「智能优化」流程结束后，点击「查看优化报告」，即可跳转查看优化前后两个版本的比对结果。报告包括「Prompt文本」「评分整体比较、具体分布」「详细评测集」的新旧版本结果对比。
支持优化后版本与父版本或任意祖先版本进行对比。
