
生成AI各社APIを統一したインタフェースで呼び出せるラッパークラスLLMMasterとその背後にある世界戦略
この記事をお読みの方はきっと生成AIについてある程度の知識があるものと思います。
多くの企業、といってもほとんどは米国発ですが、生成AIの開発は熾烈を極めています。出力フォーマットは文章・画像・音声・音楽・動画・キャラクター生成などマルチメディアデータをほぼカバーしています。
これほどホットで文系・理系問わず話ができる技術はそうそうありません。生成AIを使って一山当てたい、稼ぎたいという人もいれば、よくわからない、怖い、という人もいます。
私は技術者の立場からやはり目先の収益よりも「AIを使って開発がし、日本の国力を上げたい」という気持ちが一番です。
この記事では開発者向けに、私が開発しているPythonライブラリ LLM Master を紹介します。これまでは主に X (Twitter) で情報発信してきましたが、ここで一度簡単な解説と開発者の想いをまとめておきたいと思います。
LLMMaster v0.6.0
— ダイブツ🇧🇪 (@habatakurikei) September 26, 2024
Tripo 3D に対応しました。
マルチモーダルをここまで進めた結果、現在全14モード、全42クラスを実装しました。どれもマルチスレッド処理できます。
何ができるか簡単にご紹介します。添付画像も併せてご確認ください。
(1) テキスト入力
→テキスト(LLM):GPT, Claude, Gemini,… pic.twitter.com/hfnVaYMZcG
LLMMasterは開発者向け、アプリ開発やAPIのお試しに便利
LLM Master の技術的な詳細については GitHub に書きましたのでこちらを参照願います。全編英語なのでお手数ですがブラウザの翻訳機能で日本語にしてお読みください。
ここでは簡単に使い方を紹介します。
LLMMasterを使うことで各社のAPIを共通フォーマットで使うことができます。
まずは Python でLLMMasterをインストールしてください。
pip install llmmaster
そしてPythonのコードを書いて実行します。試しにGitHubページのユースケースから抜粋しましょう。
# ライブラリのインポート
import elevenlabs
from pathlib import Path
from llmmaster import LLMMaster
# APIキーをファイルから読み込む
api_key_pairs = Path("api_key_pairs.txt").read_text(encoding="utf-8")
# インスタンス生成
master = LLMMaster()
master.set_api_keys(api_key_pairs)
master.summon({
"text": master.pack_parameters(
provider="openai",
model="gpt-4o-mini",
prompt="桃太郎ってどんな話でしたか?"
),
"image": master.pack_parameters(
provider="stable_diffusion_tti",
model="core",
prompt="桃太郎、犬、猿、キジが元気よく鬼ヶ島へ向かう",
aspect_ratio="16:9",
style_preset="cinematic"
),
"voice": master.pack_parameters(
provider="elevenlabs_tts",
prompt="オッス、ボクはももたろう!"
)
})
# 実行(裏で並列処理する)
master.run()
# 実行結果の表示と保存
print(f"桃太郎の話:{master.results['text']}")
response = master.results["image"]
if hasattr(response, 'content'):
with open("momotaro.png", 'wb') as f:
f.write(response.content)
if master.results["voice"]:
save_as = "momotaro.mp3"
elevenlabs.save(master.results["voice"], save_as)
# 実行時間を表示
print(f"実行時間 {master.elapsed_time} (秒)")
# インスタンスを消去して終了
master.dismiss()
API キーはご自身で用意していただく必要があります。APIキーを環境変数でセットしてもらうか、テキストファイルから読み込ませることで動かすことができます。 master.summon() を呼ぶ前に先にAPIキーをセットしてください。
上記の例では「テキスト生成」、「画像生成」、「音声合成(読み上げ)」をひとつのインスタンスで実行しています。しかも別のベンダーが提供している機能です。
本来であれば各社のAPIのドキュメントを読みながら個別に実装する必要があります。しかしLLMMasterはラッパークラスなので同じフォーマットで複数の機能を呼び出すことができます。
上記のコードは master.run() を実行すると文章生成、画像生成、音声合成が並列処理で行われます。
run() 関数自体はバックグラウンド実行しません。したがって、3つの生成処理がすべて終わるまで結果の表示は行われません。もしバックグラウンド実行を希望される場合はLLMMasterを呼び出す関数またはクラスを非同期か別プロセスで動かしてください。
参考までに実行時間を表示することもできます。この実行時間は3つの生成が並列処理して結果を受け取るまでの時間であり、個々の処理の直列実行の結果ではありません。ひとつずつ個別に呼び出すより処理は速いはずです。
このように、私の方で生成AIのAPIを簡単に使えるように実装しました。あなたは各社のAPIを実装する必要はありません。ご自身のアプリ開発やお試しがやりやすくなっているでしょう。
ただし、プロンプト以外のパラメータ、例えば画像ならアスペクト比やネガティブプロンプト、音声なら声色の指定など、必ず公式ドキュメントでご確認ください。
開発の根底にある思想「生成AIの能力を最大限に引き出し、あなたの能力を最大限にブーストすること」

これまで「創造魔法ゾルトラークウェブ」、「マルチAIブレインストーミングアプリmonju」といった生成AIを使ったアプリを開発しています。
上図に示すように LLM Master を含めてすべての開発に意味があります。ここで解説します。
全アプリの共通基盤(生成AIの利用窓口)としての LLM Master
アイデアを出して検証するための monju, 使うのはテキスト生成のみ
検証したアイデアを形にするゾルトラーク、テキスト・画像・音声・動画・キャラクター3Dなどマルチメディアコンテンツを一括生成する
これらすべてに共通すること、それはAIの能力を最大限に引き出し、あなたの創造性やアクティビティを最大限にブーストすることです。
「AIってすごそうだけどどう使えばいいかわからない」、「AIって何か怖い」。そう思う人はまだまだ多いはずです。
みんながAIアプリを開発する必要はありません。しかしAIに精通した人が「AIを意識しなくても何かできる仕組みを提供する」。AIが裏で働いて結果的に活用が進めば国力は間接的に上がる、というのが私のスタンスです。
しかしこれだけは明言します。「業務効率化やコストダウン」といった安易な活用方法を提供するつもりは毛頭ありません。これまでさんざんDXとかRPAとかキャッチーな言葉があったのに結果はどうですか?キーワードだけ先行して全然活用進んでないじゃないですか。
だったら業務効率なんてきれいごとを言うつもりはありません。生成AIはエクセルのマクロとは根本的に違います。あなたの気づかなかった何かを生み出して提供してくれます。AIアプリは創造性を裏で支える存在であってほしい。「将棋界以外の藤井壮太」が出てきてほしい。
そしてAIアプリ開発をするのにAPIを各開発者がそれぞれ実装している「車輪の再発明」こそ時間の無駄。 LLM Master は裏の裏、影で仕事をしてくれる「デジタルコンテンツ生成のコアエンジン」なのです。
背後にある世界戦略:裏方でも世界を獲る
LLM Master を開発した理由は「裏方として必要とされるに違いないから」です。このような開発はあまり理解されていない節があることを受け入れます。
しかし私の読みは間違っていません。このあとお礼させていただきますが、公開からすでに全世界で1万ダウンロードされています。また著名と思われる開発者からGitHubでウォッチされています。
現在、生成AI系の開発は大きく2つに分かれています。
生成AIモデルそのものの開発 (GPT, Claude, Stable Diffusion, Runway, etc.)
生成AIを使ったアプリ開発 (ChatGPT, Perplexity, Genspark, Satto, Felo, Napkin AI, NotebookLM, etc.)
最初の 1. は言わずもがな、生成AIのコアの部分です。ビッグテックや資金力のある会社が熾烈な開発競争をやっています。ここに日本勢が食い込むには国の補助が不可欠です。スタートアップが参入するには難しい領域です。
一方で 2. アプリ開発も盛り上がっています。マルチメディア一括生成アプリ Zoltraak, マルチAIブレインストーミングアプリmonju, また元木大介氏が盛り上げようとしているSaaS生成+空間コンピューティングアプリ Babel-Zoltraak, など、背後で生成AIを動かしてユーザー様に付加価値を提供するパートです。
LLM Master はこの中間です。いうなれば「生成AI開発をサポートするライブラリ」です。その理由は前節で解説しました。
生成AIモデルを使いたいけど市場にはたくさんあり参入は難しい。一方で、生成AIを使ったアプリを開発したいけどどれを使えばよいかわからない。
LLM Masterは大手のAPIを大体カバーし、呼び出し方法を統一して同じコードで繰り返し使えます。各API個別の仕様に合わせて実装する必要がありません。私がこの部分の苦労を請け負いました。このライブラリがあればあれこれ試せます。
中途半端に実装すれば相手にされないけど、片っ端から実装して「なんでも対応します!」なら使ってもらえるかも。実際自分がアプリ開発するのにこれがあれば便利だろうと思って作りました。
決してアプリのような派手さはないけど、生成AI開発では不可欠なレイヤーです。
例えていうなら「iPhoneのようなデバイスは日本から出ず負けたが、部品のサプライヤーとして世界を支えている」といえます。
この部品がないと作れない。というある部分の首根っこを獲る。
もちろんアプリ開発でも日本から世界を獲りに行くために頑張っています。しかしこのポジション「も」獲りに行く。
全方位で、オールジャパンで攻める。やらなくてよいレイヤーなどないのです。
補足
名前の由来
LLM Master って正直少し呼びにくい名前かな、と思うことがあります。
でもかなり考えて付けた名前なので今後もこのままでいきます。名前の由来についてまとめておこうかなと思います。
ゲームをやっていると「〇〇使い」といったキャラが出てきます。例えばファイナルファンタジーの「魔獣使い」とか。
猛獣使いのことを英語で "Beastmaster" といいます。
LLM Master の由来はここからきています。大手が開発したLLM(大規模言語モデル)を猛獣になぞらえ、強力だが各社のAPIをまとめて使いやすくしたい。そんな想いで「生成AI使い」という意味で名づけました。
カタカナ英語のマスターとは少しニュアンスが違うので注意してください。
イメージは各モンスターをLLM (AI), そしてそれを操る少年。少しでも親近感を持ってもらうため、しかしライブラリのイメージに忠実にするため工夫しました。Dall-E-3に描いてもらいました。
今は言語モデル以外も実装しているので厳密には "Generative AI Master" になるかもしれません。しかし言葉の定義を追求するときりがなくなります。
ちなみに LLM Master はフルネームで Large Language Model Master, 略すと L2M2 になります。スターウォーズのキャラみたいでしょ?
1万ダウンロード御礼

おかげさまでpip経由ダウンロードが1万を超えました。2024/07/12にリリース、9/24に達成。リリースから75日後のことです。
バージョンアップ直後はダウンロード数は増えますがしばらく更新を怠るとすぐ減ります。開発をし続けないといけません。とても大変な作業です。
しかしこの開発には使命感があります。すでに書いた通り裏で支える形の世界一があっても良いからです。むしろその方が自分の性格的には合ってるかもしれません。
そしてその読みが正しかったので1万ダウンロードを達成することができました。
日本初の生成AIを増やして日本をAI先進国にする、そのために全方位で引き続き頑張っていこうと思います。