Upload app.py
Browse files
app.py
CHANGED
@@ -51,18 +51,42 @@ VOICE_OPTIONS = [
|
|
51 |
{"id": "shimmer", "name": "shimmer"},
|
52 |
]
|
53 |
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
|
|
|
|
|
|
|
|
62 |
|
63 |
def get_api_key(key_name, ui_value):
|
64 |
-
|
65 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
66 |
return ui_value if ui_value else os.getenv(key_name)
|
67 |
|
68 |
def process_inputs(
|
|
|
51 |
{"id": "shimmer", "name": "shimmer"},
|
52 |
]
|
53 |
|
54 |
+
def get_next_gemini_key(api_keys_str):
|
55 |
+
"""从多个key中轮询获取下一个key"""
|
56 |
+
if not hasattr(get_next_gemini_key, '_current_index'):
|
57 |
+
get_next_gemini_key._current_index = 0
|
58 |
+
|
59 |
+
keys = [k.strip() for k in api_keys_str.split(',') if k.strip()]
|
60 |
+
if not keys:
|
61 |
+
return None
|
62 |
+
|
63 |
+
key = keys[get_next_gemini_key._current_index]
|
64 |
+
get_next_gemini_key._current_index = (get_next_gemini_key._current_index + 1) % len(keys)
|
65 |
+
return key.strip()
|
66 |
|
67 |
def get_api_key(key_name, ui_value):
|
68 |
+
"""获取API key的新逻辑"""
|
69 |
+
if key_name == "GEMINI_API_KEY":
|
70 |
+
# 1. 优先使用UI传入的key(s)
|
71 |
+
if ui_value:
|
72 |
+
if ',' in ui_value:
|
73 |
+
# 多个key的情况
|
74 |
+
selected_key = get_next_gemini_key(ui_value)
|
75 |
+
else:
|
76 |
+
# 单个key的情况
|
77 |
+
selected_key = ui_value.strip()
|
78 |
+
# 2. 其次使用GEMINI_API_KEYS环境变量
|
79 |
+
elif os.getenv("GEMINI_API_KEYS"):
|
80 |
+
selected_key = get_next_gemini_key(os.getenv("GEMINI_API_KEYS"))
|
81 |
+
# 3. 最后使用GEMINI_API_KEY环境变量
|
82 |
+
else:
|
83 |
+
selected_key = os.getenv("GEMINI_API_KEY")
|
84 |
+
|
85 |
+
# 设置当前使用的key到GEMINI_API_KEY环境变量
|
86 |
+
if selected_key:
|
87 |
+
os.environ["GEMINI_API_KEY"] = selected_key
|
88 |
+
return selected_key
|
89 |
+
|
90 |
return ui_value if ui_value else os.getenv(key_name)
|
91 |
|
92 |
def process_inputs(
|