您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
切换 OpenAI GPT-4 使用的模型(gpt-4 和 gpt-4-mobile)仅plus用户可用。
- // ==UserScript==
- // @name GPT4 Model Switcher
- // @description 切换 OpenAI GPT-4 使用的模型(gpt-4 和 gpt-4-mobile)仅plus用户可用。
- // @author LShang
- // @license MIT
- // @match https://chat.openai.com/*
- // @match https://chat.zhile.io/*
- // @version 6.0
- // @grant none
- // @namespace https://github.com/LShang001
- // ==/UserScript==
- (function () {
- 'use strict';
- // 获取localStorage中的脚本是否启用的状态,默认为 gpt-4
- let isScriptEnabled = localStorage.getItem('isScriptEnabled') === 'true';
- let modelInUse = isScriptEnabled ? 'gpt-4-mobile' : 'gpt-4';
- // 创建并插入样式,用于显示切换按钮
- const style = document.createElement('style');
- style.innerHTML = `
- .toggle-button {
- position: fixed;
- bottom: 10px;
- right: 10px;
- z-index: 9999;
- display: flex;
- align-items: center;
- gap: 10px;
- padding: 5px;
- background-color: #242424;
- border-radius: 5px;
- box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
- }
- .toggle-button span {
- color: white;
- font-size: 16px;
- }
- .toggle-button input {
- display: none;
- }
- .slider {
- cursor: pointer;
- background-color: #ccc;
- transition: 0.4s;
- border-radius: 34px;
- width: 60px;
- height: 34px;
- position: relative;
- }
- .slider:before {
- position: absolute;
- content: "";
- height: 26px;
- width: 26px;
- left: 4px;
- bottom: 4px;
- background-color: white;
- transition: 0.4s;
- border-radius: 50%;
- }
- input:checked + .slider {
- background-color: #4CAF50;
- }
- input:checked + .slider:before {
- transform: translateX(26px);
- }
- `;
- 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;
- // 当切换状态时,改变localStorage中的脚本启用状态,并更新模型名称
- 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函数,对于POST请求的模型参数进行修改
- function modifiedFetch(url, init) {
- if (!isScriptEnabled) {
- return originalFetch(url, init);
- }
- try {
- if (init && init.method === 'POST' && init.body && init.headers['Content-Type'] === 'application/json') {
- let data = JSON.parse(init.body);
- if (data.hasOwnProperty('model') && (data.model === 'gpt-4' || data.model === 'gpt-4-mobile')) {
- data.model = isScriptEnabled ? 'gpt-4-mobile' : 'gpt-4';
- init.body = JSON.stringify(data);
- }
- }
- return originalFetch(url, init);
- } catch (e) {
- console.error('在处理请求时出现错误:', e);
- return originalFetch(url, init);
- }
- }
- // 在页面加载后替换原始的fetch函数
- window.addEventListener('load', () => {
- window.fetch = modifiedFetch;
- });
- })();