@@ -264,47 +264,31 @@ def generate(self, message, **kwargs1):
264264
265265 for i in range (self .retry ):
266266 try :
267- # 调用子类
268267 ret_code , answer , log = self .generate_inner (message , ** kwargs )
269-
270- # 如果代码走到了这里,说明没有抛出异常 (HTTP 200)
271- # 但有可能 ret_code 依然是非 0 (取决于子类具体实现,通常是 0)
272268 if ret_code == 0 and self .fail_msg not in answer :
273269 return answer
274-
275- # 如果 ret_code 非 0,也可以检查 log 里有没有绿灯关键词
276270 if self ._check_green_light (str (log ), current_ignore_patterns ):
277271 return f"[Policy Violation Ignored] { log } "
278272
279273 except Exception as err :
280-
281- error_content = str (err ) # 默认错误信息
282-
283- # 尝试从异常中提取 API 返回的详细 JSON (针对 HTTPError)
274+ error_content = str (err )
284275 if hasattr (err , 'response' ) and err .response is not None :
285276 try :
286- # 比如 OpenAI 返回的 {"error": {"code": "content_policy_violation"...}}
287- # 就藏在 err.response.text 里
288277 api_error_text = err .response .text
289278 error_content += f" | API Response: { api_error_text } "
290279 except :
291280 pass
292-
293- # 1. 检查是否绿灯 (放行)
294281 if self ._check_green_light (error_content , current_ignore_patterns ):
295282 self .logger .warning (f"Error matched ignore pattern. Returning error as result." )
296283 return f"[Allowed Exceptions] { error_content } "
297284
298- # 2. 检查 Fail Fast (报错退出)
299- if fail_fast :
300- self .logger .critical (f"[Fail-Fast] Exception occurred: { error_content } " )
301- import os
302- os ._exit (1 )
303-
304- # 3. 普通重试
305285 self .logger .error (f"Attempt { i + 1 } failed: { err } " )
306- time .sleep (rd .random () * self .wait * 2 )
307-
286+ if i < self .retry - 1 :
287+ time .sleep (rd .random () * self .wait * 2 )
288+ if fail_fast :
289+ self .logger .critical (f"[Fail-Fast] All { self .retry } attempts failed. Aborting." )
290+ import os
291+ os ._exit (1 )
308292 return self .fail_msg
309293
310294 def _check_green_light (self , text , patterns ):
0 commit comments