SwiftUIの基本を身につけたい方はこちら

【Xcode/Swift】SwiftUIでChatGPTを使う方法

最近流行りのChatGPTのAPIをSwiftで叩いてみました。

完成

質問したら、数秒後に回答が返ってきます。

サンプルコード

前提として、SPMでOpenAISwiftをインポートしてください。

検索URLはこちら「https://github.com/adamrushy/OpenAISwift

次に、OpenAIのAPIのキーが必要になるので、こちらのサイトで[Create new secret key]ボタンを押してAPIキーを取得してください。取得したAPIキーはここにAPIキーを記載というところに置き換えてください。

import SwiftUI
import OpenAISwift

struct ContentView: View {
    @State private var inputText = ""
    @State private var messageArray: [String] = []
    
    private var client = OpenAISwift(authToken: "ここにAPIキーを記載")
    
    var body: some View {
        VStack(alignment: .leading) {
            ForEach(messageArray, id: \.self) { message in
                Text(message)
                Spacer()
            }
            HStack {
                TextField("ここに質問を入力", text: $inputText)
                Button("送信") {
                    send()
                }
            }
        }
        .padding()
    }
    
    func send() {
        guard !inputText.trimmingCharacters(in: .whitespaces).isEmpty else { return }
        messageArray.append("自分: \(inputText)")
        client.sendCompletion(with: inputText, maxTokens: 500, completionHandler: { result in
            switch result {
            case .success(let model):
                DispatchQueue.main.async {
                    let output = model.choices.first?.text ?? ""
                    self.messageArray.append("ChatGPT: \(output)")
                    self.inputText = ""
                }
            case .failure:
                break
            }
        })
    }
}