GenerateSqlFromNL - 根据自然语言生成SQL

更新时间:
复制为 MD 格式

调用该API可根据用户提供的自然语言描述,自动获取相关数据库与业务信息并生成可执行的SQL语句。

接口说明

返回结果中除了生成的 SQL 语句外,还包括生成 SQL 时用到的表、引用的知识点、相似 SQL 等信息,方便您理解和使用。

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

调试

授权信息

下表是API对应的授权信息,可以在RAM权限策略语句的Action元素中使用,用来给RAM用户或RAM角色授予调用此API的权限。具体说明如下:

  • 操作:是指具体的权限点。

  • 访问级别:是指每个操作的访问级别,取值为写入(Write)、读取(Read)或列出(List)。

  • 资源类型:是指操作中支持授权的资源类型。具体说明如下:

    • 对于必选的资源类型,用前面加 * 表示。

    • 对于不支持资源级授权的操作,用全部资源表示。

  • 条件关键字:是指云产品自身定义的条件关键字。

  • 关联操作:是指成功执行操作所需要的其他权限。操作者必须同时具备关联操作的权限,操作才能成功。

操作

访问级别

资源类型

条件关键字

关联操作

dms:GenerateSqlFromNL

none

*全部资源

*

请求语法

POST / HTTP/1.1

请求参数

名称

类型

必填

描述

示例值

DbId

string

数据库 ID。您可调用 ListDatabases 接口获取该参数的值。

调用 API 时,系统将会在该数据库中获取相关信息。

1***

Knowledge

string

知识数据,即额外输入的业务知识。补充的知识可以帮助模型更好地理解、回答问题。

state>0代表成功

Question

string

问题描述。

查询今天的用户访问量

Dialect

string

数据库实例类型。系统默认值为 MySQL,将为您生成标准的 SQL 语句。

MySQL

Level

string

数据处理级别。默认为基础级别的处理。

base

Model

string

选用的模型名称,仅可使用通义千问系列的模型。

qwen-plus

TableNames

string

选用的表名,列表(用逗号分隔),若指定该值,则只会使用选用的表

users,orders

RealLoginUserUid

string

实际调用 API 的用户的阿里云账号 UID

21400447956867****

返回参数

名称

类型

描述

示例值

object

取数

RequestId

string

请求 ID。用于定位日志,排查问题。

0C1CB646-1DE4-4AD0-B4A4-7D47DD52E931

ErrorCode

string

错误码。

UnknownError

ErrorMessage

string

错误信息。

UnknownError

Success

boolean

是否调用成功。

  • true:调用成功。

  • false:调用失败。

true

Data

object

返回的数据信息。

Question

string

输入的问题。

查询今天用户访问量

Tables

array<object>

生成 SQL 时用到的表列表。每个元素代表一个表实体。

object

表实体。每个元素代表一个具体的表,包括但不限于表名、表 ID 等信息。

TableName

string

表名,用于识别数据库中的某张表。

ins_1.db1.table1

KnowledgeReferences

array<object>

引用的知识。

object

知识列表。

Name

string

知识名称。

sample_tbl

Content

string

知识的具体内容。

{'Status': 'OK'}

Level

string

知识等级,包括待补充(to_complete)、待确认(to_review)、待验证(to_verify)和已验证(verified)。

枚举值:

  • to_verify :

    to_verify

  • verified :

    verified

  • to_complete :

    to_complete

  • to_review :

    to_review

verified

Sql

string

生成的 SQL 语句。

SELECT * FROM table WHERE condition;

SimilarSql

array<object>

相似 SQL 列表。

object

SQL 信息。

Question

string

问题描述。

实例xxx的访问量有多少?

Sql

string

相似的 SQL 语句。

SELECT * WHERE ResourceType = 'ACS::ECS::Instance' AND ResourceGroupId != 'rg-xxx'

Thought

string

生成 SQL 的思考过程。

度量(指标): 用户询问了xx指标,根据上下文,需要计算xxx。 维度(筛选条件): 用户问题里提到了xx的条件,结合上下文,核心维度为xxx。 综上,需要使用xxx表,使用xxx列。其中xxx作为projection选择,xxx用于过滤条件,xxx用于分组条件。

Score

string

该 SQL 的可信度。分数越高,可信度越高。取值范围 0~1。

0.52

Thought

string

生成 SQL 的思考过程。

通过分析用户的问题和提供的知识,生成了相应的SQL语句。

示例

正常返回示例

JSON格式

{
  "RequestId": "0C1CB646-1DE4-4AD0-B4A4-7D47DD52E931",
  "ErrorCode": "UnknownError",
  "ErrorMessage": "UnknownError",
  "Success": true,
  "Data": {
    "Question": "查询今天用户访问量",
    "Tables": [
      {
        "TableName": "ins_1.db1.table1"
      }
    ],
    "KnowledgeReferences": [
      {
        "Name": "sample_tbl",
        "Content": "{'Status': 'OK'}",
        "Level": "verified"
      }
    ],
    "Sql": "SELECT * FROM table WHERE condition;",
    "SimilarSql": [
      {
        "Question": "实例xxx的访问量有多少?",
        "Sql": "SELECT * WHERE ResourceType = 'ACS::ECS::Instance' AND ResourceGroupId != 'rg-xxx'",
        "Thought": "度量(指标): 用户询问了xx指标,根据上下文,需要计算xxx。\n维度(筛选条件): 用户问题里提到了xx的条件,结合上下文,核心维度为xxx。\n综上,需要使用xxx表,使用xxx列。其中xxx作为projection选择,xxx用于过滤条件,xxx用于分组条件。",
        "Score": "0.52"
      }
    ],
    "Thought": "通过分析用户的问题和提供的知识,生成了相应的SQL语句。"
  }
}

错误码

访问错误中心查看更多错误码。

变更历史

更多信息,参考变更详情