跳转到主要内容
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 任务相同。

相关内容