通过 MCP(模型上下文协议),你可以将知识库问答(RAG)、信息搜索、数据分析等外部服务封装为标准化工具,让 LLM 在对话中能智能地调用它们,以获取所需的数据或执行操作,并基于返回的结果生成更精准的回复。
- 更多 MCP 介绍,可以参见 MCP 介绍。
- MCP 和 Function Calling 的区别,可以参见 MCP、联网问答 Agent 和 FC 的区别。
在高实时性的语音对话中,引入 MCP 可实现能力扩展和逻辑解耦,让你的智能体能够处理更复杂、更专业的任务。
| 场景 | 核心价值 |
|---|---|
| 接入知识库(RAG) | 让智能体能够基于你内部的、非公开的文档或数据库进行精准问答。 |
| 联网搜索并汇总多源实时信息 | 让智能体能够同时从多个数据源(如天气、新闻、股票)获取信息并进行智能汇总。 |
| 执行复杂业务流程 | 让智能体能够调用外部 API,完成如预订、下单、查询账户等实际业务操作。 |
说明
doubao-seed-1-6。doubao-seed-1-6-thinking 强制开启思考模式,不可关闭,在实时对话式 AI 场景可能造成较高时延,不建议使用。火山引擎提供了一些常用的 MCP 服务,你可以直接使用。具体请参见 MCP MarketPlace。
MCP 的实现依赖于一个外部的 MCP Server,该服务负责管理和提供所有的工具 Agent。你需要:
在将 MCP Server 地址配置到 StartVoiceChat 接口之前,建议先验证 MCP Server 是否可以被公网正常访问。
若配置了 Authorization 请求头鉴权,请使用以下命令进行测试:
curl -i -H "Authorization: <Your-Auth-Token>" https://your-mcp-server.com/endpoint
-H "Authorization: <Your-Auth-Token>":请将 <Your-Auth-Token> 替换为你的有效凭证。https://your-mcp-server.com/endpoint:请替换为目标 MCP Server 的实际地址。若未配置 Authorization 请求头鉴权,请使用以下命令进行测试:
curl -i https://your-mcp-server.com/endpoint
调用 StartVoiceChat 接口时,进行以下配置:
配置 LLMConfig.MCP:
| 参数 | 说明 |
|---|---|
| URL | 必填。填入已部署的 MCP Server 的访问地址。 |
| Name | 必填。为本次 MCP 工具调用链路指定一个名称,例如 knowledge_search。 |
| InterestedTools | 可选。一个字符串数组,用于指定本次对话只关注 MCP Server 上的哪些工具。如果留空,则默认关注所有工具。 |
| ComfortWords | 可选。设置一句安抚语。当智能体决定调用 MCP 工具时,会先播报此内容。 |
配置 LLMConfig.ExtraHeader:
如果你的 MCP Server 配置了自定义请求头(如 Authorization),则需将这些头部信息配置在 LLMConfig.ExtraHeader 字段中。系统会将这些请求头随请求一同转发至你的 MCP Server。
假设你已经部署了一个需要 Authorization 请求头进行鉴权的 MCP Server,并注册了一个名为 search_faq_database 的工具。StartVoiceChat 中的 LLMConfig 配置如下:
"LLMConfig": { // ... 其他LLM配置 ... "MCP": [ { "URL": "https://your-mcp-server.com/test/123", "Name": "internal_knowledge_search", "InterestedTools": [ "search_faq_database" ], "ComfortWords": "正在为你查询知识库,请稍等。" } ], "ExtraHeader": { "Authorization": "f33eb2dc-****-c5cd339b35fe" } // ... 其他LLM配置 ... }
本示例将指导你如何通过 MCP,将火山引擎融合信息搜索能力(一个独立的 Web 搜索服务)接入到实时对话流中。
开通融合信息搜索服务。
生成融合信息搜索的 MCP Server 地址。
融合信息搜索。调用 StartVoiceChat 接口时,配置 LLMConfig.MCP 字段,填入上一步获取的信息。
{ "AppId": "********************", "RoomId": "********", "TaskId": "**************", "AgentConfig": {}, "Config": { // ... ASRConfig, TTSConfig ... "LLMConfig": { // ... 其他LLM配置 ... "MCP": [ { "URL": "填入获取的 MCP Server 地址", "Name": "WebSearch", "ComfortWords": "正在为你搜索,请稍等。", "InterestedTools": ["web_search"] } ], "UserPrompts": [ { "Role": "system", "Content": "可以通过调用 web_search 方法搜索互联网上的热点信息" } ] } } }
创建知识库。具体操作,请参见创建知识库。
生成知识库的 MCP Server 地址。
知识库 MCP。Project Name 和 Region(固定为 cn-north-1)。调用 StartVoiceChat 接口时,配置 LLMConfig.MCP 字段,填入上一步获取的信息。
注意:LLM 对知识库内容没有先验知识。为准确触发知识库查询,你需要在
UserPrompts中详细定义知识库相关内容和参数(如以下示例所示)。
{ "AppId": "********************", "RoomId": "********", "TaskId": "**************", "AgentConfig": {}, "Config": { // ... ASRConfig, TTSConfig ... "LLMConfig": { "UserPrompts": [ { "Role" : "system", "Content" : "知识库中包含视频编码的相关知识(如 H.264 编码标准和技术),可以通过 `search_knowledge` 方法查询相关内容。`search_knowledge` 方法中,参数 `query` 用于存放查询内容,`collection_name`(知识库名称)为 `voicechat_knowledge`。" } ], //定义知识库相关内容和参数 "MCP": [ { "URL" :"填入获取的 MCP Server 地址", "Name" : "knowledge", "ComfortWords" : "正在处理中", "InterestedTools": ["search_knowledge"] } ], } } }