Prompt Constructor
スタンドアロン動作のプロンプトエディタ
© 2024 NKMR AppWorks
English / Japanese
ダウンロード (無料):
このアプリはMITライセンスで公開されています。ライセンスの内容に従ってご利用ください。
このツールはAIチャットなどでプロンプトの入力をするときに、入力の手間を減らす目的で開発されました。
同じような文言を何度も入力する手間を軽減するため、よく利用する構文や単語を登録しておき、その項目(アイテム)を順次選択していくことでプロンプトを完成させていくエディタです。
実行環境に以下のものがインストールされている必要があります。
Python 3.12.x以降
Cerberus 1.3.5以降 (v1.0.22以降で必要。)
適当な場所に'git clone'して(またはzipファイルをダウンロードして展開して)から'prompt_constructor_launcher.pyw'を実行します。
'prompt_constructor.py'を実行しても普通に起動してアプリを使用できますが、余計な黒い画面が出てきます。
'prompt_constructor_launcher.pyw'経由で実行すると黒い画面を抑止することができます。
また、'prompt_constructor.py'を'prompt_constructor.pyw'にリネームして直接実行すると、同様に黒い画面が抑止できます。
(この場合ランチャーは中身を修正しないと使えなくなりますが、本体の拡張子を変えると利用価値はなくなりますので問題はありません)
なお、黒い画面が出てもアプリの動作には支障はありません。目障りなだけです。
初回実行時に自動作成されるファイルやフォルダがあります。なお、完全にローカルで実行できます。
レジストリなどは使用していませんので、フォルダごと削除すればアンインストール完了です。
削除前に必要なファイル等を事前退避するなりしておいてください。
上記スクリーンショットに振られた番号を元に各機能を説明します。
ツリービュー操作用の機能
親追加(Add Parent)ボタン:
今現在表示しているタブに親アイテムを追加します。親アイテム追加時に、子アイテムが3つ自動で追加されます。
子追加(Add Child)ボタン:
今現在表示しているタブに親アイテムを追加します。ただし親アイテムか子アイテムをひとつ選択した状態でないと機能しません。選択されたアイテムのある親アイテム配下に子アイテムが追加されます。
+ボタン:
ツリーの各親アイテム配下をすべてまとめて展開します。
-ボタン:
ツリーの各親アイテム配下をすべてまとめて閉じます。
削除(Delete)ボタン:
ツリー上で選択したアイテムを削除します。後述の「辞書オートセーブ」が有効(チェックが入っている)状態だと、辞書ファイルが自動で更新されます。なにも選択されていない状態では機能しません。また、「お気に入り」タブの親アイテムは削除できませんのでご注意ください。
ツリービューのタブ
チャンク(Chunks)タブ:
基本的には複数の単語の羅列など、長い構文が入ったものを登録しておきます。が、単語も登録できます。
親アイテムはカテゴリ名を入れておくためのものです。つまり親アイテムはカテゴリです。子アイテムには実際のプロンプトに追加したい内容を入れておきます。
子アイテムをダブルクリックすると「8.プロンプト欄」に子アイテムの内容が追記されます。このとき、末尾にカンマとスペースが補完されます。
親アイテムも子アイテムも右クリックで選択するとメニューが表示されます。親アイテムは「クリップボードにコピー」と「削除」が選択可能で、子アイテムはそれに加えて「アイテムの複製」と「お気に入りに追加」する操作も可能です。「アイテムの複製」は選択している子アイテムの配下に同じものを作成します。「お気に入り」に追加した場合、「お気に入り」タブの「Fav:Chunks」の配下に追加されます。
アイテムをドラッグ移動するとアイテムの並び順を変えることができます。
単語(Words)タブ:
基本的には単語など、短い文言が入ったものを登録しておきます。スペース区切りやカンマも含めて登録できますし、長い文章も登録できます。
すべて「チャンク」タブと同様の操作が可能です。ただし一点動作が異なる点があり、「お気に入り」に追加した場合、「お気に入り」タブの「Fav:Words」の配下に追加されます。「お気に入り」の登録先の親アイテムが異なるということです。
お気に入り(Favorites)タブ:
「チャンク」タブと「単語」タブから「お気に入り」登録したものがここに表示されます。
「お気に入り」に登録されたアイテムは、元のタブのアイテムとは別に管理されます。そのため、元のアイテムを修正したり削除しても「お気に入り」タブに既にあるアイテムは影響を受けません。別の辞書にコピーされ、コピー後は一個の独立したアイテムとして存在するということです。
「お気に入り」タブの親アイテムは削除することはできません。v1.0.18より「お気に入りタブ」の各親アイテムも修正が可能になりましたが、配置の入れ替えはできません。ここはわかり易い名前にしておくことをおすすめします。
ツリービュー
辞書ファイルの内容が一覧表示される欄です。表示される内容はタブによって異なり、「1.ツリービュー操作用の機能」は今現在表示しているタブに対して機能します。
親アイテムはカテゴリに相当し、「チャンク」タブと「単語」タブの親アイテムは削除や名前の変更が可能です。子アイテムは実際にプロンプト欄に登録される文言そのものが登録されています。
あとは前述のタブの項目を御覧ください。
辞書セーブ関連機能
辞書オートセーブ(Auto Save dicts.)チェックボックス:
このチェックボックスにチェックを入れると、以後ツリー上のアイテムに変更を加えたタイミングで逐一辞書ファイルが更新されます。頻繁に書き込みをしたくない場合はチェックを外しておいてください。ただし、その場合は辞書セーブボタンを押して手動でセーブ処理をする必要があります。
このチェックを入れていない状態でアプリを終了しようとすると警告ダイアログが出ます。これはセーブボタンを押してセーブした直後でも必ず出るようになっています。
辞書セーブ(Save dicts.)ボタン:
ツリービューの3つのタブに表示している辞書データをJSONファイルに保存します。それぞれ別々のファイルに保存されます。個別にセーブすることはできず、一括ですべて上書き保存されます。
アイテムの値を更新する機能
更新(Update)ボタン:
今現在編集しているアイテムの内容を更新します。「辞書オートセーブ」が有効な場合は辞書ファイルが即時上書きされますが、そうでない場合はツリービュー上のデータだけが更新された状態となります。「7.選択しているアイテムの内容を表示・編集するテキスト欄」の項目も併せて御覧ください。
コピー(Copy)ボタン:
今現在のアイテム欄の内容をクリップボードにコピーします。このボタンを使用せずとも、アイテム欄を範囲指定してCTRL+Cでコピーすることも可能です。
プロンプト欄関連の機能
一覧(List)ボタン:
promptフォルダの配下に既に保存した「prompt_saved_~.txt」形式のファイルがあれば、その内容が一覧表示されます。
表示された内容を選択すると、プロンプト欄に表示されます。ファイルが一つもない場合は一覧表示できません。
ロード(Load)ボタン:
テキストファイルを読み込んでプロンプト欄に表示します。
セーブ(Save)ボタン:
プロンプト欄の内容をテキストファイルに保存します。前述の「一覧」ボタンの機能を使いたい場合は、必ずファイル名の命名規則を「prompt_saved_~.txt」という内容で保存するようにしてください。なお、一覧表示されないファイルも中身がテキストであれば「ロード」ボタンで読み込むことはできます。
コピー(Copy)ボタン:
今現在のプロンプト欄の内容をクリップボードにコピーします。このボタンを使用せずとも、プロンプト欄を範囲指定してCTRL+Cでコピーすることも可能です。
シャッフル(Shuffle)ボタン:
プロンプト欄の内容をカンマ区切り単位でランダムに入れ替えます。ただし()で括られた範囲は中にカンマが含まれていても一つの塊として扱われます。
ロック(Lock)チェックボックス:
このチェックボックスにチェックを入れている状態ではプロンプト欄の編集ができなくなります。誤編集・誤操作を防止したいときに、一時的にチェックを入れておくとよいでしょう。なお、編集できない状態でもコピーは可能です。
クリア(Clear)ボタン:
プロンプト欄を空にします。「ロック」チェックボックスにチェックが入っているときは使用できません。
選択しているアイテムの内容を表示・編集するテキスト欄 (アイテム欄)
このテキスト欄には左側のツリービュー上で選択したアイテムの内容が表示されます。またここに表示されたテキスト内容を修正してから「更新」ボタンを押すと、選択中のアイテムの内容が更新されます。
アイテムテキスト中のコメント機能に対応しています。"#"で始まる文からその行の行末までは、そのアイテムをクリックしてプロンプト欄に追加するときに無視されます。つまりプロンプトに影響を与えないメモ的な記述ができるということです。どこの行であっても複数行でも追加できます。
v1.0.29より、スクロールバーが常設されました(スクリーンショットは古いバージョンのままです)。
プロンプト欄
このテキスト欄には編集中のプロンプトが表示されます。デフォルトでは空欄のままですが、promptフォルダに「prompt_tmp_~.txt」というファイルがある場合は、アプリ起動時に自動で読み込まれて表示されます。またアプリ終了時にも自動でpromptフォルダに「prompt_tmp_~.txt」というファイルが保存されます。
v1.0.29より、スクロールバーが常設されました(スクリーンショットは古いバージョンのままです)。
検索欄:
入力した文字列を検索します。プロンプト欄とアイテム欄(v1.0.20以降対応)に合致する単語がある場合はハイライト表示されます。ハイライトしたくない場合はこの欄を空白にしてください。
文字入力後にEnterキーを押すと、一番最初に検索に合致した文字列部分が赤色で表示されます。
設定
このボタンを押すと、別途画面が開き、設定ファイルの設定を変更することができます。「Default」ボタンを押すと初期設定に戻り、「Apply」ボタンで変更を確定します。「Cancel」ボタンで設定変更をキャンセルし画面を閉じます。「Close」ボタンも画面を閉じる機能です。
重要な点は「Apply」ボタンを押したタイミングでiniファイルが上書きされるということです。また、「Default」ボタンを押しただけではiniファイルはまだ上書き保存されていません。「Default」ボタンで戻した設定を確定させるには、その後「Apply」ボタンを押してください。
CTRL+A: テキスト欄でこの操作をすると、全範囲が選択状態になります。
CTRL+C: テキスト欄で範囲指定してからこの操作をすると、クリップボードに内容がコピーされます。
CTRL+X: テキスト欄で範囲指定してからこの操作をすると、その範囲が切り取られ、なおかつクリップボードに内容がコピーされます。
CTRL+Z: UNDO機能です。
CTRL+Y: REDO機能です。
CTRL+F: 検索欄にフォーカスが移り、すでに検索欄の中に検索文字列がある場合、それが全選択状態になります。
CTRL+カーソルキー上/下: テキスト欄で範囲指定してからこの操作をすると、選択範囲が()で括られ、操作ごとに「:1.05」のような重み付け用の数値が付与されます。一回操作する度に上下する単位は0.1か0.05となっています。この値はiniファイルの「increment_unit」を元に設定されます。
SHIFT+マウスホイールを回転: フォントサイズを変更します。画面の左側と右側でフォントサイズ設定を別々に持っていますので、マウスカーソルがどちらに置かれているかによって、サイズが変更される箇所も変化します。
SHIFT+マウスホイールをクリック: フォントサイズをiniファイルの設定値(=アプリ起動時のフォントサイズ)に戻します。
ESC: アプリを終了します。
ショートカットではありませんが、アプリのウインドウの端をドラッグすることでウインドウサイズが変更できます。またペインの境界線をドラッグすると表示幅の比率が変更できます。アプリ起動時のウインドウサイズについてはiniファイルの「window_width」と「window_height」の値を変えることで任意のサイズに設定することができます。
「settings.ini」ファイルの設定を変更することで、アプリの挙動を変更することが可能です。
このファイルはアプリケーション本体ファイルと同じ階層にある必要がありますが、ファイルがない場合は自動で作成されます。
初回起動時はファイルがありませんので、一度アプリケーションを起動してみてください。辞書ファイルやフォルダと一緒に「settings.ini」というファイルが作成されるはずです。このファイルはテキストエディタなどで開いて編集することができます。
設定内容がおかしくなってしまったときや初期状態に戻したいときはこのファイルを消せば、次回アプリ起動時に自動で再作成されます。
設定できる内容を以下に記載します(設定項目はv1.0.10準拠です)。
lang:
GUIの言語設定です。「en」か「ja」が選択可能です(デフォルト値は「en」)。
increment_unit:
ショートカットによるテキストの重み付け数値を設定をするときの単位です。「0.05」か「0.1」が選択可能です(デフォルト値は「0.05」)。
window_width:
アプリのウインドウの横幅設定です(デフォルト値は「1000」)。
window_height:
アプリのウインドウの縦幅設定です(デフォルト値は「600」)。
itemarea_displines:
アイテム欄の表示行数設定です。行数単位で指定します。起動後に別途、境界線部分をドラッグして表示サイズを変えることは可能です(デフォルト値は「5」)。
messages:
操作ごとに表示される操作完了メッセージの表示有無を設定できます。「enable」にすると表示され、「disable」にすると抑止されます。ただし、質問形式のメッセージについては、どちらの設定にしても必ず表示されます(デフォルト値は「enable」)。
autosave_json:
辞書ファイルの自動セーブをするか否かを設定できます。「enable」にすると「辞書オートセーブ」チェックボックスにチェックが入り、ツリービューのアイテムの内容や並び順が変わるたびにファイルが上書き更新されます。「disable」にすると「辞書オートセーブ」チェックボックスが外れ、自動での上書き保存はされません。アプリ上で「辞書オートセーブ」チェックボックスの操作したときに、iniファイルのこの項目も自動で変更されます(デフォルト値は「disable」)。
なお、この設定にかかわらず「辞書セーブ」ボタンでいつでも辞書ファイルの保存は可能です。
backup_json:
アプリ起動時に辞書ファイルの自動バックアップを取るか否かを設定できます。「enable」にすると「bk」フォルダに1世代分だけそれぞれの辞書ファイルがリネームコピーされます。既にバックアップファイルがある場合は消された上で新たにバックアップが取られます。「disable」にするとこの処理が行われません(デフォルト値は「enable」)。
textfont:
ツリービューやテキスト欄のフォントを変更できます(デフォルト値は「TkDefaultFont」)。「TkDefaultFont」はtkinterでデフォルトフォントとして指定されているものが使われます。v1.0.18より、プルダウンメニューから選択できるようになりました。
fontsize_treeview:
ツリービューのフォントサイズです(デフォルト値は「12」)。
fontsize_textbox:
各テキスト欄のフォントサイズです(デフォルト値は「12」)。
datetime_format:
ファイルを保存する際にファイル名末尾に日時等の情報を追加することができますが、この値でそのフォーマットを指定できます(デフォルト値は「%%Y%%m%%d_%%H%%M%%S」で、例えば2024年8月30日の21時5分59秒ならば「20240830_210559」のように自動付与されます)。
なお、ここで決定されたファイル名はファイルを保存する際にデフォルトで入るファイル名の命名規則でしかなく、保存後にファイル名を手動で修正することは可能です。
multiple_boot:
多重起動を許可するか否かの設定です。(デフォルト値は「disable」)。
この設定が「disable」のときは起動時に「app.lock」ファイルという空ファイルが作成され、終了時に削除されます。このファイルの有無で既にアプリが起動されているかチェックします。なお、不慮の事故等でアプリが正常に終了できなかった際に、このファイルが削除されずに残ってしまうことがあります。この場合は手動で「app.lock」ファイルを削除してから、アプリを起動してください。
各テキストボックス中で、半角括弧"()"、"-"、"#"をIMEの変換機能で確定して入力すると文字が消える現象が起こります。
対処方法: IMEの変換機能を使用せずに入力してください。開発で使用しているライブラリの問題である可能性があります(同様の現象が他所でも見られるため)。安定した回避方法があるため、現状この問題へのソフトウェア的な対処予定はありません。
テキストボックス内でカーソルキーでカーソルを移動させたときに、テキスト量によっては動作がぎこちなくなることがあります。
v1.0.31にて処理の軽量化を行いました。それでも動作が重い場合は、Windowsの電源プラン変更をお試しください(バランスプランやパフォーマンスプランへの変更)。