LoginSignup
8
9

More than 1 year has passed since last update.

【SwiftUI】ChatGPTと同じモデルで音声対話アプリをつくる。

Last updated at Posted at 2023-02-15

はじめに

最近、流行りのChatGPTを使ってみましたが、ChatGPTがコードレビューしてみたり、記事を書いたりと、自然言語生成モデルなどに詳しくない自分としては衝撃を受けました。

そんなChatGPTですが、ChatGPTが搭載しているのと同じ言語モデルであるGPT-3を、OpenAIのAPIから利用できるみたいです。(この記事を拝見するまでは、ChatGPTの認識がずれていました)
そのためこの記事では、ChatGPTのような対話を音声対話で実行できるようなiOSアプリを作る過程での、GPT-3との連携部分をまとめました。

下図は、「スウィフトで足し算する関数を教えて」の発話内容に対して、OpenAIのAPIからの返答として、実際のSwift言語の「足し算する関数」を受け取っている様子です。

※「Swift」で認識されず、「スウィフト」になっています。

GitHub

GPT-3との連携

冒頭でも述べましたが、ChatGPTと同じ言語モデルであるGPT-3をOpenAIのAPIを介して利用できます。
今回は、OpenAIのHTTP APIライブラリであるOpenAISwiftを利用して、GPT-3系の言語モデルを利用します。

1. OpenAIでAPI KEYの発行

まず、GPT-3を利用するために、「OpenAI - User - API Keys」の「+ Create new secret key」からAPI KEYを作成します。
pub_apikey.png

2. XcodeのSPMでOpenAISwiftをインポート

下記URLからOpenAISwiftをSPMでインポートします。
GitHub - OpenAISwift

3. OpenAISwiftの実装部分

まず、プロジェクト内にOpenAISwiftをインポートします。

import OpenAISwift

次に、引数authTokenに「1. OpenAIでAPI KEYの発行」にて発行したAPI keyを記述し、OpenAISwiftのインスタンスを作成します。

client = OpenAISwift(authToken: "ここにAPI KEY")

利用する際には、下記のように関数sendCompletionの引数に質問したいテキストtextと最大トークン数maxTokensを指定してください。

client?.sendCompletion(with: text, maxTokens: maxTokens, completionHandler: { result in
    switch result {
    case .success(let success):
        let text = success.choices.first?.text ?? ""
        break
        
    case .failure(let failure):
        break
    }
})

最後に

今回作ったアプリで「プログラマーが活躍する方法」について聞いてみました。

精進します。。
間違いなどありましたら、ご指摘いただければと思います。

参考URL

【音声録音】
【音声認識】
【音声合成】
【ChatGPT / GPT-3】
8
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9