Spaces:
				
			
			
	
			
			
					
		Running
		
	
	
	
			
			
	
	
	
	
		
		
					
		Running
		
	OpenAI缩减了免费用户的请求速率限制
Browse files- config.py +4 -3
- crazy_functions/crazy_utils.py +10 -2
    	
        config.py
    CHANGED
    
    | @@ -19,6 +19,10 @@ if USE_PROXY: | |
| 19 | 
             
            else:
         | 
| 20 | 
             
                proxies = None
         | 
| 21 |  | 
|  | |
|  | |
|  | |
|  | |
| 22 |  | 
| 23 | 
             
            # [step 3]>> 以下配置可以优化体验,但大部分场合下并不需要修改
         | 
| 24 | 
             
            # 对话窗的高度
         | 
| @@ -33,9 +37,6 @@ LAYOUT = "LEFT-RIGHT"  # "LEFT-RIGHT"(左右布局) # "TOP-DOWN"(上下布 | |
| 33 | 
             
            # 发送请求到OpenAI后,等待多久判定为超时
         | 
| 34 | 
             
            TIMEOUT_SECONDS = 30
         | 
| 35 |  | 
| 36 | 
            -
            # 多线程函数插件中,默认允许多少路线程同时访问OpenAI。OpenAI的限制是不能超过20
         | 
| 37 | 
            -
            DEFAULT_WORKER_NUM = 8
         | 
| 38 | 
            -
             | 
| 39 | 
             
            # 网页的端口, -1代表随机端口
         | 
| 40 | 
             
            WEB_PORT = -1
         | 
| 41 |  | 
|  | |
| 19 | 
             
            else:
         | 
| 20 | 
             
                proxies = None
         | 
| 21 |  | 
| 22 | 
            +
            # 多线程函数插件中,默认允许多少路线程同时访问OpenAI。Free trial users的限制是每分钟3次,提高限制请查询:
         | 
| 23 | 
            +
            # https://platform.openai.com/docs/guides/rate-limits/overview
         | 
| 24 | 
            +
            DEFAULT_WORKER_NUM = 3
         | 
| 25 | 
            +
             | 
| 26 |  | 
| 27 | 
             
            # [step 3]>> 以下配置可以优化体验,但大部分场合下并不需要修改
         | 
| 28 | 
             
            # 对话窗的高度
         | 
|  | |
| 37 | 
             
            # 发送请求到OpenAI后,等待多久判定为超时
         | 
| 38 | 
             
            TIMEOUT_SECONDS = 30
         | 
| 39 |  | 
|  | |
|  | |
|  | |
| 40 | 
             
            # 网页的端口, -1代表随机端口
         | 
| 41 | 
             
            WEB_PORT = -1
         | 
| 42 |  | 
    	
        crazy_functions/crazy_utils.py
    CHANGED
    
    | @@ -221,13 +221,21 @@ def request_gpt_model_multi_threads_with_very_awesome_ui_and_high_efficiency( | |
| 221 | 
             
                        except:
         | 
| 222 | 
             
                            # 【第三种情况】:其他错误
         | 
| 223 | 
             
                            tb_str = '```\n' + traceback.format_exc() + '```'
         | 
|  | |
| 224 | 
             
                            gpt_say += f"[Local Message] 警告,线程{index}在执行过程中遭遇问题, Traceback:\n\n{tb_str}\n\n"
         | 
| 225 | 
             
                            if len(mutable[index][0]) > 0: gpt_say += "此线程失败前收到的回答:\n\n" + mutable[index][0]
         | 
| 226 | 
             
                            if retry_op > 0: 
         | 
| 227 | 
             
                                retry_op -= 1
         | 
| 228 | 
             
                                wait = random.randint(5, 20)
         | 
| 229 | 
            -
                                 | 
| 230 | 
            -
                                     | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 231 | 
             
                                mutable[index][2] = f"重试中 {retry_times_at_unknown_error-retry_op}/{retry_times_at_unknown_error}"
         | 
| 232 | 
             
                                continue # 返回重试
         | 
| 233 | 
             
                            else:
         | 
|  | |
| 221 | 
             
                        except:
         | 
| 222 | 
             
                            # 【第三种情况】:其他错误
         | 
| 223 | 
             
                            tb_str = '```\n' + traceback.format_exc() + '```'
         | 
| 224 | 
            +
                            print(tb_str)
         | 
| 225 | 
             
                            gpt_say += f"[Local Message] 警告,线程{index}在执行过程中遭遇问题, Traceback:\n\n{tb_str}\n\n"
         | 
| 226 | 
             
                            if len(mutable[index][0]) > 0: gpt_say += "此线程失败前收到的回答:\n\n" + mutable[index][0]
         | 
| 227 | 
             
                            if retry_op > 0: 
         | 
| 228 | 
             
                                retry_op -= 1
         | 
| 229 | 
             
                                wait = random.randint(5, 20)
         | 
| 230 | 
            +
                                if "Rate limit reached" in tb_str: 
         | 
| 231 | 
            +
                                    wait = wait * 5
         | 
| 232 | 
            +
                                    fail_info = "OpenAI请求速率限制 "
         | 
| 233 | 
            +
                                else:
         | 
| 234 | 
            +
                                    fail_info = ""
         | 
| 235 | 
            +
                                # 也许等待十几秒后,情况会好转
         | 
| 236 | 
            +
                                for i in range(wait):
         | 
| 237 | 
            +
                                    mutable[index][2] = f"{fail_info}等待重试 {wait-i}"; time.sleep(1)
         | 
| 238 | 
            +
                                # 开始重试
         | 
| 239 | 
             
                                mutable[index][2] = f"重试中 {retry_times_at_unknown_error-retry_op}/{retry_times_at_unknown_error}"
         | 
| 240 | 
             
                                continue # 返回重试
         | 
| 241 | 
             
                            else:
         |