2025/4/17時点での o3 の API利用について、Tier によりますが、認証プロセスを必要とする場合があるようです(↓こちらで書いた Tier が 1〜3 の場合)
●OpenAI の o3 の API の利用条件【公式情報より】: Tier が 1〜3 の場合は「API Organization Verification」が必要 - Qiita
https://qiita.com/youtoy/items/7e7807d7af704154eb67
はじめに
直近では以下をやっていた、OpenAI の新モデルを API経由で試す話です。
●GPT-4.1 を Node.js(OpenAI 公式の TypeScript・JavaScript ライブラリ)で試してみる - Qiita
https://qiita.com/youtoy/items/8b233a29fd6c711b22ec
今回試すモデル
今回試すのは、登場したばかりの「o3」「o4-mini」です。
●Introducing OpenAI o3 and o4-mini | OpenAI
https://openai.com/index/introducing-o3-and-o4-mini/
公式のプレイグラウンド
今朝方、OpenAI API の Prompts Playground で、新しいモデルが選べそうなことは確認していました。
実際に試す
実際に Node.js を使って試していきます。
手っ取り早く試したかったので、公式が出している以下の「Get started with reasoning」の部分の「Responses API」を使ったサンプルコードを、ほぼそのまま使いました。
●Reasoning models - OpenAI API
https://platform.openai.com/docs/guides/reasoning?api-mode=responses#get-started-with-reasoning
いちおう、API Reference の Responses API の部分も見たりもしました。
コード
コードは以下のとおりです。
import OpenAI from "openai";
const openai = new OpenAI();
const prompt = `
'[1,2],[3,4],[5,6]' という形式で表された行列を受け取り、
同じ形式で転置行列を出力する Bash スクリプトを書いてください。ß
`;
const response = await openai.responses.create({
model: "o4-mini",
reasoning: { effort: "medium" },
input: [
{
role: "user",
content: prompt,
},
],
});
console.log(response.output_text);
o3 のお試しは、上記の model: "o4-mini"
を model: "o3"
に変えただけのものを使いました。
出力
以下、それぞれのモデルに関して API経由で得られたレスポンスです。
o3
o3 のほうの結果を、以下に画像で掲載してみます。
再度、試してみたものを以下にテキストで掲載してみます。
以下のスクリプトは、
'[1,2],[3,4],[5,6]' のような文字列を受け取り、
'[1,3,5],[2,4,6]' のように転置した行列を同じ書式で出力します。
```bash
#!/usr/bin/env bash
# transpose.sh
# 使い方:
# echo '[1,2],[3,4],[5,6]' | ./transpose.sh
# ./transpose.sh '[1,2],[3,4],[5,6]'
# 1. 引数があればそれを、無ければ標準入力を読む
if [[ -n $1 ]]; then
input=$1
else
read -r input
fi
# 2. 空白を除去
input=${input//[[:space:]]/}
# 3. 行ごとに分割し、角カッコを外す
# 例) '[1,2],[3,4]' → 1,2\n3,4
rows=$(sed 's/\],\[/\n/g; s/\[//g; s/\]//g' <<<"$input")
# 4. awk で転置
echo "$rows" |
awk -F',' '
{
for (c = 1; c <= NF; c++) {
data[c, NR] = $c # data[列,行] ← 値
}
max_col = (NF > max_col) ? NF : max_col
max_row = NR
}
END {
for (c = 1; c <= max_col; c++) {
printf "["
for (r = 1; r <= max_row; r++) {
printf "%s", data[c, r]
if (r < max_row) printf ","
}
printf "]"
if (c < max_col) printf ","
}
printf "\n"
}'
```
動作例
```
$ echo '[1,2],[3,4],[5,6]' | ./transpose.sh
[1,3,5],[2,4,6]
```
ポイント
1. sed で
・行ベクトル間の `],[` を改行に置換
・全ての `[` と `]` を削除
2. awk で (列,行) の順に 2 次元配列へ格納し、
最後に列優先で取り出すことで転置を実現。
※ 上記の出力中の「```」を全角(```)に変えています
o4-mini
o4-mini のほうの結果も、以下にテキストで掲載してみます。
以下の Bash スクリプトは、引数(あるいは標準入力)で渡された
'[1,2],[3,4],[5,6]'
といった形式の文字列をパースし、転置して同じ形式で出力します。
```bash
#!/usr/bin/env bash
set -euo pipefail
# 引数があればそこから、なければ標準入力から読む
if [ $# -gt 0 ]; then
input="$1"
else
read -r input
fi
# 先頭・末尾のシングル/ダブルクォートを剥がす
input="${input#[\"']}"
input="${input%[\"']}"
# "],[" をセミコロンに置き換え、先頭の [ と末尾の ] を削除
matrix="${input//],[/;}"
matrix="${matrix#\[}"
matrix="${matrix%\]}"
# セミコロンで行に分解
IFS=';' read -r -a rows <<< "$matrix"
R=${#rows[@]}
# 1行目をカンマで分解して列数を得る
IFS=',' read -r -a tmp <<< "${rows[0]}"
C=${#tmp[@]}
# 配列 a[i,j] に格納
declare -A a
for ((i=0;i<R;i++)); do
IFS=',' read -r -a cols <<< "${rows[i]}"
for ((j=0;j<C;j++)); do
a[$i,$j]="${cols[j]}"
done
done
# 転置して組み立て
out=""
for ((j=0;j<C;j++)); do
row=""
for ((i=0;i<R;i++)); do
row+="${a[$i,$j]}"
if [ $i -lt $((R-1)) ]; then
row+=","
fi
done
out+="[${row}]"
if [ $j -lt $((C-1)) ]; then
out+=","
fi
done
echo "$out"
```
使い方例:
$ chmod +x transpose.sh
$ ./transpose.sh '[1,2],[3,4],[5,6]'
[1,3,5],[2,4,6]
── もしくは標準入力経由でも:
$ echo '[1,2],[3,4],[5,6]' | ./transpose.sh
[1,3,5],[2,4,6]
※ 上記の出力中の「```」を全角(```)に変えています
ダッシュボードで API の利用履歴を見てみる
確認のため、OpenAI のダッシュボードで API の利用履歴を見てみました。
「Usage の Chat Completions( https://platform.openai.com/usage/chat-completions )」を開いたところ、以下のように「o4-mini-2025-04-16」「o3-2025-04-16」の利用履歴が確認できました。
モデルに関する公式情報
各モデルのページ
モデルに関する公式情報のページのリンクも掲載しておきます。
o3
●【o3】Model - OpenAI API
https://platform.openai.com/docs/models/o3
o4-mini
●【o4-mini】Model - OpenAI API
https://platform.openai.com/docs/models/o4-mini
モデルの違いについて
以下は「o3、o3-mini、o4-mini、o1 pro」の機能の違いに関する表です。
●Using OpenAI o-series models and GPT-4o models on ChatGPT | OpenAI Help Center
https://help.openai.com/en/articles/9824965-using-openai-o-series-models-and-gpt-4o-models-on-chatgpt