挙げる
かつては、コミックの制作は、作家やイラストレーター、そして数え切れないほどの労力を必要とする退屈なプロセスだった。今日、AIはクリエイティブなプロフェッショナルに力を与える強力なツールとして機能している。短いストーリーをAIに渡すと、AIがそのストーリーを、クリエイターのユニークな視点を保ちながら、生き生きとした、視覚的に美しいコミックに変えるのを見るのを想像してみてほしい。これはもはや単なる空想ではなく、最先端のジェネレーティブAIモデルによって可能になった現実です。このブログではクルーAI LLMエージェントはいかにしてコミック制作の創造的プロセスを向上させるのか?
例:パンチャタントラからストーリーブックを作る
このプロセスを示すために、知恵と道徳的教訓で知られる古代インドの寓話集『パンチャタントラ』から短い物語を使おう。ライオンとウサギの話を考えてみよう:
短編小説:「むかしむかし、ジャングルで暴れまわるバスラカという名の強大なライオンがいました。動物たちは彼の横暴にうんざりし、毎日獲物を送りつけることにした。ある日、賢いウサギがライオンを追い払う計画を立てた。彼は芭羅迦を深い井戸に誘い込み、そこに別のライオンが住んでいると信じ込ませた。水面に映った自分の姿を見て、芭羅迦は怒りの咆哮を上げ、井戸に飛び込んだ。
CrewAIのフレームワークを使い、以下のステップを踏む:
- 1. 脚本エージェント例えば、脚本家はストーリーをシーンに分解します:
- - シーン1:ライオンがジャングルを歩き回る。
- - シーン2:動物たちは1日に1つの獲物を届けることに決める。
- - シーン3:ウサギはライオンを騙そうと企む。
- - シーン4:ライオンは井戸に飛び込む。
- 1. ビジュアル・アーティスト・エージェンシージャングルを咆哮するライオン、ライオンを井戸に案内するウサギ、そしてライオンが水に飛び込むラストシーン。
- 2. シンセサイザー・エージェント最終的には、コンポジターがこれらのシーンや画像を組み合わせて、一貫性のあるストーリーブックに仕上げる。
パンチャタントラの物語についてのより詳細な情報については、ウィキペディアのパンチャタントラやパンチャタントラ物語集などの外部リソースを参照することができる。
LLMエージェントによる自動オーサリング生成
ジェネレーティブAIエージェントは、複雑な創造的プロセスを実行するために協力し合うデジタル「チーム」と考えることができる。個々のAIエージェントに特定のタスクを割り当てることで、コミック全体を作成するプロセスが効率的かつ自動化される。下の図では、専門化されたエージェントが協力して作業している:
- 1. 脚本家ショートストーリーを詳細なブレイクダウンシーンに翻訳する。
- 2. ビジュアル・アーティスト各シーンを魅力的なビジュアル・アートに仕上げる責任者。
- 3. シンセサイザー生成されたすべてのシーンとそれに対応する画像を、首尾一貫した完全なコミックブックに統合する責任者。コンポジターは、物語がスムーズに流れ、最終製品がリリースできるようにする。
これらのエージェント間の相乗効果により、コミック制作プロセスが自動化され、効率的でクリエイティブなワークフローが可能になる。鍵は、生成言語モデルと画像生成AIシステムを連携して活用する能力にある。
アーキテクチャの概要
このオートメーションのアーキテクチャはシンプルだが効果的だ。プロセスは短いストーリーから始まり、以下のように流れる:
- 1. ショートストーリーの入力このプロセスでは、漫画のベースとなる短い物語をインプットする。
- 2. 脚本エージェントエージェントは短いストーリーを個別のシーンに分割し、それぞれがストーリーの重要な部分をとらえる。図では、これは「シーン1、シーン2、シーン3」などとラベル付けされたシーンとして示されている。
- 3. ビジュアル・アーティスト・エージェンシービジュアル・アーティストは、各シーンの描写を視覚的な表現に変換し、効果的にコミックを説明する役割を担っている。日向ぼっこをするライオン、ウサギと出会うライオンなど、シーンを表現する画像としてビジュアル要素が作成された。
- 4. シンセサイザー最後に、すべてのシーンとそれに対応する画像がコンポジター・エージェントによって合成され、完全な絵本が完成します。
すべてのプロセスは、物語をシームレスに、人間の介入を最小限に抑えた魅力的なコミックブックに変換するように設計されている。
CrewAIフレームワークを使用して実装
このビジョンを実現するために、私たちは3つのエージェントが調和して動作するCrewAIフレームワークを実装しました。以下は、ステップバイステップでプロセスを再現するのに役立つコードスニペットのプレースホルダを含む、実装プロセスの詳細なステップです:
エージェントとタスクの定義我々は、CrewAIフレームワークを使用して、エージェント1(脚本家)とエージェント2(ビジュアルアーティスト)の2つのエージェントを定義します。両エージェントは、効率的なワークフローを実現するために、相互に関連するタスクを持つ特定の役割を持っています。
##エージェント 脚本家 役割: > 子供向け短編小説のシーンの脚本 ゴール 子供向け絵本のために、シンプルでわかりやすく、魅力的なシーンのスクリプトを書く。 バックストーリー: > あなたは、子供向けの短編小説を上演やアニメーションの脚本にすることを専門とする脚本家です。 llm: llm_model ## タスク 脚本を書く。 説明: 人生について大切なことを学ぶ短い童話が与えられます。その物語を、子どもたちが読んで楽しめる絵本にする必要があります。あなたにはストーリーを {各シーンは物語の中の特定の出来事や瞬間に焦点を当てています。各シーンは画像に変換されます。指定されたpydanticパターンに従って、以下の情報を生成する必要があります: - ストーリーにふさわしい名前 - ストーリーの短い要約 - 読者にとって重要な情報を提供する、物語の短い裏話。 - 物語の各場面についての詳細な説明。 - 物語から学んだ究極の教訓 <ショートストーリー {ストーリー} 絵本のビジュアルイラスト 目標 魅力的な絵本を作る。 バックストーリー: > 絵本制作のエキスパート。 llm: llm_model ##タスク イラストを描く。 説明 人生について大切なことを学ぶ短い童話が与えられます。その物語が、子どもたちが読んで夢中になれる楽しい絵本に生まれ変わります。ストーリーはユニークなシーンに分かれています。 以下はその1シーンの説明と簡単な要約です。 そのシーンの画像を作成するために、テキストから画像へのモデルで使用できるプロンプトを生成します。プロンプトを提供されたツールに送り、シーンの要件に合ったキャラクターと背景の画像を生成する。キャラクターはカートゥーン風であること。プロンプトは40文字以下であること。 <story_summary {story_summary} <story_summary <シーン説明 {scene_description} </scene_description 期待される出力 出力はpydanticパターンに厳密に従わなければならない。従わない場合はペナルティがあります。 エージェント: visualartist
チーム構成: OpenAIやDaLLEモデルのようなレスポンスやllmモデルを生成し、エージェントをタスクにバインドするために、エージェントのための構造化スキーマを定義する。
dalle_tool = DallETool(model="dall-e-3"、 model="dall-e-3", size="1024x1024", quality="standard", n=1) n=1) ## 単一のシーン用のクラスを定義する。 class StoryScene(BaseModel). シーン番号: int ナレーション: str ## ストーリーシーンのリストのクラスを定義します。 class StoryScenes(BaseModel). story_name: str summary: str story_name: str summary: str story_name: str summary: str background: str scenes: List[StoryScene]. ## 一つのシーンに対してクラスを定義する。 class SceneImage(BaseModel). prompt: str = Field(description = "画像を生成するために使用できるテキストから画像へのモデルプロンプト" , max_length = 50)max_length = 50) image_url: str = Field(description = "ツールによって生成された画像のURL") クルーベース class StoryCrew(). """StoryCrew""(ストーリークルー)"" agents_config = 'config/story/agents.yaml' タスクの設定 = 'config/story/tasks.yaml' llm def llm_model(self). return ChatOpenAI(temperature=0.0, #を0に設定して決定論的に出力) model="gpt-4o-mini", #はGPT-4 Turboモデルを使う max_tokens=8000) エージェント def scriptwriter(self) -> Agent. return Agent( config=self.agents_config['scriptwriter']、 output_pydantic = StoryScenes、 verbose=True ) タスク def scriptwriting(self) -> Task. return Task( config=self.tasks_config['scriptwriting']、 output_pydantic = StoryScenes、 ) クルー def crew(self) -> クルー。 """ストーリークルー作成""" script_crew = クルー( agents=self.agents, # @agentデコレーターによって自動的に作成される。 task=self.tasks、# @taskデコレーターによって自動的に作成される。 process=Process.sequential, verbose=True, # @taskデコレータによって自動的に作成される。 process=Process.sequential, verbose=True, # process=Process. # process=Process.hierarchical, # 代わりにこれを使いたい場合は、https://docs.crewai.com/how-to/Hierarchical/ を参照。 ) return script_crew クルーベース class ArtistCrew(). agents_config = 'config/visual/agents.yaml'. tasks_config = 'config/visual/tasks.yaml' です。 llm def llm_model(self). return ChatOpenAI(temperature=0.0, # set to 0 for deterministic output) model="gpt-4o-2024-08-06", GPT-4 Turboモデルを使用した# max_tokens=8000) エージェント def visualartist(self) -> Agent. return Agent( config=self.agents_config['visualartist']、 tools=[dalle_tool]、 verbose=True ) タスク def illustration(self) -> Task. return Task( config=self.tasks_config['illustration']、 output_pydantic = SceneImage、 output_file='report.md' ) クルー def crew(self) -> クルー。 """絵本クルーを作る""" artist_crew = クルー( agents=self.agents, # @agentデコレーターによって自動的に作成される。 task=self.tasks、# @taskデコレーターで自動作成 process=Process.sequential, verbose=True, # @taskデコレーターによって自動的に作成される。 process=Process.sequential, verbose=True, # process=Process. # process=Process.hierarchical, # 代わりにこれを使いたい場合は、https://docs.crewai.com/how-to/Hierarchical/ を参照。 ) return artist_crew
主な仕事の流れ 2つのエージェント間の適切なハンドオフを確保する。例えば、脚本家がシーンを完成させたら、自動的にビジュアル・アーティストに引き継ぎ、ワークフローの継続性を確保する。
agentops.start_session( tags = ['story', 'scripts'] ) ## QuestCrewを使用して仮説を作成または質問を生成する インプット = { 'number_of_scenes': int(number_of_scenes)、 'story_text': story_text、 } scenes_list = StoryCrew().crew().kickoff(inputs=inputs) agentops.end_session("成功") if scenes_list is not None: print(f "スクリプトの生結果: {scscore_list="Raw") print(f "スクリプトの生結果: {scenes_list.raw}") slist = scenes_list.pydantic STORY_SUMMARY = slist.SUMMARY for scene in slist.scenes: print(f "シーン:{{scenes_list.raw}") print(f "シーン:{シーン.ナレーション}") scene_input = [{ "story_summary": story_summary、 'scene_description': scene.narration} for i, scene in enumerate(slist.scenes)]. agentops.start_session(tags = ['scene', 'illustration']) ## エージェントを実行する result_images = ArtistCrew().crew().kickoff_for_each(inputs = scene_input) print("result_images : {result_images.raw}")
評決を下す
CrewAI LLMエージェントは、シンプルなショートストーリーを魅力的なコミック絵本に変換する手助けをし、ストーリーのあらゆる段階でストーリーテラーを支援します。スクリプトの分解やビジュアルの生成といった反復タスクを自動化することで、AIはアーティストやライターが独自の芸術的スタイルを維持したまま、中核となる創造的要素により集中できるようにします。この実装は、ジェネレーティブAIがクリエイティブ業界をどのように強化できるかを示し、創造性とテクノロジーがシームレスに連携する未来のビジョンを提供する。