You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Retrofit调用OpenAI API无法获取REST结果求助

调用OpenAI API持续报错,求问题排查方案

我搜索许久未找到有效解决方案,调用OpenAI API时持续报错,报错提示为Invalid model: text-davinci-003。相关代码如下:

RetrofitInstance

class RetrofitInstance {

    companion object{
        private lateinit var RETROFIT: Retrofit
        private var client = OkHttpClient.Builder().apply {
            addInterceptor(ChatGPTInterceptor())
        }.build()

        fun getRetrofitInstance(pathUrl: String): Retrofit{
            if(!::RETROFIT.isInitialized){
                RETROFIT = Retrofit.Builder()
                    .baseUrl(pathUrl)
                    .client(client)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build()
            }
            return RETROFIT
        }
    }

}

ChatGPTInterceptor

class ChatGPTInterceptor: Interceptor {
    override fun intercept(chain: Interceptor.Chain): Response {
        val proceed = chain.request()
            .newBuilder()
            .addHeader("content-type", "application/json")
            .addHeader("X-RapidAPI-Key", "Key-Censored")
            .addHeader("X-RapidAPI-Host", "openai80.p.rapidapi.com")
            .build()
        return chain.proceed(proceed)
    }
}

MainActivity

val sendMessageModel = SendMessageModel("user", binding.inputText.text.toString())

val realSendMessageModel = RealSendMessageModel("text-davinci-003", arrayListOf(sendMessageModel))

val retrofitInstance = RetrofitInstance.getRetrofitInstance("https://openai80.p.rapidapi.com/")
val endpoint = retrofitInstance.create(ChatGPTEndpoint::class.java)
val callback = endpoint.getRetrofitAnswer(realSendMessageModel)
callback.enqueue(object: Callback<AnswerModel>{
    override fun onResponse(call: Call<AnswerModel>, response: Response<AnswerModel>) {
        val s = response
    }

    override fun onFailure(call: Call<AnswerModel>, t: Throwable) {
        val s = t
    }
})

ChatGPTEndpoint

interface ChatGPTEndpoint {

    @POST("chat/completions")
    fun getRetrofitAnswer(@Body message: RealSendMessageModel): Call<AnswerModel>

}

排查及修复方案

  • 模型与接口不匹配:chat/completions接口仅支持GPT-3.5/4系列聊天模型(如gpt-3.5-turbo),text-davinci-003是文本补全模型,对应completions接口。要么将接口路径改为completions,要么把模型参数换成gpt-3.5-turbo。
  • Retrofit单例逻辑错误:当前单例实现会导致第一次初始化后,后续传入不同baseUrl也会复用旧实例,可能引发地址错误。建议去掉初始化判断,每次调用创建新实例,或者按baseUrl缓存不同实例。
  • 错误信息捕获不全:当前onResponse未处理非成功响应,建议添加错误体打印,获取详细报错信息:
    override fun onResponse(call: Call<AnswerModel>, response: Response<AnswerModel>) {
        if (response.isSuccessful) {
            // 处理成功结果
        } else {
            val errorMsg = response.errorBody()?.string() ?: "未知错误"
            Log.e("API_ERROR", errorMsg)
        }
    }
    
  • 验证RapidAPI配置:确认X-RapidAPI-Key有效,且订阅权限覆盖目标接口,同时检查后台是否有请求超限等限制。

内容的提问来源于stack exchange,提问作者Antony Lajes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 03:43:19