先日、OpenAIよりChatGPTの新モデルであるGPT-4o(GPT-4 omni)が公開されました!基本的な性能、機能といった内容は以前別の記事で紹介しています!ぜひこちらの記事からご覧になってください。
今回は新モデルGPT-4oの中で、コーディング能力についてフォーカスしてご紹介していきたいと思います。コードという分野については、画像生成や音声認識といった昨日と比べて、より実用的な分野となってくるかと思います。仕事や研究、趣味など幅広い分野や人々が使うこととなるため気になる方が多いのではないでしょうか?
どれくらいの精度があるかといったことや実際に使っている様子などを詳しく解説しますので、ぜひ最後までご覧ください。
目次
1章 GPT-4oのコーディング能力
まずは、GPT-4oのコーディング能力についてご紹介していきます。
驚くべきことに、GPT-4oのコードの処理能力はGPT-4 turboと同等といわれています。大幅に性能が向上したと言われている中で、コーディングの力はそこまで変化がないというのは意外ですね。
コード生成の性能自体は変化がないものの、コードによって作ることができるものはクオリティが非常に高くなっているという声が多く上がっています。コーディングには、コード生成力だけでなくプロンプトの読み取り力や推論力という総合的な力が必要ということなのでしょう。
GPT-4o made the Space Invaders game for me. I just
picked the textures and told the AI agents to explore the available assets and use them all in the game pic.twitter.com/teAv3gqZoB— Costa Al (@CostaAl4) May 21, 2024
こちらのX(旧Twitter)の投稿はGPT-4oにインベーダーゲームを作成させたものとなっています。投稿者側が行ったこととしては、テクスチャを選ぶこととアセットを全て使えるようにしただけということですのでゲームを作る段階の作業は全てGPT-4oが行ったということになります。
このことは、GPT-4oの情報処理能力や推論力を含めた総合的なコーディング能力の高さを示しているのではないでしょうか!
2章 実際にGPT-4oのコード生成能力を試してみた
今回は、早速GPT-4oでのコード生成を実際に行って使用感や性能についての評価をしていきたいと思います!
前章では、ゲームを生成している様子をご紹介いたしました。しかしながら、多くの人は業務や研究などもっと実用的な場面でコード生成を行うのではないでしょうか。そこで、今回は研究で用いるデータ分析をGPT-4oに行ってもらう様子をご紹介したいと思います。
今回は、Mumax3というシミュレーションソフトで得たovfファイルのデータを情報を配列に変換した上で、フーリエ変換したものをグラフに表すという作業を自分でコードを一切書くことなく進めていきたいと思います。
手順① 参考論文のインプット
今回は、同じデータ処理を行なっている論文があったため、参考論文をGPT-4oにインプットしていきます。ついでに文章の和訳も行ってもらいました。
この論文に詳細なデータ処理手順は記されていないのですが、得たデータのどのパラメータを使ってどのような手順を行ったかの大まかな内容とできたグラフの画像が記されています。
手順② 使用するツールのインプット
今回行う手順の中のovfファイルを配列に変換するという作業はGithub上で公開されている、mx3toolsというものを使っていきます。
mx3tools内の「ovftools.py」というpythonファイルの中にovfファイルをNumPy配列に変更する関数がいくつか定義されています。ovftools.pyの内容をgpt-4oに読み込ませた上で、gpt-4oが認識できているかを確認していきます。
# This code is based on oommfdecode.py by Duncan Parkes:
# https://github.com/deparkes/OOMMFTools/blob/master/oommftools/core/oommfdecode.py
{中略}
f.write(f'{ix},{iy},{iz},{k[0]},{k[1]},{k[2]},{theta}’)
return
# def write_successive_rodrigues(path, fname):
# path = ioutil.pathize(path) # data = group_unpack(path)
# for i in range(len(data)):
こちらが、ovfファイルをnumpy配列にするソースなのですが、この中からgroup_unpack関数を用いるつもりです。この時、時間tと3次元座標x,y,zの情報に対する磁化のx,y,z成分が記されているという認識で良いですか?
以下がGPT-4oの回答となります。
このように、かなりの精度でコードが理解できていることがわかります。
さらに、使用する関数を用いた上で特定の時間・座礁条件での磁化ベクトルを抽出するコードを提案してくれました。
手順③ 与えたデータを踏まえてコードを生成
これにて、現状GPT-4oには行いたい作業の大まかな概要と使う道具の使い方が入れ込まれている状態となっています。ここからは行いたい作業のコードを生成してもらいたいと思います。
今回は加えて特殊な条件でデータを取得したため、使いたいデータ以外は全て配列の中身が0となるように設定されいます。そこで全体の中から使うデータのみを抽出するという作業も行ってもらいます。
プロンプトは以下のようになっています。
今回、mumax3上で特定の領域のみにデータが入るように磁化を取得したため、特定の座標でのみmx,my,mzが0でない値となっています。 今回は、その座標のデータのみを採用して、時間tとその座標をSupplemental_Materials.pdfの手法を用いて周波数10.95Ghzでのkxkyの分散関係を求めたいです。このコードを書いてください
これに対する返答がGPT-4oから実際にコードで返ってきました。
今回に特筆すべき点は、データの抽出に関する処理は指示したもののデータ取得後のフーリエ変換の処理などはテキストでは指示していないということです。このことから、読み込ませた文書からの情報を理解して実際に使用することができているということがわかります。
完成物
完成したグラフはこのようになっています。
このようにしっかりとグラフが出力されました!カラーバーなどもしていないのに論文の画像から勝手にカラーバーの設定までしてくれています。
3章 まとめ
今回は、Open AIの新モデルGPT-4oのコーディング性能について実際に使うことで検証していきました!今回のコード生成を実際に行って特にすごいと感じたことは、コードを自分で書く必要がない、手順をドキュメントから読み取ることができるといったことです。
コーディング性能は変わっていないようですが画像認識力や推論力の向上によってコーディング性能を限界まで引き出すことができているのではないでしょうか。本当に、人間が何もせずともコードが書ける時代が目の前まで来ています!ぜひ、実際にGPT-4oを使ってコーディング性能を確かめてみてください!
この記事は役に立ちましたか?
もし参考になりましたら、下記のボタンで教えてください。
コメント