# yaml-language-server: $schema=https://schema.zeabur.app/template.json
apiVersion: zeabur.com/v1
kind: Template
metadata:
    name: cloud-studio-proxy
spec:
    description: 一键部署 build Cloud Studio 代理服务，实现 AI Studio 多账号轮询和自动切换。
    variables:
        - key: API_KEYS
          type: STRING
          name: API 访问密钥
          description: 用于验证代理服务请求的密码，不能为空。
        - key: AUTH_JSON_1
          type: STRING
          name: AI Studio 认证JSON (账号1)
          description: 【必需】请填入第一个 AI Studio 账号的完整认证JSON字符串。此项不能为空。
        - key: DOMAIN
          type: DOMAIN
          name: 服务域名
          description: 用于访问代理服务的公开域名。
    tags:
        - ai
        - proxy
        - aistudio
        - build
        - cloud-studio
    readme: |
        # Cloud Studio - AI Studio 账号轮询代理

        基于 `ellinalopez/cloud-studio` 镜像，一键部署 AI Studio 账号轮询代理服务。

        **!!! 重要提示 !!!**
        部署此模板时，您 **必须** 在提示 `AI Studio 认证JSON (账号1)` 时，提供一个有效的认证JSON字符串。如果留空，服务将无法启动。

        **如何获取认证JSON？**
        请参考[本地准备工作及获取认证文件教程](https://gcn02iwpisfi.feishu.cn/wiki/UMDzwFu0ki3AEfkQ3A7c7bHvnIL)中的“本地获取认证文件”部分，通过运行 `node save-auth.js` 脚本来生成。

        **核心功能:**
        - **多账号管理**: 部署成功后，您可以在服务的环境变量设置中，添加更多账号（如 `AUTH_JSON_2`, `AUTH_JSON_3` 等）。
        - **自动切换**: 在请求失败或达到使用次数后，自动切换到下一个可用账号。
    services:
        - name: cloud-studio-proxy
          template: PREBUILT
          spec:
            source:
                image: ellinalopez/cloud-studio:latest
            ports:
                - id: web
                  port: 7860
                  type: HTTP
            env:
                API_KEYS:
                    default: ${API_KEYS}
                AUTH_JSON_1:
                    default: ${AUTH_JSON_1}
                FAILURE_THRESHOLD:
                    default: "3"
                IMMEDIATE_SWITCH_STATUS_CODES:
                    default: 429,503
                MAX_RETRIES:
                    default: "1"
                STREAMING_MODE:
                    default: fake
                SWITCH_ON_USES:
                    default: "40"
          domainKey: DOMAIN
