集成自己的模型
集成自己的模型
将智能体连接到自己的 LLM,或托管自己的服务器。
Custom LLM 可通过外部端点将对话连接到自己的 LLM。 ElevenLabs 还支持原生集成的 LLM
自定义 LLM 可让你使用自己的 OpenAI API 密钥,或运行完全自定义的 LLM 服务器。
概述
默认情况下,我们会为 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(Server-Sent Events)格式返回响应,并使用 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(整数,必填):要转接到的智能体从零开始的编号(根据已配置的转接规则)
函数调用格式:
实现:定义将条件映射到特定智能体 ID 的转接规则。配置当前智能体可转接到哪些智能体。智能体在转接配置中以从零开始的编号引用。
了解更多:智能体转接工具
转接人工客服
用途:当 AI 协助不足时,无缝将对话转交给人工客服。
触发条件:LLM 应在以下情况下调用此工具:
- 复杂问题需要人工判断
- 用户明确请求人工协助
- AI 的能力无法满足特定请求
- 触发升级处理流程
参数:
reason(字符串,选填):转接原因transfer_number(字符串,必填):要转接到的电话号码(必须与已配置号码匹配)client_message(字符串,必填):等待转接时向客户播放的消息agent_message(字符串,必填):发送给接听通话的人工客服的消息
函数调用格式:
实现:配置转接电话号码和条件。为客户和接听通话的人工客服分别定义消息。适用于 Twilio 和 SIP 中继。
了解更多:转接人工客服工具
跳过回合
用途:让智能体暂停并等待用户输入,而不发出语音。
触发条件:LLM 应在以下情况下调用此工具:
- 用户表示需要一点时间(“Give me a second”、“Let me think”)
- 用户请求暂停对话流程
- 智能体检测到用户需要时间处理信息
参数:
reason(字符串,选填):说明为何需要暂停的自由格式原因
函数调用格式:
实现:无需额外配置。该工具仅向智能体发出信号,让其保持静默,直至用户再次说话。
了解更多:跳过回合工具
语音信箱检测
包含系统工具的请求示例
配置系统工具后,自定义 LLM 将收到以标准 OpenAI 格式包含这些工具的请求:
自定义 LLM 必须支持函数调用才能使用系统工具。请确保模型能够以 OpenAI 格式生成 正确的函数调用响应。

