Skip to content

GPT TEXT TO SQL 接口文档

作用:将自然语言转化为可执行的SQL语句, 集成GPT能力, 可多轮对话

接口信息:

初始化上下文

PATH:/df/rest/gpt/start

METHOD: POST

Header 请求参数

json
Authorization: Bearer M2M5YzY2TE0ZmEwMDNZjY1MDRkMGNkNWIuYTUxYThkZjJkGQ3NGZlZmJlZmIMGM2YTA3MDhlNg=

Body 请求参数

json
{
  "language": "chinese",
  "model": {
    "type": "mysql",
    "version": "string",
    "tables": [
      {
        "tableDisplayName": "string",
        "tableName": "string",
        "columns": [
          {
            "columnDisplayName": null,
            "columnName": null,
            "dataType": null,
            "aggregation": null
          }
        ]
      }
    ],
    "relations": [
      {
        "conditions": [
          {
            "dstColName": null,
            "srcColName": null
          }
        ],
        "dimensionTable": "string",
        "factTable": "string",
        "joinType": "LEFT JOIN"
      }
    ]
  }
}

请求参数

名称位置类型必选说明
Authorizationheaderstringbearer token
bodybodyobjectnone
» languagebodystring语言环境
» modelbodyobjectnone
»» typebodystring数据库类型
»» versionbodystring数据库版本
»» tablesbody[object]表结构列表
»»» tableDisplayNamebodystring表显示名
»»» tableNamebodystring表原始名
»»» columnsbody[object]表列列表
»»»» columnDisplayNamebodystring列显示名
»»»» columnNamebodystring列原始名
»»»» dataTypebodystring列数据类型
»»»» aggregationbodystring列聚合方式
»» relationsbody[object]表关联关系列表
»»» conditionsbody[object]关联条件
»»»» dstColNamebodystringdimension 表关联列原始名
»»»» srcColNamebodystringfact 表关联列原始名
»»» dimensionTablebodystringdimension 表原始名
»»» factTablebodystringfact 表原始名
»»» joinTypebodystring关联类型

枚举值

language:语言环境

含义
chinese中文
english英文

model.type:数据库类型

含义
mysqlmysql数据库
clickhouseclickhouse数据库
impalaimpala数据库

dataType:列数据类型

含义
boolean布尔类型
int整型
bigint长整型
double浮点型
string字符串
timestamp时间戳
date日期类型
time时间类型

aggregation:列聚合方式

含义
SUM求和
AVERAGE平均值
MIN最小值
MAX最大值
COUNT数量
COUNT_DISTINCT去重数量
VARIANCE方差
STD_DEVIATION标准差
NONE

joinType:表关联方式

含义
LEFT JOIN左关联
RIGHT JOIN右关联
INNER JOIN内关联
FULL JOIN全关联

返回示例

200 Response

json
{
  "errCode": 0,
  "exception": "string",
  "data": "string"
}

返回数据结构

状态码 200

名称类型必选约束中文名说明
» errCodeintegertruenonenone
» exceptionstringtruenonenone
» datastringtruenonechat id:通过/df/rest/gpt/start接口获取

对话查询

PATH:/df/rest/gpt/chat

METHOD: POST

Header 请求参数

json
Authorization: Bearer M2M5YzY2TE0ZmEwMDNZjY1MDRkMGNkNWIuYTUxYThkZjJkGQ3NGZlZmJlZmIMGM2YTA3MDhlNg=

Body 请求参数

json
{
  "input": "string",
  "chatId": "string"
}

请求参数

名称位置类型必选说明
Authorizationheaderstringbearer token
bodybodyobjectnone
» inputbodystring用户输入的问题
» chatIdbodystring对话id

返回示例

200 Response

json
{
  "errCode": 0,
  "exception": "string",
  "data": {
    "type": "sql",
    "content": "string",
    "question": "string"
  }
}

返回数据结构

状态码 200

名称类型必选约束说明
» errCodeintegertruenonenone
» exceptionstringtruenonenone
» dataobjecttruenonenone
»» typestringtruenone类型
»» contentstringtruenonenone
»» questionstringtruenone解析后的问题, 当type为sql时才有值

枚举值

type:返回结果类型

含义
sqlsql语句
error错误信息
assistantgpt交互信息

Bearer token 获取方式如下图:

curl 样例:

json
curl -X POST "https://test-dev.datafocus.ai/df/rest/gpt/start" -H "Authorization: Bearer M2M5YzY2ZTE3ZGQzNGI0ZmEwMDNlZjY1MDRkMGNkNWIuYTUxYThkZjJkMGQ3NGZlZmJlZmI1MGM2YTA3MDhlNzg=" -H "Content-Type:application/json" -d '{"language": "chinese", "model":{"type":"mysql","version":"8.0","tables":[{"tableDisplayName":"test","tableName":"test","columns":[{"columnDisplayName":"name","columnName":"name","dataType":"string","aggregation":"","samples":["张医师","陶医师","毛医师"]},{"columnDisplayName":"address","columnName":"address","dataType":"string","aggregation":"","samples":["内科-传染病科","内科-呼吸内科","内科-神经内科"]},{"columnDisplayName":"age","columnName":"age","dataType":"int","aggregation":"SUM"},{"columnDisplayName":"date","columnName":"date","dataType":"timestamp","aggregation":"","samples":["1921-08-10 00:00:00.000","1922-10-24 00:00:00.000","1926-10-24 00:00:00.000"]}]}],"relations":[]}}'

curl 返回结果:
{
    "data": "dee0f117e771412ba152581a57e4488d",
    "errCode": 0,
    "exception": "",
    "msgParams": null,
    "promptMsg": null,
    "success": true
}

-------------------------

curl -X POST "https://test-dev.datafocus.ai/df/rest/gpt/chat" -H "Authorization: Bearer M2M5YzY2ZTE3ZGQzNGI0ZmEwMDNlZjY1MDRkMGNkNWIuYTUxYThkZjJkMGQ3NGZlZmJlZmI1MGM2YTA3MDhlNzg=" -H "Content-Type:application/json" -d '{"input":"去年 age","chatId":"dee0f117e771412ba152581a57e4488d"}'

curl 返回结果:
{
    "data": {
        "content": "select tbl_1873666373101797381.`age` as col_11709116884877520050 from `test` tbl_1873666373101797381 where (((tbl_1873666373101797381.`date` >= '2023-01-01 00:00:00.000') and (tbl_1873666373101797381.`date` < '2024-01-01 00:00:00.000')) = true) order by tbl_1873666373101797381.`age`",
        "question": "去年 age的分布",
        "type": "sql"
    },
    "errCode": 0,
    "exception": "",
    "msgParams": null,
    "promptMsg": null,
    "success": true
}

-------------------------

curl -X POST "https://test-dev.datafocus.ai/df/rest/gpt/chat" -H "Authorization: Bearer M2M5YzY2ZTE3ZGQzNGI0ZmEwMDNlZjY1ZmI1MGM2YTA3MDhlNzg=" -H "Content-Type:application/json" -d '{"input":"今年呢?","chatId":"dee0f117e771412ba152581a57e4488d"}'

curl 返回结果:
{
    "data": {
        "content": "select tbl_1873666373101797381.`age` as col_11709116884877520050 from `test` tbl_1873666373101797381 where (((tbl_1873666373101797381.`date` >= '2024-01-01 00:00:00.000') and (tbl_1873666373101797381.`date` < '2025-01-01 00:00:00.000')) = true) order by tbl_1873666373101797381.`age`",
        "question": "今年 age的分布",
        "type": "sql"
    },
    "errCode": 0,
    "exception": "",
    "msgParams": null,
    "promptMsg": null,
    "success": true
}