OpenAI o1をアプリ開発で活用してみる
https://scrapbox.io/files/6720ef7636529a560eab7f61.svg
daiiz
ソフトウェア作家
関心トピック
セマンティック・ウェブ
ソフトウェア作家活動
ブックマークしたウェブページを画像で保存して検索
https://gyazo.com/b83e7033a623f1ba3abd44ff44dd2921
スクリーンショットテキストからの作成日推定
https://gyazo.com/93426cd7c26ae32b1b207871d8547453
https://gyazo.com/336d8a23f1d4eea06a6199a975f0a4e7
ソフトウェア作家活動
テキストと画像で知識検索
https://gyazo.com/c56376cdaf29d798b10cd6a8cacd2682
技術同人誌作家活動
https://gyazo.com/b5af2d6bddc7865c30e3f771640602b8 https://daiiz.booth.pm/items/5854776 https://gyazo.com/b5929e993040f86448574c1ab0b2693c https://daiiz.booth.pm/items/5810081
この発表の目標
最近の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はエラーメッセージが丁寧なので怒られつつ直していくのが手っ取り早い
ドキュメントを読んで対応するのがベストだけど
未対応だった例
https://gyazo.com/6b0a0b3122096facbeb5807ec53e68e6
max_tokens → max_completion_tokens
temperature: 1固定
role: "system"を指定できない
例: Phonnoでの検索結果の概要生成
質問応答タスク
自分だけの画像資料にGroundingできる
https://gyazo.com/6a6d0e861d4d53cb8165f4f398209e9b
例: Phonnoでの画像検索結果の概要生成
gpt-4o
https://gyazo.com/ba2e19f473a9b5cbe59fc041117beb33
claude-3-5-sonnet
https://gyazo.com/d2a74bbd0f9a525485fafb8377af23f8
o1-preview
https://gyazo.com/a73d911e01c49fef3278e9c7b739ff34
→ 精度とコストのバランスを考えるとgpt-4oでもいいかな?
例: Phonnoでの文章郡からのエンティティ抽出
分析タスク
雑多な情報の整理の取っ掛かりとして、重要な事物を発見して関連付ける
https://gyazo.com/e44a5700283f55a08ec756da23741c1b https://gyazo.com/796cf204bb2f1e5d8981bc8631dd16e7
例: OpenAI o1 API 所感
推論時間が長い、利用料金が割高
わがままを言っていることは自覚している
エンドユーザーが直接触れるかたちで組み込むのは時期尚早?
応答時間は気にしない分析タスクに使うのはあり
gpt-4oの置き換えとして使うのは勿体ない
自律的にタスクを組み立てて解くくらいの題材がほしい
固定観念にとらわれずに難しい問題設定をしたい
勝手に問題を小さくしすぎているかもしれない
モデル自身のChain-of-Thought(CoT)に任せるのがいい? そろそろAgentを作りたい daiiz.icon
分析タスクで使う
プログラムで扱いやすいと嬉しい
挨拶や結びなど繋ぎの文章は不要
JSONとしてパースしたい
含まれるべきフィールドを指定したい
レスポンスデータの型を指定できるといい
→ 実はgpt-4oではこれができる!
Structured Outputs
構造化された出力
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%指定通りになるとのこと
https://gyazo.com/35bcc444053b1d368622cdfcba9fd184
嬉しい!
例: これまでの世界
あえてSDKを使わずにHTTPリクエストを組み立ててみる
どんなオプションが渡されているかが理解しやすい
https://gyazo.com/1de202e39663da9bd566ff0a4088362f
例: これまでの世界
実行例
内容の真偽はともかく、この結果をプログラムで加工して扱うのは難しそう
https://gyazo.com/f14710ee63c13363442ec89c1c5f2c26
例: Structured Outputsがある世界
response_formatとしてJSON Schemaを与えられる
https://gyazo.com/8846551ea945dabe601fbbe08aeb66a2
例: Structured Outputsがある世界
response_formatを指定して実行する
https://gyazo.com/c17268b7b6ba246446da138480e89515
https://gyazo.com/86313fc5d646cca0950163644934b0ce
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に自由にのびのびと考えてもらう
https://gyazo.com/c5ad4a37167c5ca5e25ce1ef164d9e06
o1の解答をgpt-4oのコンテキストに載せる
https://gyazo.com/e4eabc0bcc2195a0446967fe59ffe811
gpt-4oから回答を得る
https://gyazo.com/83ead58765d2d514db2cd1cbe3d389ce
いいね!
まとめ
最新のo1-preview APIの使いどころ
gpt-4oでプログラムで解釈しやすい応答を得る方法
交流会で話しましょう!
おまけ: JSON Schemaを書くのが面倒なのですが?
ChatGPTに書いてもらうとよい
https://gyazo.com/2343ebaaeae65dbe4cc2b9db3b4a2c81 https://chatgpt.com/share/671fb950-b96c-8013-83ff-92a35172a40e
おまけ: Structured Outputsの実験コード
おまけ: 関連トーク
おまけ: オフショット
除算を含める条件をなんとかクリアするための立式
勝手にに1を持ち込んで割っている
https://gyazo.com/c96d0b9bf30e4bab8b2d0085dfe7e173
レギュレーション違反だが優秀な立式
4を二回使ってしまっている
https://gyazo.com/fd2082597363bcd744647ce8827693b9
https://gyazo.com/d1958ccc0f643776cf6544a81808e09c
gpt-4oには難しすぎた様子
https://gyazo.com/527687c11e590060c0cf444cd750e5a6
https://gyazo.com/bf990f8edaaacfc45eb148015f832e53