OpenAI o1をアプリ開発で活用してみる
ChatGPT o1(オーワン)について語る会での発表資料です 2024/10/29
daiiz
ソフトウェア作家
京都生活8年目
関心トピック
セマンティック・ウェブ
ソフトウェア作家活動
ブックマークしたウェブページを画像で保存して検索
スクリーンショットテキストからの作成日推定
ソフトウェア作家活動
テキストと画像で知識検索
技術同人誌作家活動
生成AIと向き合う薄い本
この発表の目標
最近のOpenAIのLLM APIを知る
APIの呼び出し方の雰囲気を掴む
gpt-4o
Structured Outputs
o1
o1 + gpt-4o
さっそく試してみたくなるとなおよし
OpenAI o1
2024/9/12 に登場
Released o1-preview and o1-mini, new large language models trained with reinforcement learning to perform complex reasoning tasks.
OpenAI o1
We've developed a new series of AI models designed to spend more time thinking before they respond. They can reason through complex tasks and solve harder problems than previous models in science, coding, and math.
推論能力が向上
より複雑なタスクが解けるようになるとのこと
科学、数学、コーディングなど
OpenAI o1 API
2種類ある
o1-preview
reasoning model designed to solve hard problems across domains.
o1-mini
faster and cheaper reasoning model particularly good at coding, math, and science.
Context window
12.8万トークン
gpt-
を冠していない Reasoning represents a new level of AI capability so we decided to reset the counter back to 1 and introduce this series as OpenAI o1.
o1の"o"はOpenAIを意味するとのこと
OpenAI o1 API
とりあえず使ってみる
慣れるには試行錯誤を繰り返すしかない
基本的に呼び出しモデル名を変えるだけでいい
一部未対応のパラメータがある
OpenAIのAPIはエラーメッセージが丁寧なので怒られつつ直していくのが手っ取り早い
ドキュメントを読んで対応するのがベストだけど
未対応だった例
max_tokens → max_completion_tokens
temperature: 1固定
role: "system"を指定できない
例: Phonnoでの検索結果の概要生成
質問応答タスク
スクリーンショットや写真に対するRAGシステム
自分だけの画像資料にGroundingできる
詳しくは知的生産のための画像検索システム開発記にて
例: Phonnoでの画像検索結果の概要生成
デモ: 自分のブログに対する質問応答
gpt-4o
claude-3-5-sonnet
o1-preview
→ 精度とコストのバランスを考えるとgpt-4oでもいいかな?
例: Phonnoでの文章郡からのエンティティ抽出
分析タスク
雑多な情報の整理の取っ掛かりとして、重要な事物を発見して関連付ける
→ 良さげな感じだがGemini 1.5 Proでも十分だった
例: OpenAI o1 API 所感
推論時間が長い、利用料金が割高
わがままを言っていることは自覚している
エンドユーザーが直接触れるかたちで組み込むのは時期尚早?
応答時間は気にしない分析タスクに使うのはあり
gpt-4oの置き換えとして使うのは勿体ない
自律的にタスクを組み立てて解くくらいの題材がほしい
固定観念にとらわれずに難しい問題設定をしたい
勝手に問題を小さくしすぎているかもしれない
モデル自身のChain-of-Thought(CoT)に任せるのがいい?
ベストなプロンプト像も変わってくる?
そろそろAgentを作りたい 
分析タスクで使う
プログラムで扱いやすいと嬉しい
挨拶や結びなど繋ぎの文章は不要
JSONとしてパースしたい
含まれるべきフィールドを指定したい
レスポンスデータの型を指定できるといい
→ 実はgpt-4oではこれができる!
Structured Outputs
構造化された出力
gpt-4o-2024-08-06モデルで使えるオプション機能
Today we’re introducing Structured Outputs in the API, a new feature designed to ensure model-generated outputs will exactly match JSON Schemas provided by developers.
応答として期待するデータのJSONスキーマを指定できる
System promptで自然文で回答制約を記述しなくてよい世界
100%指定通りになるとのこと
嬉しい!
例: これまでの世界
あえてSDKを使わずにHTTPリクエストを組み立ててみる
どんなオプションが渡されているかが理解しやすい
例: これまでの世界
実行例
内容の真偽はともかく、この結果をプログラムで加工して扱うのは難しそう
例: Structured Outputsがある世界
response_formatとしてJSON Schemaを与えられる
例: Structured Outputsがある世界
response_formatを指定して実行する
Reactとかに渡しやすそうなデータが得られて嬉しい
o1でもStructured Outputsを使える?
→ 現時点では使えない
サポートされているのはgpt-4oのみ
{'error': ['message': "Invalid parameter: 'response_format' of type 'json_schema' is not supported with this model. Learn more about supported models at the Structured Outputs guide: ...
o1でもStructured Outputsを使いたい
強力な思考力の恩恵を受けつつ
確実に構造化されたデータがほしい!
モデルを2段階で呼び出せばよさそう
o1に考えさせて、4oに構造化させる
o1-preview + gpt-4o
o1に自由にのびのびと考えてもらう
o1の解答をgpt-4oのコンテキストに載せる
スキーマ定義はこちら
gpt-4oから回答を得る
いいね!
まとめ
最新のo1-preview APIの使いどころ
gpt-4oでプログラムで解釈しやすい応答を得る方法
交流会で話しましょう!
おまけ: JSON Schemaを書くのが面倒なのですが?
ChatGPTに書いてもらうとよい
おまけ: Structured Outputsの実験コード
おまけ: 関連トーク
おまけ: オフショット
o1-previewが賢い様子
除算を含める条件をなんとかクリアするための立式
勝手にに1を持ち込んで割っている
レギュレーション違反だが優秀な立式
4を二回使ってしまっている
o1-miniも賢い様子
gpt-4oには難しすぎた様子