允许您挂钩 JavaScript API 并定义一个函数来接收在 chat.openai.com 上执行的对话框的响应。
使用Tampermonkey等访问chat.openai.com时执行以下脚本。或者,您可以直接从控制台运行它。
(function() {
if (window.__hooked) {
return;
}
window.__hooked = true;
let msg = null;
const OrigTextDecoder = TextDecoder;
TextDecoder = class {
constructor() {
this.orig = new OrigTextDecoder(...arguments);
}
decode() {
const res = this.orig.decode(...arguments);
try {
msg = JSON.parse(res).message.content.parts[0];
} catch (e) {
}
if (msg != null && res == "[DONE]") {
if (window.ongpt) {
window.ongpt(msg);
}
msg = null;
}
return res;
}
};
})();
之后,您可以通过在全局上下文中ongpt
定义函数来接收回复。
function ongpt(message) {
console.log("message: " + message);
}
当您想要处理原始字符串而不是渲染结果时可以使用。
由于规格变更而停止工作的可能性很大,但如果是微小的变更
msg = JSON.parse(res).message.content.parts[0];
这周围
res == "[DONE]"
我认为如果你修复了这个区域,你就可以再次使用它。通过在函数中设置断点来查看JSON结构,替换响应对应的部分,并在结束信号到来时让它流动msg
ongpt
。
如果不再TextDecoder
使用,就放弃它。