gpt4 book ai didi

curl - 如何使用 REST API 在 swiftUI 中正确实现 OpenAI API?

转载 作者:行者123 更新时间:2023-12-02 05:48:02 24 4
gpt4 key购买 nike

我目前在 swiftUI 中使用 Alamofire 制作了一个 REST API。该请求是此 URL 的 post 方法:https://api.openai.com/v1/engines/text-davinci-002/completions ,这基本上是向 OpenAI API 发送一个问题,应该得到 JSON 格式的答案。我在 OpenAI 中制作了一个 API key 并将其包含在我的代码中。

我面临的问题是,在获取输入时,我收到以下错误:

错误:响应状态代码 Not Acceptable :400。

我首先尝试确定我的 API key 是否正确并且是正确的。我还尝试查看 cURL 语句是否可以检查 URL 是否有错误。
我使用了这个 cURL 语句:

curl -X POST \
https://api.openai.com/v1/engines/text-davinci-002/completions \
-H 'Authorization: Bearer my-api-key' \
-H 'Content-Type: application/json' \
-d '{
"prompt": "What is quantum mechanics?",
"temperature": 0.7,
"max_tokens": 20,
"top_p": 1,
"frequency_penalty": 0,
"presence_penalty": 0
}'

哪个工作正常并给了我正确的输出:

{"id":"cmpl-6hhWBlzZHrLtV4RKCtjL63CLoTvPi","object":"text_completion","created":1675873407,"model":"text-davinci-002","choices":[{"text":"\n\nQuantum mechanics is a branch of physics that studies the behavior of matter and energy in the","index":0,"logprobs":null,"finish_reason":"length"}],"usage":{"prompt_tokens":5,"completion_tokens":20,"total_tokens":25}}

如果有帮助,这是我的代码:

//
// chat.swift
// titan
//
// Created by Refluent on 08/02/2023.
//

import SwiftUI
import Alamofire

struct Message: Hashable {
let sender: String
let content: String
}

struct OpenAIResponse: Decodable {
let completions: [Completion]

struct Completion: Decodable {
let text: String
}
}

struct chatView: View {
@State private var response: String = ""
@State private var messages: [Message] = []
@State private var userInput: String = ""

let apiKey = "my-api-key"
let model = "text-davinci-002"

var body: some View {
VStack {
Text("Response from OpenAI API:")
List(messages, id: \.self) { message in
Text("\(message.sender): \(message.content)")
}

TextField("Enter your question", text: $userInput)
.padding()

Button(action: {
self.sendRequest()
}) {
Text("Send")
}
}
}

func sendRequest() {
let headers: HTTPHeaders = ["Authorization": "Bearer \(apiKey)", "Content-Type": "application/json"]

let parameters: Parameters = ["prompt": userInput, "model": model]

messages.append(Message(sender: "Me", content: userInput))
userInput = ""

AF.request("https://api.openai.com/v1/engines/text-davinci-002/completions", method: .post, parameters: parameters, headers: headers)
.validate()
.responseDecodable(of: OpenAIResponse.self) { response in
switch response.result {
case .success(let value):
let text = value.completions[0].text
self.messages.append(Message(sender: "ChatGPT", content: text))
case .failure(let error):
self.messages.append(Message(sender: "ChatGPT", content: "Error: \(error.localizedDescription)"))
}
}
}
}

有关我的代码的更多上下文,这里是:

我正在向 this URL 发送帖子请求,然后获取输出并将其与原始输入一起保存在一个数组中。输入和输出随后显示为聊天。

有谁知道我为什么收到这个错误?我是否遗漏了代码中的关键部分?

提前致谢。

最佳答案

您正在将 model 作为参数发送到引擎 url(特定于模型)。尝试发布到 https://api.openai.com/v1/completions。无论如何,特定于引擎的端点已被弃用,因此最好立即更新您的调用。

关于curl - 如何使用 REST API 在 swiftUI 中正确实现 OpenAI API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75389044/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com