kmizuの日記

プログラミングや形式言語に関係のあることを書いたり書かなかったり。

ChatGPT APIベースの多言語トランスパイラGPTranslatorを公開しました!

 この日記やTwitterなどで、ChatGPT (GPT-3.5, GPT-4)はプログラミング言語間の変換(に限らないですが)が得意ということを書きましたが、試している内に「毎回似たような指示するのだるいな」と思うようになりました。というわけで、Reactベースで動くChatGPT APIを使ったトランスパイラGPTranslatorを作ってみました。ちなみに最近はトランスパイラという言い方がすっかり主流になった気がするのですが、一昔前だとトランスレータと呼ばれてた気がしますね……。

github.com

 といっても、要はChatGPT APIに投げる前に適当なプロンプトを付加しているだけという代物です。ただ、コードフラグメントを別言語に変換するときや、YAML -> JSONみたいな設定ファイルの形式を変換するときなんかには多少役に立つのではないかなと思います。

 詳細はGitHubリポジトリを見てもらうとして、OpenAIのAPI KEYを

export REACT_APP_OPENAI_API_KEY=<api key> # this must be set before npm start

 という形で指定しなければいけないところは多少使い勝手が悪いかもしれません(設定ファイルに書けた方がいいような気もします)。ともあれ、使ってみてバグや改良点などあればPull Requestなどがんがんいただければと思います。言うまでもないですが、ChatGPTベースということで精度は完璧ではありませんし、変換元や変換先の言語によってはうまくいかなかったりすることもあります。

以下のスクリーンショットだと、Javaにはメソッドの中に直接メソッドを書く機能はないのになんか入っちゃってますね。そもそも型がないJavaScriptをそのままJavaに変換しようと思うと無理が生じるのは必然でもありますが。

JavaScript to Java

一方、PythonからJavaScriptへの変換は比較的素直に行きやすいようです(もっと複雑なサンプルになればまた別ですが)。

a

Python to JavaScript