はじめに
最近、ChatGPTにLisp形式でプロンプトを投げると精度が向上するという噂を耳にしました。私も、この現象に興味を持ち、実際に試してみることにしました。
この記事では、その実験結果と考察を共有します。
実験内容
ChatGPT(GPT-4モデル)に対して、以下の2つの形式でプロンプトを投げてみました:
- 自然言語形式
- Lisp形式(Clojureベースの擬似コード)
実験結果
1. 自然言語形式のプロンプト
「吾輩は猫である」の序文をギャル語で生成して。
もちろん、ギャル語で「吾輩は猫である」の序文を生成しますね!
にゃんこである。名前とか、まだないし~。どこで生まれたか、マジで覚えてないんだけど~、チャラチャラした気分で、こんな感じでニャーニャー生きてるんだよね~。何て言うか、超可愛い猫として、人間たちの目には映ってるんじゃない?
こんな感じでどうですか?もっとギャル語っぽくしたり、他の要素を追加したい場合は教えてください!
2. Lisp形式のプロンプト
(generate-gal-language-intro "吾輩は猫である")
了解しました。「吾輩は猫である」のギャル語版の序文を生成しますね!
はじめまして!ウチ、猫だよ〜☆名前とかねぇし、気にしないで〜!どこで生まれたとか、全然覚えてないんだけど、まあ、適当でいいっしょ!家族もいたっぽいけど、ウチ、一人の方が自由だし〜!そんな感じで、ヨロシクね〜☆
こんな感じでどうでしょうか?
考察
実験の結果、以下のような考察が得られました:
精度の向上は見られなかった:Lisp形式でプロンプトを投げても、自然言語形式と比較して特に精度の向上は見られませんでした。
自然言語処理の優位性:ChatGPTは自然言語処理に特化してトレーニングされているため、自然言語形式のプロンプトの方が解釈しやすい傾向にありました。
構造化された入力:Lisp形式は構造が明確で、プログラミング的な思考を促進する可能性があります。しかし、ChatGPTの現在の能力では、この利点が十分に活かされていないようです。
カスタム関数の解釈:実験では、generate-gal-language-introのような存在しない関数名でも、AIがコンテキストから推測して適切な応答を生成しようとする傾向が見られました。
トークン数の効率:Lisp形式は自然言語よりもコンパクトに表現できる場合があり、トークン数を節約できる可能性があります。
まとめ
Lisp形式でプロンプトを投げることは、特定の状況下では有用かもしれませんが、現状のChatGPTモデルでは自然言語形式の方が適していると言えそうです。
しかし、この結果はあくまで現時点のモデルに基づくものです。AIの進化によっては、将来的にLisp形式や他のプログラミング言語形式のプロンプトがより効果的になる可能性もあります。
あとLispに慣れていないと、そもそも書けないってのもありますよね。
Lispは癖があるので習得すること考えたら自然言語でいいのかな!と思ったり。
GPTに再度Lisp形式にしてもらうってのも良いのかな?
色々試しましたが現状トークン数を抑える以外にはメリットを感じませんでした。
私のやり方が悪いだけなのかもなので、もし良い効率のよいLispプロンプトがあれば是非教えてください!