Closed kissycn closed 1 year ago
按照demo提示我添加了DynamicKeyOpenAiAuthInterceptor后测试未生效。
HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor(new OpenAILogger()); DynamicKeyOpenAiAuthInterceptor interceptor = new DynamicKeyOpenAiAuthInterceptor(); interceptor.setApiKey(keys); interceptor.setKeyStrategy(new KeyRandomStrategy()); //!!!!千万别再生产或者测试环境打开BODY级别日志!!!! //!!!生产或者测试环境建议设置为这三种级别:NONE,BASIC,HEADERS,!!! httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.HEADERS); OkHttpClient okHttpClient = new OkHttpClient .Builder() //.proxy(proxy) .addInterceptor(httpLoggingInterceptor) .addInterceptor(interceptor) //.addInterceptor(new OpenAiResponseInterceptor()) .connectTimeout(10, TimeUnit.SECONDS) .writeTimeout(30, TimeUnit.SECONDS) .readTimeout(30, TimeUnit.SECONDS) .build();
经过debug观察发现使用一个欠费的key返回的信息如下:
"message": "You exceeded your current quota, please check your plan and billing details.", "type": "insufficient_quota",
而代码里边只处理了:账号被封了、 key不正确
/** * 账号被封了 */ private static final String ACCOUNT_DEACTIVATED = "account_deactivated"; /** * key不正确 */ private static final String INVALID_API_KEY = "invalid_api_key"; //账号被封或者key不正确就移除掉 if (ACCOUNT_DEACTIVATED.equals(errorCode) || INVALID_API_KEY.equals(errorCode)) { super.setApiKey(this.onErrorDealApiKeys(key)); } throw new BaseException(openAiResponse.getError().getMessage());
如果想要添加自动处理欠费key的逻辑是不是在上面添加一个 insufficient_quot errorcode处理就可以了
@livghit 可以自定义实现OpenAiAuthInterceptor即可,参考DynamicKeyOpenAiAuthInterceptor 。
按照demo提示我添加了DynamicKeyOpenAiAuthInterceptor后测试未生效。
经过debug观察发现使用一个欠费的key返回的信息如下:
而代码里边只处理了:账号被封了、 key不正确
如果想要添加自动处理欠费key的逻辑是不是在上面添加一个 insufficient_quot errorcode处理就可以了