オープンAI o1 o1モデルは回答する前に考え、ユーザーに回答する前に長い思考の連鎖を内部で生成することができます。o1モデルは科学的推論に優れており、競争的プログラミング問題(Codeforces)で89パーセンタイルにランクインし、アメリカ数学オリンピック(AIME)予選で全米上位500人に入り、物理学、生物学、化学問題のベンチマークテスト(GPQA)で人間の博士号レベルの精度を超えています。また、物理学、生物学、化学の問題のベンチマークテスト(GPQA)では、人間の博士号レベルの精度を超えています。
APIには2つの推論モデルが用意されている:
1. o1-preview
世界に関する幅広い常識を用いて難問を推理するために設計されたo1モデルの初期プレビュー。
2. o1-mini
一般的な知識を必要とせず、コーディング、数学、科学の課題に特に優れている。
o1モデルは、次のような有意な推論を提供する。 前進するしかし、彼らは GPT-4oを置き換えるものではない.
画像入力や関数呼び出し、常に高速な応答時間を必要とするアプリケーションには、GPT-4oおよびGPT-4o miniモデルが適しています。しかし、深い推論を必要とし、より長い応答時間に対応できるアプリケーションを開発するのであれば、o1モデルが優れた選択肢となるでしょう。私たちは、みなさんがこれらのモデルを使ってどのようなものを作り上げるか楽しみにしています!
🧪 o1 モデルは現在テスト段階にある
o1 モデルは現在 テスト段階機能が制限されています。アクセス制限 レベル5 の開発者たち。 以下は あなたの使用レベルをチェックし、低料金の制限を持っています。私たちはより多くの機能を追加するために取り組んでいます。 制限速度また、今後数週間で、より多くの開発者へのアクセスを拡大する!
クイックスタート
o1-preview
歌で応える o1-mini
すべて チャット エンドポイントの使用。
from openai import OpenAI client = OpenAI() response = client.chat.completions.create( model="o1-preview", messages=[ { "role": "user", "content": "编写一个 Bash 脚本,将矩阵表示为格式 '[1,2],[3,4],[5,6]' 的字符串,并以相同的格式打印转置矩阵。" } ] ) print(response.choices[0].message.content)
問題を解くためにモデルが必要とする推論の量にもよるが、これらのリクエストには数秒から数分かかる。
ベータ制限
ベータ版では、チャット補完APIパラメータの多くはまだ利用できません。最も顕著なものは
- モードテキストのみで、画像はサポートしていません。
- メッセージの種類ユーザーメッセージとアシスタントメッセージのみサポートされ、システムメッセージはサポートされません。
- ストリーミングサポートされていません。
- アーティファクトツール、ファンクションコール、レスポンスフォーマットパラメーターはサポートされていません。
- ログプロブサポートされていません。
- その他:: `
temperature
`, `top_p
と`。n
に固定1
そしてpresence_penalty
と`。frequency_penalty
に固定0
`. - アシスタントとバッチこれらのモデルはAssistants APIとBatch APIをサポートしていません。
ベータ版からの段階的な移行に伴い、これらのパラメータの一部に対するサポートが追加される予定である。 o1 シリーズの今後のモデルには、マルチモダリティやツール使用などの機能が含まれる予定である。
推論の仕組み
o1モデルは以下を導入する。 推論トークン.これらのモデルは推論を使用する。 トークン モデルは「考え」、キューの理解を分解し、回答を生成する複数の方法を検討する。推論トークンを生成した後、モデルは目に見える完了トークンとして答えを生成し、文脈から推論トークンを破棄する。
以下は、ユーザーとアシスタント間のマルチステップダイアログの例である。各ステップの入力トークンと出力トークンは保持され、推論トークンは破棄されます。

推論トークンはコンテキストに保存されない
推論トークンはAPIを介して表示することはできないが、それでもモデルのコンテキストウィンドウ空間を占め、その中で 出力トークン チャージ。
コンテキストウィンドウの管理
o1-previewとo1-miniモデルは128,000トークンのコンテキストウィンドウを提供する。コンテンツが生成されるたびに、出力トークンの最大数に上限が設定される。これには、不可視の推論トークンと可視の生成トークンの両方が含まれる:
- o1-プレビュー:最大32,768トークン
- o1-mini:最大65,536トークン
コンテンツを生成するとき、コンテキストウィンドウに推論トークンのための十分なスペースを確保することが重要である。問題の複雑さにもよるが、モデルは数百から数万の推論トークンを生成することがある。 チャット生成レスポンス・オブジェクトの使用法 正鵠を得る completion_tokens_details
眺める:
usage: { total_tokens: 1000, prompt_tokens: 400, completion_tokens: 600, completion_tokens_details: { reasoning_tokens: 500 } }
コスト管理
o1ファミリーのモデルのコストを管理するには max_completion_tokens
パラメータは、モデルが生成するトークンの総数(推論トークンと生成トークンの両方)を制限する。
前のモデルでは、`はmax_tokens
パラメータ ` は、生成されるトークンの数とユーザーに見えるトークンの数を制御する。しかし、o1 ファミリーでは、内部推論トークンが存在するため、生成されるトークンの総数が見えるトークンの数を超えることがあります。
アプリケーションによっては `max_tokens
APIから受け取ったトークンの数に合わせ、o1シリーズでは ` を導入している。max_completion_tokens
この明示的な選択によって、新しいモデルを使用するときに既存のアプリケーションが壊れることがなくなります。これまでのすべてのモデルではmax_tokens
パラメータ`は元の機能を維持している。
推論の余地を与える
生成されたトークンがコンテキスト・ウィンドウの上限に達した場合、または `max_completion_tokens
の値であれば、`を受け取ることになる。finish_reason
に設定する。length
のチャット生成応答。これは目に見える生成トークンが生成される前に起こるかもしれません。つまり、あなたは入力と推論トークンのためにお金を払い、目に見える応答を受け取らないかもしれません。
これを防ぐには、コンテキスト・ウィンドウに十分なスペースを空けるか、あるいは、``ContextWindow''を設定してください。max_completion_tokens
OpenAIは、これらのモデルを使い始めるときに、推論と出力のために少なくとも25,000トークンを確保することを推奨しています。ヒントに必要な推論トークンの数に慣れてきたら、それに応じてこのバッファを調整することができます。
キュー・ワードの提案
これらのモデルは、明確で簡潔なキューを使用するときに最高のパフォーマンスを発揮します。いくつかのキューエンジニアリングのテクニック(数発のキューや、モデルに「ステップバイステップで考えさせる」など)は、パフォーマンスを向上させない可能性があり、時には逆効果になることもあります。ベストプラクティスをいくつか紹介しよう:
- プロンプトはシンプルかつ明確に: これらのモデルは、あまり多くの指導をしなくても、短く明確な指示を理解し、それに応えるのが得意だ。
- 連鎖的思考を避ける: これらのモデルは内部で推論するため、「段階的に考える」「推論を説明する」ように誘導する必要はない。
- セパレータを使用すると、わかりやすくなります: 三重引用符、XMLタグ、セクションの見出しなどのセパレータを使用して、入力のさまざまな部分に明確なラベルを付けると、モデルが各部分を正しく理解できるようになります。
- 強化された世代を求めて(ラグ) in Limit additional context:** 追加の文脈や文書を提供するときは、モデルの応答を複雑にしすぎないように、最も関連性の高い情報のみを含めること。
プロンプトの例
コーディング(リファクタリング)
OpenAI o1 モデルファミリーは、複雑なアルゴリズムを実装し、コードを生成することができます。以下のヒントは、o1に 反応 コンポーネント
from openai import OpenAI client = OpenAI() prompt = """ 指令: - 对下面的 React 组件进行修改,使得非小说类书籍的文字变为红色。 - 回复中只返回代码,不要包含任何额外的格式,如 markdown 代码块。 - 在格式上,使用四个空格缩进,且代码行不超过 80 列。 const books = [ { title: '沙丘', category: 'fiction', id: 1 }, { title: '科学怪人', category: 'fiction', id: 2 }, { title: '魔球', category: 'nonfiction', id: 3 }, ]; export default function BookList() { const listItems = books.map(book => <li> {book.title} </li> ); return ( <ul>{listItems}</ul> ); } """ response = client.chat.completions.create( model="o1-mini", messages=[ { "role": "user", "content": [ { "type": "text", "text": prompt }, ], } ] ) print(response.choices[0].message.content)
コード(計画)
OpenAI o1 モデルファミリーは、マルチステッププランの作成にも長けています。このプロンプトの例では、o1に完全なソリューションのファイルシステム構造を作成し、必要なユースケースを実装するためのPythonコードを提供するよう求めています。
from openai import OpenAI client = OpenAI() prompt = """ 我想构建一个 Python 应用程序,接收用户问题并在数据库中查找对应答案。如果找到相近匹配,就返回匹配的答案。如果没有匹配,要求用户提供答案,并将问题/答案对存储到数据库中。为此创建一个目录结构的计划,然后返回每个文件的完整内容。仅在代码开始和结束时提供你的推理,而不是在代码中间。 """ response = client.chat.completions.create( model="o1-preview", messages=[ { "role": "user", "content": [ { "type": "text", "text": prompt }, ], } ] ) print(response.choices[0].message.content)
STEM研究
OpenAI o1 モデルファミリーは、STEM 研究で優れたパフォーマンスを発揮します。基本的な研究タスクをサポートするために使用されるプロンプトは、通常、強力な結果を示します。
from openai import OpenAI client = OpenAI() prompt = """ 我们应该考虑研究哪三种化合物以推进新抗生素的研究?为什么要考虑它们? """ response = client.chat.completions.create( model="o1-preview", messages=[ { "role": "user", "content": prompt } ] ) print(response.choices[0].message.content)
使用例
o1を使用した実際のユースケースの例をいくつか以下に挙げる。 料理本 で発見された。