ChatGPT API

ChatGPT のチャット機能を使っている人は多いと思いますが、ChatGPT API を使うと、ブラウザ上で行うチャット形式ではなく、プログラムから ChatGPT を動作させて生成AIを組み込んだシステムを作ることができます。

 

アカウント登録

ChatGPT API を利用するには、アカウント登録から3ヶ月間は一定のデータ量制限まで無料でAPIが使えます。ChatGPT の通常のアカウントを登録して、チャット機能を試しているうちに3ヶ月経ってしまった場合は無料枠を使えませんので注意してください。無料期間の後は、有料(月額20ドル)の ChatGPT Plus に登録する必要があります。 (クレジットカードを登録して一定の額を支払えばその枠の中で従量課金されるようです。)

アカウント登録は次のページに進みます。

Just a moment...

“Start building” に進んで下さい。

“Sign up” に進むとアカウント登録ができます。

 

ChatGPT のキー取得

アカウント登録ができたら、先程の画面で “Sign up” の隣りにある “Log in” からログインし、さらに “Dashboard” に進みます。

画面左のメニューに “API keys” があります。

“Create new secret key” というボタンを押すと新しい API キーを作ることができます。キーは Project に紐づけされますので、既存のプロジェクトを指定するか、新しいプロジェクト名を入力して下さい。キーの値は一度しか表示されませんのでコピーしてパソコンに保存し、他者に不正利用されないようにしっかり管理してください。

 

curl コマンド

さっそく API 経由で ChatGPT を動かしてみます。まずはターミナルから curl コマンドを試してみましょう。

API キーは環境変数にセットして参照するようにします。

curl コマンドはこのように書きます。環境変数を使わずに ${OPENAI_API_KEY} のところにその値を直接書いても動作します。

実行します。

ちゃんと ChatGPT が回答を返してきたことが確認できました。15行目がそれです。

 

Python で ChatGPT API を使ってみる

次は Python でプログラムを書いて ChatGPT API を使ってみます。使う環境は Windows なら WSL、Mac ならターミナルが良いと思います。あるいは、API の動作をテストするだけなら Jupyter Notebook を使うのも良い選択ですが、ここでは説明を省略します。

Python で何か新しいことを始めるときは専用の Python 環境を作ってから始めるのが定番ですのでそのようにします。

この環境に OpenAI のライブラリをインストールします。

API キーはプログラムの中には書かずに、curl コマンドのときにやったように環境変数にセットして、プログラムからはその環境変数を読み込みます。そうすることで、万一プログラムのソースコードが流出しても API キーを守ることができます。

次のプログラムをサンプルとして使います。12行目で、ChatGPT に対して日本語で Hello と言うように投げかけています。ファイル名は test.py としました。

プログラムを走らせてみます。

ちゃんと答えてくれました。

 

“role”: “system”

messages という引数に “role” を “system” と指定することで回答者のキャラクターを設定できます。ChatGPT に バカボンパパになってもらいましょう。chat_completion のところだけを変更していきます。

ChatGPT は天才バカボンのことを知らないようなので少し教えてやります。

もう一息ですね。

バカボンパパらしくなりました。

 

“role”: “assistant”

“assistant” という “role” は ChatGPT の人格(?)を表します。もう一度バカボンパパに登場してもらいます。

バカボンパパと往復の会話が成立しましたが、この会話をもっと続けたい場合は “role”: “assistant” に先程の ChatGPT の回答を埋め込んで会話を続けることができます。

過去の会話を受けた回答ができていますね。

 

gpt-4o は競プロの問題を解けるか

2024年5月14日、OpenAIはマルチモーダルAIモデル GPT-4o を発表しました。音声・画像・映像を組み合わせた処理を高速で実行できます。

画像に写っているものを説明させるようなデモが可能になりますが、ここではAtCoderの競プロ問題のスクショを入力として答えを出せか試してみました。解かせた問題はこれです。

A - Buildings
AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.

このままでも問題ないかもしれませんが、英語表示に切り替えてスクショを取りました。

プログラムは次の通りです。スクショはファイル名を atcoder.jpg とし、base64エンコードする前処理を行ってからChatGPTに渡しています。モデルは gpt-4o を指定します。プロンプトも英語で書きました。

ChatGPT の回答はこの様になりました。

”’ で挟まれた部分をコピーしてAtCoderに提出すると見事正答しました。

エンジニアの一人としては、これから仕事がなくなるのではないかと、末恐ろしくなります。ただし、もっと難しい問題には正答できませんでした。ChatGPTの競プロerとしての実力は、今のところ初級レベルのようです。