各位佬友七夕快乐啊!今天给大家带来一个工具—模型切换器。
相信大家在使用始皇神器override过程中一定遇到切换模型方面的困扰吧,用好的模型担心额度使用,用差的模型回复质量又不行,每次想要换模型还需要修改配置,重新部署有一点点麻烦,不能做到运行时动态切换模型(只能怪github copilot没有提供模型切换的功能)。还有其他工具如chatbox,浏览器插件sider也是只能自定义一个模型不能灵活切换模型。针对这些痛点,于是开发了这个模型切换器,希望能帮到大家!
项目地址:
对应版本:
当前分享内容对应 release v1.0.0
项目特色:
- 提供简单易用的Web 模型切换界面,点几下就能切换模型
- 支持运行时动态切换模型,不用重启程序
- 支持Docker部署,对于喜欢容器化的佬友来说简直不要太爽
- 提供API接口,方便集成到其他项目中
部署方法:
- 本地部署:
- 克隆代码
- 安装依赖
pip install -r requirements.txt
- 新建并设置.env文件
# oneapi/newapi地址,不包含v1 BASE_URL= # 请求秘钥,sk-xxxx API_KEY= # 默认使用模型 OVERRIDE_MODEL=gpt-4o
- 运行
python main.py
- Docker部署:
- 构建镜像:
docker build -t override-model-switcher .
- 运行容器:
docker run -p 8000:8000 -e BASE_URL=xxx -e API_KEY=xxx -e OVERRIDE_MODEL=xxx override-model-switcher
- 其他免费的云服务部署(略,自行研究)
override使用方案
- 修改override项目config配置下面两个配置
"chat_api_base": "{模型切换器服务地址}/v1", "chat_api_key": "{模型切换器服务配置的api_key}", "chat_model_default": "override",
- 模型切换
这里提供两个方法:
-
服务自带的web页面,地址:{模型切换器服务地址}/
-
配合utools工具的快捷命令插件使用,添加关键字可以很方便的调用
命令代码如下,在tools目录下也有备份,
API_URL : 填模型切换器服务的地址
base_url : oneapi/newapi服务地址(不包含v1)
api_key : oneapi/newapi的令牌import tkinter as tk from tkinter import messagebox import requests # 设置API的URL API_URL = "http://localhost:8000/switch/override_models" base_url = "" api_key = "" def fetch_models(): # 发送 GET 请求到 OpenAI API 以获取模型列表 try: response = requests.get( f"{base_url}/v1/models", headers={"Authorization": f"Bearer {api_key}"} ) response.raise_for_status() # 检查请求是否成功 return response.json() except requests.exceptions.RequestException as e: return None def get_allowed_models(): models_data = fetch_models() # 检查获取的数据是否有效 if models_data and 'data' in models_data: return [model['id'] for model in models_data['data']] return [] def switch_model(model): try: response = requests.post(API_URL, json={"model": model}) if response.status_code == 200: messagebox.showinfo("成功", f"模型已切换为 {model}") current_model.set(f"当前模型:{model}") # 更新当前模型标签 else: messagebox.showerror("错误", f"切换失败: {response.text}") except requests.RequestException as e: messagebox.showerror("错误", f"请求失败: {str(e)}") # 创建主窗口 root = tk.Tk() # 初始化当前模型变量 current_model = tk.StringVar(value="当前模型:无") root.title("模型切换工具") # 设置窗口大小和位置 root.geometry("300x300+50+50") # 创建标签 label = tk.Label(root, text="选择要切换的模型:") label.pack(pady=10) # 显示当前生效的模型信息 current_model_label = tk.Label(root, textvariable=current_model) current_model_label.pack(pady=10) # 获取可用模型并创建下拉选择菜单 MODELS = get_allowed_models() model_menu = tk.OptionMenu(root, current_model, *MODELS, command=switch_model) model_menu.pack(pady=10) # 运行主循环 root.mainloop()
使用效果图(请忽略界面的丑陋)
当然了佬友们也可以根据提供的/switch/override_models接口,自己实现切换工具,怎么方便怎么来
结语
有什么问题或建议,欢迎各位佬友在下面留言讨论!有帮助的话,动动小手点点赞~
PS: 别忘了保护好你的API密钥,千万不要泄露哦!