4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

はじめての記事投稿

OpenAI の API を TypeScript から使ってみた【ChatGPT】

Last updated at Posted at 2023-07-08

概要

この記事は、OpenAI の API を使用する方法を紹介します。
API にリクエストを行うための事前登録のやり方と、API の使い方について解説します。

リクエストとレスポンスの長さにもよりますが、このページで叩いたときの利用料金は、$0.00005 ぐらいでした。安くて個人開発でも無理なく利用できます。

事前準備

支払い方法を登録する

OpenAI の API を利用するためには、支払い方法を登録する必要があります。
アカウント設定の こちらの Billing overview から支払い方法を設定しましょう。
register_billing_method.png

API キーを発行する

次に API キーを発行する必要があります。
API キー発行ページから発行をしましょう!
API キーはリクエストを送信するときに使います。

一度しか見ることができないのでコピペをしておきましょう!

create_api_key.png

任意:利用上限を設定する

使いすぎないように、アカウント設定の利用上限ページから利用上限を設定するといいと思います。このあたり、とても親切ですね。(たまに AWS で十数万円請求されている人とかいますよね。)
set_usage_limit.png

実際に API を叩いてみた

今回は GPT に俳句を読ませてみました。
出力された俳句は 5-11-7 の字余りすぎる句になってしまいました。この句の良さは全くわかりません。

HTTP 401 が返ってくるときは、API キーが間違っている可能性があります。取得した API キーを 1 行目に設定することを忘れないでください。

OpenAI API を叩くコード
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-4gpt-3.5-turbo などが使用可能です。
messages 送信する会話を表す配列です。 発言者を表す role とその発言内容 content を指定できます。

role には主に systemuserassistant を指定できます。
messages は、この 3 人の会話を書くことになります。
ChatGPT を使うときは、自分(user)と ChatGPT(assistant)だけなので、system が見慣れないと思います。

項目 説明
system API を使用するサーバーなどのシステムです。
user システムを利用するユーザーです。
assistant GPT などの AI です。

レスポンスの解説

レスポンスで重要なのは、choices です。choices がリクエストの messages に対する返答になります。
AI が回答しているので、role はもちろん assistant になります。

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?