OpenAIは米国時間の2024年9月12日、複雑な推論タスクに特化した新しいAIモデルシリーズ「OpenAI o1」のプレビュー版を発表しました。
本モデルはプロンプトの内容を深く推論する「推論トークン」機能を搭載しているのが特徴。プログラミングやコーディングに最適化されている「o1-mini」というモデルも同時リリースされており、これまでとは一味違ったモデルとなっています。
また、OpenAI o1はChatGPTの有料プラン「ChatGPT Plus」ユーザーのみ利用可能です。
本記事ではOpenAI o1の使い方やo1-previewとminiの違い、APIの利用制限などについて詳しく解説します。
ChatGPTの新モデル「OpenAI o1」とは
OpenAI o1はOpenAIが2024年9月12日に公開した新しいAIモデルです。このモデルは複雑な問題を解決するために特別に設計されており、コーディングや数学などの分野で従来のモデルよりも優れたパフォーマンスを発揮します。
安全性にも重点を置いており、従来のモデルよりも安全ルールを厳密に守ることができるようにトレーニングされているのが特徴です。
OpenAI o1の利用制限
OpenAI o1-previewでは週30メッセージまで使用可能です。一方、o1-miniは週50メッセージまで使用できます。
現在のOpenAI o1ではこのように、使用回数の制約が設けられています。[1]
OpenAI o1-previewに新しく導入された推論トークン
o1-previewでは「推論トークン」という新しい機能が導入されました。このトークンはモデルがプロンプトを理解し、最適な応答を生成するために必要な思考プロセスに使用されます。
推論トークンは最終的な回答トークンを生成する際に破棄されますが、コンテキストウィンドウ内のスペースを占有して総合的なトークン数に含まれます。
また「max_completion_tokens」パラメータにより、推論トークンと表示されるトークンの合計数を管理することでコストの制御が可能です。
OpenAI o1-previewとminiの違い
OpenAI o1にはpreviewモデルとminiモデルの2種類あります。各内容の違いは下記の通りです。
OpenAI o1-preview
OpenAI o1-previewは複雑な問題に取り組む際、より深く考えられるように設計されたAIモデルです。このモデルは科学やコーディング、数学の分野で従来のモデルよりも高度な問題を解決できるのが特徴です。
具体的には物理学や化学、生物学などの分野で博士課程の学生と同等の成績を収め、数学やコーディングにおいても優れたパフォーマンスを示しています。
OpenAI o1-mini
OpenAI o1-miniはコーディングに特化した、高速かつコスト効率の高いAIモデル。複雑なコードの生成やデバッグにおいて開発者をサポートすることを目的としています。
APIの価格はOpenAI o1-previewモデルに比べて80%安価でありながらも、効率的なコーディングソリューションを提供するのが特徴です。
これらのモデルはそれぞれ異なる用途に応じて設計されています。o1-previewは深い思考を必要とする複雑な問題の解決に適しており、o1-miniは高速かつ効率的なコーディングを求める開発者に最適です。
どちらのモデルもユーザーのニーズに合わせた、効果的なソリューションを提供します。
OpenAI o1でAPIを使う条件と制限
OpenAI o1-previewとo1-miniのAPIモデルにアクセスするには、API使用レベル5のアカウントが必要です。このレベルは過去30日以上にわたる支払い履歴があり、これまでにAPIに合計1,000ドル以上を費やしたユーザーに適用されます。
OpenAI o1モデルのAPIを利用する際の制限は下記の通りです。
- ChatGPTでo1-previewを使う場合:1分間に最大100リクエスト
- ChatGPTでo1-miniを使う場合:1分間に最大250リクエスト
ChatGPTに搭載されているo1-previewとo1-miniは現在プレビューモデルであり、今後使用制限が変更される可能性があります。
OpenAI o1の使い方
はじめにChatGPTを開きます。
ChatGPTより
画面左上に現在使用しているモデルがあるので、そちらをクリックするとChatGPTのモデル一覧にo1-previewとminiが選択肢として表示されます。利用したいモデルをクリックし、チャット欄へプロンプトを入力することで利用可能です。
今回はテストとして「ホットドッグはサンドイッチですか?」というプロンプトを、o1-previewとChatGPT 4oに指定してみました。その結果が下記の通りです。
OpenAI o1-previewの回答
ChatGPTより
ChatGPT 4oの回答
ChatGPTより
o1-previewの回答欄には「思考秒数」と記載されています。これはプロンプトの内容を推論して出力に至るまでの秒数です。
ChatGPTより
上記のように「思考時間」の右にある矢印をクリックすると、推論した内容が表示されます。
OpenAI o1で最適なプロンプトの使い方
Open AIはo1モデルで最適な出力結果を得られるよう、プロンプトに関するアドバイスを公開しています。原文の引用と要約内容は下記の通りです。
Advice on prompting
These models perform best with straightforward prompts. Some prompt engineering techniques, like few-shot prompting or instructing the model to "think step by step," may not enhance performance and can sometimes hinder it. Here are some best practices:
Keep prompts simple and direct: The models excel at understanding and responding to brief, clear instructions without the need for extensive guidance.
Avoid chain-of-thought prompts: Since these models perform reasoning internally, prompting them to "think step by step" or "explain your reasoning" is unnecessary.
Use delimiters for clarity: Use delimiters like triple quotation marks, XML tags, or section titles to clearly indicate distinct parts of the input, helping the model interpret different sections appropriately.
Limit additional context in retrieval-augmented generation (RAG): When providing additional context or documents, include only the most relevant information to prevent the model from overcomplicating its response.日本語訳
プロンプトに関するアドバイス
これらのモデルはシンプルで直接的なプロンプトで最も効果を発揮します。一部のプロンプトエンジニアリング手法を用いて指示することが必ずしも性能を向上させるわけではありません。OpenAI o1でプロンプトを入力する際のコツをいくつか紹介します。
・プロンプトはシンプルかつ直接的に
モデルは詳細なガイダンスを必要とせず、簡潔で明確な指示を理解して応答することに優れています。そのためプロンプトはシンプルであるほど良い結果が得られます。・思考の連鎖を促すプロンプトは避ける
モデルは内部で推論を行うため「段階的に考える」や「推論を説明する」といった指示は不要です。・区切り文字を使って明確に
三重引用符やXMLタグ、セクションタイトルなどの区切り文字を使い、入力の異なる部分を明確に示します。その結果、モデルがそれぞれのセクションを適切に解釈しやすくなります。・検索拡張生成 (RAG) での追加コンテキストを制限する
出典:OpenAI「Reasoning models」
追加のコンテキストやドキュメントを提供する際はモデルが応答を過度に複雑にしないよう、最も関連性の高い情報のみを含めるようにします。
これまでの体系化されたプロンプトエンジニアリングが最適解というわけではなく、直感的な内容で書くことやタイトルと本文を明確に区切ることで出力結果の品質を高められるようです。
ChatGPT o1をプログラミングで使う際の具体例
ChatGPT o1を使ったコーディングの例
ChatGPT o1はプロンプトに基づいてコーディングすることに優れています。たとえば次のようなシンプルなリクエストに対して応答します。
プロンプト: ユーザーの入力をバリデートするPython関数を作成してほしい
【出力結果】
def validate_input(user_input):
if isinstance(user_input, str) and user_input.isalpha():
return "Valid input"
else:
return "Invalid input"
print(validate_input("OpenAI"))
print(validate_input("1234"))
ChatGPT o1を使ったデバッグの例
プログラミング中にエラーメッセージが発生した際、ChatGPT o1はそのエラーの原因と解決方法を提案できます。
プロンプト: このエラーメッセージを修正する方法を教えてください: TypeError: unsupported operand type(s) for +: 'int' and 'str'
【出力結果】
num = 10
text = " items"
result = str(num) + text
print(result)
ChatGPT o1を使ったコードレビューと最適化の例
ChatGPT o1は既存のコードの最適化にも最適です。コードレビューを行い改善点を見つける際に役立ちます。
プロンプト: このPython関数のパフォーマンスを改善する方法を教えてください
def find_max(numbers):
max_num = numbers[0]
for num in numbers:
if num >
max_num:
max_num = num return max_num
【出力結果】
def find_max(numbers):
return max(numbers)
References
- ^ OpenAI. 「Introducing OpenAI O1 Preview」. https://openai.com/index/introducing-openai-o1-preview/, (参照 2024-09-18).