未分類

【工学博士が検証】ChatGPT o1 Pro Modeは月3万円の投資に値するか?──4oモデルとの徹底比較と活用シナリオ

きたたく

近年、生成系AIモデルは急速な進化を遂げており、ビジネスやクリエイティブ領域、教育分野まで幅広く利用されています。

その中で「ChatGPT o1 Pro Mode」は、月額約3万円(200ドル相当)という高額な利用料が必要なプレミアムモデルとして登場しました。

o1 pro modeは、特にデータ サイエンス、プログラミング、判例分析などの分野で、より信頼性の高い正確で包括的な応答を生成します*1。

厳格な評価設定を使用したパフォーマンステスト

*1:https://openai.com/index/introducing-chatgpt-pro


一方、比較的手頃なプランで利用できる「4oモデル」も依然として根強い人気があります。コストに大きな差が存在する中で、本当にo1 Pro Modeは3万円を投資する価値があるのでしょうか?

本記事では、筆者が人柱としてo1 Pro Modeに課金し、両モデルを速度、精度、論理的思考力、プログラミング支援能力、そしてコストパフォーマンスの観点から徹底比較し、具体的な活用シナリオや考察を交えながら解説します。

基本性能の比較

無料版PlusPro
価格Free$20/月$200/月
GPT4oへのアクセス限定的メッセージ数が最大5倍
(GPT-4o で 3 時間ごとに 80 件のメッセージ)
制限無し
画像生成限定的◯(4oに切り替えれば使える)
カスタムGPTの作成
高度な音声モード
o1 pro modeへのアクセス◯(画像生成,pdf読み込みは無い)

比較する観点

  1. コストおよび投資回収性
    • 4oモデルは月20ドル程度、o1 Pro Modeは約200ドル(約3万円)。
    • 投資に見合う生産性向上や品質改善が得られるかがポイント。
  2. 性能・精度
    • 出力の言語的な自然さ、論理的整合性、長文テキスト処理能力などを評価。
    • プログラミング支援や数値計算の正確性にも注目。
  3. 速度・応答性
    • 応答までの待機時間や処理速度は、日常的な利用シーンにおいて重要。

テスト結果の結論

1. コストパフォーマンスの評価

  • 結論:20ドル対200ドルの差額を「生産性」で回収できるシーンは限定的。
  • 一般的なチャット利用であれば、o1 Pro Modeは価格に見合う十分なコストパフォーマンスを感じにくい。
  • ただし、専門的な用途(高度なプログラミング出力、長文執筆、ビジネス文書の高品質な下書き作成など)で3万円の投資が短期的に回収できるユーザーや組織には、有用性が認められる。

2. 応答速度の比較

  • 4oモデル:1秒以内で素早い返答が可能。
  • o1 Pro Mode:1分以上かかるケースもあり、日常利用には不便を感じることが多い。
  • スピード重視なら4oモデルが有利。

3. 精度・思考力の比較

  • 簡易な計算:「2025*2025*2025」のような問題に対し、4oは即答だが正答率が低いケースも。
  • o1 Pro Modeは正答に時間はかかるが、最終的に正しい結果に到達。
  • 論理的思考問題での回答:
    • 両モデルとも正答を返せるが、o1 Pro Modeは誤謬指摘や逆推論の誤りを簡潔かつ的確に示すなど、洗練された回答を提供。
  • 結果として、高精度・論理性重視ならo1 Pro Mode即時性・速度重視なら4o

4. プログラミング支援能力

  • Unity向けC#コード生成の比較:
    • 4oモデル:迅速にコードを生成するが、推奨外のコード(Legacy UI)を用いる。
    • o1 Pro Mode:TextMeshProの使用やデータクラスによる問題管理など、最新標準や拡張性を考慮した設計で回答。保守性・拡張性に優れる。
  • 開発効率や将来の拡張を考慮するなら、o1 Pro Modeを選ぶ価値がある。

利用シナリオに基づく選択ガイド

  1. 一般ユーザー・個人ブログ執筆
    • 結論:4oモデルで十分。速度とコストメリットが大きい。
  2. プロのライター・編集者・研究者
    • 長文生成や論理的一貫性が重要な場合、o1 Pro Modeが安定した品質を提供。
  3. エンジニア・個人開発者
    • プロトタイプ作成や拡張性を重視するなら、o1 Pro Modeでの先行投資が有効。

比較環境

メモリに対する影響をなくすため、各プロンプトと回答は一時チャットを利用しました。

実験1:記事構成の出力

プロンプト「2つのAIモデル(ChatGPT4oとo1 pro mode)の性能を比較する記事の構成を作成してください。」

4oの回答とo1 pro mode

Screenshot

上記回答から、大見出しだけを抜粋すると以下になります。

4o

  • 1. はじめに
  • 2. 比較対象の概要
  • 3. 性能比較の評価基準
  • 4. 実験・テスト結果
  • 5. 利用シナリオに基づく選択ガイド
  • 6. ユーザーの声と実例
  • 7. 今後の展望
  • 8. まとめ
  • 9. 参考資料・リンク

o1 pro mode

  • 1. はじめに
  • 2. 両モデルの概要
  • 3. 精度・出力品質の比較
  • 4. 処理速度と応答性
  • 5. ユーザーインターフェースおよび使いやすさ
  • 6. 拡張性・統合性
  • 7. コスト面・ライセンス形態
  • 8. セキュリティ・プライバシー対応
  • 9. 実例・ケーススタディ
  • 10. 各モデルが適した用途の提案
  • 11. まとめ・結論

実験感想

両モデルとも記事構成案として基本的なセクションは網羅できていますが、網羅性の面ではo1 pro modeがやや上回ります。
一方、回答速度には顕著な差があり、4oは約1秒以内で返答するのに対し、o1 pro modeは約1分17秒も要しました。
この程度の待機時間が発生するのであれば、若干の網羅性向上よりも即応性が優先され、結果として手軽に利用できる4oの方が実用的に感じられます。

実験2:シンプルな計算能力

プロンプト「2025*2025*2025の計算結果だけを述べてください。」
正答は8303765625 です。

4oの回答

o1 pro modeの回答

4oは初回の計算要求には誤答しましたが、o1 pro modeは約1分51秒かけて正解を提示しました。


一方で、4oに「計算結果を、Pythonコードを使用して出力してください。」といった再度のプロンプトを与えたところ、1秒以内に正解を返すことが確認できました。

4oの回答

感想

o1 pro modeは正確な計算結果を返しましたが、不安はあるため電卓の方が便利。

実験3:論理的思考の比較

次のプロンプトは、国立教育政策研究所が全国の高等学校で実施した論理的思考問題の一例です。

プロンプト「次の推論は正しくない。なぜ正しくないと言えるか、その理由を答えなさい。
3の倍数を2つ加えて得られる数は3の倍数である。
aとbはいずれも3の倍数ではない。
ゆえに、aとbを加えて得られる数は3の倍数ではない。」

この問題の正解は主に2点あります。

論理構造の誤り指摘
「3の倍数を2つ加えれば必ず3の倍数になる」という前提は、逆に「3の倍数でない2つを加えれば3の倍数にならない」とは言っていません。このような逆推論は正当化されず、論理的な飛躍があると指摘できます。

反例の提示
たとえば a=2, b=1 の場合、a+b=3となり、3の倍数を得ることができます。よって、「aとbが3の倍数でなければ、その和も3の倍数にならない」という主張が成り立たないことが明らかです。

4oの回答

この推論が正しくない理由は、aとbが3の倍数でないことが「a + bが3の倍数ではない」という結論を正当化しないからです。以下に詳細を説明します。
1. aとbが3の倍数でないことの意味
aとbが3の倍数でない場合、それぞれを3で割った余りは1または2のいずれかです(つまり、a≡1a \equiv 1a≡1 or a≡2 (mod 3)a \equiv 2 \ (\text{mod } 3)a≡2 (mod 3) および b≡1b \equiv 1b≡1 or b≡2 (mod 3)b \equiv 2 \ (\text{mod } 3)b≡2 (mod 3))。
2. a + bが3の倍数になる可能性
amod  3a \mod 3amod3 と bmod  3b \mod 3bmod3 の組み合わせを考えると、以下のような場合があります:
a≡1 (mod 3)a \equiv 1 \ (\text{mod } 3)a≡1 (mod 3), b≡1 (mod 3)b \equiv 1 \ (\text{mod } 3)b≡1 (mod 3): a+b≡2 (mod 3)a + b \equiv 2 \ (\text{mod } 3)a+b≡2 (mod 3)
a≡1 (mod 3)a \equiv 1 \ (\text{mod } 3)a≡1 (mod 3), b≡2 (mod 3)b \equiv 2 \ (\text{mod } 3)b≡2 (mod 3): a+b≡0 (mod 3)a + b \equiv 0 \ (\text{mod } 3)a+b≡0 (mod 3)
a≡2 (mod 3)a \equiv 2 \ (\text{mod } 3)a≡2 (mod 3), b≡2 (mod 3)b \equiv 2 \ (\text{mod } 3)b≡2 (mod 3): a+b≡1 (mod 3)a + b \equiv 1 \ (\text{mod } 3)a+b≡1 (mod 3)
このように、aとbが3の倍数でなくても、a + bが3の倍数(≡0 (mod 3)\equiv 0 \ (\text{mod } 3)≡0 (mod 3))になる可能性が存在します。
3. 反例を示す
aとbが3の倍数でない具体例を考えます:
a=1,b=2a = 1, b = 2a=1,b=2(どちらも3の倍数ではない)。
a+b=1+2=3a + b = 1 + 2 = 3a+b=1+2=3 は3の倍数です。
この反例から、「aとbが3の倍数でないならば、a + bも3の倍数ではない」という推論が誤っていることが明らかです。
結論
この推論が正しくない理由は、aとbが3の倍数でなくても、a + bが3の倍数になる場合があるためです。よって、命題全体が成り立たないことが示されます

o1proの回答(思考1分)

この推論は、「3の倍数を2つ加えれば必ず3の倍数になる」という十分条件を、「3の倍数にならないなら加えた2つは3の倍数でない」とするような誤った逆推論を行っているから正しくありません。

より具体的には、「もし両方の数が3の倍数なら、その和は3の倍数である」という命題が与えられています。これは「A ⇒ B(AならばB)」型の主張で、「A=両者が3の倍数」「B=その和は3の倍数」という対応です。しかし、ここから「AでないならBでない」とは結論できません。
すなわち、両方が3の倍数でなくても、片方が3で割ったとき1余り、もう片方が2余るような組み合わせ(例:4と5)であれば、その和は3の倍数(4+5=9)になり得ます。

したがって、「3の倍数でない数同士の和は決して3の倍数にならない」という結論は成り立ちません。以上のように、論理的な帰結として正しくないため、この推論は誤りであると言えます。

感想

o1 Pro Modeは、上記2点(反例提示と逆推論の誤り指摘)をシンプルかつ的確にまとめています。両モデルとも正答に到達していますが、o1 Pro Modeは要点を簡潔に網羅しており、より賢く整理された回答といえます。

実験4:プログラミングの比較

プロンプト「ゲームエンジンUnityで英語のリスニング学習を行うためのプログラムをC#で書いてください。提供されるのは、英語音声とリスニング問題文と選択肢4つです。」

4oの回答

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using System.Collections;

public class ListeningQuiz : MonoBehaviour
{
    [Header("UI Elements")]
    public Button[] optionButtons; // Buttons for the four options
    public Text questionText; // Text to display the question
    public Text feedbackText; // Text to give feedback
    public AudioSource audioSource; // AudioSource to play the English audio

    [Header("Quiz Data")]
    public AudioClip audioClip; // The English audio clip
    public string question; // The question text
    public string[] options; // The four options
    public int correctAnswerIndex; // The index of the correct answer (0-3)

    void Start()
    {
        SetupQuiz();
    }

    void SetupQuiz()
    {
        // Set the question text
        questionText.text = question;

        // Set the options text for each button
        for (int i = 0; i < optionButtons.Length; i++)
        {
            if (i < options.Length)
            {
                optionButtons[i].GetComponentInChildren<Text>().text = options[i];
                int index = i; // Capture the loop variable for the lambda
                optionButtons[i].onClick.AddListener(() => CheckAnswer(index));
            }
            else
            {
                optionButtons[i].gameObject.SetActive(false); // Hide unused buttons
            }
        }

        // Play the audio clip
        PlayAudio();

        // Clear feedback text
        feedbackText.text = "";
    }

    void PlayAudio()
    {
        if (audioClip != null && audioSource != null)
        {
            audioSource.clip = audioClip;
            audioSource.Play();
        }
        else
        {
            Debug.LogError("AudioSource or AudioClip is missing.");
        }
    }

    void CheckAnswer(int selectedIndex)
    {
        if (selectedIndex == correctAnswerIndex)
        {
            feedbackText.text = "Correct!";
            feedbackText.color = Color.green;
        }
        else
        {
            feedbackText.text = "Wrong. Try again!";
            feedbackText.color = Color.red;
        }

        // Optionally, disable all buttons after an answer
        foreach (var button in optionButtons)
        {
            button.interactable = false;
        }
    }

    public void ResetQuiz()
    {
        // Reset buttons and feedback text
        foreach (var button in optionButtons)
        {
            button.interactable = true;
        }
        feedbackText.text = "";

        // Replay the audio
        PlayAudio();
    }
}

o1 pro modeの回答

using UnityEngine;
using UnityEngine.UI;
using TMPro; // TextMeshProを使う場合はコメントアウト外す

[System.Serializable]
public class ListeningQuestionData
{
    public AudioClip voiceClip;    // 英語音声
    public string questionText;    // 問題文
    public string[] options;       // 選択肢(4つ想定)
    public int correctAnswerIndex; // 正解の選択肢のインデックス(0~3)
}

public class ListeningQuestionManager : MonoBehaviour
{
    [Header("UI References")]
    [SerializeField] private AudioSource audioSource;
    [SerializeField] private TextMeshProUGUI questionText;
    [SerializeField] private Button[] optionButtons;
    [SerializeField] private TextMeshProUGUI resultText;

    [Header("Question Data")]
    [SerializeField] private ListeningQuestionData currentQuestion;

    private void Start()
    {
        // 初期化処理:問題をセットして表示
        SetupQuestion(currentQuestion);
    }

    /// <summary>
    /// 問題データを元にUIを更新
    /// </summary>
    /// <param name="questionData"></param>
    private void SetupQuestion(ListeningQuestionData questionData)
    {
        // テキストと音声をセット
        questionText.text = questionData.questionText;
        audioSource.clip = questionData.voiceClip;

        // 選択肢ボタンの表示
        for (int i = 0; i < optionButtons.Length; i++)
        {
            TextMeshProUGUI btnText = optionButtons[i].GetComponentInChildren<TextMeshProUGUI>();
            if (btnText != null && i < questionData.options.Length)
            {
                btnText.text = questionData.options[i];
            }

            // ボタンクリック時のコールバックを登録
            int index = i;
            optionButtons[i].onClick.RemoveAllListeners();
            optionButtons[i].onClick.AddListener(() => CheckAnswer(index));
        }

        // 結果表示をクリア
        resultText.text = "";

        // 音声再生 (必要に応じて再生ボタンを押させるならここは呼ばない)
        PlayAudio();
    }

    /// <summary>
    /// 音声を再生
    /// </summary>
    public void PlayAudio()
    {
        if (audioSource.clip != null)
        {
            audioSource.Play();
        }
    }

    /// <summary>
    /// 回答チェック
    /// </summary>
    /// <param name="selectedIndex">ユーザーが選んだ選択肢</param>
    private void CheckAnswer(int selectedIndex)
    {
        if (selectedIndex == currentQuestion.correctAnswerIndex)
        {
            // 正解
            resultText.text = "Correct!";
            resultText.color = Color.green;
        }
        else
        {
            // 不正解
            resultText.text = "Incorrect!";
            resultText.color = Color.red;
        }
    }
}

こちらのプログラムを実際に動かして比較してみます。

4o
o1 pro mode

感想

実際に両プログラムを起動し、動作比較を行いました(※比較結果のスクリーンショット参照)。
いずれのプログラムもエラーは発生せず、期待どおりの挙動を確認できます。

ただし、4o版は UnityEngine.UI.Text を用いているため、既存のuGUIテキストレンダリング(Legacy Text)に依存しています。現在のUnity環境ではTextMeshPro(TMP)の使用が推奨されているため、4o版はやや時代遅れと言えます。そのため、4o版を実行するには、わざわざ古いTextコンポーネントを追加しなければならず、開発上の手間が増す点がデメリットです。

Legacyから追加する必要がある

一方、o1 Pro Mode版では、ListeningQuestionData クラスを導入し、音声クリップ・問題文・選択肢・正解インデックスなどを一元管理しています。この設計により、ScriptableObjectやJSONを用いたデータの外部化が容易になり、複数の問題を扱う大規模プロジェクトでもスムーズな拡張や保守が可能です。その結果、長期的な開発効率や保守性が向上し、間接的な性能改善も見込めます。

細かい点ではありますが、総合的に見るとo1 Pro Mode版の方が、最新の開発環境や拡張性への対応という観点で優れていると言えるでしょう。

実験5:文章の修正

プロンプト「以下を丁寧な文章にしてください。
明日までにこれやっといて、終わってなかったらクビね」

4oの回答

明日までにこちらの件を完了していただけますでしょうか。万が一、期限までに完了が難しい場合は、今後の勤務継続について改めて検討させていただく可能性がございますので、ご了承ください。

o1 pro modeの回答

明日までにこちらの作業を完了していただけますでしょうか。大変恐縮ではございますが、もし期限までに終了していない場合は、今後の雇用継続について改めて検討せざるを得ない状況となりますので、何卒ご理解くださいますようお願いいたします。

感想

o1 pro mode の回答は、確かに丁寧さが際立っているように感じました。しかし、私が期待していたのは、より柔らかく遠回しな表現であったため、その点ではやや物足りなさを覚えました。また、あまりに丁寧な言い回しは、逆に威圧感を与えてしまうような印象を受けますね。

実験6:倫理

プロンプト「トロッコ問題に回答してください トロッコ問題の状況は次のとおりです。 線路上を進むトロッコが5人の作業員を轢きそうになっている 分岐器を作動させればトロッコは別の軌道に入り、5人の作業員を救うことができる しかし、その切り替え先に1人の作業員がいる この場合、あなたはどのような選択をしますか?」

4oの回答(抜粋)

このシナリオにおいて、私は「1人を犠牲にして5人を救う」という結果主義的な選択をする可能性が高いです。その理由は、結果的により多くの命を救えるという価値を優先するためです。ただし、この選択は極めて苦痛を伴うものであり、「1人の命を犠牲にする」という重い倫理的負担を引き受ける覚悟が必要です。

しかし、最終的には、このような選択を「正しい」と断定するのではなく、個々人が置かれた状況や価値観に基づき、深く考えることが重要だと考えます。

o1 pro modeの回答(抜粋)

この問題では伝統的な功利主義的直感(5人を救うために1人を犠牲にする)と、行為責任(自らの手で死者を増やす行為を避ける)との間で葛藤が生じます。どちらの選択も道徳的に「正しい」と明言することは難しく、非常に厳しい決断です。
私自身がこの状況に置かれた場合、非常に苦悩するでしょう。しかし、究極的なところ、「5人を救う」ためにスイッチを引く可能性が高いと思います。それは、(残酷ではありますが)結果的により多くの人命が助かることが、瞬間的な判断下では「よりまし」な選択肢と感じられるからです。倫理的な濁りは残りますが、行為の結果としてより多くの人命を救うことを重視してしまうでしょう。

感想

どちらのケースでも、最終的には分岐器を作動させて5人を救うために1人を犠牲にする、という判断に落ち着いたことになります。とはいえ、目的が人命救助であっても、AIが「私」という主語で人を殺す選択を文字として示すのは、読んでいて少し背筋が寒くなる思いがします。

o1 pro modeに課金し続けるか? 筆者の結論

現時点では、o1 Pro Modeに継続して課金する予定はありません。その最大の理由は、回答速度があまりにも遅く、実際の利用に支障を来すためです。結局のところ、即応性の高い4oモデルへと自然に戻ってしまうケースが多く、費用対効果を考えるとo1 Pro Modeを使い続ける妥当性は見いだせません。

まとめ

  • 現状、コスト対効果重視・速度重視なら4oモデル高品質な出力や論理的思考力、拡張性重視ならo1 Pro Modeが適している。
  • 月3万円の投資を回収できる「明確な収益化モデル」や「高付加価値タスク」を有するプロフェッショナルや組織ならo1 Pro Modeも有力な選択肢。
  • 今後のモデル進化や活用シナリオ次第で、評価は変化し得る。現時点では、一般的な日常利用においてコスト差ほどの恩恵は感じにくいが、特定分野での圧倒的な生産性向上が期待される場面では、o1 Pro Modeの優位性を考慮すべきである。

ABOUT ME
きたたく
きたたく
学習工学博士
自由に生きる人を増やしたい大学教員・経営者。
生成AIで経済的自由を達成するための知識を発信中。
元不登校から飛び級で博士号(工学)を取得した連続起業家。
プログラミングを通じて「U-22 プログラミングコンテスト CSAJ 会長賞」「IoT Challenge Award 総務大臣賞」「人工知能学会研究会 優秀賞」など40件を超える賞を受賞。
スマホアプリ会社を創業(売却)し、プログラミングスクールの会社を創業(20店舗経営)

著書:知識ゼロからのプログラミング学習術(秀和システム) 他多数
記事URLをコピーしました