見出し画像

Zoltraak Klein 中身解説(ポン出しライブ)2024-09-21まとめ

ゾルトラーク (Zoltraak) とは元木大介氏が開発した『簡単なリクエストを入力するだけで、AIがビジネスドキュメントやソフトウェア、絵本やキャラクター生成などのデジタルコンテンツを自動生成するフレームワーク』です。

このライブでは開発者のダイブツが、ゾルトラーククライン (Zoltraak Klein) の中身を解説します。魔法図書館と呼ばれるテンプレートライブラリ、コンテンツ生成のためのステップ、そして生成プロセスにおけるアーキテクチャの役割について詳しく解説します。

アプリのデモではなくPythonコードレベルでどのような仕組みで動いているのかを解説します。


ライブ動画

自宅のWiFiが繋がらないため、公衆の場でのライブになり音声が大変聞きづらく申し訳ございません。下記の公開スライドとライブ内容要約をご利用ください。

公開スライド

ライブ内容要約

ウェブアプリ利用のお礼と活用状況データ紹介

スライド4ページを参照

公開2週間で1000件以上のご利用を頂きありがとうございます。現在主に使われている項目はこれらになります。

  1. 企画書(デフォルト設定だから取り敢えず触っていただいたか?)

  2. プレゼン資料

  3. 絵本

  4. ソフト開発

  5. プロジェクト要件定義

ただし直近1週間に限ってはご利用回数が落ち着き、かつビジネスドキュメントのご利用が多い。

ソフト開発やプロジェクト要件定義のリクエストもまだまだ根強い。元木さんのBabel-Zoltraakの方がアウトプットが良いのでそちらの利用をお勧めしたい。

ゾルトラークのおさらい

スライド5-7ページを参照

  • 用語のおさらい

    • Zoltraak Kleinではマルチメディアコンテンツが100ファイル以上生成されるためメニューと呼ばれるファイルでコンテンツ管理を行う。

  • 基本3ステップ

    • プロジェクト命名

    • 要件定義書生成

    • 領域展開(マルチメディアコンテンツ生成)

  • 基本3ステップをベースにしたZoltraak Kleinクラスとレイヤー

    • 生産ラインレイヤー(フレームワーク)

    • ファシリティレイヤー(魔法図書館とアーキテクト群)

    • コンテンツ生成エンジンレイヤー(各種ライブラリや生成AIを呼び出す窓口としてのLLMMaster)

【参考】前回の解説

魔法図書館中身紹介

スライド8ページを参照

  • architect: マルチメディアコンテンツを生成するPythonコード(アーキテクト)が格納されているフォルダ。各アーキテクトのまとめ表はスライド10ページに記載。

  • compilers: 要件定義書を生成するテンプレート(コンパイラ)のフォルダ

  • instructions: 領域展開指示書・スケージューラーが格納されているフォルダ

  • prompts: 要件定義を生成したり、アーキテクトから生成AIを使うための各種プロンプトが格納されているフォルダ

  • rosetta: 翻訳データ格納フォルダだがUI側に移設予定

  • templates: epubやmarpのコードが格納されているフォルダ、生成AIが書いた文章やコードをこのテンプレートに貼り付けるだけでコンテンツ生成ができるようになっている。

このフォルダ構成はGitHubリポジトリの内容を反映しています。

領域展開指示書(スケジューラー)の中身

解説図はスライド9ページを参照

  • 領域展開指示書はYAML形式を採用している。

  • 各コンパイラに対応する領域展開指示書がペアで存在しないと動かない。コンパイラはマークダウン形式 (presentation_marp.md), 同名のYAMLファイルも用意する (presentation_marp.yaml)。

  • YAMLのトップ項目は番号のみでアーキテクトを呼び出す順序となっている。

  • YAMLのサブ項目にて呼び出すアーキテクト、入力データ、出力データを記載。書式は数式の y = f(x) に対応し、出力先フォルダ: アーキテクトPythonファイル名(入力フォルダ、オプション)となっている。

  • 入力・出力フォルダともにメニューファイルを参照する。このメニューもYAML形式としている。

領域展開のフローチャート解説

解説図はスライド11ページを参照

  • 領域展開指示書に複数の工程が書かれていても、領域展開関数(domain_expansion)が呼べるのは一度だけ。前工程が終わってなければ次の工程を始めることはできない。また要件定義書が生成されていないとエラーになる。

  • 領域展開できる場合は現在どこまで終わったか確認してから次の指示を読み込む。Zoltraak Kleinではどこまで領域展開したか番号で保持している。また指示書も領域展開関数が呼ばれるたびに都度読み込まれる。

  • 複数のコンテンツ生成を非同期・並列実行するため、Zoltraak Kleinからsubprocess.Popenで各アーキテクトを呼び出す。

  • 各アーキテクトのプロセスが完了したかどうかはZoltraak Kleinクラス内で別スレッドで監視している。これがインターロックとなるため、実行中は次の工程に進めない。

補足と今後の展開とQ&A

  • 既存のライブラリで対応可能な場合はAIを使わずに極力既存ライブラリを使う。例えばチャートを作るMermaid、プレゼンテーション資料作成にはMarp、音声合成にはVoicevox、画像と音声を組み合わせた動画生成はmoviepyを使う。

  • 今後の開発予定としては画像生成、3Dモデル生成、Skyboxによるパノラマ生成などがある。

  • コンパイラとして小説や台本生成も追加予定。冬の改修工事に向けてコアエンジンであるLLMMasterから改修している。

  • 一貫性を持たせた画像や3Dモデル、動画を作るにはテキスト→動画よりもテキスト→画像→動画のように何でもテキストから作らない方が良い。

  • 画像生成プロンプトも要件定義のように細かく項目を指定した方が良い。

  • 多言語対応については28言語にする予定。monju.aiではすでに対応済み。

  • 質疑応答:10ページ分の絵本コンテンツ生成は一度に並列処理している。ただしOpenAI o1が一気に本文を出すのであればそれを分割したほうが一貫性のあるコンテンツになるはず。初期のゾルトラークでは小説の登場人物が途中で変わってしまった。要件定義の作り込みで今は回避できているが、絵本などでは同じ内容が複数ページに出る現象がまだ起きている。


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