ChatGPT API入門#
ここでは ChatGPT API Reference を参考に、Pythonの公式バインディングを使ってAPIを利用します。
環境設定#
Pythonの公式バインディングをインストールします。
pip install openai
API key の環境変数を設定します。
Jupyter環境から実行する場合は次のマジックコマンドを実行します。
%env OPENAI_API_KEY=sk-xxx
Note
sk-xxx
はAPI keyを指します。ご自身のものに置き換えて実行してください。
Pythonスクリプトから実行する場合は次のコマンドを実行します。
export OPENAI_API_KEY="sk-xxx"
VS Codeのワークスペースで環境変数を設定するには、ワークスペースのディレクトリに .env
ファイルを作成し、環境変数を設定します。
OPENAI_API_KEY="sk-xxx"
.vscode/settings.json
に次のエントリを追加します。
{
"python.envFile": "${workspaceFolder}/.env"
}
Models#
Modelsではモデルのリストや基本情報を確認します。
List models ではどのモデルが利用可能かを確認します。
import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
model_list = openai.Model.list()
model_list.get("data")[0]
<Model model id=babbage at 0x7f9278f50680> JSON: {
"created": 1649358449,
"id": "babbage",
"object": "model",
"owned_by": "openai",
"parent": null,
"permission": [
{
"allow_create_engine": false,
"allow_fine_tuning": false,
"allow_logprobs": true,
"allow_sampling": true,
"allow_search_indices": false,
"allow_view": true,
"created": 1669085501,
"group": null,
"id": "modelperm-49FUp5v084tBB49tC4z8LPH5",
"is_blocking": false,
"object": "model_permission",
"organization": "*"
}
],
"root": "babbage"
}
Retrieve model ではモデルの基本情報を確認します。
openai.Model.retrieve("text-davinci-003")
<Model model id=text-davinci-003 at 0x7f9278698630> JSON: {
"created": 1669599635,
"id": "text-davinci-003",
"object": "model",
"owned_by": "openai-internal",
"parent": null,
"permission": [
{
"allow_create_engine": false,
"allow_fine_tuning": false,
"allow_logprobs": true,
"allow_sampling": true,
"allow_search_indices": false,
"allow_view": true,
"created": 1683141911,
"group": null,
"id": "modelperm-0BY5Vvyou9mtLXyeOVqfTKGl",
"is_blocking": false,
"object": "model_permission",
"organization": "*"
}
],
"root": "text-davinci-003"
}
Completions#
Completionsでは prompt
に与えられた内容を補完します。
ここでは Create completion を使って prompt
に曜日の文字列を与えて補完しています。
openai.Completion.create(
model="text-davinci-003", prompt="Sunday Monday", max_tokens=7, temperature=0
)
<OpenAIObject text_completion id=cmpl-7EEA8kNMN7kQTnDJX6o2yENCJiZG0 at 0x7f9278e3f4c0> JSON: {
"choices": [
{
"finish_reason": "length",
"index": 0,
"logprobs": null,
"text": " Tuesday Wednesday Thursday Friday Saturday\n\n"
}
],
"created": 1683625388,
"id": "cmpl-7EEA8kNMN7kQTnDJX6o2yENCJiZG0",
"model": "text-davinci-003",
"object": "text_completion",
"usage": {
"completion_tokens": 7,
"prompt_tokens": 2,
"total_tokens": 9
}
}
prompt
には複数渡せます。大量のデータがある場合はAPIを使うことでまとめて処理できます。
completion_result = openai.Completion.create(
model="text-davinci-003",
prompt=["Sunday Monday", "January February"],
max_tokens=7,
temperature=0,
)
for choice in completion_result.get("choices"):
print(choice.text)
Tuesday Wednesday Thursday Friday Saturday
March April May June July August September
Chat#
Chatはメッセージを与えると応答を返します。
ここでは Create chat completion を使って、俳句を読んでもらいます。
role
には system
、 user
、 assistant
のいずれかを指定します。
chat_completion_result = openai.ChatCompletion.create(
model="gpt-3.5-turbo", messages=[{"role": "user", "content": "梅雨にちなんだ俳句を読んでください"}]
)
chat_completion_result.choices[0].message["content"].split("\n")
['雨降りに\u3000蛍の光も\u3000淋しげな',
'',
'夕立の\u3000路地を走る\u3000小さな猫',
'',
'雨風に\u3000鈴虫の鳴き声\u3000寂しげに',
'',
'涼しさを\u3000甦らせる梅雨\u3000鯨の波',
'',
'小鳥の巣\u3000雨水も入りて\u3000きらめく如く',
'',
'湿気に\u3000包まれた草木\u3000密やかなる',
'',
'濃い霧に\u3000森の野鳥の\u3000羽音かな',
'',
'すすき葺き\u3000古き屋根の\u3000音もせず',
'',
'夜の静けさ\u3000雪解けの\u3000街路かな',
'',
'カエルの唄\u3000聴きながら寝る\u3000梅雨夜かな',
'',
'雲に揺れ\u3000白鳥の姿を\u3000探る心',
'',
'熱帯夜に\u3000時々打つ雷\u3000ほっとする',
'',
'虫の音に\u3000眠れぬ夜は\u3000つごもりして',
'',
'秋近し\u3000草木の息吹\u3000ひたひたと',
'',
'蛙鳴くや\u3000草の戸の外の\u3000水たまり',
'',
'こんな雨の\u3000夜でも明日に\u3000期待したい',
'',
'鳥のさえずりに\u3000夜明けの梅雨かな',
'',
'夕暮れに\u3000沼の蓮が\u3000冴えやかに',
'',
'茜雲\u3000崩れゆく\u3000梅雨晴れ',
'',
'湿った土に\u3000咲くあじさい\u3000神秘の色',
'',
'鳴いていれば\u3000寝かせない猫の\u3000梅雨場所',
'',
'洗濯物\u3000二度干ししても\u3000おえない梅雨']