package org.ruoyi.common.chat.openai.interceptor; import cn.hutool.json.JSONUtil; import lombok.extern.slf4j.Slf4j; import okhttp3.Interceptor; import okhttp3.Request; import okhttp3.Response; import org.ruoyi.common.chat.entity.common.OpenAiResponse; import org.ruoyi.common.chat.openai.exception.CommonError; import org.ruoyi.common.core.exception.base.BaseException; import java.io.IOException; import java.util.Objects; /** * openai 返回值处理Interceptor * * @author https:www.unfbx.com * @since 2023-03-23 */ @Slf4j public class OpenAiResponseInterceptor implements Interceptor { @Override public Response intercept(Chain chain) throws IOException { Request original = chain.request(); Response response = chain.proceed(original); if (!response.isSuccessful()) { if (response.code() == CommonError.OPENAI_AUTHENTICATION_ERROR.code() || response.code() == CommonError.OPENAI_LIMIT_ERROR.code() || response.code() == CommonError.OPENAI_SERVER_ERROR.code()) { OpenAiResponse openAiResponse = JSONUtil.toBean(response.body().string(), OpenAiResponse.class); log.error(openAiResponse.getError().getMessage()); throw new BaseException(openAiResponse.getError().getMessage()); } String errorMsg = response.body().string(); log.error("--------> 请求异常:{}", errorMsg); OpenAiResponse openAiResponse = JSONUtil.toBean(errorMsg, OpenAiResponse.class); if (Objects.nonNull(openAiResponse.getError())) { log.error(openAiResponse.getError().getMessage()); throw new BaseException(openAiResponse.getError().getMessage()); } throw new BaseException(CommonError.RETRY_ERROR.msg()); } return response; } }