【叒更新了】AIstudioProxyAPI项目现支持转发参数设置

【项目重做:rofl:】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=truestream=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)。
  • 端口进程管理:
    • 查询指定端口上当前正在运行的进程。
    • 选择并尝试停止在指定端口上找到的进程。
  • 启动选项: 提供两种主要的启动模式:
    1. 启动有头模式 (Debug, 交互式):
      • 对应命令行 python launch_camoufox.py --debug --server-port <端口号>
      • 此模式会启动一个带界面的 Camoufox 浏览器和一个新的控制台窗口。
      • 您需要在新的控制台中按照提示进行交互式认证 (例如选择认证文件,或在浏览器中登录 Google 账号)。
      • 启动前,GUI 会询问您是否为此模式配置 HTTP/HTTPS 代理。
      • 此服务由 GUI 管理,关闭 GUI 或点击"停止当前GUI管理的服务"按钮会尝试终止此服务。
    2. 启动无头模式 (后台独立运行):
      • 对应命令行 python launch_camoufox.py --headless --server-port <端口号>
      • 服务将在后台以无头模式独立运行,关闭 GUI 后服务将继续运行
      • 此模式通常需要 auth_profiles/active/ 目录下有预先保存且有效的 .json 认证文件。
      • 启动前,GUI 会询问您是否为此模式配置 HTTP/HTTPS 代理。
      • 由于服务独立运行,GUI 中的"停止当前GUI管理的服务"按钮对此模式无效。您需要通过系统工具 (如任务管理器或 kill 命令) 或通过查询端口进程后手动停止它。
  • 状态与日志:
    • 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)

就是这位佬友

@caoayu

当然还有所有L站大家庭成员们的支持与鼓励和建议,让项目越来越好

48 个赞

前排, :upside_down_face:

7 个赞

佬,现在有啥配置可以返回token数吗?

6 个赞

这个可以有 我看看:face_with_monocle:

3 个赞

能无头理论上是不是能docker了?

4 个赞

能应该能,适配下周看看

2 个赞

来了来了

3 个赞

赞美巨佬

3 个赞

来了来了,前排支持

3 个赞

好了帖子写完了。睡了睡了

2 个赞

可以用cherrystudio那个显示token​:joy:

3 个赞

早点休息,高中加油

2 个赞

看了好几次,还没找到号去测试

1 个赞

好像用uv不太好用哦 没用过python python 太那个啥了 佬们懂我意思的

1 个赞

突然感觉这个项目的docker版本可能没有serverless有必要
毕竟地址国内直连访问不了,自行部署或者国内serverless部署都连不上

需要代理

也可以直接裸python

谷歌就行,我就用的自己谷歌账号

有些地方不便用梯子,所以这个还得有反代服务或者直接跑在国外的VPS上

是的,基本就是本地用,而且部署服务器响应速度更慢了,现在速度也只是可用的状态

2 个赞