首页/新闻资讯/正文详情

Elastic AI agent builder 介绍(二):用 Kibana 与 MCP 打通 TaoToken 统一 API 通道

发布时间:2026/9/25 13:19:19 来源:云帆数科 栏目:资讯中心
Elastic AI agent builder 介绍(二):用 Kibana 与 MCP 打通 TaoToken 统一 API 通道
1. 为什么要在 Kibana 里给 Agent 接一条统一 API 通道Elastic AI agent builder 是 Kibana 里用来搭建对话式 Agent 的一套能力它把索引检索、ES|QL 查询、工具调用和对话状态管理打包成 API让你不用自己写编排逻辑就能让 Agent 直接查数据。它适合两类人一类是在做搜索与可观测场景、想让运维和业务同学用自然语言问数据的团队另一类是想把多模型能力接进 Kibana、又不想在每个 Agent 里重复填 Key 的开发者。问题出在模型接入这一层。Agent builder 本身负责“怎么调工具、怎么维护对话”但底层大模型走哪个通道、用哪家的 Key默认配置往往只指向单一来源。一旦你想在同一个 Kibana 里让不同 Agent 用不同模型或者想把模型调用统一计费、统一限流就会变成每个 Agent 各配一份凭证改一次要动好几处。我这次的做法是Kibana 侧继续用 agent builder 的原生 API 和 MCP 端点模型侧统一走 TaoToken 的 API 通道用一把 Key 覆盖多个模型。这样 Kibana 只管 Agent 和工具模型路由交给统一通道。下面把配置片段、MCP 接入骨架和验证动作都写出来你可以直接照着改。2. TaoToken 前置拿到统一 Key 和接入地址TaoToken 在这里的角色是“模型调用的统一入口”。你不需要在 Kibana 里为每个模型单独配一套凭证而是拿一把 Key通过同一个 API 地址请求不同模型。对 agent builder 这种要频繁切换模型的场景来说少维护几份配置就是少几个出错点。第一步是准备凭证。打开控制台创建 API Key地址是 https://taotoken.net/console 创建完把 Key 复制出来后面配置里会用到。如果你还没决定用哪个模型可以先在模型对话页面试一下地址是 https://taotoken.net/models 确认模型能正常返回再往 Kibana 里接。第二步是确认接入地址。TaoToken 的 API 根地址是 https://taotoken.net/api 注意这个地址不带任何查询参数配置时直接用它作为 base URL。文档页在 https://taotoken.net/doc 里面有各语言 SDK 的调用示例遇到参数不确定的时候对着看。注意Key 只放在服务端环境变量或 Kibana 的密钥存储里不要写进前端代码或提交到仓库。Kibana 的 API Key 和 TaoToken 的 Key 是两回事前者用于访问 Kibana 接口后者用于访问模型通道别混用。如果你后面要做长期编码类 Agent或者想让 Agent 持续跑任务可以了解下 Coding Plan地址是 https://taotoken.net/coding-plan 它更适合高频、长会话的调用模式。普通的数据问答 Agent 用按量 Key 就够了。3. 可复制配置Kibana 环境变量与 MCP 接入骨架先把 Kibana 侧的基础环境变量配好。下面这段可以直接放进你的 shell 配置或部署脚本里注意把 KIBANA_URL 和 API_KEY 换成你自己的export KIBANA_URLlocalhost:5601 export KIBANA_API_KEY你的Kibana API Key export TAOTOKEN_API_KEY你的TaoToken Key export TAOTOKEN_BASE_URLhttps://taotoken.net/apiKibana 的 API Key 在 Stack Management 的 API Keys 页面生成权限至少要有 agent_builder 相关接口的访问权。TaoToken 的 Key 就是上一步在控制台创建的那把。接下来是 MCP 接入骨架。agent builder 暴露了一个 MCP 端点路径是/api/agent_builder/mcp用 JSON-RPC 2.0 通信。先验证端点通不通列出当前可用的工具curl -k -X POST http://${KIBANA_URL}/api/agent_builder/mcp \ -H Authorization: ApiKey ${KIBANA_API_KEY} \ -H Content-Type: application/json \ -H Accept: application/json \ -H kbn-xsrf: true \ -d { jsonrpc: 2.0, id: 1, method: tools/list }返回里会列出平台自带工具和你自己创建的工具。这一步只验证 Kibana 侧 MCP 端点还没到模型调用。真正把模型通道接进来是在 Agent 的配置里指定模型来源。下面是一个创建 Agent 的请求重点看 configuration 部分怎么把工具和模型串起来curl -k -X POST http://${KIBANA_URL}/api/agent_builder/agents \ -H Authorization: ApiKey ${KIBANA_API_KEY} \ -H Content-Type: application/json \ -H kbn-xsrf: true \ -d { id: taotoken_avg_age, name: calculate the average age, description: 从 people 索引计算平均年龄, labels: [analytics], avatar_color: #BFDBFF, avatar_symbol: TA, configuration: { instructions: 你是一个帮助计算 people 索引平均年龄的 Agent, tools: [ { tool_ids: [ platform.core.search, platform.core.list_indices, platform.core.get_index_mapping, platform.core.get_document_by_id ] } ] } }创建完 Agent 后模型通道的指向通过环境变量或 Kibana 的模型配置项注入。如果你的部署里模型配置是集中管理的把 base URL 指向https://taotoken.net/apiKey 用TAOTOKEN_API_KEY这样所有 Agent 共用一条通道。改模型时只动这一处不用逐个 Agent 改。4. 验证请求确认 Agent 调用走通统一通道配置完要验证两件事Agent 能不能正常对话以及模型调用是不是真的走了统一通道。先发一个对话请求不指定 agent_id 时走默认 Agentcurl -k -X POST http://${KIBANA_URL}/api/agent_builder/converse \ -H Authorization: ApiKey ${KIBANA_API_KEY} \ -H Content-Type: application/json \ -H kbn-xsrf: true \ -d { input: people 索引里的平均年龄是多少 }返回里会带一个 conversation_id说明对话是有状态的。接着用这个 id 继续追问验证上下文是否延续curl -k -X POST http://${KIBANA_URL}/api/agent_builder/converse \ -H Authorization: ApiKey ${KIBANA_API_KEY} \ -H Content-Type: application/json \ -H kbn-xsrf: true \ -d { input: 最大年龄和最小年龄分别是多少, conversation_id: 上一步返回的conversation_id }第二次提问不用再提索引名Agent 会沿用上一轮的上下文。如果这一步能正常返回说明 Agent 编排和对话状态都没问题。再验证模型通道。最直接的办法是看 TaoToken 控制台的调用记录地址是 https://taotoken.net/console 每次 Agent 对话都会产生一条模型调用记录。如果记录里能看到对应的请求说明模型确实走了统一通道而不是绕过了配置。另一个办法是临时把 TAOTOKEN_API_KEY 改成一个错误值再发一次对话请求如果报错信息指向模型认证失败就反向证明了调用链路经过 TaoToken。还可以直接跑一个工具执行请求确认工具层也通curl -k -X POST http://${KIBANA_URL}/api/agent_builder/tools/_execute \ -H Authorization: ApiKey ${KIBANA_API_KEY} \ -H Content-Type: application/json \ -H kbn-xsrf: true \ -d { tool_id: platform.core.list_indices, tool_params: {} }这个请求不涉及模型只验证 Kibana 工具执行是否正常。工具通、对话通、控制台有记录三样齐了才算走通。5. 本篇常见错排查报 401 或 403先分清是 Kibana 的 Key 还是 TaoToken 的 Key 出问题。Kibana 接口返回 401检查KIBANA_API_KEY是否过期、权限是否包含 agent_builder如果对话能建立但模型返回认证错误检查TAOTOKEN_API_KEY是否正确、有没有多余空格。MCP 端点返回 400多半是请求头缺了kbn-xsrf: true或者Content-Type没设成application/json。MCP 用 JSON-RPC 2.0jsonrpc字段和id字段都不能少。对话没有上下文检查第二次请求有没有带上第一次返回的conversation_id。不带的话每次都是新对话Agent 不会记住之前的索引和问题。模型调用没出现在控制台确认 base URL 是不是写成了带路径的形式。TaoToken 的 API 根地址是https://taotoken.net/api不要自己拼多余的路径。另外确认 Agent 的模型配置确实读到了环境变量有些部署方式下环境变量不会自动透传给 Kibana 进程。工具列表为空tools/list返回空通常是 Kibana API Key 权限不够或者 agent builder 功能没在当前版本启用。先确认 Kibana 版本支持 agent builder再检查 Key 的权限范围。改了 Key 但没生效Kibana 有些配置是启动时读取的改完环境变量要重启对应服务。如果是在容器里跑确认新变量注入到了容器内而不是只改在宿主机。6. 后续怎么接按场景选入口如果你现在卡在接入或排障阶段建议先把 API Keys 和接入文档过一遍创建和管理 Key 在 https://taotoken.net/api-keys 接口参数和示例在 https://taotoken.net/doc 这两个页面能解决大部分配置问题。如果你还在选模型、想先确认哪个模型适合你的数据问答场景直接去模型对话页面试https://taotoken.net/models 用真实问题测一轮比看参数表直观。如果你要做的是长期运行的编码类 Agent或者需要 Agent 持续处理任务、会话很长那按量 Key 可能不是最合适的可以看下 Coding Planhttps://taotoken.net/coding-plan 它的调用模式更贴合高频长会话。Kibana 侧的 agent builder API 和 MCP 端点保持原生用法不变你只需要把模型通道统一到一处。这样以后换模型、加模型、调限额都只动一个地方Agent 和工具配置不用跟着改。

相关推荐

P2混动能量管理:逻辑门限控制与Simulink建模全解析
P2混动能量管理:逻辑门限控制与Simulink建模全解析

每个做混动能量管理的人,几乎都是从逻辑门限控制起步的,我也不例外。P2构型更是这套思路最能发挥优势的舞台:发动机和电机中间夹着一个离合器,纯电、直驱、联合驱动、行车充电在物理结构上分得明明白白,控制算法只需要… · 2026/9/25 13:19:19

STM32开发踩坑实录:六个让调试器崩溃的诡异问题与排查方法
STM32开发踩坑实录:六个让调试器崩溃的诡异问题与排查方法

那些让调试器崩溃的夜晚:STM32开发中真实踩过的六个坑先交代个背景。我接触STM32快十年了,从F1一路用到H7,从标准库折腾到HAL库,再到后来嫌弃HAL太啰嗦直接切LL库。这期间踩过的坑,攒起来比开发文档还厚。很多坑在事后… · 2026/9/25 13:19:13

Agent Skill 完全指南:从 SKILL.md 创建到渐进式加载全流程
Agent Skill 完全指南:从 SKILL.md 创建到渐进式加载全流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 13:19:13

重磅!DeepSeek-V3.2-Exp 发布百万输出仅3元|附完整论文中文翻译与 TaoToken 配置骨架
重磅!DeepSeek-V3.2-Exp 发布百万输出仅3元|附完整论文中文翻译与 TaoToken 配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 13:56:36

2026腾讯云服务器一年多少钱?30台CVM配置价格与选型指南
2026腾讯云服务器一年多少钱?30台CVM配置价格与选型指南

1. 为什么“一年多少钱”这个问题,从来都不是一句话能答完的每次有人问我“腾讯云服务器一年到底多少钱”,我都不会直接甩一个数字过去。不是我不想说,而是这个问题本身就问得不够精确——就像你问“买一辆车多少钱”,销售没法回答… · 2026/9/25 13:56:29

C++模板编译期计算:从递归实例化到constexpr的现代实践
C++模板编译期计算:从递归实例化到constexpr的现代实践

模板编译期计算这个话题,搁在C社区里基本就是模板元编程的代名词。我最早接触它是在读Loki库和Boost.MPL源码的时候,第一感觉是这玩意儿不像代码,更像在给编译器出谜题——你写一套规则,编译器在编译阶段替你跑完所有“计算”&… · 2026/9/25 13:56:23

Python小屋编程题91-100复盘:语法进阶与高频陷阱解析
Python小屋编程题91-100复盘:语法进阶与高频陷阱解析

刷题刷到第90多道是什么感觉?微信上有个读者跟我抱怨,Python小屋的题他每道都能写出来,可一看参考解答,总觉得自己的代码又臭又长,像在拼积木,人家写的却像在盖房子。这问题太典型了。Python小屋剧本里的编… · 2026/9/25 13:56:23

Server 2019 安装 Intel 无线网卡驱动失败?WLAN 服务与 INF 修改排障全攻略
Server 2019 安装 Intel 无线网卡驱动失败?WLAN 服务与 INF 修改排障全攻略

这活儿其实挺有意思的。一台要当工作站的 Windows Server 2019,塞了一块 Intel Wireless-N 7265 无线网卡,结果系统死活不认。设备管理器里永远是一坨黄色感叹号,Intel 官方驱动包双击就弹"此系统不支持",我一度以为是卡… · 2026/9/25 13:56:17

C# API限流计数一次扣2?从请求重复与中间件顺序定位修复
C# API限流计数一次扣2?从请求重复与中间件顺序定位修复

C# API项目里出现X-Rate-Limit-Remaining一次请求直接减2,这个问题我最近一个月里被问到了好几次。AspNetCoreRateLimit、.NET内置的RateLimiter,甚至自己写的简单计数中间件,都可能出现同一个表象:前端明明只点击了一次&#xff… · 2026/9/25 13:56:17

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码