【受託ERP2G】生成AI×開発:生成AIでどこまでできるのか~前編~
Photo by Aidin Geranrekab on Unsplash
受託ERP部第2グループのメンバーより、生成AIについての発信がありました!投稿したメンバーが、いくつか生成AIのサービスを見たり、触ったりした内容についてまとめた記事になります。ストーリーでは前編・後編に分けてお伝えします!
今までの生成AIの問題点
皆さんはChatGPTを利用されていますか。業務中の疑問を質問したり、ちょっとしたコードを生成したりと、かなり便利なので重宝している方も多いのではないかと思います。
一方で、ChatGPTに質問しても、色々な案は出してくれるものの、一般的過ぎてあまり役に立たなかったり、複雑な問題では正しい回答が得られなかったりした経験はないでしょうか。
これは、LLM(大規模言語モデル)が学習したデータから「最適」と思われる文章を生成する仕組みであるため、段階的な思考が必要な複雑な問題に対して的確な回答を返すのが難しいことが原因の一つです。
この問題に対してはいくつかの対応策があります。以下に例を挙げます。
- 質問内容に具体的で段階的な手順を記載する。たとえば、「Step by Step」(一歩一歩)というキーワードを入れるなどのテクニックを駆使する。(プロンプトエンジニアリング)
- LLMの学習データを基に、特定の質問内容に合わせて追加学習し、微調整を加える。(ファインチューニング)
- 回答までの段階的な手順をワークフローとしてタスク化し、そのタスクに従ってChatGPTとのやり取りを繰り返す。(例:Difyなどのサービス)
しかし、大多数の利用者にとっては、プロンプトエンジニアリングのテクニックはいくつか利用できても、他の方法はなかなかハードルが高いのではないでしょうか。そのため、ChatGPTはあまり使ってないという人もいるかもしれません。
OpenAI o1の登場
そんな中、OpenAIからChatGPTではない新しいモデル「OpenAI o1」が発表されました。
この新しいモデルは、ChatGPTとは異なる「推論モデル(reasoning models)」シリーズの初代として、OpenAIの名前を冠して9月12日に発表されました。ChatGPTに比べて機能や性能が大幅に向上しており、特に重要な「推論機能(reasoning)」が追加されています。
この推論機能により、OpenAI o1は自ら段階的に思考し、推論を重ねながら結論を導き出すことが可能となり、従来苦手とされていた複雑な問題にも対応できるようになりました。その効果として、OpenAIのテストでは、IQ120で人類の平均を初めて上回ったこと、物理・化学・生物学の博士課程の学生と同等のパフォーマンスを発揮したこと、アメリカ数学オリンピアード予選(AIME)では米国トップ500位以内に入賞したことなどが示されており、非常に優れた性能を持つことが明らかになっています。
Introducing OpenAI o1 | OpenAI
OpenAI o1は戦略立案、ブレインストーミング、計画立案、データ分析など、さまざまな分野で活用できるとされていますが、今回注目したいのはそのコーディング能力です。
OpenAI o1は、与えられたプロンプトからプログラムの構造を設計し、最適な方法を推論しながらコーディングすることができます。その結果、これまでのように一部のコードを出力するのではなく、ゼロからアプリを実装することが可能だそうです。今回はそれを試してみたいと思います。
OpenAI o1でアプリの実装
OpenAI o1-preview
前置きが長くなりましたが、OpenAI o1を使用してリアルタイムチャットシステムを構築してみます。
以下のようなプロンプトを入力しました。
WebSocketを使ったリアルタイムチャットアプリケーションを開発してください。フロントエンドはVue.jsを使用し、バックエンドはNode.jsで、データはPostgreSQLに保存してください。また、ユーザーごとにチャット履歴を保存し、リアルタイムでのメッセージ送信と受信が可能なように設計してください。 手順を一つ一つ提示して、環境構築や実行できるように指示をお願いします。実際に動作するコードをすべて提示してください。
OpenAI o1は推論機能を活用して段階的に思考し、その過程を表示するため、何を行ったのかが大まかに理解できます。
1分弱の思考後、その結果を出力してくれます。
改善点も挙げてくれます。
ChatGPT自体には実行環境が備わっていないため、指示に従って環境を構築することで一応実行可能となりました。しかし、改善点として挙げられているように、ユーザー間のチャット機能は備わっていないようです。
他のユーザーとのチャット機能と見た目の改善を依頼してみます。
他のユーザーとの個別チャットがしたいのと、見た目をモダンでシンプルにしてください
拡張方法を提示してくれます。
OpenAI o1に聞きながら指示通りに進めてみましたが、ユーザー間の個別チャットがどうしてもうまくいきませんでした。また、見た目の改善もVuetifyを提案されましたが、バージョンの問題で導入ができませんでした。
OpenAI o1-mini
ここまではOpenAI o1-preview版を使用していましたが、OpenAIからは「OpenAI o1-mini」というモデルも提供されています。OpenAI o1-miniはo1-previewよりも小型のモデルであり、処理速度が速く低コストであるため、広範な一般知識を必要としないアプリケーション開発に適したモデルとされています。
OpenAI o1-miniを使用して、今までうまくいかなかった部分の指示を追加したプロンプトで再度チャットアプリ開発を依頼しました。
実行方法について丁寧な指示があったため、若干不明な点もありましたが、無事に実行し動作確認を行うことができました。以下のように、user_1とuser_2間でリアルタイムにメッセージのやり取りが可能となっています。
所感
このレベルのアプリケーションであれば、ChatGPT 4oでも十分対応できると思いますので、OpenAI o1のサンプルとしては不十分だと思います。しかし、今回試してみて、o1の方が細かい点について指示や提案をしてくれる印象を持ちました。
ただし、OpenAI o1は開発環境や実行環境を備えていないため、環境構築やコードのコピーなどの作業にかなり手間がかかりました。対策として、OpenAI o1の推論機能を活用して詳細な設計や手順を出力し、それをコード生成や実行が得意なAIに渡して実装する方法が提案されています。確かに、これが現時点でのo1の正しい使い方の一つであると思いました。
興味がある方は探してみると世界中の人が色々悪戦苦闘しているのを見ることができると思います。
ちなみに、この人はAIと対戦できるチェスゲームが作れたらしいです。
最後まで読んでいただき、ありがとうございました。前編はここまでとなります。
後編はその他の生成AIのサービスについて紹介します。