Publish Docker image (Multi-arch) / Build & push (amd64) (push) Failing after 1m40s
Release (Linux, macOS, Windows) / Linux Release (push) Failing after 42m16s
Publish Docker image (Multi-arch) / Build & push (arm64) (push) Canceled after 0s
Release (Linux, macOS, Windows) / macOS Release (push) Canceled after 0s
Release (Linux, macOS, Windows) / Windows Release (push) Canceled after 0s
Publish Docker image (Multi-arch) / Create multi-arch manifests (push) Canceled after 0s
Sync production source including routing, billing, Astra detection and public uptime. Update custom build instructions and license packaging.
20 lines
3.4 KiB
Markdown
20 lines
3.4 KiB
Markdown
# Astra 返回模型校验
|
|
|
|
API 令牌的 `astra_auto_switch` 控制原始模型为 `gpt-6-astra` 的 HTTP `/v1/responses` 错配拦截和安全切换。独立字段 `astra_detection_enabled` 控制检测。关闭检测时不执行 Astra 模型比较、不拦截,并将自动切换保存为关闭;重新打开检测不会自动重新开启切换。检测开启且切换关闭时放行并记录 `mismatch_allowed`,开启时拦截并记录 `mismatch_rejected`。渠道 `responses_astra_model_guard` 字段仅保留存储兼容,界面标记停用,不再决定请求行为。
|
|
|
|
开启时,明确模型错配可以按现有路由策略安全切换,最多 3 次上游尝试。显式渠道固定、已交付内容、客户端取消、携带 previous_response_id 或 conversation 的请求不会透明切换。每次在 STREAMING_TIMEOUT 内、最多暂存 1 MiB,确认原始上游声明去除首尾空白后等于 `gpt-6-astra`,才允许提交响应头、ping 和内容。网络重试与 strict_session 策略保持现状。
|
|
|
|
接受后的流实时转发;后续错误模型事件不会交付,转为 `response.failed`,不再透明重试。每次有消耗的上游尝试独立结算,包括被拦截的结果;切换后的新尝试另行计费。沿用持久化尝试账本、usage 收集和结算,不修改价格或退款算法。
|
|
|
|
无法交付已验证结果时,客户端收到 HTTP 409 和 `response_model_rejected`;若已开始 SSE,则通过 `response.failed` 发送错误。提示包含请求及返回模型、每次消耗独立计费的说明,不包含渠道名称、地址或鉴权信息。拒收后仍收集 usage 以完成账本结算。
|
|
|
|
管理员日志详情的 `admin_info.request_details.model_guard.attempts` 保存尝试序号、渠道 ID、期望及返回模型、原因、耗时、是否交付以及已经取得的 usage。没有取得 usage 表示未知成本,不表示上游没有收费。普通用户日志不返回此字段。
|
|
|
|
请求所属用户可以查看尝试历史、实际费用、模型声明与校验结果;渠道 ID 仅管理员可见。尝试 API 增加 `charged`(已结算且费用大于零)及 `charge_explanation`。待结算尝试不会被误标为已扣费。
|
|
|
|
验证入口:`relay/response_model_test.go`;前端 `admin-request-details.test.tsx` 和 `responses-websocket-setting.test.tsx`。隔离运行验收还覆盖真实 HTTP 转发、429 混合重试、退款及单次扣费、超时关闭连接、ping 门控和客户端断线排空。
|
|
|
|
本功能仅验证上游响应的模型声明,不能识别伪报模型。首次启动新增令牌列并以迁移标记将已有令牌设为开启;新建令牌默认检测开启、自动切换关闭;已有令牌迁移后保留检测开启及原切换设置,重复启动保留用户选择。旧 Redis 哈希补齐新字段时不覆盖实时额度。启用并保存需要费用确认;令牌页的首次费用提示通过用户 setting 中的 `astra_cost_notice_ack` 记录已读。API 更新省略开关时保留原值,显式 false 正常持久化。
|
|
|
|
鉴权继续使用现有令牌所有权检查与认证缓存失效机制,新增审计字段不含凭据。安全参考:[OWASP Authentication Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html)、[OWASP Session Management Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/Session_Management_Cheat_Sheet.html)。
|