adamrushy / OpenAISwift

This is a wrapper library around the ChatGPT and OpenAI HTTP API
MIT License
1.6k stars 242 forks source link

Got a blank message response from Chatgpt #137

Open wutaiyi0129 opened 1 week ago

wutaiyi0129 commented 1 week ago
import OpenAISwift
import SwiftUI

final class ViewModel: ObservableObject {
    init(){}
    private var client: OpenAISwift?

    func setup(){
        client = OpenAISwift(config: OpenAISwift.Config.makeDefaultOpenAI(apiKey: "key"))
    }

    func send(text: String, completion: @escaping (String) -> Void) {

        client?.sendCompletion(with: text, maxTokens: 500, temperature: 0.7, completionHandler: { result in
            switch result {
            case .success(let model):
                let output = model.choices?.first?.text ?? "blank message"
                print(model)
                completion(output)
            case .failure:
               break
            }
        })3
    }
}

struct ContentView: View {
    @ObservedObject var viewModel = ViewModel()
    @State var text = ""
    @State var models = [String]()

    var body: some View {
        VStack(alignment: .leading) {
            ForEach(models, id: \.self) { string in
                Text(string)
            }
            Spacer()
            HStack {
                TextField("在此輸入", text: $text)
                Button("送出") {
                    send()
                }
            }

        }
        .onAppear {
            viewModel.setup()
        }
        .padding()
    }

    func send() {
        guard !text.trimmingCharacters(in: .whitespaces).isEmpty else {
            return
        }
        models.append("Me: \(text)")
        viewModel.send(text: text) { response in
            DispatchQueue.main.async {
                self.models.append("ChatGPT: \(response)")
                self.text = ""
            }
        }
    }
}

#Preview {
    ContentView()
}