简介
Hi,OceanBase Agent 是一款个人(非官方)基于学习目的开发的面向 OceanBase 的 AI 产品,主要目的是借助大模型的能力,简化日常运维场景的繁琐操作,令 DBA 同学无需写一行代码仅靠编写 SQL 就能构建自己的 Agent。
具备以下的能力:
- 面向数据库设计的 Chatbot,相比市面上通用型 Chatbot 更适合数据库;
- 内置 70+ 使用 SQL 作为 Tool,可以直接调用;
- 支持自定义增加 SQL 作为 Tool;
- 支持编写 Playbook 以调用多个 Tool 完成复杂的运维任务;
- 支持 MCP 协议以扩展外部 Tool。
项目地址:https://github.com/davidzhangbj/agent
是基于上游项目(专注PG): https://github.com/xataio/agent 修改而来。
概念介绍
Tools:配置常用 SQL 作为工具
内置了 72 个常用工具 SQL,可以添加自己的 SQL,使用的时候点击运行按钮可一键执行并结合大模型分析返回结果。
Playbooks:Agent 任务流定义
日常任务通常不是查询单一 SQL 可以解决的,Playbook 允许你以自然语言的方式描述整个任务过程,大模型可根据工作流描述调用相应的 Tool 进行分析,并决定任务走向。
内置的 Playbook 的示例,在此示例中我使用了较为严谨的方式,将每个步骤需要调用的工具名称均一一写明,以提高成功率。
实际上显式写出工具名称并非必要,大模型会根据任务需要和工具描述选择合适的工具,但由于大模型自身能力的限制可能会出现选错的情况,因此是否详细写明可基于复杂度和模型能力自行评估。
Chat:对话
类似常见的 SQL Client,对话的范围可以选择某个 Database,因此可以很方便的支持添加多个数据库并互相隔离。
支持在 Chat 中通过自然语言运行 tool, 和在 Tools 界面点击运行的效果是相同的,比如输入“运行 tool getClusterCharsets”。
MCP:通过 MCP 添加额外的工具
支持添加 MCP Server(仅支持 SSE),以扩展更多的 Tool。MCP Tool 和 SQL Tool 是平级的,因此大模型在执行任务时将同等对待,选择合适的 Tool 执行。
这个工具解决了什么问题
- 可同时管理多个数据库,相比常规 Chatbot 更贴合数据库使用习惯
- 那我自己写一个 web 项目
将这些 SQL 存储起来 ,调用后结果展示在页面不是一样可以达到效果吗?在大部分情况下,每个 SQL 的返回字段名称和数量都是不同的 ,web 页面的表格一般是固定的,无法很好地展示。大模型擅长处理文本,可以帮你总结
,还可以动态展示
- 很多时候我们不仅仅是要结果,还希望有初步的分析
,SQL执行完之后,将你的问题告诉大模型
,大模型就可以直接给你回答啦
那么这个工具在哪里可以得到呢
直接执行下面的 docker 命令就可以了
docker run -d \
--name ob-agent \
--env CUSTOM_BASE_URL='' \
--env CUSTOM_API_KEY='' \
--env CUSTOM_CHAT_MODEL_NAME='' \
-p 8000:8000 \
davidzhangbj/oceanbaseagent:v0.2
其中的 CUSTOM_BASE_URL、CUSTOM_API_KEY、CUSTOM_CHAT_MODEL_NAME 必须配置为自己用的大模型 API 地址、KEY 和模型名称。
对于无法连接 docker 镜像的小伙伴还准备了设置 docker 代理的方法,详见国内加速镜像设置。
启动后的访问方式:http://ip:8000,可以在 docker 启动命令中调整默认端口,如-p 9000:8000
注意:启动之后要先配置 OceanBase 的连接哦;最好以系统租户的 root 用户登录,因为很多 SQL 只有在这个租户下才可以执行
对源码感兴趣的可以访问 https://github.com/davidzhangbj/agent
,oceanbase 分支