生成AIに疑似コードで指示すると自然言語よりも効率的にプログラムが生成できるというアイデアから生まれた、生成AI用の疑似言語「SudoLang」

今回は「生成AIに疑似コードで指示すると自然言語よりも効率的にプログラムが生成できるというアイデアから生まれた、生成AI用の疑似言語「SudoLang」」についてご紹介します。

関連ワード (上記、開発、開発環境等) についても参考にしながら、ぜひ本記事について議論していってくださいね。

本記事は、Publickey様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。


ChatGPTやCopilotなどの生成AIを用いてコードを生成しようとすると、多くの場合プロンプトを自然言語で書くことになるでしょう。

しかし自然言語で的確にプログラムの内容を表現するのは、ときに面倒だったり、あいまいさを排除することが難しかったりします。

一方で、プログラマが自分でコードを書こうとするとき、あるいは他のプログラマとコードの内容を議論するときに、自然言語をプログラミング言語のような構文で書く、いわゆる「擬似コード」を使うことがよくあります。

例えばこんな風に自然言語をコードっぽくホワイトボードに書いたことのあるプログラマの方は多いのではないでしょうか?

このような疑似コードを、生成AIと人間がやりとりするためのプログラミング言語として発展させ、構文などを定義した生成AI用の疑似プログラミング言語「SudoLang」が提唱されています。

生成AIによるコード生成の面で大変興味深い取り組みに見えたので、ここで紹介したいと思います。

SudoLangをトランスパイルしてJavaScriptを生成

SudoLangは前述の擬似コードのように、自然言語による柔軟で分かりやすい記述に、プログラミング言語のような構造を持たせたものといえるでしょう。

これを生成AIが備える強力な推論の能力やコードの生成能力と組み合わせることで、単に自然言語で指示するよりも効率的で正確にプログラマの意図を生成AIに伝えることができ、的確なコードが生成できるようになるわけです。

言語の詳しい説明などはGitHubの「paralleldrive/sudolang-llm-support」で紹介されています。

SudoLangの開発者であるEric Elliott氏はAdobeでFireflyのエンジニアリングマネージャを務めている人物で、JavaScriptのエキスパートとしても知られています。

Eric Elliott氏は自身でSudoLangを開発した後、SudoLangをトランスパイルしてJavaScriptのコードやテストを生成できるようになったため、もうJavaScriptを自分で書きたくないと発言しています。

I don't write JavaScript anymore. I write SudoLang and transpile to JavaScript. I build a whole suite of tests in seconds. Complex React components in a few minutes. Use APIs I don't know. The Art of Effortless Programming https://t.co/aCVFxC3VUu

— Eric Elliott (@_ericelliott) May 23, 2023

下記はオライリーのブログに投稿されたSudoLangを紹介する記事「Unlocking the Power of AI Driven Development with SudoLang」です。

このオライリーの記事はSudoLangの開発者であるEric Elliott氏自身が書いています。

fig

SudoLangは生成AIがランタイムでありトランスパイラである

SudoLangが興味深いのは、単に擬似コードで生成AIに意図を伝えるだけではありません。

開発プラットフォームとして生成AIがどう振る舞うべきかまでSudoLangのコード内に記述することで、生成AIをSudoLangコードのランタイムとしてそのまま実行させてロールプレイングゲームの相手として振る舞わせること(Example:Singular: A SudoLang Adventure)や、SudoLangコードの中に生成AIをコマンドラインインターフェイスのような開発環境としての振る舞いまで記述することで、生成AIに読み込ませたSudoLangコードの参照や変更、テストコードの生成、SudoLangからJavaScriptなどの実際のコードへのトランスパイルなどまで実行させることなどもできます(Example:autodux.sudo)。

(記事の最後の方で紹介する動画を見れば、上記のサンプルコードをそのままChatGPTにペーストしてSudoLangを試す方法がなんとなく分かるはずです)

例えば下記が「autodux.sudo」のSudoLangコード内で生成AIにSudoLangからJavaScriptへのトランスパイルを命じているコードです。生成AIの高い推論能力に期待して、正確に、読みやすく、関数的に、などなど口頭で人間に説明するみたいに書かれていて面白いですね。

あるいは下記のように自然言語でざっくり書くだけで(実際にはもう少しSudoLangコードには振る舞いが書き込まれていますが)、生成AIはそれがどのようなものかを推測し、コマンドプロンプトとして振る舞い、「/」から始まる命令を受け入れて実行してくれます。

下記の動画もEric Elliott氏が上記のautodux.studioのSudoLangコードをChatGPT-4に読み込ませた上で、対話や操作の後にトランスパイルでJavaScriptコードを生成している様子を紹介しています。

プロンプトエンジニアリングは生成AIが未成熟であるがゆえに必要なテクニックであり、生成AIの能力が高まれば不要になるのではないか、という議論があります。

一方で、自然言語が持つあいまいさや、人間の正確に自然言語を記述できる限られた能力は今後も変わらないとすると、生成AIの能力向上とは別に、この課題を解決する上でSudoLangのような言語のアイデアは有用なのではないかと思わされます。

COMMENTS


Recommended

TITLE
CATEGORY
DATE
第2回:Microsoft Exchange ServerやOSSライブラリーを悪用する手法
IT関連
2021-07-13 23:07
NECら、量子セキュアクラウドシステムを使った次世代レーザー設計の最適化処理などを実現
IT関連
2022-10-07 20:06
DeepL、企業向け文章作成支援ツール「DeepL Write Pro」提供–独自LLMを採用
IT関連
2024-04-27 20:13
セブン−イレブン・ジャパン、「WOVN.io」導入–サステナビリティーの多言語発信を強化
IT関連
2023-10-03 08:28
感情検知AIとアイトラッキング技術の出会いは何を生み出すか
IT関連
2021-06-15 15:23
OpenAI、「ChatGPT」に検索機能を追加–文脈に応じた回答で差別化図る
IT関連
2024-11-02 01:54
プロジェクト管理の老舗Basecampで「社員の政治的意見表明禁止」により社員3分の1が退社
パブリック / ダイバーシティ
2021-05-02 04:35
GitLabが有料サブスクリプションプランの構成を変更、Bronze / Starterを廃止
ネットサービス
2021-01-29 15:43
丸紅ネットワークソリューションズ、IT環境の運用を一元化する新サービス
IT関連
2023-01-25 05:03
SNSでの風評被害リスクに対応 中小企業向け保険特約発売へ
IT関連
2021-01-27 21:48
人間が“鼻輪ウェアラブル”装着 臭いの方向を検知しガス漏れの場所を特定 :Innovative Tech
トップニュース
2021-08-11 00:32
モノタロウ、オーダー管理システムを高度化–日本IBMの受発注プラットフォームを活用
IT関連
2022-04-09 16:35
Ruby 3.3正式リリース。YJITコンパイラの大幅な性能向上、RubyのスレッドスケジューラとしてM:Nスレッドスケジューラ導入など新機能
Ruby
2024-01-09 15:35
シチズン時計、セキュリティ予算を再配分して脆弱性管理ツールを導入
IT関連
2024-06-18 22:33