切换 OpenAI GPT-4 使用的模型(gpt-4 和 gpt-4-mobile)。
当前为
// ==UserScript==
// @name GPT4 Model Switcher
// @namespace https://github.com/LShang001
// @description 切换 OpenAI GPT-4 使用的模型(gpt-4 和 gpt-4-mobile)。
// @author LShang
// @license MIT
// @match https://chat.openai.com/*
// @match https://chat.zhile.io/*
// @version 2
// @grant none
// ==/UserScript==
(function () {
'use strict';
// 读取本地存储的脚本状态
let isScriptEnabled = localStorage.getItem('isScriptEnabled') === 'true';
// 根据当前脚本状态确定正在使用的模型
let modelInUse = isScriptEnabled ? 'gpt-4-mobile' : 'gpt-4';
// 创建并插入新的 CSS 样式
const style = document.createElement('style');
style.innerHTML = `
/* 设置开关的样式 */
`;
document.head.appendChild(style);
// 创建切换按钮
const toggleButton = document.createElement('label');
toggleButton.className = 'toggle-button';
// 创建并添加显示模型名称的文本
const toggleText = document.createElement('span');
toggleText.textContent = 'Model: ' + modelInUse;
toggleButton.appendChild(toggleText);
// 创建并添加切换输入元素
const toggleInput = document.createElement('input');
toggleInput.type = 'checkbox';
toggleInput.checked = isScriptEnabled;
toggleInput.addEventListener('change', toggleScript);
toggleButton.appendChild(toggleInput);
// 创建并添加滑块元素
const slider = document.createElement('span');
slider.className = 'slider';
toggleButton.appendChild(slider);
// 将切换按钮添加到页面中
document.body.appendChild(toggleButton);
// 定义切换脚本状态的函数
function toggleScript() {
// 更新脚本状态
isScriptEnabled = !isScriptEnabled;
// 存储新的脚本状态
localStorage.setItem('isScriptEnabled', isScriptEnabled);
// 更新当前使用的模型
modelInUse = isScriptEnabled ? 'gpt-4-mobile' : 'gpt-4';
// 更新显示的模型名称
toggleText.textContent = 'Model: ' + modelInUse;
}
// 保存原始的 fetch 函数
const originalFetch = window.fetch;
// 定义修改过的 fetch 函数
function modifiedFetch(url, init) {
// 如果脚本处于禁用状态,直接使用原始的 fetch 函数
if (!isScriptEnabled) {
return originalFetch(url, init);
}
try {
// 检查请求的方法、体和头部
if (init && init.method === 'POST' && init.body && init.headers['Content-Type'] === 'application/json') {
// 解析请求体中的 JSON 数据
let data = JSON.parse(init.body);
// 检查数据中是否包含 model 属性
if (data.hasOwnProperty('model')) {
// 切换模型
data.model = data.model === 'gpt-4' ? 'gpt-4-mobile' : 'gpt-4';
// 更新请求体中的数据
init.body = JSON.stringify(data);
}
}
// 使用原始的 fetch 函数发送修改过的请求
return originalFetch(url, init);
} catch (e) {
// 如果在处理请求时出现错误,记录错误信息并使用原始的 fetch 函数发送请求
console.error('在处理请求时出现错误:', e);
return originalFetch(url, init);
}
}
// 在页面加载完成后替换 fetch 函数
window.addEventListener('load', () => {
window.fetch = modifiedFetch;
});
})();