feat(fam-edge): Gemini key 分配改真随机 + 按项目名标注统计
用户明确要求: 每次调用应该是 1/n 概率的真随机抽取,而不是上一版的顺序轮转 (round-robin 在当前单消费者串行处理场景下已经是数学最优均匀分配,但用户想要 "数组里随机取一个,每次都是四分之一概率"这种更直观的随机语义)。_rotated_keys() 去掉持久的轮转下标,改用 random.randrange 每次调用随机选起点,仍保留"起点 key 全部模型失败就级联到下一个 key"的兜底逻辑不变。 同时新增 key_labels 配置:4 个 key 分别对应用户在 Google Cloud 上开的 4 个项目 (智能摄像头-1/2/3/4),model_calls 统计现在按项目名而不是泛化的 key1/key2 展示,ModelStats 页面的 Key 列/拆分逻辑同步改为按最后一个 "·" 分隔(原来写死 按 "·key" 前缀查找,项目名场景下不适用)。 新增/重写 7 个单测覆盖:随机起点级联顺序、randrange 调用范围正确性、大样本 随机分布均匀性、key_labels 默认值/自定义值/key 被丢弃时的对齐。
This commit is contained in:
@@ -63,6 +63,13 @@ models:
|
||||
- "${GEMINI_API_KEY_2}"
|
||||
- "${GEMINI_API_KEY_3}"
|
||||
- "${GEMINI_API_KEY_4}"
|
||||
# 每个 key 对应的 Google Cloud 项目名(顺序对应上面 api_key + extra_api_keys),
|
||||
# 用于模型统计页展示是哪个项目在跑,不填则退回 "key1/key2/..."
|
||||
key_labels:
|
||||
- "智能摄像头-1"
|
||||
- "智能摄像头-2"
|
||||
- "智能摄像头-3"
|
||||
- "智能摄像头-4"
|
||||
timeout: 600
|
||||
# 模型级独立超时(最终值,不参与编排层 ×2 放大)
|
||||
# gemini-flash-lite 实测 ~22-34s,按用户要求放宽至 8 分钟(480s),避免大视频/排队时过早切断
|
||||
|
||||
Reference in New Issue
Block a user