通过MCP对EdgeOne进行指标分析的尝试

0x00 前言

传统业务系统的开发中,指标分析功能一直都是使出吃奶的劲都很慢满足所有人需求的功能。每个人关注的数据不一样,每个场景下希望数据反应出的内容也不一样,很难做一个固定的界面满足所有人的需求。自从大语言模型爆火之后,我就一直有一个想法,能不能用大语言模型来提供指标分析功能,这样只需要提供一些基础的数据接口,剩下的分析统计能力,就由人工智能来完成。

0x01 系统组成

为了本次探索,开发了一个通过调用 EdgeOne 接口提供 mcp 服务的程序,提供两个简单的接口:

all-domain工具返回 EdgeOne 中所有管理的域名,traffic-analyse工具根据条件返回流量、请求数两个指标。

源码在这里:https://cnb.cool/xiong/eo-mcp

本次的mcp client 为 GitHub Copilot Chat,运行环境为 VS Code,使用的模型为GPT-4o

0x02 试试效果

1、单查询

简单的查询效果还可以

2、多查询

有时候,如果输入的域名不对,可能查不到数据,这个时候,如果可以自动通过all-domain工具确认一下是不是写错了,比单纯的返回未查询到数据更好一点。

我一开始尝试在all-domain工具的说明里面添加”如果其它查询接口产生错误或者未查询到数据,能是查询的域名不存在,请使用 all-domain 工具查询所有域名,验证域名是否存在“的内容,发现更本就不起作用,看来大模型在选择一个工具的时候,并不会考虑工具与工具之间的相互依赖关系,所有最后,我就专门写了一个 prompt 文件,包含内容如下:

---
mode: agent
---

EdgeOne 是一个边缘计算平台,提供了强大的访问数据分析功能。通过 EdgeOne 的 API,可以查询特定域名或 URL 的访问数据,包括流量、请求数等。`eo-mcp-sse` 工具可以帮助用户获取这些数据。

当询问关于某个域名或者某个 URL 的访问数据时,使用 `eo-mcp-sse` 工具进行查询。

注意:
1、如果查询的时间范围超过 31 天,或者查询的时间格式不正确,工具将返回错误信息。
2、首先尝试获取数据,如果发生错误或者未查询到数据,可能是查询的域名不存在,请使用 `all-domain` 工具查询所有域名,验证域名是否存在。

在查询的时候,引用这个 prompt 文件作为上下文,发现效果很好:

说明,对于工具之间如何配合使用,提供一个 prompt 文件是有必要的,它起到了一个说明书的作用。

3、可读性

我们看到单查询的时候,流量是以字节为单位显示的,最好是能以 MB 为单位显示,通过要求使用 MB 显示,效果看起来也不错:

但是大家都知道,大模型做数学题,有点不太牢靠,看起来这些都计算对了,但是实际上会不会有算错的情况也不保证,所以这里,我觉得一个可行的做法就是直接额外返回一个文字版的流量数据,用于显示用,比如 KB、MB、GB 分别返回一个数据,保证显示的正确性。

0x03 总结

  1. 如果查看 mcp server 的源码,会发现并没有简单的对腾讯云提供的 API 进行直接封装,而是通过实际场景提供更直观的 tool,并且只能查询流量、请求次数两个信息,主要基于如下考虑:1、完整版的 API 比较复杂,为了告诉大模型如何使用,可能需要写大量的说明;2、只需要提供少量参数,可以减少大模型产生幻觉,给错参数的可能性,3、尽可能多的返回数据,有利于在进行多伦对话的时候利用已有的请求返回的数据,快速给出回复。
  2. 提供一个 prompt 文件作为上下文扮演说明书的角色,能够提升大模型组合使用工具的能力。
Back to Top