見出し画像

Zoltraakの汎用拡張魔法【完全無料】

Zoltraakのコンパイラ拡張アップデートが来たが、正直私好みではないので、今回はコンパイラ以外も汎用的に拡張できる、という話を書く。

ある意味では、前回のこれの続きである。

拡張アップデートとそれが好みではない理由

アップデートの内容は以下である。

この「--cc」方式が、今後フォーマッターなどにも続いていくと予想されるが、私はこれが好みではない。
理由は以下である。

  • コンパイラなどを管理する場所が増えること

    • 前の記事でも書いたが、コンパイラなどは無限増殖して、覚えきれなくなっていくことが予想される。

    • その解決として、何らかの検索なり動的生成なりの、「AIにやらせる」機能が必要になっていくが、自由すぎるパス設定を認めることは、その障壁になりかねない。

    • そこは「規約」として置き場を決めてしまった方が分かりやすい。

      • 例えばAUTOMATIC1111氏のSD WebUIでは、モデルの置き場は原則として決まっており、カスタム設定をするとしても、1か所にまとめることだけは、ブレない設定として採用されている。

  • そもそもコマンド切り替えは永続的コストであること

    • 「-c」と「--cc」の両方を分けて使わなくてはいけない。
      これが毎回続くことは、手作業でもちり積でかかり続けるし、例えばFiddle的なGUIでオンラインで走らせる機能などの、後続・下流の開発元にとっても、永久に追加される技術的負債となる。
      前回私が示した方法では、かかるコストは置き場の移動だけで、固定コストこっきりでおしまいである。

後述する通り、フォーマッターも自作に成功しているが、これまた恐らく公式が来るだろう。
そうした拡張のたびに「-x」と「-cx」などに増えていくのは、想像してみてあまりいい気分にはなれない。

それよりは、移動系のコマンドを整備して、しかるべき場所にあるものしか実行しない設計にした方が、実行時にはそこだけを見れば済むので保守性などの観点で優れていると考えている。

フォーマッターの自作方法

フォーマッターの自作方法は基本的にはコンパイラと同じである。
見本となるフォーマッターなどを参考にフォーマット指定の記述をして、所定の場所に格納するだけでよい。
この際の格納場所が「Lib\site-packages\zoltraak\setting\formatter」になるだけである。

サンプルとして、MediaWikiのマークアップで出力を書かせるフォーマッターを書いてみたので配布する。

実行時には、以下のように「-f」コマンドを明記してあげるだけでよい。

zoltraak "完全なヒューマノイドの頭脳を担うAIを作る" -c dev_obj_mermaid -f mediawiki_style

結果は以下のようになる。上のコマンドがMarkdownで記載されているため多少引っ張られているものの、だいぶMediaWiki記法に近くなったことが確認できる。

ほぼMediaWiki記法になっている。
ただし、箇条書きのインデントなどはまだMarkdownの影響が残っている。
inputも合わせれば恐らくは解消されるはず…

ちなみに今では(もしかすると「-f」指定する場合は元から?)「-c」は必須になったらしいので省略できない。
dev_obj_mermaidはデフォでは存在しないが、前回記事で配布しているのでそれを格納している想定である。

ちなみに、言語変更もformatterでできる。英語、中国語(簡体・繁体)で結果を生成したい場合のmdを以下に配布する。

同じように走らせると、結果は以下のようになる。

ちゃんと英語である。
繫体中国語の場合。

アーキテクチャーの改造方法

生成されたmdをコードに変換するプロンプトは、「Lib\site-packages\zoltraak\setting\architect」に格納されている。

pythonでしか結果が生成されない課題の解決のためにも、いずれはこれも選択and/orカスタマイズできるようになると思われるが、現時点では「architect_detail.md」が固定で実行されている。

このため、例えばWindows環境で、生成されたコードのエラー回避するための改造などは、このファイルに対して行うこととなる。

やるべきことは簡単で、欲しい内容をこのファイルに追記・修正などするだけである。

実際にそれをしたものは以下で、せっかくなので配布する。
(必要であればオリジナルはバックアップしておくこと)

その他

現状では、「developer」「encryption」「interpretspec」の各ファイルがあるが、今のところは直接的には使用されていないようである。
ただ、これらも原理的には上記のように、追加してコマンドから指定することができるようになるはずである。

いいなと思ったら応援しよう!