工具交互

在用户进行工具交互前,需要先执行完成前置操作,之后可以使用问答的方式对GaussMaster服务进行提问,后台接口为/v1/api/app/intelligent-interaction。此接口参数“mode”的值必须为“tool_interaction”,即当前模式为工具交互,API详情请参考API: /v1/api/app/intelligent-interaction。工具交互默认支持多轮对话,对话记录长度为1轮。用户可以通过参数"history_len"指定对话记录的长度,可支持的对话记录长度为[1-3],即大语言模型最多可以记住3轮对话历史。

工具交互的流程图如下图1所示:

图 1 工具交互流程图

工具交互约束

  1. 用户可以使用华为云提供的pangu-38b开源模型工具,识别准确率为90%。也可以指定其他开源模型,通过接口的形式进行调用,使用其他开源模型做工具交互时,识别准确率无法保证。
  2. 智能运维中工具交互支持参数追问,参数不全时可基于历史内容进行补全。
  3. DBMind/openGauss组件不可用/升级等场景下,GaussMaster服务会受到影响。
  4. GaussMaster智能运维不提供前台页面,且目前只支持中文问答。

当前内部已支持的DBmind工具(API)共22个(其中告警查询需要用到DBMind的两个API),如下表:

表 1 API列表

ID

API接口

参数

关键信息

对话示例

1

/v1/api/status/data-directory

- instance:str类型,必要参数,需要查询的数据库的数据节点的ip和port

数据库实例,数据库数据目录状态。

查询10.90.56.xxx:xxx的数据目录状态。

2

/v1/api/app/workload-collection?data_source=dbe_perf.statement_history

- start_time:str类型,必要参数,通过SQL语句的开始时间对SQL语句进行筛选,格式为%Y-%m-%d %H:%M:%S

- end_time:str类型,必要参数,通过SQL语句的结束时间对SQL语句进行筛选,格式为%Y-%m-%d %H:%M:%S

- database:str类型,非必要参数,通过SQL语句运行的数据库名对SQL语句进行筛选,未指定默认为None

- schema: str类型,非必要参数,通过SQL语句运行的数据库模式对SQL语句进行筛选,未指定默认为None

开始时间、结束时间、数据库名(非必须)、 schema(非必须)。

查询test_db数据库中上午10点到11点的sql列表。

3

/v1/api/app/workload-collection?data_source=pg_stat_activity

- database:str类型,非必要参数,通过SQL语句运行的数据库名对SQL语句进行筛选,未指定默认为None

- schema: str类型,非必要参数,通过SQL语句运行的数据库模式对SQL语句进行筛选,未指定默认为None

数据库名,正在执行的SQL。

查询test_db数据库中当前正在执行的SQL。

4

/v1/api/summary/sql/top

None

执行频繁的SQL。

查询top SQL。

5

/v1/api/summary/sql/locking

None

锁等待、阻塞、SQL。

查询当前被阻塞的SQL。

6

/v1/api/summary/alarms和/v1/api/summary/cluster-diagnosis

- start_time:str类型,必要参数,用来筛选告警的时间范围的开始时间,格式为%Y-%m-%d %H:%M:%S

- end_time:str类型,必要参数,用来筛选告警的时间范围的结束时间,格式为%Y-%m-%d %H:%M:%S

开始时间、结束时间、查询告警。

查询今天10点到12点的告警。

7

/v1/api/agents

None

查询纳管集群信息。

查询当前纳管的所有集群信息。

8

/v1/api/status/instances

None

数据库实例状态。

查询当前数据库实例状态。

9

/v1/api/summary/database-list

None

查询数据库列表。

查询当前实例下所有的数据库列表。

10

/v1/api/summary/knob-recommendation/snapshots

None

指标快照。

查询当前指标快照。

11

/v1/api/summary/knob-recommendation/details

None

参数推荐详情。

查询参数推荐详情。

12

/v1/api/summary/knob-recommendation/warnings

None

不合理或告警的指标配置。

查询当前不合理的指标配置。

13

/v1/api/status/overview

None

数据库概览信息。

查询数据库概览。

14

/v1/api/summary/metrics/pg_settings_setting

- name: str类型,必要参数,需要查询的GUC参数的名称

GUC参数名。

查询GUC参数wdr_snapshot_retention_days的值。

15

/v1/api/summary/metrics/{name}

- name: str类型,必要参数,需要查询的GUC参数的名称

指标名、开始时间、结束时间。

查询指标os_mem_usage在今天上午8点到9点的数据。

16

/v1/api/app/slow-sql-rca

说明:

为了提高工具交互的可用性,简化了原始DBMind的慢SQL诊断接口的入参,与锁事件和等待事件相关的根因,盘溢出根因暂不支持。

- query: str类型,必要参数,需要进行SQL根因分析的查询语句SQL

- db_name: str类型,必要参数,需要进行SQL根因分析的查询语句SQL所在的数据库名

sql语句、数据库名、慢SQL根因分析。

数据库test_db中有一条慢SQL:select * from t1 where id = 10000;请帮我进行根因分析。

17

/v1/api/app/cluster-diagnosis

- start_time:str类型,必要参数,进行集群诊断的时间点,格式为%Y-%m-%d %H:%M:%S

集群诊断、时间、实例ip地址

请帮忙对今天12点集群10.90.56.xxx的状态进行诊断。

18

/v1/api/app/metric-diagnosis-detail

- metric_name:str类型,必要参数,指标名

- alarm_cause:str类型,必要参数,告警原因

- start_time:str类型,必要参数,开始时间,格式为%Y-%m-%d %H:%M:%S

- end_time:str类型,必要参数,结束时间,格式为%Y-%m-%d %H:%M:%S

- metric_filter:str类型,非必要参数,指标过滤条件,要求格式为:key1=value1,key2=value2

指标诊断、指标名、告警原因、开始时间、结束时间、指标过滤条件(非必需)。

请帮忙诊断指标xlog_margin在上午8点到10点,发生告警high_xlog_count的原因。

19

/v1/api/app/memory-check

- latest_hours:int类型,非必要参数,对内存进行趋势预测的预测时长,默认值为4小时

内存情况,诊断时长。

请对最近1小时的内存情况进行分析。

20

/v1/api/app/index-recommendation

- sql:str类型,必要参数,需要进行索引推荐的查询语句SQL

- db_name:str类型,必要参数,需要进行索引推荐的查询语句SQL所在的数据库名

sql语句,数据库名。

请对test_db数据库中sql语句select * from t1 where id = 1000;进行索引推荐。

21

/v1/api/app/risk-analysis/{metric}

- metric:str类型,必要参数,用来指定需要被预测的指标名

- warning_hours:int类型,必要参数,需要趋势预测的未来的长度,单位:小时

风险分析或指标预测、指标名、预测时长。

对指标os_mem_usage未来2小时的状态进行预测。

工具交互参考示例

工具交互调用API详情如下:

curl -X 'POST' 'https://x.x.x.x:x/v1/api/app/intelligent-interaction' -H 'accept: application/json' -H 'Content-Type: application/json' -d '{
"query":"数据库test_db中有条sql语句select* from t1 where id = 10000;请帮我进行一下索引推荐",
     "mode":"tool_interaction",
     "user_id":"user123",
     "session_id":"session123",
     "history_len ":1
}' --cacert /path/xxx.crt --key /path/xxx.key --cert /path/xxx.crt --pass "***"

工具交互的结果以流式返回,结果中包含多行,每行以“data:”开头,以“\n\n”结尾:

data:{"data":[{"content":"工具匹配中...","type":"progress"}],"success":true}\n\n
data:{"data":[{"content":"提取参数中...","type":"progress"}],"success":true}\n\n
data:{"data":[{"content":"工具调用中...","type":"progress"}],"success":true}\n\n
data:{"data":[{"color":"black","content":"推荐的索引如下表所示:","type":"str"},{"content":{"headers":["索引描述","预计占用","预计提升"],"rows":[["CREATEINDEX idx_t1_id ON public.t1(id);","2.49MB","99.91%"]]},"type":"table"}],"success":true}\n\n
data:{"data":[{"content":"DONE","type":"progress"}],"success":true}\n\n

说明: 在工具交互的过程中,会在日志中记录各阶段的耗时,包括如下4个阶段:

  1. 推理工具。
  2. 推理参数。
  3. 调用工具。
  4. 调用大语言模型。 日志级别为INFO,用户可以根据需要查看各阶段的耗时。
意见反馈
编组 3备份
    openGauss 2025-06-29 22:42:49
    取消