从【项目重做
】AIstudioProxyAPI的Python版正式发布,支持无头模式了继续讨论:
v3.0.0已经发布了,支持对aistudio的模型列表获取,自动根据api请求切换模型和设置maxtoken stop topp temperature等参数。更友好的gui启动脚本,还有非常方便调试的新webui界面。。。
dev分支还有llm兼容转发脚本(还不完善)
当前核心特性
- OpenAI API 兼容: 提供
/v1/chat/completions,/v1/models,/api/info端点 (默认端口2048)。现在支持在/v1/chat/completions请求中传递模型参数(如temperature,max_output_tokens,top_p,stop),代理会尝试在 AI Studio 页面上应用这些参数。 - 模型切换: API 请求中的
model字段现在用于在 AI Studio 页面动态切换模型。 - 流式/非流式响应: 支持
stream=true和stream=false。 - 请求队列: 使用
asyncio.Queue顺序处理请求,提高稳定性。 - Camoufox 集成: 通过
launch_camoufox.py调用camoufox库启动修改版的 Firefox 实例,利用其反指纹和反检测能力。 - 简化的启动脚本 (
start.py):- 自动检查并尝试清理端口冲突 (默认
2048)。 - 提供交互式代理设置 (可选)。
- 以后台模式自动启动
launch_camoufox.py --headless,并自动处理内部 WebSocket 连接,无需用户手动操作。
- 自动检查并尝试清理端口冲突 (默认
- 认证与调试模式 (
launch_camoufox.py --debug):- 提供带界面的浏览器用于首次认证、调试和更新认证文件。
- 支持保存和加载浏览器认证状态 (
auth_profiles目录) 实现免登录。
- 系统提示词与历史记录: 支持
messages中的system角色和多轮对话历史。 - 自动清空上下文 (条件性): 尝试在新对话开始时,如果当前不在
/new_chat页面,则自动清空 AI Studio 页面的聊天记录。 - 智能响应获取: 优先尝试通过模拟点击"编辑"或"复制"按钮获取原生响应,提高响应内容的准确性。
- Web UI: 提供
/路径访问一个基于index.html的现代聊天界面,包含:- 聊天视图。
- 服务器信息视图 (API 信息、健康检查状态,支持刷新)。
- 模型参数设置面板 (可调系统提示词、温度、最大Token、Top-P、停止序列,并保存设置至浏览器本地存储)。
- 实时系统日志侧边栏 (通过 WebSocket)。
- 亮色/暗色主题切换与本地存储。
- 响应式设计,适配不同屏幕尺寸。
- 默认系统提示词示例 (Web UI 中,可配置)。
- 服务端 (
server.py): FastAPI 应用,处理 API 请求,通过 Playwright 控制 Camoufox 浏览器与 AI Studio 交互。 - 启动器 (
launch_camoufox.py): 负责协调启动 Camoufox 服务(通过内部调用自身)和 FastAPI 服务,并管理它们之间的连接。通常由start.py在后台调用。 - 错误快照: 出错时自动在
errors_py/目录保存截图和 HTML。 - 日志控制: 可通过环境变量控制
server.py的日志级别和print输出重定向行为。 - WebSocket 实时日志: 提供
/ws/logs端点,Web UI 通过此接口显示后端日志。 - 辅助端点: 提供
/health,/v1/queue,/v1/cancel/{req_id}等端点用于监控和管理。
新GUI启动器功能概览
- 服务端口配置: 您可以在 GUI 中指定 FastAPI 服务器监听的端口号 (默认为 2048)。
- 端口进程管理:
- 查询指定端口上当前正在运行的进程。
- 选择并尝试停止在指定端口上找到的进程。
- 启动选项: 提供两种主要的启动模式:
- 启动有头模式 (Debug, 交互式):
- 对应命令行
python launch_camoufox.py --debug --server-port <端口号>。 - 此模式会启动一个带界面的 Camoufox 浏览器和一个新的控制台窗口。
- 您需要在新的控制台中按照提示进行交互式认证 (例如选择认证文件,或在浏览器中登录 Google 账号)。
- 启动前,GUI 会询问您是否为此模式配置 HTTP/HTTPS 代理。
- 此服务由 GUI 管理,关闭 GUI 或点击"停止当前GUI管理的服务"按钮会尝试终止此服务。
- 对应命令行
- 启动无头模式 (后台独立运行):
- 对应命令行
python launch_camoufox.py --headless --server-port <端口号>。 - 服务将在后台以无头模式独立运行,关闭 GUI 后服务将继续运行。
- 此模式通常需要
auth_profiles/active/目录下有预先保存且有效的.json认证文件。 - 启动前,GUI 会询问您是否为此模式配置 HTTP/HTTPS 代理。
- 由于服务独立运行,GUI 中的"停止当前GUI管理的服务"按钮对此模式无效。您需要通过系统工具 (如任务管理器或
kill命令) 或通过查询端口进程后手动停止它。
- 对应命令行
- 启动有头模式 (Debug, 交互式):
- 状态与日志:
- GUI 界面会显示当前服务的状态。
- 子进程 (如
launch_camoufox.py) 的标准输出和标准错误会显示在 GUI 的"输出日志"区域。
- 多语言支持: GUI 支持中文和英文切换。
WebUI新版
本项目提供了一个简单但完善的 Web 对话界面 (index.html),用于快速测试代理的基本功能和查看状态。
- 访问: 在浏览器中打开服务器的根地址,默认为
http://127.0.0.1:2048/。 - 功能:
- 聊天界面: 一个基本的聊天窗口,可以发送消息并接收来自 AI Studio 的回复。支持 Markdown 格式化和代码块高亮。Web UI 默认使用一个特定的角色扮演系统提示词(关于"丁真"),用户可以在"模型设置"中查看和修改此提示词。
- 服务器信息: 切换到 “服务器信息” 标签页可以查看:
- API 调用信息(如 Base URL、模型名称)。
- 服务健康检查 (
/health端点) 的详细状态。 - 提供 “刷新” 按钮手动更新此信息。
- 模型设置: 新增的 “模型设置” 标签页允许用户配置并保存(至浏览器本地存储)以下参数:
- 系统提示词 (System Prompt): 自定义指导模型的行为和角色。
- 温度 (Temperature): 控制生成文本的随机性。
- 最大输出Token (Max Output Tokens): 限制模型单次回复的长度。
- Top-P: 控制核心采样的概率阈值。
- 停止序列 (Stop Sequences): 指定一个或多个序列,当模型生成这些序列时将停止输出。
- 提供"保存设置"和"重置为默认值"按钮。
- 模型选择器: 在主聊天界面可以选择希望使用的模型,选择后会尝试在 AI Studio 后端进行切换。
- 系统日志: 右侧有一个可展开/收起的侧边栏,通过 WebSocket (
/ws/logs) 实时显示server.py的后端日志(需要日志系统配置正确)。包含日志级别、时间戳和消息内容,以及一个清理日志的按钮。 - 主题切换: 右上角提供 “浅色”/“深色” 按钮,用于切换界面主题,偏好设置会保存在浏览器本地存储中。
- 响应式设计: 界面会根据屏幕大小自动调整布局。
用途: 这个 Web UI 主要用于简单聊天、开发调试、快速验证代理是否正常工作、监控服务器状态以及方便地调整和测试模型参数。
使用建议
- 如果您是首次运行或需要更新认证文件,推荐使用 GUI 的"启动有头模式"。
- 对于日常后台运行,并且已确保
auth_profiles/active/下有有效认证,可以使用"启动无头模式"。 gui_launcher.py提供了与start.py和直接运行launch_camoufox.py类似的功能,但通过图形界面进行操作。
现在总共有三个脚本都可以用于启动服务
以下是一些计划中的改进方向:
- Docker支持: 提供官方的
Dockerfile以及 Docker Compose 配置,简化容器化部署流程。 - 云服务器部署适配: 提供更详细的部署和管理服务的指南。(但是我没有云服务器。。也没钱买。。)
- MCP兼容性支持: 增加选择器健壮性提高对MCP的兼容性。
致谢与贡献者
本项目的诞生与发展离不开下面贡献者的努力与智慧:
- win平台功能完善与调试:
@ayuayue (https://github.com/ayuayue)
就是这位佬友
当然还有所有L站大家庭成员们的支持与鼓励和建议,让项目越来越好