高度な会話ができる会話AIの「ChatGPT」が話題となっています。ChatGPTは単に専用サイトで会話するだけでなく、APIが提供されており自作のアプリと組合せできるように工夫されています。思ったよりも簡単に実装できるので試してみましょう。
ChatGPTは何がすごい?
ChatGPTはOpenAIが開発した大規模言語モデルを利用した会話AIです。これまでも、さまざまな会話AIが存在しましたが、同じ言葉を繰り返すだけだったり、あらかじめ用意されたテンプレートから応答を返すだけだったりと単純なものでした。しかし、ChatGPTは、大量の文章データを学習していることから高い精度で会話ができるのが特徴です。
質問に対して高い精度で文章を生成できるだけでなく、翻訳や要約、プログラムの作成まで可能です。英語だけでなく複数の言語に対応しており日本語でも快適に利用できます。筆者が驚いたのは、プログラムを自動生成するだけでなく、データの整形や形式変換も難なくこなしてくれます。
例えば、あるCSVファイルをJSONファイルに変換したいとします。これまでは人間が簡単なプログラムを書いて変換するしかありませんでしたが、ChatGPTなら次のようにお願いするだけです。
以下のCSV形式のデータをJSON形式に変換してください。変換結果のJSONを整形して表示してください。
```
名前, 値段
バナナ, 300
リンゴ, 400
マンゴー,800
```
すると、次のように表示されます。完璧です。これまで、頑張って正規表現で変換することも多かったのですが、これからは、ChatGPTにお願いすれば一瞬で解決します。
もちろん、入力データ文字数に制限があるので、小さなデータ変換しか変換してくれませんが、変換プログラムを作成するように指示することもできます。
ChatGPTのAPIを自作アプリに組み込もう
そして、素晴らしいことに、ChatGPTにはそれを外部から利用するためのAPIが用意されています。APIとはプログラムやアプリケーションが他のプログラムやアプリケーションと相互作用するための仕組みです。つまり、APIを使えば、ChatGPTを自作アプリに手軽に組み込むことができます。しかも、REST APIであり比較的簡単に利用できます。
ただし、ChatAPIのAPIを使うには、以下のようにOpenAIのアカウントを作成し、APIキーを取得するという作業が必要になります。
- 1. OpenAIのアカウントを作成する
- 2. APIキーを取得する
まず、OpenAIのアカウントはこちらから作成できます。
そして、アカウントを作成したら、こちらのダッシュボードにアクセスします。そして、画面右上にある自身のユーザー名をクリックし、ポップアップしたメニューから「View API keys」をクリックします。
そして「Create new secret key」のボタンをクリックするとAPIキーが作成されます。このAPIキーは一度限り表示されるので、キーを作成したら大切にメモしておきましょう。大切なキーが流出しないようパスワードマネージャーなどに保存しておくと良いでしょう。もしキーを紛失してしまったら一度キーを削除して改めて作成します。
ChatGPTをサイコロとして使うプログラムを作ってみよう
今回は、Node.jsを利用してChatGPTのAPIにアクセスするプログラムを作ってみましょう。そのため、まず、Node.jsをインストールしている必要があります。
そして、ターミナルを開いてコマンドを入力して必要なライブラリをインストールします。ターミナルは、WindowsならPowerShell、macOSならターミナル.appのことです。
npm init -f
npm install openai
ここでは、一番簡単な例として、ChatGPTをサイコロとして使うプログラムを作ってみよう
そして、次のようなプログラムを作りましょう。以下のプログラムを「dice.js」という名前で保存してください。
// ライブラリを取り込む
const { Configuration, OpenAIApi } = require('openai')
// (ESモジュールの場合) import { Configuration, OpenAIApi } from "openai";
// APIキーを設定する(以下は書き換えが必要です★★★) --- (*1)
const API_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
// APIキーを設定したオブジェクトを生成
const openai = new OpenAIApi(new Configuration({ apiKey: API_KEY }))
// ChatGPTに対する指示を以下に記述する --- (*2)
const promptDice = 'あなたは六面体のサイコロです。' +
'ランダムな値を1つ出してください。値だけを表示してください。'
// ChatGPTを呼び出す --- (*3)
async function callAPI() {
const response = await openai.createCompletion({
model: 'text-davinci-003',
prompt: promptDice,
});
const answer = response.data.choices[0].text.trim()
console.log('サイコロの目=', answer)
}
callAPI()
まずは、プログラムの(*1)の部分を先ほど取得したAPIキーに書き換えます。そして、ターミナルで以下のコマンドを実行すると、プログラムが実行されます。
node dice.js
すると、1から6までのサイコロの目がランダムに表示されます。大規模言語モデルを使ったChatGPTをサイコロの代わりに使うなんて、かなり贅沢な使い方ですよね。
プログラムを確認してみましょう。(*1)ではAPIキーを指定します。