CHATGPT 在开启网页搜索的情况下向 ChatGPT 提问,返回回答、它找到的每个来源、它执行的搜索,以及它绘制的商品和地点卡片。
请求
响应
例如,一个精简后的响应:
searchQueries(结果中包含该来源的搜索)、cited(回答正文是否内联引用了它)和 citedText(每处引用所支撑的回答文字)。商品等不是由搜索返回的来源没有 searchQueries。
卡片布局
ChatGPT 以卡片形式绘制回答时会返回layout。其中的 nodes 与 ChatGPT 显示的顺序一致:
Include 标志
CHATGPT 支持所有响应标志。除 rawResponse 和 html 外均默认开启;发送 false 即可关闭。
卡片详情
开启include.entityDetails 后,回答中的每张卡片(商品、地点、应用、品牌)都会附带读者点击卡片时 ChatGPT 打开的详情面板:介绍、规格、评价及其依据页面。面板会引用自己的页面,因此能看到回答正文之外的来源。
error 在详情请求失败时为 ENTITY_DETAIL_FAILED,详情没有正文时为 ENTITY_DETAIL_EMPTY,缺少打开详情所需的会话或轮次凭证时为 ENTITY_DETAIL_UNAVAILABLE。payload.location、CN、HK、备用路径的回答和 include.html 均支持卡片详情。
ChatGPT 之前写过的面板约 1 秒返回,按请求新写的面板需要 10 到 30 秒,同时最多打开 4 个。每个回答最多打开 20 张卡片。面板不额外收取积分,每个追问的回答也各自获得面板。
追问
payload.followUps 在第一个回答之后,于同一对话中按顺序再提问最多 4 次。每一项是以下之一:
{ "prompt": "..." }:你自己写的问题。{ "select": { "button": 0, "choices": { "budget": "Under $100" } } }:按下上一个回答中追问表单的按钮。
button 从 0 开始数回答中的按钮,默认是第一个。choices 按每个 choice 节点的 name 选择选项,也可以按表单顺序写成数组;所选的值是选项的 value 或 label,或从 0 开始的位置。未选择的项保留 ChatGPT 预选的选项,因此 { "select": {} } 会发送按钮自身的 prompt。
followUps 列出后续每个回答,包含实际发送的问题(prompt)、select 按下的内容(selection:按钮的 label 和每个选项的值),以及与第一个回答相同的字段。
select 无法按下时,其余追问不再提问,followUpsStopped 给出该追问的 index、code 和 message:
任务仍会带着已获得的回答完成。每个回答 1 积分:任务为每个追问预留积分,只对返回的回答扣费。
include.analysis、include.citationAnalysis 和 include.html 只作用于第一个回答。其他引擎会以 400 VALIDATION_ERROR 拒绝 followUps。
稍后继续对话
如果要先看回答再决定下一个问题,请发送一个新的CHATGPT 任务,把 payload.continueFrom 设为一个已完成任务的 id,并同时发送 prompt,或按下该任务最后一个回答中表单的 select(规则与 followUps 相同)。
- 显示表单的回答会附带
forms:每个表单的buttons(其顺序即select.button),以及choices,包含name、初始选中的选项和options。 conversation.id是开启对话的任务,turn是目前的回答数,expiresAt是还能继续的最后时间,即第一个回答之后 3 小时。- 继续提问会接在所指定任务的最后一个回答之下,所以两次指定同一个任务会让对话分叉。
- 沿用原来的
country和location。请省略它们或发送相同的值。 - 其他账户或引擎的任务、尚未完成的任务或无效的
select会以400 VALIDATION_ERROR拒绝。已过期的对话以400 CONVERSATION_EXPIRED拒绝。两者都不收费。 - 继续提问的费用与任何 ChatGPT 任务相同。