GPT4 Model Switcher

切换 OpenAI GPT-4 使用的模型(gpt-4 和 gpt-4-mobile)。

目前为 2023-05-27 提交的版本。查看 最新版本

// ==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     3.0
// @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;
  });
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址