見出し画像

ChatGPT、Bingによるプロンプトの生成・変換(NyaFuさんバージョン)

すっごいネタ来ました!

この記事を読んでできるようになること
 ・プロンプトの自然言語←→羅列表記変換
・適当な文章(日英問わず)のプロンプト化
・作成したプロンプトのランダム生成
・日本語での要約
・プロンプトの微調整

まずは、こちらを読んでください!

間にJSON変換をかませるだとっ!?
こんな面白いネタ、そりゃもうやっちゃいますよね。

てことで、半クローズな環境でNyaFuさんにすっごいGPTプロンプトを見せてもらったので、さっそくどんどんと手を入れてしまいました。(NyaFuさん、その節はすいませんでした)

その後、快く了承いただけたので、今回はコラボ記事を書かせていただきます!みんなもNyaFuさん、フォローしようぜ!

仕組みと考え方についてはNyaFuさんの記事でしっかりと確認しておいてください。使い始めてから自分用にカスタマイズしやすくなります。

ChatGPT-4もしくはBingで動作します。(ChatGPT-3.5はかなり怪しいです)

※Bingで使う場合には、「より創造的に」もしくは「より厳密に」に設定すると4000文字までいけます。

使い方

このテキストファイルにプロンプトが入ってますので、それをまるごとコピーして、ChatGPTもしくは、Bingに貼り付けてください。(Bingが受けれる4000文字ギリギリまでせめました)


うまくいくと「了解しました。」って出ます

このプロンプトには4つ機能があります。

#2pr

1つ目は、NyaFuさんの記事で紹介されていた機能ですね。
様々なものを自然言語プロンプトに変換します。
#2prと併せてプロンプトにしたいものを入力してください。
日英、羅列、メモ、文章、なんでもOKです。強調も対応しています。

プロンプトを入れても良し
日本語+強調もちゃんとしてくれます
NyaFuさん生成

#rand

先程のJSONの中身をランダムなものに変更してプロンプトを出してくれます。最初に呼び出しても動きません。(当たり前)

Bingだと、ボタンになってくれます
砂漠になりましたね!

#2db

出力するプロンプトを自然言語ではなく、danbooruタグの羅列式で出力します。従来の見慣れたスタイルですね。
※もし、BingでJSON状態で止まった時は、もう一度#2dbを入力するとプロンプトになります。
※文字数の制限で#2dbは例を用意していないので、若干、出力が不安定です。

ちょっと単語というより文節気味ですが、ちゃんと羅列してくれます。

#2jp

先程だしたプロンプトを日本語で要約してくれます。特に#randしたあととかに便利ですね。

簡単お手軽!

動作説明

なにがどうなって、こういう動作をしているかをちょっと説明しておきます。ここを読めば、すぐにカスタマイズできますよ!

前文

以下は、コマンド定義と、その実行例です。コマンド定義を言語モデル上のシミュレーションとして実行してください。理解できたら「了解しました。」とのみ返答してください。出力以外は日本語で返答してください。

理解できたら「了解しました。」とのみ返答してください。
この文章を入れないと、長々と復唱をはじめます。3.5君はこれを入れていても復唱しがちです。

コマンド定義

1. `t2i_prompt`を入力します。
2. `t2i_prompt`が日本語の場合、それを英語に変換します。(:数字)は()でくくられた部分の強調値を表しているのでそのまま保持します。
3. `t2i_prompt`を内容に応じた大カテゴリごとにobjectに分け、さらに関連ごとにkeyを設定し、`t2i_prompt`をvalueとしてJSONに変換し出力します。
4. 変換したJSONを元に、「変換後プロンプト」を英語のまま自然言語として出力します。そのvalueに強調値が存在する場合には、その部分を "(value:強調値)" の形式で出力します。強調値の範囲は0.5から1.7までとします。
5. objectが変わるタイミングで "BREAK" を改行で挟んで挿入します。このとき、object名は不要です。

## コマンド `#2pr`

日本語なんでわかりやすいですね!
1で入力
2で翻訳
3でJSON変換
4でプロンプト出力
5はBREAKを挟む
BREAKが不要な方は5行目を削除すると、BREAKしなくなります。

1. `t2i_prompt`を入力します。
2. `t2i_prompt`が日本語の場合、それを英語に変換します。(:数字)は()でくくられた部分の強調値を表しているのでそのまま保持します。
3. `t2i_prompt`を内容に応じた大カテゴリごとにobjectに分け、さらに関連ごとにkeyを設定し、`t2i_prompt`をvalueとしてJSONに変換し出力します。
4. 変換したJSONを元に、「変換後プロンプト」をdanbooruタグで出力します。そのvalueに強調値が存在する場合には、その部分を "(value:強調値)" の形式で出力します。強調値の範囲は0.5から1.7までとします。各要素を要素ごとにまとめカンマで区切った、短文、あるいは単語の羅列で出力してください。
5. objectが変わるタイミングで "BREAK" を改行で挟んで挿入します。このとき、object名は不要です。

## コマンド `#2db`

4だけが違います。従来の羅列系が良い方はこちらをどうぞ。

1. これは、「#rand」が入力されない限り起動しません。
2. 前処理のJSONをオブジェクトはそのままでキーだけを任意で変更し、「変換後プロンプト」を出力します。ただし、全体の雰囲気は残し、genderは維持します。
3. この際、object1つにつき1つのランダムなキーを強調します。強調値の範囲は0.5から1.7までとします。強調のスタイルは "(value:強調値)" の形式で出力します。

## コマンド `#rand`

GPTさんたちは、頭から順に流そうとするクセがありますので、1行目に宣言しています。じゃ、前の2つはいいの?って話ですが、もともと#2dbはなかったので、問題はありませんでした。で、今も問題ないはずです。正確性を求めるなら、前2つにも付け加えるべきですね。

雰囲気を残してランダムガチャできるんで、楽しいですよ。

1. これは、「#2jp」が入力されない限り起動しません。
2. 前処理の「変換後プロンプト」の要約を日本語で出力します。

## コマンド `#2jp`

そのままですね。
ランダムプロンプトした後に使うと、どんな内容かすぐに分かりますね。

追記(6/4

プロンプトを出力した後に追加の指示ができます。

要素を追加・変更

「年齢を20歳に」「夕日を加えて」などの、要素の追加や変更ができます。

要素の詳細化(見習い魔女めぐるさん情報

「更にxxのディテールを詳細にしたいです」(xxの部分は全体でも化)と入力すると該当部分のプロンプトに加筆をしてくれます。

見習い魔女めぐるさん

最後に

これ、むっちゃくちゃ楽しいです。ぜひ皆さんも色々といじってみてください。

謝辞

そもそもこの素晴らしい種を見つけて形にされたNyaFuさんに最大限の感謝を。JSONに一度変換するということがとんでもない可能性を秘めてます。
覚束ないままぐちゃぐちゃに弄ってたものを、きれいに整形していただいたビッグバードさんにも感謝を。おかげさまで人前に出せるものになりました。
追加情報いただいた見習い魔女めぐるさん、ありがとうございました!

この記事が気に入ったらサポートをしてみませんか?