集成自己的模型
将智能体连接到自己的 LLM,或自行托管服务器。
自定义 LLM 可通过外部端点将对话连接到自己的 LLM。 ElevenLabs 也支持原生集成的 LLM
自定义 LLM让你可以使用自己的 OpenAI API 密钥,或运行完全自定义的 LLM 服务器。
自定义 LLM 无法与 Realtime 模型搭配使用。
概述
默认情况下,我们会为 OpenAI 等热门模型使用内部凭据。要使用自定义 LLM 服务器,其请求和响应结构必须符合以下任一 OpenAI 兼容格式:
- Chat Completions API(
/v1/chat/completions) - Responses API(
/v1/responses)
Responses API 是 OpenAI 较新的 API 格式,支持更多功能。这两种 API 格式都完全支持自定义 LLM 集成。
以下指南涵盖两种使用方式:
- 使用自己的 OpenAI 密钥:在平台中使用自己的 OpenAI API 密钥。
- 自定义 LLM 服务器:托管并连接自己的 LLM 服务器实现。
你将了解如何:
- 在 ElevenLabs 中存储 OpenAI API 密钥
- 托管一个复刻 OpenAI Chat Completions 或 Responses端点的服务器
- 让 ElevenLabs 指向自定义端点
- 按需向 LLM 传递额外参数
推理摘要
端点必须将推理内容与最终答案分开返回。ElevenLabs 不会根据最终答案生成推理内容。
要从支持的端点请求推理,请在智能体的 LLM 设置中开启 推理摘要,或通过 API 设置 enable_reasoning_summary。
返回推理内容
请使用与端点匹配的格式:
Chat Completions API
Responses API
在每个响应增量的 reasoning 或 reasoning_content 字段中流式传输推理内容。
对于兼容 Gemini 的端点,ElevenLabs 通过
google.thinking_config.include_thoughts 请求思考内容,并读取标记为
extra_content.google.thought 的内容。
有关存储、传递方式和限制,请参阅推理摘要。
使用自己的 OpenAI 密钥
要集成自定义 OpenAI 密钥,请在 ElevenLabs 控制台中更新智能体设置,使其指向自定义 LLM 服务器,并创建一个包含 OPENAI_API_KEY 的密钥:
自定义 LLM 服务器
要接入自定义 LLM 服务器,请使用 OpenAI 风格设置兼容的服务器端点。你可以实现 Chat Completions API(/v1/chat/completions)或 Responses API(/v1/responses)。
两个端点都必须以 SSE(服务器发送事件)格式返回响应,并使用 Content-Type: text/event-stream。
Chat Completions API
Responses API
Chat Completions API 使用 /v1/chat/completions 端点。
每个块必须采用 data: {json}\n\n 格式,且流必须以 data: [DONE]\n\n 结束。
以下是服务器实现示例:
运行此代码或自己的服务器代码。

为服务器设置公共 URL
要让服务器可访问,请使用 ngrok 等隧道工具创建公共 URL:

配置 ElevenLabs CustomLLM
接下来,在 ElevenLabs 控制台中更新智能体设置,使其指向自定义 LLM 服务器。

将服务器 URL 指向 ngrok 端点,并将“Limit token usage”设为 5000。
现在可以使用自己的 LLM 服务器开始与智能体互动。
针对处理较慢的 LLM 进行优化
如果自定义 LLM 处理时间较长(可能是因为智能体推理或预处理需求),可以在流式响应中加入 缓冲词,改善对话流畅度。该技术可让 LLM 生成完整回复时,语音仍保持自然韵律。
缓冲词
当 LLM 需要更多时间处理完整回复时,请返回一个以 "... "(省略号后加空格)结尾的初始响应。这样,文本转语音系统便能保持自然流畅,对话也更具动态感。
这会形成自然的停顿,并顺畅衔接 LLM 可进一步推理的后续内容。额外的空格至关重要,可避免后续内容直接附加到 "..." 后,从而导致音频失真。
实现方式
以下展示如何修改自定义 LLM 服务器以实现缓冲词:
系统工具集成
自定义 LLM 可触发系统工具,以控制对话流程和状态。在智能体中完成配置后,这些工具会自动包含在聊天补全请求的 tools 参数中。
系统工具的工作方式
- LLM 决策:自定义 LLM 根据对话上下文决定何时调用这些工具
- 工具响应:LLM 以标准 OpenAI 格式返回函数调用
- 后端处理:ElevenLabs 处理工具调用并更新对话状态
如需了解系统工具的更多信息,请参阅指南。
可用系统工具
结束通话
用途:在满足适当条件时自动结束对话。
触发条件:LLM 应在以下情况调用此工具:
- 主要任务已完成,且用户满意
- 双方达成一致,对话自然结束
- 用户明确表示想结束对话
参数:
reason(字符串,必填):结束通话的原因message(字符串,选填):结束通话前发送给用户的告别消息
函数调用格式:
实现方式:在智能体设置中配置为系统工具。LLM 将收到有关何时调用此函数的详细说明。
了解更多:结束通话工具
语言检测
用途:在对话中自动切换至检测到的用户语言。
触发条件:LLM 应在以下情况调用此工具:
- 用户使用的语言不同于当前对话语言
- 用户明确请求切换语言
- 对话需要支持多种语言
参数:
reason(字符串,必填):切换语言的原因language(字符串,必填):要切换至的语言代码(必须在支持的语言列表中)
函数调用格式:
实现方式:在智能体设置中配置支持的语言并添加语言检测系统工具。智能体会自动切换语音和回复,以匹配检测到的语言。
了解更多:语言检测工具
智能体转接
用途:根据用户需求,在专业 AI 智能体之间转接对话。
触发条件:LLM 应在以下情况调用此工具:
- 用户请求需要专业知识或不同的智能体能力
- 当前智能体无法妥善处理该问题
- 对话流程表明需要其他类型的智能体
参数:
reason(字符串,选填):转接智能体的原因agent_number(整数,必填):要转接至的智能体从 0 开始的编号(基于已配置的转接规则)
函数调用格式:
实现方式:定义将条件映射到特定智能体 ID 的转接规则。配置当前智能体可转接到哪些智能体。智能体在转接配置中以从 0 开始的编号引用。
了解更多:智能体转接工具
转接人工客服
用途:当 AI 协助不足时,无缝将对话转交给人工客服。
触发条件:LLM 应在以下情况调用此工具:
- 问题复杂,需要人工判断
- 用户明确请求人工协助
- AI 的能力无法满足具体请求
- 触发升级处理流程
参数:
reason(字符串,选填):转接原因transfer_number(字符串,必填):要转接至的电话号码(必须与已配置的号码匹配)client_message(字符串,必填):等待转接期间向客户播报的消息agent_message(字符串,必填):发送给接听通话的人工客服的消息
函数调用格式:
实现方式:配置转接电话号码和条件,并分别定义面向客户和接听通话的人工客服的消息。同时支持 Twilio 和 SIP 中继。
了解更多:转接人工客服工具
跳过回合
用途:允许智能体暂停并等待用户输入,不发出语音。
触发条件:LLM 应在以下情况调用此工具:
- 用户表示需要一点时间(“等我一下”“让我想想”)
- 用户请求暂停对话
- 智能体检测到用户需要时间处理信息
参数:
reason(字符串,选填):说明为何需要暂停的自由文本原因
函数调用格式:
实现方式:无需额外配置。该工具仅会让智能体保持静默,直到用户再次说话。
了解更多:跳过回合工具
语音信箱检测
使用系统工具的请求示例
配置系统工具后,自定义 LLM 将收到包含工具的请求,格式遵循标准 OpenAI 格式:
自定义 LLM 必须支持函数调用才能使用系统工具。请确保模型能够以 OpenAI 格式生成 正确的函数调用响应。

