# patbond-ai 配置样例。复制为 .env 后填入实际值——.env 已被 gitignore。 # # 凭证纪律(ADR-021):真实密钥只允许存在于被忽略的文件中,本样例只放占位值。 # 被拦下时的第一动作是去服务商控制台轮换/禁用该密钥,然后才是清理提交。 # ---- 火山方舟(Ark)---- # 密钥无默认值。缺失时该适配器不装配,服务仍可启动并提供健康检查。 ARK_API_KEY=your-ark-api-key # 北京区官方地址,一般无需改。 # ARK_BASE_URL=https://ark.cn-beijing.volces.com/api/v3 # 单次 HTTP 往返超时(秒)。**不是生成耗时**——提交接口是异步的(只入队即返回), # 调大成「等出图」会重新引入长连接占用与计费歧义。 # ARK_TIMEOUT_SEC=10 # 视频模型 ID,仅作兜底。正常路径由 Java 侧传入任务行冻结的模型快照—— # 适配层不自行选模型,否则任务记录与实际调用会不一致、事后无法对账。 ARK_VIDEO_MODEL= # 厂商 execution_expires_after(秒),区间 [3600, 259200]。 # 默认取下限 1 小时:厂商默认 48 小时对交互式应用过长,被放弃的任务会挂两天。 # ARK_TASK_EXPIRY_SEC=3600 # ---- OpenAI 图片(gpt-image-2)---- # 密钥无默认值。缺失时该适配器不装配,服务仍可启动并提供健康检查。 OPENAI_API_KEY=your-openai-api-key # OPENAI_BASE_URL=https://api.openai.com/v1 # 属于多个组织时才需要指定。 # OPENAI_ORGANIZATION= # ⚠️ 与 ARK_TIMEOUT_SEC 语义不同:OpenAI 图片接口是**同步**的,一次请求里等到 # 图片生成完才返回,故这个值**确实是生成耗时的上限**,不是短往返的上限。 # OPENAI_TIMEOUT_SEC=180 # 图片模型 ID,仅作兜底。同 ARK_VIDEO_MODEL:正常由 Java 侧传入任务行的快照。 OPENAI_IMAGE_MODEL= # 同时执行的同步调用数上限。这同时也是「同时有多少钱在花」的上界——超出的提交 # 排队,而不是一起打到服务商那里。 # OPENAI_MAX_CONCURRENT=4 # 已完成任务在内存注册表里的保留时长(秒)。**必须大于 Java 侧最长的轮询间隔** # (当前阶梯最长 30 秒),否则结果会在被取走前被清掉——症状是「任务成功了但查 # 不到」,极难查。 # OPENAI_COMPLETED_TTL_SEC=900 # 注册表条目上限。满了以后新提交被拒(503),**不挤掉在途任务**——挤掉一个在途 # 任务会让一次可能正在计费的调用变成无人认领的开销。 # OPENAI_MAX_INFLIGHT=256 # ---- 服务身份 JWT(ADR-023 §5)---- # 与 patbond-creation 持有的私钥配对的 RS256 公钥。注意这是一对**独立于用户 # token 的**密钥:现有 JwtVerifier 只验签名、不校验 aud/iss,复用同一密钥对会 # 让服务票被四个 Java 模块当成合法用户 token 接受。 PATBOND_SERVICE_JWT_PUBLIC_KEY= # PATBOND_SERVICE_JWT_ISSUER=patbond-api # audience 必须强制校验,否则独立密钥对失去意义。 # PATBOND_SERVICE_JWT_AUDIENCE=patbond-ai # PATBOND_SERVICE_JWT_TYPE=service # ---- 其他 ---- # PATBOND_AI_LOG_LEVEL=INFO