0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OpenAI の o3-mini の API を Node.js でシンプルに試す

Last updated at Posted at 2025-02-08

OpenAI の o3-mini の API の利用に関して、記事執筆時点では、リリース直後と同様に「tier 3 から tier 5 のユーザーのみ利用可能」となっています。

↓こちらは、公式のヘルプセンターからの抜粋です。
●API access to o1 and o3-mini | OpenAI Help Center
https://help.openai.com/en/articles/10362446-api-access-to-o1-and-o3-mini

image.png

はじめに

以下の記事の中でも話題に出していた、OpenAI の「o3-mini の API」に関する話です。

●OpenAI o3-mini を API で利用しようとした話(利用できていない原因も記載)と tier 1 を tier 3 にした課金の話 - Qiita
https://qiita.com/youtoy/items/f0c3ce457c52fe18733e

o3-mini が発表された後、tier 3 にしていた自分のアカウントで、ようやく o3-mini の API を使えるようになったのでサクッと試してみたのですが、その時の流れのメモという感じの記事です。

API を使えたことの確認

今回のお試しをやってみた際、OpenAI のアカウントのダッシュボードのページ(Usage の activity)で、履歴から o3-mini の API が使われているかを念のため確認しています。

その時のポストは以下です。

API の利用履歴の中で、「o3-mini-2025-01-31」を使った履歴が出ているのが分かります。

試してみる

参照元

今回のお試しで参照する情報は、以下の公式のページです。

●Reasoning models - OpenAI API
https://platform.openai.com/docs/guides/reasoning

2025-02-05_23-16-06.jpg

このページ冒頭のクイックスタートで、curl・Python・JavaScript のサンプルを見ることができます。

それらのサンプルの中の「JavaScript のサンプル」を元にして、今回のお試しをやってみます。

2025-02-05_23-16-51.jpg

またモデル名・それついて書かれた公式ページに関する情報は、上で掲載していた記事の「o3-mini を API で試そうとして調べた情報」という部分で書いているため、ここでは省略します。

お試し用のコード

今回、公式の JavaScript のサンプルを使いますが、そこで利用されている以下のパッケージを用います(npmコマンドでインストールしておきます)。

●openai - npm
 https://www.npmjs.com/package/openai

また、上記を使う場合に APIキーを「OPENAI_API_KEY」という名称の環境変数に保存しておけば、それを勝手に参照してくれるようになっています。

今回は、その環境変数を使う部分で、以下の記事で書いていた Node.js標準の機能を使ってみています。

●【小ネタ】Node.js v21.7.0 の新機能で環境変数用のファイル読みこみを軽く試す: process.loadEnvFile() - Qiita
 https://qiita.com/youtoy/items/ae838cacd43b3c3e61e1

以前も OpanAI の API を試す際に、試しに使ったことがあるものです

実装した内容

まず、実装した内容は以下のとおりです。

今回の実装では、環境変数の読み込み・利用の処理順の関係で、 process.loadEnvFile("./development.env");const openai = new OpenAI(); よりも前に書いてある必要があるので、ご注意ください。

import OpenAI from "openai";

process.loadEnvFile("./development.env");
const openai = new OpenAI();

const prompt = `
【プロンプト】
`;

const completion = await openai.chat.completions.create({
  model: "o3-mini",
  reasoning_effort: "medium",
  messages: [
    {
      role: "user",
      content: prompt,
    },
  ],
  store: true,
});

console.log(completion.choices[0].message.content);

ファイルを使った環境変数の設定

今回のやり方における環境変数は、「development.env」という名前のファイルの中に書く形になります。具体的には、以下のようにしています。

development.env
OPENAI_API_KEY="【自身の APIキー】"

このファイルがある場所で、nodeコマンドを使ってプログラムを実行すると、APIキーを使った o3-mini の API経由での利用が行えます。

環境変数の設定

APIキーの環境変数への設定については、もちろんコマンドなどによる一時的な設定なども利用可能です。

例えば、OpenAI 公式のクイックスタート内の「Create and export an API key」という部分では、Mac等や Windows での設定方法について書かれていたりします。

Mac の例は export を使った方法が示されており、「そのターミナルセッション内でのみ有効」となるような、一時的な設定を行う形です。

【 macOS / Linux】
export OPENAI_API_KEY="【自身の APIキー】"

Windows の例は setx を使った永続化をする方法になっていますが、上記の Mac の例と同様に一時的な設定とする場合は set を使った以下のような形になるかと思います。

【Windows】
set OPENAI_API_KEY "【自身の APIキー】"

実装内容に関する補足

Reasoning effort の説明

実装した内容の中で「Reasoning effort」を指定している部分があります。

この「Reasoning effort」が意味する内容について、公式の説明で確認しておきます。公式の説明を以下に抜粋します。

2025-02-05_23-27-06.jpg

意味するところをざっくりと日本語で書くと、以下のような感じになるかと思います。

  • 「プロンプトへの応答を作成する前にどれだけの推論トークンを生成すべきかを、モデルに対して指示するためのもので、このパラメータには「low」「medium」「high」のいずれかを指定可能
    • low: 処理速度が速く、トークンの使用量が少ない
    • high: より詳細な推論を行うが、その分トークンの消費が増えて、また応答速度は遅くなる
    • medium(デフォルト): 速度と推論の正確さのバランスを取った設定

medium がデフォルト値となるようなので、 reasoning_effort: "medium" とするのであれば、この部分を省略してしまっても medium が指定された状態になるようです。

Controlling costs

今回は指定してないですが、コストをコントロールできるパラメータもあります。

公式ページの「Reasoning models > Controlling costs」の部分を見ると、以下の記載があります。

2025-02-05_23-43-21.jpg

ざっくり内容を見てみると、「モデルが生成するトークンの総数(推論用のトークンと応答のトークンの両方を含むもの)を制限するためのパラメータが max_completion_tokens」と書いています。

以前のモデルでは、max_tokens パラメータが「生成されるトークン数とユーザーに表示されるトークン数の両方を制御するパラメータ」だったものの、推論を行うモデルでは内部で使用される推論トークンも加わるために、別パラメータを指定する形になるようです。
※ 一部のアプリケーションで、max_tokens の値と API から受け取るトークン数が一致する前提で処理を行うものがある状況のため、そこで不整合が生じないよう、推論用のトークンを含む総量を扱うパラメータは別で作ったようです

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?