OpenAI o1をアプリ開発で活用してみる

OpenAI o1をアプリ開発で活用してみる



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を作りたい daiiz


分析タスクで使う
プログラムで扱いやすいと嬉しい
挨拶や結びなど繋ぎの文章は不要
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には難しすぎた様子

Powered by Helpfeel