swift OpenAI API错误:"必须提供模型参数"

6qqygrtg  于 2023-03-07  发布在  Swift
关注(0)|答案(1)|浏览(1091)

我尝试通过SWIFT向openAI API发布一个问题。如果我通过Postman使用相同的有效载荷,它可以正常工作,但在Xcode-Condole中,我从openAI得到了以下响应:

Response data string:
{
     "error": {
         "message": "you must provide a model parameter",
         "type": "invalid_request_error",
         "param": null,
         "code": null
    }
 }

这是我的代码:

func getActivityAnalysis(){
    
    let url = URL(string: "https://api.openai.com/v1/completions")
    guard let requestUrl = url else { fatalError() }
    
    // Prepare URL Request Object
    var request = URLRequest(url: requestUrl)
    request.setValue("Bearer blaaaablaa", forHTTPHeaderField: "Authorization")
    request.httpMethod = "POST"
    
    
    let prompt = "just a test"
    let requestBody = OpenAIRequest(model: "text-davinci-003", prompt: prompt, max_tokens: 300, temperature: 0.5)
    
    let encoder = JSONEncoder()
    encoder.outputFormatting = .prettyPrinted
    let data = try! encoder.encode(requestBody)
    print(String(data: data, encoding: .utf8)!)
    
     
    // Set HTTP Request Body
    request.httpBody = data
    
    print("\(request.httpMethod!) \(request.url!)")
    print(request.allHTTPHeaderFields!)
    print(String(data: request.httpBody ?? Data(), encoding: .utf8)!)
    
    
    
    // Perform HTTP Request
    let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
            
            // Check for Error
            if let error = error {
                print("Error took place \(error)")
                return
            }
     
            // Convert HTTP Response Data to a String
            if let data = data, let dataString = String(data: data, encoding: .utf8) {
                print("Response data string:\n \(dataString)")
                self.openAIResponse = dataString
            }
    }
    task.resume()
    
}`

如果我打印http请求,对我来说似乎也没问题:

POST https://api.openai.com/v1/completions
 ["Authorization": "Bearer blaaaaa"]
 {
    "temperature" : 0.5,
    "model" : "text-davinci-003",
    "prompt" : "just a test",
    "max_tokens" : 300
 }

我试着在我的 Postman 请求中使用相同的有效载荷。它在这里工作得很好。我也试着使用不同的编码,但它总是抛出相同的错误。
不知道我做错了什么。也许有人能帮忙?
先谢谢你。
打赌托比

5jdjgkvh

5jdjgkvh1#

您的HTTP请求揭示了问题。您需要添加'Content-Type: application/json'
根据GeeksforGeeks
Content-Type是一个HTTP头,用于指示资源的媒体类型,在响应的情况下,它告诉浏览器返回内容的实际内容类型。

相关问题