概要
この記事は、OpenAI の API を使用する方法を紹介します。
API にリクエストを行うための事前登録のやり方と、API の使い方について解説します。
リクエストとレスポンスの長さにもよりますが、このページで叩いたときの利用料金は、$0.00005 ぐらいでした。安くて個人開発でも無理なく利用できます。
事前準備
支払い方法を登録する
OpenAI の API を利用するためには、支払い方法を登録する必要があります。
アカウント設定の こちらの Billing overview から支払い方法を設定しましょう。

API キーを発行する
次に API キーを発行する必要があります。
API キー発行ページから発行をしましょう!
API キーはリクエストを送信するときに使います。
一度しか見ることができないのでコピペをしておきましょう!
任意:利用上限を設定する
使いすぎないように、アカウント設定の利用上限ページから利用上限を設定するといいと思います。このあたり、とても親切ですね。(たまに AWS で十数万円請求されている人とかいますよね。)

実際に API を叩いてみた
今回は GPT に俳句を読ませてみました。
出力された俳句は 5-11-7 の字余りすぎる句になってしまいました。この句の良さは全くわかりません。
HTTP 401 が返ってくるときは、API キーが間違っている可能性があります。取得した API キーを 1 行目に設定することを忘れないでください。
process.env.OPENAI_API_KEY = "<取得した API キーを設定する>"
import { Configuration, OpenAIApi } from "openai"
test("ChatGPT の API を呼び出す", async () => {
// 手順 2 で取得した API キーを設定する
const configuration = new Configuration({ apiKey: process.env.OPENAI_API_KEY })
// OpenAI のクライアントを初期化する
const openai = new OpenAIApi(configuration)
// リクエストを送信
const completion = await openai.createChatCompletion({
// 今回は言語モデル GPT 3.5 を使用する
model: "gpt-3.5-turbo",
// messages には ChatGPT に送信したい会話の内容を含める
messages: [
{ role: "system", content: "ユーザーが指定する単語を含めた俳句を一つ出力せよ" },
{ role: "user", content: "アパート" },
],
})
// レスポンスボディを JSON 形式の文字列に変換
const responseBody = JSON.stringify(completion.data)
// レスポンスボディを表示
console.log(responseBody)
})
レスポンスは JSON で返ってきます。返ってくるレスポンスはこんな感じです。
{
"id": "chatcmpl-XXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"object": "chat.completion",
"created": 1688776267,
"model": "gpt-3.5-turbo-0613",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "アパートの\n静かな夜を彩る\n一輪の花"
},
"finish_reason": "stop"
}
],
"usage": { "prompt_tokens": 42, "completion_tokens": 23, "total_tokens": 65 }
}
解説
リクエストの解説
今回リクエストに使った項目について解説します。
詳しくは、OpenAI API のリファレンスを御覧ください。
| 項目 | 説明 |
|---|---|
| model | 使用する AI のモデルを指定します。 gpt-4 や gpt-3.5-turbo などが使用可能です。 |
| messages | 送信する会話を表す配列です。 発言者を表す role とその発言内容 content を指定できます。 |
role には主に system、user、assistant を指定できます。
messages は、この 3 人の会話を書くことになります。
ChatGPT を使うときは、自分(user)と ChatGPT(assistant)だけなので、system が見慣れないと思います。
| 項目 | 説明 |
|---|---|
| system | API を使用するサーバーなどのシステムです。 |
| user | システムを利用するユーザーです。 |
| assistant | GPT などの AI です。 |
レスポンスの解説
レスポンスで重要なのは、choices です。choices がリクエストの messages に対する返答になります。
AI が回答しているので、role はもちろん assistant になります。
