準備
ChatGPTのアカウント登録
APIを使用するためにはChatGPTへのアカウント登録を行う必要があるので以下のリンクから登録します。
Googleアカウントからでもログインできるのでそっちの方が楽で早いです。
APIキーの取得
APIキーは以下のリンクから取得できます。
Create new secret key
ボタンを押すことでキーを生成することができます。
生成したAPIキーを再度確認することができないので必ずコピーをして安全な場所に保存してください。
ライブラリのインストール
ライブラリはpip
でもconda
でもインストールすることができます。
今回はopenai
という仮想環境を作成しその環境にインストールしていきます。
$ conda create -n openai
$ conda activate openai
$ pip install openai
$ conda install openai
以上で準備は終わりです。
APIを使ってみる
公式が出しているコードを使ってみます。
import os
import openai
# APIキーの設定
openai.api_key = "API Key"
# API部分
response = openai.Completion.crete(model="text-davinci-003", prompt="Say this is a test", temperature=0, max_tokens=7)
今回使用しているパラメータは以下の通りです。
- model
使用するモデルを指定するパラメータ。今回はGPT-3.5
モデルのtext-davinci-003
を指定しています。これはテキスト補完を行うモデルです。
使用できるモデルは以下のリンクで確認できます。
-
prompt
命令を行う文章を指定するパラメータ。ここにGPTにしてほしいことなどを引き渡す。
日本語での入力も可能だがレスポンスはUnicode
で出力されるので注意。
日本語の場合はUnicode
でレスポンスが返ってくるがprint
すると勝手にデコードされて出力される。 -
temperature
信頼度を示すパラメータ。0~1の間を取る。これは次に来るテキストの多様性を調節しています。0に近いほど無難な解答をして、1に近いほど多様な解答を行うことができます。 -
max_tokens
最大出力トークンの設定。モデルによって出力できる文章の量はこのパラメータで制御します。モデルによって出力できる最大トークン数は決まっており、以下のリンクから確認できます。
トークンの数え方については以下のリンクから確認できます。
今回使用したパラメータ以外のパラメータについては以下のリンクを参考にしてみてください。
response
の中身はこんな感じになっています。
{
"choices": [
{
"finish_reason": "length",
"index": 0,
"logprobs": null,
"text": "\n\nThis is indeed a test"
}
],
"created": 1679146915,
"id": "cmpl-6vR6hz16Wo1l3YfyWfTiht194b7e0",
"model": "text-davinci-003",
"object": "text_completion",
"usage": {
"completion_tokens": 7,
"prompt_tokens": 5,
"total_tokens": 12
}
}
いくつか項目がありますが今回指定したモデルで入力されたプロンプトに対する返答はchoices
のtext
部分となっています。
これはモデルによってレスポンスが異なるので以下のリンクより確認する必要があります。
次にプロンプトを好きって言って
という日本語の文章に変更してみます。またmax_tokens
を20にして実行してみます。
response = openai.Completion.crete(model="text-davinci-003", prompt="好きって言って", temperature=0, max_tokens=7
レスポンスは以下の通りです。
{
"choices": [
{
"finish_reason": "length",
"index": 0,
"logprobs": null,
"text": "\u304f\u308c\u305f\n\n\u305d\u308c\u306f\u3068\u3066\u3082\u5b09\u3057\u3044\u3067\u3059"
}
],
"created": 1679148460,
"id": "cmpl-6vRVc2rxz9y4Ck8WNMvwrxniifpAm",
"model": "text-davinci-003",
"object": "text_completion",
"usage": {
"completion_tokens": 7,
"prompt_tokens": 10,
"total_tokens": 17
}
}
text
の部分がUnicode
で出力されています。
\u304f\u308c\u305f\n\n\u305d\u308c\u306f\u3068\u3066\u3082\u5b09\u3057\u3044\u3067\u3059
↑のUnicode
は日本語に直すとくれた それはとても嬉しいです
となります。これを元の文章とくっつけると以下のようになります。
好きって言って くれた
それはとても嬉しいです
いい感じにテキストを補完してくれた気がしますね。
今回はテキスト補完であるモデルを使用しましたが、他にも使える機能がたくさんあるので時間があったら随時更新してみようと思います。