前回は、ChatGPTの概要を一通り解説しました。今回は、ChatGPTの使い方や、上手に活用するために押さえておきたいプロンプトエンジニアリングの要素、ChatGPT APIを活用したVSCodeの拡張機能、ChatGPT APIの実装例について、実際にChatGPTを使いながら説明していきます。
→連載「ChatGPT入門 - 初めてのAIチャット活用」の過去回はこちらを参照。
ChatGPTは今のところ無料で利用できる
ChatGPTでは、有料版の「ChatGPT Plus($20/月)」も提供されていますが、現状、無料での利用も可能です(2023年3月現在)。ChatGPT Plusには「アクセスが集中しているときでも利用可能となる」「質問応答時間が早くなる」「新機能へ優先的にアクセスできる」といった利点があります。しかし、ChatGPTがどのようなものか少し試してみたい、という程度であれば無料版で十分でしょう。
まずは使ってみよう
ChatGPTを利用するためには、OpenAIのアカウントが必要となります。まずはアカウントを作成します。
ChatGPTの紹介ページへアクセスし、「TRY CHATGPT」を選択します。
「Sign up」を選択します。
メールアドレスを使用する場合は、メールアドレスを入力し「Continue」を選択します。続いてパスワードを入力し「Continue」を選択します。
登録したメールアドレス宛にOpenAIから確認メールが届くため、メール文面に従い「Verify email address」を選択し、アカウント作成を完了します。
アカウント作成後、ログイン画面からログインすると、質問を入力する画面が表示されます。まずは何か質問をしてみましょう。ここではChatGPTの使い方を質問してみます。
今回は以下のような回答が返ってきました。だらだらと長い文章でなく箇条書きで回答してくれており、簡潔さも備えた分かりやすい回答となっています。回答に対して続けて質問することや、新たなチャットを作成して別の質問をすることができます。また応答時間は、質問の内容やサービスの混雑具合によって異なります。
コレだけは押さえておこう「プロンプトエンジニアリング」
察しの良い方は既にお気づきかもしれませんが、ChatGPTが生成する文章は質問の仕方によって変わります。言い換えると、質問の仕方を工夫することで、ChatGPTによる回答の内容や質を向上させられるのです。
ChatGPTのようなGenerative AI(生成AI)は、テキスト入力をインタフェースとして持っています。このAIに入力するテキストを「Prompt(プロンプト)」と呼びます。そして、人間が望む回答を得るために生成AIへ与えるプロンプトを工夫することを、「Prompt Engineering(プロンプトエンジニアリング)」と呼びます。
プロンプトエンジニアリングの定義や体系についてはさまざまな議論がありますが、重要な要素としては以下の3つがあります。
- 要素①:AIへ質問や指示する内容
- 要素②:背景・補足情報
- 要素③:出力条件
ChatGPTを利用する際には、これらの要素を考慮してプロンプトを適切に設計することで、回答結果の方向性や品質をコントロールします。さらには、必要に応じて後続のプロンプトで要素を追加することも可能です。このような工夫を施すことで、自身が期待する回答が得られる可能性を高めることができます。
例えば「新鮮なイチゴを売りとしたアイスクリーム店のキャッチコピーを15文字以内で作成してください」というプロンプトは上記の要素①②③を含んでおり、以下の通り分解されます。
- 要素①:アイスクリーム店のキャッチコピーを作成する
- 要素②:アイスクリーム店は新鮮なイチゴを売りとしている
- 要素③:15文字以内で作成する
まずは、アイスクリーム店のキャッチコピーに関する回答が、要素①②③の有無によってどのように変わるか見てみましょう。
- 質問1-1(要素①「AIへの質問や指示する内容」のみ)
アイスクリーム店のキャッチコピーを作成してください。
- 回答1-1
「毎日のハッピーにアイスクリームで彩りを!」
- 質問1-2(要素②「新鮮なイチゴを売りとしているという背景・補足情報」や、要素③「15文字以内であるという出力条件」を追加)
新鮮なイチゴを売りとしたアイスクリーム店のキャッチコピーを15文字以内で作成してください。
- 回答1-2
「イチゴ尽くしのアイスクリーム!」
- 質問1-3(後続プロンプト(質問)で、要素②「日本初出店という背景・補足情報」を新たに追加)
他の例を教えてください。なおこのアイスクリーム店は日本初出店です。
- 回答1-3
「日本初! いちご尽くしアイス! 」
回答1-1ではどのお店にも通じるような20文字のキャッチコピーが生成されましたが、回答1-2では「新鮮なイチゴが売り」というお店の特徴を表現する15文字のキャッチコピーが生成されました。要素が増えることで、回答結果の品質が向上していることが分かります。
さらに回答1-3では、回答1-2を基に「日本初出店」という追加の特徴も含めた14文字のキャッチコピーが生成されました。後続のプロンプトで新たに追加された要素によっても回答結果の品質が変化しています。
PythonでFizzBuzz問題を解くコードを実装させてみる
次に、PythonコードでFizzBuzzの書き方を聞く例を基に、要素③の出力条件を与えることで想定するコードを返すようにする方法を紹介します。
- 質問2
FizzBuzz問題を解くコードを実装して。条件は以下の通り。
- Pythonを用いること
- なるべく少ない文字数で実装すること
- 回答2
FizzBuzz問題は、1から100までの数字を順番に出力するプログラムを作成する問題です。ただし、3の倍数の場合は "Fizz"、5の倍数の場合は "Buzz"、3と5の両方の倍数の場合は "FizzBuzz" と出力します。
例えば、最初の数値1から始まり、2、"Fizz"、4、"Buzz"、"Fizz"、7、8、"Fizz"、"Buzz"、11、"Fizz"、13、14、"FizzBuzz"、...と続いていきます。
以下がFizzBuzz問題のPython実装です。
for i in range(1, 101):
if i % 3 == 0 and i % 5 == 0:
print("FizzBuzz")
elif i % 3 == 0:
print("Fizz")
elif i % 5 == 0:
print("Buzz")
else:
print(i)
短く書くなら以下のようにも実装できます。
for i in range(1,101):print("Fizz"*(i%3==0)+"Buzz"*(i%5==0)or i)
このようにChatGPTに与える情報を工夫することで、自身が期待する結果を得られやすくなります。筆者は、近い将来、AIを上手に活用するための力として、AIからうまく回答を引き出す力、すなわちプロンプトエンジニアリングがより求められる時代が訪れるのではないかと推察しています。
ChatGPTをLinuxターミナルとして応答させてみる
最後に、プロンプトの面白い応用例として、ChatGPTをLinuxターミナルとして応答させてみましょう。まるでLinuxターミナルを触っているように応答してくれます(参考:Awesome ChatGPT Prompts)。
- 質問3-1
I want you to act as a linux terminal. I will type commands and you will reply with what the terminal should show. I want you to only reply with the terminal output inside one unique code block, and nothing else. do not write explanations. do not type commands unless I instruct you to do so. When I need to tell you something in English, I will do so by putting text inside curly brackets {like this}. My first command is pwd
- 回答3-1
/home/user
- 質問3-2
ls
- 回答3-2
Desktop Documents Downloads Music Pictures Public Templates Videos
VSCodeの拡張機能「ChatGPT」を使ってみよう
先ほどまではブラウザからChatGPTを使っていましたが、多くのエンジニアに利用されているエディタの一つである「VSCode(Visual Studio Code)」を使ってみましょう。VSCodeの拡張機能に「ChatGPT」というプラグインが公開されています。このプラグインではGPT-3などOpenAIが提供しているAPIを利用し、テストコードの生成、バグの発見など開発作業をサポートする機能を提供しています。
まずは以下の手順でAPI Keyの発行とVSCodeの設定をします。なお、執筆時点(2023年3月)では、OpenAIアカウント登録時にAPI使用料$18分のクレジット(有効期限3カ月間)が付与されます。最新情報はOpenAIの公式サイトをご確認ください。
API Key発行手順
- ChatGPTのサイトへログインし、右上のプロファイルアイコンを開き、「View API Keys」を選択する
- 「Create new keys」を選択し、API Keyを発行する
VSCode設定手順
- VSCodeの拡張から「ChatGPT」を検索し、「Install」をクリックする
- 歯車マークをクリックし、Extension Settingsを開く
- 「Chromium Path」と「Api Key」を設定する
設定完了後、適当なソースコードを開いて対象箇所を選択し、右クリックして使用する機能を選択します。すると、選択した機能に応じて、OpenAIのAPIへリクエストが送信されます。なお、デフォルト設定では学習モデルとして「gpt-3.5-turbo」が使用されます。学習モデルの特徴は、OpenAIのドキュメントで確認できます。
ここではChatGPTによって生成されたJavaのFizzBuzzソースコードを対象に、「ChatGPT:Optimize」を実行してみます。実行すると、次のような結果が返ってきました。
◆Optimize前のFizzBuzzソースコード
for(int i = 1; i <= 100; i++) {
if(i % 3 == 0 && i % 5 == 0) {
System.out.println("FizzBuzz");
} else if(i % 3 == 0) {
System.out.println("Fizz");
} else if(i % 5 == 0) {
System.out.println("Buzz");
} else {
System.out.println(i);
}
}
◆Optimize後のFizzBuzzソースコード
for(int i = 1; i <= 100; i++) {
System.out.println(i % 15 == 0 ? "FizzBuzz" : (i % 3 == 0 ? "Fizz" : (i % 5 == 0 ? "Buzz" : i)));
}
Optimize後のソースコードは三項演算子を利用しているため、リーダビリティ(可読性)が低くなっているように見受けられます。「Ask a question...」から続けてAPIを実行し、「リーダビリティを確保する」という条件を追加すると良いでしょう。
このように単純に最適化されたコードのみでなく、その理由も合わせて回答が来るため、利用者はより気付きを得やすそうです。また、他にもテストコードの生成など開発作業を便利にしてくれそうな機能がワンタッチで利用可能である点も、ツールを利用する上では重要だと思います。
ChatGPT APIを使ってみよう - 簡単な実装例
OpenAIは2023年3月1日にGPT-3.5系のモデル「gpt-3.5-turbo(ChatGPT API)」を新たに公開しました。今後、ChatGPT APIを活用したサービスが次々と登場することが予想されます。
ここで、ChatGPT APIの簡単な実装例として、任意の質問をして受け取った回答を表示するサンプルコードをご紹介しましょう。サンプルコードは、以下の手順で動作させることができます。
- Google Colaboratoryを開き、「ノートブックを作成する」を選択する
- サンプルコードのopenai.api_keyに取得したAPIキー、promptに質問を入力し、実行する
興味を持たれた方は、OpenAIが公開しているガイドやAPIリファレンスを確認し、さらに理解を深めると良いでしょう。
◆サンプルコード
!pip install openai
import openai
openai.api_key = "sk-xxx" #取得したAPIキー
prompt = "アイスクリーム店のキャッチコピーを作成してください。" #質問
completion = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": prompt}
]
)
res = completion.choices[0].message["content"]
print(res)
◆print(res)の出力結果
* * *
今回はChatGPTの基本的な使い方、良い回答を引き出すための工夫であるプロンプトエンジニアリング、ChatGPT APIを利用したVSCode拡張機能、ChatGPT APIの実装例について、実際にChatGPTを使いながら解説しました。
ChatGPTは上手に活用できればさまざまな場面で役立つことが想定されます。ただし、回答の信頼性は必ずしも高くないため、最終的には利用者による判断が必要です。また、今回は詳しく触れませんでしたが、ChatGPTが生成したソースコードの著作権に関する問題や議論も多くあります。これからの動向に注目したいところです。
次回は、ChatGPTの使いどころや、逆に利用に適さないケースをより深く紹介する予定です。お楽しみに!