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

如何修复OpenAI API返回的CodingKeys('object')无关联值错误?

OpenAI API文本补全报错:No value associated with key CodingKeys("object") 问题排查与修复

问题描述

调用OpenAI API做文本补全时触发解析错误,错误信息:

No value associated with key CodingKeys(stringValue: "object", intValue: nil) ("object")

已确认提示词有效,更换不同提示词后问题依然存在。

提供的代码

class NetworkManager{
    static let shared = NetworkManager()
    
    @frozen enum Constants{
        static let key = ""
    }
    
    
    private var client: OpenAISwift?
    
    private init() {}
    
    func setUp(){
        self.client = OpenAISwift(authToken: Constants.key)
    }
    func getResponse(input: String, completion: @escaping (Result<String, Error>) -> Void) {
        let prompt = """
            translate from English to Nigerian Pidgin:

            \(input)

            Output:
            """

        
        client?.sendCompletion(with: prompt, model: .gpt3(.davinci), maxTokens: 60) { result in
            switch result {
            case .success(let response):
                let output = response.choices.first?.text ?? ""
                print(response)
                completion(.success(output))
            case .failure(let error):
                completion(.failure(error))
                print(error.localizedDescription)
            }
        }
    }
    
  networkManager.getResponse(input: inputText) { result in
               switch result {
               case .success(let outputText):
                   DispatchQueue.main.async {
                       self.secondTextField.text = outputText
                   }
               case .failure(let error):
                   print("Error translating text: \(error)")
               }
           }

问题成因

  1. API密钥未配置:代码中Constants.key为空字符串,导致请求未通过OpenAI认证,API返回的错误响应结构和OpenAISwift库预期的成功响应结构不匹配,触发解析失败。
  2. 库版本与API响应不兼容:旧版本OpenAISwift库的解析逻辑依赖object字段,但OpenAI API的响应结构已更新(尤其是davinci系列模型逐步淘汰后,新模型的响应格式有调整),导致库无法找到对应字段。
  3. 模型参数错误:使用的.gpt3(.davinci)模型可能已被API弃用或库的枚举映射失效,返回的响应结构不符合库的解析预期。

修复方案

1. 配置有效API密钥

将Constants.key替换为你的真实OpenAI API密钥,确保密钥拥有调用文本补全接口的权限:

@frozen enum Constants{
    static let key = "你的OpenAI API密钥"
}

2. 更新OpenAISwift库

通过CocoaPods或Swift Package Manager将库更新到最新版本,新版本会适配OpenAI API的当前响应结构,避免字段解析错误。

3. 更换为可用模型

davinci系列模型已逐步停止服务,改用当前支持的gpt-3.5-turbo-instruct模型,可直接用字符串指定模型ID:

client?.sendCompletion(with: prompt, model: "gpt-3.5-turbo-instruct", maxTokens: 60) { result in
    // 回调逻辑不变
}

4. 调试响应结构

在回调中打印完整的API响应,确认返回数据是否符合库的解析要求,排查是否为响应格式问题:

case .failure(let error):
    print("原始错误信息:\(error)")
    // 若有能力,可打印网络请求的原始响应数据
    completion(.failure(error))

内容的提问来源于stack exchange,提问作者alex paul

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 09:56:19