开始多轮 Chat2Query 对话
从 v3 版本开始,Chat2Query API 支持通过调用会话相关的端点来进行多轮对话。你可以使用 /v3/chat2data
端点返回的 session_id
在下一轮对话中继续会话。
开始之前
在开始多轮 Chat2Query 对话之前,请确保你已经具备以下条件:
步骤 1. 开始会话
要开始会话,你可以调用 Chat2Query Data App 的 /v3/sessions
端点。
以下是调用此端点的通用代码示例。
提示:
要获取特定端点的代码示例,请在 Data App 左侧窗格中点击端点名称,然后点击 Show Code Example。更多信息,请参见获取端点的示例代码。
curl --digest --user ${PUBLIC_KEY}:${PRIVATE_KEY} --request POST 'https://<region>.data.tidbcloud.com/api/v1beta/app/chat2query-<ID>/endpoint/v3/sessions'\
--header 'content-type: application/json'\
--data-raw '{
"cluster_id": "10140100115280519574",
"database": "sp500insight",
"name": "<Your session name>"
}'
在上述代码中,请求体是一个具有以下属性的 JSON 对象:
cluster_id
:string。TiDB 集群的唯一标识符。database
:string。数据库名称。name
:string。会话名称。
以下是一个响应示例:
{
"code": 200,
"msg": "",
"result": {
"messages": [],
"meta": {
"created_at": 1718948875, // 表示会话创建时间的 UNIX 时间戳
"creator": "<Your email>", // 会话创建者
"name": "<Your session name>", // 会话名称
"org_id": "1", // 组织 ID
"updated_at": 1718948875 // 表示会话更新时间的 UNIX 时间戳
},
"session_id": 305685 // 会话 ID
}
}
步骤 2. 使用会话调用 Chat2Data 端点
开始会话后,你可以调用 /v3/sessions/{session_id}/chat2data
在下一轮对话中继续会话。
以下是通用代码示例:
curl --digest --user ${PUBLIC_KEY}:${PRIVATE_KEY} --request POST 'https://eu-central-1.data.tidbcloud.com/api/v1beta/app/chat2query-YqAvnlRj/endpoint/v3/sessions/{session_id}/chat2data'\
--header 'content-type: application/json'\
--data-raw '{
"question": "<Your question to generate data>",
"feedback_answer_id": "",
"feedback_task_id": "",
"sql_generate_mode": "direct"
}'
在上述代码中,请求体是一个具有以下属性的 JSON 对象:
question
:string。用自然语言描述你想要的查询的问题。feedback_answer_id
:string。反馈答案 ID。此字段是可选的,仅用于反馈。feedback_task_id
:string。反馈任务 ID。此字段是可选的,仅用于反馈。sql_generate_mode
:string。生成 SQL 语句的模式。值可以是direct
或auto_breakdown
。如果设置为direct
,API 将直接根据你提供的question
生成 SQL 语句。如果设置为auto_breakdown
,API 将把question
分解为多个任务,并为每个任务生成 SQL 语句。
以下是一个响应示例:
{
"code": 200,
"msg": "",
"result": {
"job_id": "d96b6fd23c5f445787eb5fd067c14c0b",
"session_id": 305685
}
}
此响应与 /v3/chat2data
端点的响应类似。你可以通过调用 /v2/jobs/{job_id}
端点来检查作业状态。更多信息,请参见通过调用 /v2/jobs/{job_id}
检查分析状态。