Skip to content

Commit

Permalink
防止遞迴調用
Browse files Browse the repository at this point in the history
從您提供的 save_debug_data 函數輸出和 call_gemini_api 函數的實現來看,原因可能是在處理 Gemini API 回應時的邏輯有些問題。根據您提供的信息,當 Gemini API 回應包含 blockReason: SAFETY 時,您的代碼應該直接返回 DeepL API 的翻譯結果,而不進行進一步的 Gemini API 調用。

問題可能出在 call_gemini_api 函數中對 blockReason 的處理。當 blockReason: SAFETY 出現時,您的代碼確實返回了 DeepL 的翻譯結果,但這可能只是在第一次呼叫 call_gemini_api 時有效。如果在處理 blockReason: SAFETY 時再次調用了 call_gemini_api(例如,透過遞迴調用),那麼它可能又一次試圖從 Gemini API 獲取翻譯結果,而此時仍可能遇到相同的 blockReason。
  • Loading branch information
Arcelibs committed Dec 28, 2023
1 parent 886c451 commit a4a39ea
Showing 1 changed file with 7 additions and 5 deletions.
12 changes: 7 additions & 5 deletions Local-Windows/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,15 +89,17 @@ def call_gemini_api(input_text):
if response.status_code == 200:
if 'blockReason' in response_data and response_data['blockReason'] == 'SAFETY':
# 如果 Gemini API 返回 blockReason 为 SAFETY,直接使用 DeepL 翻译结果
return simplified_chinese_text
# 防止遞迴調用
if not is_retry:
return call_gemini_api(simplified_chinese_text, is_retry=True)
else:
return simplified_chinese_text
elif 'candidates' in response_data:
# 正常处理逻辑
return response_data['candidates'][0]['content']['parts'][0]['text']
else:
print("KeyError: 'candidates' not found in response.")
# 保存完整回應
save_debug_data("gemini_response", response_data)
# 可以选择直接使用 DeepL API 的翻译结果
return simplified_chinese_text
return None
else:
print(f"错误: {response.status_code}")
return None
Expand Down

0 comments on commit a4a39ea

Please sign in to comment.