> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# 流程

## 概览

程序包含针对某项特定任务的指令。每个流程都有一个触发条件，用于说明何时适用；还有内容，用于说明具体操作。对话符合触发条件时，智能体会加载该流程。

当智能体需要处理多种不同任务时，可使用流程。例如，客服智能体可为每类请求设置一个流程：退款、身份验证、账户恢复或连接故障排查。

![智能体控制台中的流程
标签页](/docs/_fern-img/38b190b7a08cb9e628da309a86c5e4b315eabccf238a41d5d3a6c2646aba11af.webp)

## 流程类型

流程分为两类：

* **[自由形式流程](/docs/zh/eleven-agents/customization/procedures/free-form-procedures)** 使用自然语言编写指令，智能体会根据具体情况理解并调整。
* **[结构化流程](/docs/zh/eleven-agents/customization/procedures/structured-procedures)** 是一组有序的类型化步骤，智能体每次都会以相同方式执行。

同一智能体可以同时使用两类流程。无论类型如何，智能体都会根据触发条件选择相关流程。

> **Tip**
>
> 流程之间可以互相调用。自由形式流程通过[内联 引用](/docs/zh/eleven-agents/customization/procedures/free-form-procedures#inline-references)调用其他流程；结构化流程则通过
> [子流程](/docs/zh/eleven-agents/customization/procedures/structured-procedures#sub-procedure)
> 步骤调用其他结构化流程。常见做法是将开放式处理保留在自由形式流程中，并将每次都必须以相同方式执行的部分交给结构化流程。

智能体可以使用流程、[工作流](/docs/zh/eleven-agents/customization/agent-workflows)，或同时使用两者。两者同时存在时，工作流中的每个节点都能使用所有流程；无法将流程限制为仅在特定工作流节点使用。大多数智能体以其中一种方式为主构建，但两者可以组合使用。

## 何时使用流程

每个智能体都有一个[系统提示词](/docs/zh/eleven-agents/best-practices/prompting-guide)。流程和[工作流](/docs/zh/eleven-agents/customization/agent-workflows)是添加额外结构的两种方式，智能体也可以同时使用两者。根据对话可能变化的程度选择起点。

| 需求                | 使用方式                                                                           | 原因                                                     |
| ----------------- | ------------------------------------------------------------------------------ | ------------------------------------------------------ |
| 简单的概念验证智能体        | 仅使用系统提示词                                                                       | 设置和迭代最快，但随着智能体职责范围扩大，单个提示词会变得难以管理。                     |
| 智能体可调整措辞和顺序的任务    | [自由形式流程](/docs/zh/eleven-agents/customization/procedures/free-form-procedures) | 将整个对话保留在同一个 LLM 的上下文中，智能体可调整措辞和顺序，也能应对意外走向。会占用更多上下文窗口。 |
| 每次都必须以相同方式执行步骤的任务 | [结构化流程](/docs/zh/eleven-agents/customization/procedures/structured-procedures) | 每个步骤都会按你设定的顺序、以相同方式执行，并且只需编写一份简短的步骤列表。                 |
| 完全控制复杂分支和边缘情况     | [工作流](/docs/zh/eleven-agents/customization/agent-workflows)                    | 以你自行设计和连接的子智能体图执行，可完全控制分支以及每一步使用的模型。                   |

自由形式流程是默认选择。它们编写最快，读起来像文档，非技术团队也能负责维护；当对话偏离预设脚本时，智能体还能恢复处理。对于跳过或调换步骤代价很高的场景，例如身份验证、升级处理或金融交易，应使用结构化流程。如果需要两种流程都不提供的路由逻辑或逐步模型控制，应使用工作流。

## 管理流程

建议通过控制台编写流程。使用 CLI 或 API 可通过编程方式管理流程，或将其集成到部署工具中。

#### 通过控制台构建

在[控制台](https://elevenlabs.io/app/agents)中打开智能体，然后选择 **流程**。
使用 **+** 创建自由形式或结构化流程。还可通过同一菜单将流程分组到文件夹中。有关编写指导，请参阅
[自由形式流程](/docs/zh/eleven-agents/customization/procedures/free-form-procedures)
和
[结构化流程](/docs/zh/eleven-agents/customization/procedures/structured-procedures)。

#### 通过 CLI 管理

[ElevenLabs CLI](/docs/zh/eleven-agents/operate/cli) 使用
`elevenlabs agents procedures` 命令组管理流程。请先在环境中设置 `ELEVENLABS_API_KEY`。

```bash
# List the procedures on a branch
elevenlabs agents procedures list \
  --agent-id agent_7101k5zvyjhmfg983brhmhkd98n6 \
  --branch-id agtbranch_0901k4aafjxxfxt93gd841r7tv5t

# Create a procedure
elevenlabs agents procedures create \
  --agent-id agent_7101k5zvyjhmfg983brhmhkd98n6 \
  --branch-id agtbranch_0901k4aafjxxfxt93gd841r7tv5t \
  --json '{"name": "Refund request", "type": "free_form", "trigger": "When the user asks to refund an order", "content": "Ask for the order ID."}'

# Publish every changed procedure draft on the branch
elevenlabs agents update \
  --agent-id agent_7101k5zvyjhmfg983brhmhkd98n6 \
  --branch-id agtbranch_0901k4aafjxxfxt93gd841r7tv5t \
  --json '{"version_description": "Publish refund procedure"}'
```

使用 `elevenlabs agents procedures drafts` 读取、更新或丢弃草稿，使用
`elevenlabs agents procedures remove` 暂存删除操作。在任意命令后添加 `--schema`，可查看其输入和输出约定。

#### 通过 API 管理

流程草稿遵循[智能体版本控制 生命周期](/docs/zh/eleven-agents/operate/versioning#drafts)。草稿按用户和分支分别保存，因此每位团队成员在每个分支上都有独立草稿。发布会将流程更改保存为该分支上新的不可变智能体版本，且不会影响其他用户的草稿。

智能体配置响应包含流程元数据，例如 ID、名称、类型和触发条件，但不包含流程正文或草稿。请使用流程端点读取和编辑完整内容。所有流程端点均嵌套在
`/v1/convai/agents/{agent_id}/branches/{branch_id}` 下。

### 创建或更新草稿

使用 `POST /procedures` 创建流程。使用
`PATCH /procedures/{procedure_id}/draft` 更新，并在每个请求中包含 `name`、`content`、`type` 和 `trigger`。
`type` 必须与流程现有类型一致。

使用 `GET /procedures/{procedure_id}/draft` 读取未发布的更改。如果没有草稿，该端点会返回已发布版本。

### 发布更改

通过[更新智能体](/docs/zh/api-reference/agents/update)创建新的智能体版本来发布草稿。一次请求会发布该分支上的所有已更改流程草稿，适用于两种流程类型。如果分支中包含结构化流程，发布时会对其进行验证和编译（将步骤转换为智能体执行的形式），并返回所有错误。验证通过后，智能体配置将被发布。无需自行编译任何内容。

请按照特定类型的说明管理
[自由形式流程](/docs/zh/eleven-agents/customization/procedures/free-form-procedures#manage-a-free-form-procedure)
或
[结构化流程](/docs/zh/eleven-agents/customization/procedures/structured-procedures#manage-a-structured-procedure)。

### 丢弃或删除流程

`DELETE /procedures/{procedure_id}/draft` 会丢弃未发布的编辑并恢复已发布版本。如果流程从未发布过，该操作会将其删除。

`DELETE /procedures/{procedure_id}` 会暂存已发布流程的删除操作。请使用相同方式发布此更改。

完整端点架构请参阅[流程 API 参考文档](/docs/zh/api-reference/agents/procedures/)。

## 限制

* 流程内容上限为 50,000 个字符。
* 智能体会在上下文中保留最近启动的 5 个流程。当一次对话中启动了更多流程时，最早的自由形式流程的内容、内联工具和知识库文档会从提示词中移除。请保持流程聚焦，并使用子流程，避免同时激活过多流程。
* 流程创建后无法更改类型。如需在自由形式和结构化类型之间转换，请创建新流程，并更新所有相关引用。
* 流程仅属于一个智能体，无法在智能体之间共享，也不能作为工作区级资源存储。
* 复制智能体时会复制其流程，而非共享流程。副本会获得新的流程 ID，因此重复智能体中的引用必须使用这些新 ID。
* 流程无法限制为仅在特定工作流节点使用。智能体同时拥有两者时，每个节点都能使用所有流程。
* 结构化流程无法引用知识库文档。