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
はじめに
以下の記事の中でも話題に出していた、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
このページ冒頭のクイックスタートで、curl・Python・JavaScript のサンプルを見ることができます。
それらのサンプルの中の「JavaScript のサンプル」を元にして、今回のお試しをやってみます。
またモデル名・それついて書かれた公式ページに関する情報は、上で掲載していた記事の「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」という名前のファイルの中に書く形になります。具体的には、以下のようにしています。
OPENAI_API_KEY="【自身の APIキー】"
このファイルがある場所で、nodeコマンドを使ってプログラムを実行すると、APIキーを使った o3-mini の API経由での利用が行えます。
環境変数の設定
APIキーの環境変数への設定については、もちろんコマンドなどによる一時的な設定なども利用可能です。
例えば、OpenAI 公式のクイックスタート内の「Create and export an API key」という部分では、Mac等や Windows での設定方法について書かれていたりします。
Mac の例は export
を使った方法が示されており、「そのターミナルセッション内でのみ有効」となるような、一時的な設定を行う形です。
export OPENAI_API_KEY="【自身の APIキー】"
Windows の例は setx
を使った永続化をする方法になっていますが、上記の Mac の例と同様に一時的な設定とする場合は set
を使った以下のような形になるかと思います。
set OPENAI_API_KEY "【自身の APIキー】"
実装内容に関する補足
Reasoning effort の説明
実装した内容の中で「Reasoning effort」を指定している部分があります。
この「Reasoning effort」が意味する内容について、公式の説明で確認しておきます。公式の説明を以下に抜粋します。
意味するところをざっくりと日本語で書くと、以下のような感じになるかと思います。
- 「プロンプトへの応答を作成する前にどれだけの推論トークンを生成すべきかを、モデルに対して指示するためのもので、このパラメータには「low」「medium」「high」のいずれかを指定可能
- low: 処理速度が速く、トークンの使用量が少ない
- high: より詳細な推論を行うが、その分トークンの消費が増えて、また応答速度は遅くなる
- medium(デフォルト): 速度と推論の正確さのバランスを取った設定
medium がデフォルト値となるようなので、 reasoning_effort: "medium"
とするのであれば、この部分を省略してしまっても medium が指定された状態になるようです。
Controlling costs
今回は指定してないですが、コストをコントロールできるパラメータもあります。
公式ページの「Reasoning models > Controlling costs」の部分を見ると、以下の記載があります。
ざっくり内容を見てみると、「モデルが生成するトークンの総数(推論用のトークンと応答のトークンの両方を含むもの)を制限するためのパラメータが max_completion_tokens」と書いています。
以前のモデルでは、max_tokens パラメータが「生成されるトークン数とユーザーに表示されるトークン数の両方を制御するパラメータ」だったものの、推論を行うモデルでは内部で使用される推論トークンも加わるために、別パラメータを指定する形になるようです。
※ 一部のアプリケーションで、max_tokens の値と API から受け取るトークン数が一致する前提で処理を行うものがある状況のため、そこで不整合が生じないよう、推論用のトークンを含む総量を扱うパラメータは別で作ったようです