オープンAI o1 o1モデルは回答する前に考え、ユーザーに回答する前に長い思考の連鎖を内部で生成することができます。o1モデルは科学的推論に優れており、競争的プログラミング問題(Codeforces)で89パーセンタイルにランクインし、アメリカ数学オリンピック(AIME)予選で全米上位500人に入り、物理学、生物学、化学問題のベンチマークテスト(GPQA)で人間の博士号レベルの精度を超えています。また、物理学、生物学、化学の問題のベンチマークテスト(GPQA)では、人間の博士号レベルの精度を超えています。
APIには2つの推論モデルが用意されている:
1. o1プレビュー
世界に関する幅広い常識を用いて難問を推理するために設計されたo1モデルの初期プレビュー。
2. o1-ミニ
一般的な知識を必要とせず、コーディング、数学、科学の課題に特に優れている。
o1モデルは、次のような有意な推論を提供する。 前進するしかし、彼らは GPT-4oを置き換えるものではない.
画像入力や関数呼び出し、常に高速な応答時間を必要とするアプリケーションには、GPT-4oおよびGPT-4o miniモデルが適しています。しかし、深い推論を必要とし、より長い応答時間に対応できるアプリケーションを開発するのであれば、o1モデルが優れた選択肢となるでしょう。私たちは、みなさんがこれらのモデルを使ってどのようなものを作り上げるか楽しみにしています!
🧪 o1 モデルは現在テスト段階にある
o1 モデルは現在 試験段階機能が制限されています。アクセス制限 レベル5 の開発者たち。 以下は あなたの使用レベルをチェックし、低料金の制限を持っています。私たちはより多くの機能を追加するために取り組んでいます。 制限速度また、今後数週間で、より多くの開発者へのアクセスを拡大する!
クイックスタート
o1プレビュー
歌で応える o1-ミニ
すべて チャット エンドポイントの使用。
from openai import OpenAI クライアント = OpenAI() response = client.chat.completions.create( model="o1-preview"、 messages=[ { "role": "user", "content": "Write a Bash script that will format the matrix '[1,2]、 "content": "行列を'[1,2],[3,4],[5,6]'という書式の文字列として表し、同じ書式で転置された行列を表示するBashスクリプトを書いてください。" } ] ) print(response.choices[0].message.content)
問題を解くためにモデルが必要とする推論の量にもよるが、これらのリクエストには数秒から数分かかる。
ベータ制限
ベータ版では、チャット補完APIパラメータの多くはまだ利用できません。最も顕著なものは
- モードテキストのみで、画像はサポートしていません。
- メッセージの種類ユーザーメッセージとアシスタントメッセージのみサポートされ、システムメッセージはサポートされません。
- ストリーミングサポートされていません。
- アーティファクトツール、ファンクションコール、レスポンスフォーマットパラメーターはサポートされていません。
- ログプロブサポートされていません。
- その他:: `
温度
`, `トップ
と`。n
に固定1
そしてプレゼンス・ペナルティ
と`。度数ペナルティ
に固定0
`. - アシスタントとバッチこれらのモデルはAssistants APIとBatch APIをサポートしていません。
ベータ版からの段階的な移行に伴い、これらのパラメータの一部に対するサポートが追加される予定である。 o1 シリーズの今後のモデルには、マルチモダリティやツール使用などの機能が含まれる予定である。
推論の仕組み
o1モデルは以下を導入する。 推論トークン.これらのモデルは推論を使用する。 トークン モデルは「考え」、キューの理解を分解し、回答を生成する複数の方法を検討する。推論トークンを生成した後、モデルは目に見える完了トークンとして答えを生成し、文脈から推論トークンを破棄する。
以下は、ユーザーとアシスタント間のマルチステップダイアログの例である。各ステップの入力トークンと出力トークンは保持され、推論トークンは破棄されます。
推論トークンはAPIを介して表示することはできないが、それでもモデルのコンテキストウィンドウ空間を占め、その中で 出力トークン チャージ。
コンテキストウィンドウの管理
o1-previewとo1-miniモデルは128,000トークンのコンテキストウィンドウを提供する。コンテンツが生成されるたびに、出力トークンの最大数に上限が設定される。これには、不可視の推論トークンと可視の生成トークンの両方が含まれる:
- o1-プレビュー:最大32,768トークン
- o1-mini:最大65,536トークン
コンテンツを生成するとき、コンテキストウィンドウに推論トークンのための十分なスペースを確保することが重要である。問題の複雑さにもよるが、モデルは数百から数万の推論トークンを生成することがある。 チャット生成レスポンス・オブジェクトの使用法 正鵠を得る コンプリーション・トークン詳細
眺める:
usage: { total_tokens: 1000、 prompt_tokens: 400、 completion_tokens: 600、 完了_トークン: { 推論トークン: 500 } }
コスト管理
o1ファミリーのモデルのコストを管理するには 最大完了トークン数
パラメータは、モデルが生成するトークンの総数(推論トークンと生成トークンの両方)を制限する。
前のモデルでは、`はmax_tokens
パラメータ ` は、生成されるトークンの数とユーザーに見えるトークンの数を制御する。しかし、o1 ファミリーでは、内部推論トークンが存在するため、生成されるトークンの総数が見えるトークンの数を超えることがあります。
アプリケーションによっては `max_tokens
APIから受け取ったトークンの数に合わせ、o1シリーズでは ` を導入している。最大完了トークン数
この明示的な選択によって、新しいモデルを使用するときに既存のアプリケーションが壊れることがなくなります。これまでのすべてのモデルではmax_tokens
パラメータ`は元の機能を維持している。
推論の余地を与える
生成されたトークンがコンテキスト・ウィンドウの上限に達した場合、または `最大完了トークン数
の値であれば、`を受け取ることになる。終了理由
に設定する。長さ
のチャット生成応答。これは目に見える生成トークンが生成される前に起こるかもしれません。つまり、あなたは入力と推論トークンのためにお金を払い、目に見える応答を受け取らないかもしれません。
これを防ぐには、コンテキスト・ウィンドウに十分なスペースを空けるか、あるいは、``ContextWindow''を設定してください。最大完了トークン数
OpenAIは、これらのモデルを使い始めるときに、推論と出力のために少なくとも25,000トークンを確保することを推奨しています。ヒントに必要な推論トークンの数に慣れてきたら、それに応じてこのバッファを調整することができます。
キュー・ワードの提案
これらのモデルは、明確で簡潔なキューを使用するときに最高のパフォーマンスを発揮します。いくつかのキューエンジニアリングのテクニック(数発のキューや、モデルに「ステップバイステップで考えさせる」など)は、パフォーマンスを向上させない可能性があり、時には逆効果になることもあります。ベストプラクティスをいくつか紹介しよう:
- プロンプトはシンプルかつ明確に: これらのモデルは、あまり多くの指導をしなくても、短く明確な指示を理解し、それに応えるのが得意だ。
- 連鎖的思考を避ける: これらのモデルは内部で推論するため、「段階的に考える」「推論を説明する」ように誘導する必要はない。
- セパレータを使用すると、わかりやすくなります: 三重引用符、XMLタグ、セクションの見出しなどのセパレータを使用して、入力のさまざまな部分に明確なラベルを付けると、モデルが各部分を正しく理解できるようになります。
- 強化された世代を求めて(ラグ) in Limit additional context:** 追加の文脈や文書を提供するときは、モデルの応答を複雑にしすぎないように、最も関連性の高い情報のみを含めること。
プロンプトの例
コーディング(リファクタリング)
OpenAI o1 モデルファミリーは、複雑なアルゴリズムを実装し、コードを生成することができます。以下のヒントは、o1に 反応 コンポーネント
from openai import OpenAI クライアント = OpenAI() プロンプト = """ ディレクティブ - ノンフィクション本のテキストを赤くするために、以下のReactコンポーネントを修正する。 - レスポンスにはコードのみを返し、マークダウンのコードブロックのような追加のフォーマットは含めないでください。 - フォーマットについては、4つの空白のインデントを使用し、コードの行数は80行以下にしてください。 const books = [ { title: 'Dune', category: 'fiction', id: 1 }、 ]. エクスポート default function BookList() { const listItems = books.map(ブック =>リスト項目)
- {listItems}
コード(計画)
OpenAI o1 モデルファミリーは、マルチステッププランの作成にも長けています。このプロンプトの例では、o1に完全なソリューションのファイルシステム構造を作成し、必要なユースケースを実装するためのPythonコードを提供するよう求めています。
from openai import OpenAI クライアント = OpenAI() prompt = """ Pythonアプリケーションを作りたいのですが、ユーザーの質問を受け取り、対応する答えをデータベースから探します。近い答えが見つかれば、その答えを返します。一致しない場合は、ユーザーに答えを尋ね、質問と答えのペアをデータベースに保存します。この目的のためにディレクトリ構造の計画を作成し、各ファイルの完全な内容を返しなさい。コードの途中ではなく、最初と最後だけに理由を書いてください。 """ response = client.chat.completions.create( model="o1-preview"、 messages=[ { "役割": "ユーザー", "コンテンツ": [ 「コンテンツ": [ { 「タイプ": "テキスト", "テキスト": プロンプト 「テキスト": プロンプト }, } }, [ "コンテンツ": [ "タイプ": "テキスト", "テキスト": プロンプト } ] ) print(response.choices[0].message.content)
STEM研究
OpenAI o1 モデルファミリーは、STEM 研究で優れたパフォーマンスを発揮します。基本的な研究タスクをサポートするために使用されるプロンプトは、通常、強力な結果を示します。
from openai import OpenAI クライアント = OpenAI() プロンプト = """ 新しい抗生物質の研究を進めるために、どの3つの化合物の研究を検討すべきでしょうか?なぜそれらを検討すべきなのでしょうか? """ レスポンス = client.chat.completions.create( model="o1-preview"、 messages=[ { "role": "user", "content": prompt 「コンテンツ": プロンプト } ] ) print(response.choices[0].message.content)
使用例
o1を使用した実際のユースケースの例をいくつか以下に挙げる。 料理本 で発見された。