I’m trying to create a page on my iOS app that lets me talk to the gpt-3.5-turbo model. I want to give the model some background info about a specific topic and have it answer using that info. I tried this by just talking to the public ChatGPT bot, and had to talk back-and-forth and correct it on a few things to make sure it was accurate. I’ve heard that I can use fine-tuning to do this for OpenAI models but that it isn’t available on gpt-3.5 yet, and that the models it is available on will lose support soon. Is there any other way to accomplish this fine-tuning for gpt-3.5/gpt-3.5-turbo? Attached is a screenshot of how I’m currently calling the API in Swift.
private func sendMessage() {
print("Start...")
chatHistory.append("You: \(userInput)\n")
chatHistory.append("Asking bot...\n")
guard !userInput.isEmpty else { return }
// Replace 'YOUR_API_ENDPOINT' with the actual ChatGPT API endpoint URL
let apiEndpoint = "https://api.openai.com/v1/engines/text-davinci-003/completions"
// Replace 'YOUR_API_KEY' with the actual API key (if required by the API)
let apiKey = ""
// Rest of the code to make API request and update chatHistory with the response
guard let url = URL(string: apiEndpoint) else {
print("Invalid API endpoint URL.")
return
}
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("Bearer \(apiKey)", forHTTPHeaderField: "Authorization")
let requestBody = ["prompt": userInput, "max_tokens": 1000] as [String : Any]
userInput = ""
guard let jsonData = try? JSONSerialization.data(withJSONObject: requestBody) else {
print("Error serializing request body.")
return
}
request.httpBody = jsonData
let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
if let error = error {
print("Error: \(error.localizedDescription)")
return
}
print("Before parsing data...")
if let data = data {
do {
let jsonResponse = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]
let choicesArray = jsonResponse?["choices"] as? [Any]
let choicesDic = choicesArray?[0] as? [String: Any]
if let text = choicesDic?["text"]{
print("Value is: \(text)")
//outputText = (text as? String ?? "")!
var outputText = text as? String ?? ""
outputText = outputText.trimmingCharacters(in: .whitespacesAndNewlines)
print(text)
print(outputText)
// Clear the userInput field after sending the message
chatHistory.append("\nBot: \(outputText)\n\n")
}
} catch {
print("Error parsing JSON: \(error)")
}
}