こんにちは、みなさん!
前回の記事「はじめてのOpenAI API入門」でOpenAI APIを動かせる準備は整いましたね!今回は実際にAPIを動かしてみましょう♪
APIの種類
APIには2つの種類があります:Chat Completions APIとAssistants APIです。
この2つの違いは、会話が単発か継続かという点です。Chat Completions APIは1回きりの回答ですが、Assistants APIでは作成したスレッド上で会話を続けることができます。
今回はChat Completions APIの動かし方を解説します。
Chat Completions APIの構成
Chat Completions APIの構成は以下の通りです。
- model: 使用するモデルを指定します
-
messages
-
role: contentの役割で、以下のいずれかの値を持ちます
- system: ChatGPTのCustom instructionsに相当
- user: ChatGPTを使うユーザーに相当
- assistant: ChatGPTの回答に相当
- tool: 関数呼び出しの結果、toolsパラメーター使用時に使います
- content: プロンプトや回答
-
role: contentの役割で、以下のいずれかの値を持ちます
messagesの配列にはChatGPTとのやり取りを時系列で入力し、最後のmessageに対する回答が返ってきます。
APIを動かす方法
APIを動かす方法にはPlaygroundと自作のプログラムの2つがあります。
Playgroundで動かす方法
- メニューからPlaygroundのChatを選択します。
- 下部の入力欄でuserを選択してプロンプトを入力します。
- 今度はassistantを選択して回答を入力します。
- 続いてuserを選択してプロンプトの入力が終わったらrunボタンをクリックします。
- プロンプトに対する回答が生成されました。
- 右上の
</>
をクリックすると実行されたコードを確認できます。
自作のプログラムで動かす方法
Playgroundで動かした際のコードをPythonで実行してみましょう。
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": "2007年に日本一になった球団は?"
}
]
},
{
"role": "assistant",
"content": [
{
"type": "text",
"text": "中日ドラゴンズです。"
}
]
},
{
"role": "user",
"content": [
{
"type": "text",
"text": "どの球場で決まりましたか?"
}
]
}
],
temperature=1,
max_tokens=256,
top_p=1,
frequency_penalty=0,
presence_penalty=0
)
実行結果は以下の通りです。
{
"id": "chatcmpl-9YuSbE65my4yR3nYl2OPSNKxmTR91",
"choices": [
{
"finish_reason": "stop",
"index": 0,
"logprobs": null,
"message": {
"content": "2007年の日本シリーズで中日ドラゴンズが日本一を決めた試合は、ナゴヤドーム(現在のバンテリンドーム ナゴヤ)で行われました。",
"role": "assistant",
"function_call": null,
"tool_calls": null
}
}
],
"created": 1718107213,
"model": "gpt-4o-2024-05-13",
"object": "chat.completion",
"system_fingerprint": "fp_319be4768e",
"usage": {
"completion_tokens": 46,
"prompt_tokens": 44,
"total_tokens": 90
}
}
messageのcontentに回答が含まれていることが確認できます。usageをみるとトークン数も確認できます。
まとめ
Chat Completions APIの基本構造を理解していただけましたか? PlaygroundとPythonから簡単に動かすことができましたね。Chat Completions APIにはパラメータがたくさんあります。次回以降でパラメータについて解説していきます。
何か質問があれば、コメントで教えてくださいね。それでは、次回の記事もお楽しみに!