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?

o3・o4-mini の API を Node.js(OpenAI 公式の TypeScript・JavaScript ライブラリ)で試す

Last updated at Posted at 2025-04-17

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

image.png

いちおう、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 のほうの結果を、以下に画像で掲載してみます。

image.png

再度、試してみたものを以下にテキストで掲載してみます。

以下のスクリプトは、  
'[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」の利用履歴が確認できました。

image.png

モデルに関する公式情報

各モデルのページ

モデルに関する公式情報のページのリンクも掲載しておきます。

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

image.png

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?