环境变量
环境变量
无需复制资源,即可在开发、预发布和生产环境中部署同一个智能体。
环境变量可为工具 URL、密钥、标头和身份验证连接定义每个环境的值。单个智能体和工具配置可在所有环境中使用——URL、API 密钥和身份验证会根据对话时指定的环境动态解析。
概览
如果没有环境变量,要将智能体部署到多个环境(开发、预发布、生产),就需要为每个环境复制智能体和工具,然后手动保持其配置同步。这会导致:
- 环境之间出现配置偏移
- 重复的智能体 ID 导致分析数据分散
- 从预发布环境迁移到生产环境时出现发布阻碍
环境变量通过引入可复用、工作区范围的资源来解决这些问题,该资源会为每个环境存储不同值。工具和 MCP 服务器使用模板语法引用这些变量,并会在运行时根据对话环境解析正确的值。

核心概念
环境变量
环境变量是一个工作区范围的资源,包含标签和一组按环境区分的值。共有 3 种类型:
每个环境变量都必须为默认 production 环境设置值。其他环境(例如 staging、development)为可选项。
模板语法
可在 URL 字段中使用 {{system__env_<label>}} 语法引用环境变量:
对于值为 api(生产环境)和 staging.api(预发布环境)的环境变量 api_host,会解析为:
- 在
production中:https://api.example.com/v1/text-to-speech - 在
staging中:https://staging.api.example.com/v1/text-to-speech
此语法与动态变量一致,适用于 Webhook 工具和 MCP 服务器连接的 URL 字段。
环境变量同样支持用于通话前 Webhook URL 和标头(对话发起客户端数据 Webhook),以及在开发者 > Webhook下配置的通话后 Webhook URL。模板会使用对话环境解析,因此同一 Webhook 配置可按环境指向不同端点。对于通话前 Webhook,可预先在电话号码上设置环境,也可在 Webhook 响应中动态返回环境(参见下方电话)。
URL 必须以 https:// 开头,之后才能使用任何环境变量引用。例如,https:// {{ system__env_api_host }}.example.com/v1/data 有效,但 {{ system__env_api_host }}/v1/data
无效。这是验证和安全要求——环境变量值不能控制协议。
解析和回退
当对话在特定环境中运行时,系统会按以下方式解析环境变量:
- 查找请求环境(例如
staging)的值 - 如果该环境没有值,回退到
production值 - 如果无法解析变量,工具调用会因配置错误而失败
这种回退行为意味着只需为与生产环境不同的环境定义值。
创建环境变量
目前无法通过 ElevenLabs CLI 管理环境变量——请使用控制台或 SDK。
通过控制台创建
通过 API 创建
使用环境变量
在 webhook 工具 URL 中使用
在 webhook 工具的 URL 字段中使用模板语法,让基础 URL 按环境解析。

例如,配置为以下内容的工具 URL:
在生产环境中会解析为 https://api.example.com/v1/weather?lat=40.7&lon=-74.0,在预发布环境中则解析为 https://staging.api.example.com/v1/weather?lat=40.7&lon=-74.0。
可在单个 URL 中组合多个环境变量和字面量片段:
API 示例
在 webhook 工具请求头中使用
可在请求头中使用密钥环境变量。不要硬编码密钥 ID,而是引用环境变量,以便不同环境使用不同密钥。在控制台配置工具请求头时,选择环境变量而非静态密钥。运行时,请求头值会解析为当前环境中存储的密钥。
API 示例
在 request_headers 字段中传入环境变量引用:
在 webhook 工具认证连接中使用
认证连接(OAuth2、JWT、Basic Auth)也可按环境解析。当预发布和生产环境使用不同的 OAuth 客户端或令牌端点时,这非常有用。

在工具配置中,选择类型为 auth_connection 的环境变量,而不是直接选择认证连接。运行时会解析当前环境对应的正确认证连接。
API 示例
在 auth_connection 字段中引用环境变量:
在 MCP 服务器连接中使用
环境变量在 MCP 服务器连接中的使用方式与 webhook 工具相同。可用于:
- 服务器 URL:将 MCP 服务器 URL 设为模板,按环境指向不同服务器
- 请求头:为认证请求头使用密钥环境变量
- 认证连接:为基于 OAuth 的 MCP 服务器使用认证连接环境变量
例如,配置为以下内容的 MCP 服务器 URL:
会根据环境解析为不同的 MCP 服务器端点。
在自定义 LLM 配置中使用
使用自定义 LLM时,环境变量可为 API 密钥和请求头设置模板。这样可在不同环境中使用不同的模型端点和凭据。
自定义 LLM URL 字段支持相同的 {{system__env_<label>}} 模板语法。api_key 字段接受环境变量引用,以便不同环境使用不同 API 密钥。
API 示例
指定环境
环境在对话开始时设置,并在整个对话期间保持不变。未指定环境时,默认为 production。
在控制台中测试时,可在智能体预览的下拉菜单中选择环境:

WebSocket
连接对话 WebSocket 时传入 environment 查询参数:
WebRTC(签名 URL / 令牌)
使用 WebRTC 时,请在请求对话令牌时传入 environment 参数:
电话(Twilio 和 SIP 中继)
电话号码可固定到特定环境和特定智能体分支,便于将测试电话号码路由到智能体的开发分支,而该分支的工具会针对开发 API 执行。

对于呼入电话,环境会按以下顺序解析:
- 如果服务器为每次通话动态提供,则使用对话发起 webhook返回的
environment值 - 存储在电话号码上的环境
- 默认使用
production
branch_id 也遵循相同优先级。随后,通话前 webhook URL 和请求头,以及通话后 webhook URL,会使用所选环境解析 {{system__env_*}} 模板。
将电话号码固定到环境和分支(需要 elevenlabs Python SDK ≥ 2.47.0 或 @elevenlabs/elevenlabs-js ≥ 2.47.0):
对于呼出电话,通过 Twilio 或 SIP 中继呼出端点发起通话时,传入 environment 字段。
React SDK
在 useConversation hook 中或启动会话时传入 environment 选项:
示例:多环境智能体
本示例展示了完整设置:单个智能体可在开发、预发布和生产环境中使用不同的 API 后端与凭据。
命名限制
- 标签:仅限字母数字字符和下划线(例如
base_url、api_key_v2) - 环境名称:必须以小写字母开头,且只能包含小写字母、数字、下划线和连字符,最长 64 个字符(例如
production、staging、dev-us-east) - 每个环境变量都必须有
production值


