Exemple d'automatisation de la création de bandes dessinées avec les agents CrewAI

présenter (qqn pour un emploi, etc.)

Il fut un temps où la création d'une bande dessinée était un processus fastidieux qui nécessitait des écrivains, des illustrateurs et d'innombrables heures d'efforts. Aujourd'hui, l'IA est un outil puissant qui permet aux professionnels de la création de s'épanouir. Imaginez que vous confiez une nouvelle à l'IA et que celle-ci la transforme en une bande dessinée vivante et visuellement époustouflante, tout en conservant le point de vue unique du créateur. Il ne s'agit plus d'un simple fantasme, mais d'une réalité rendue possible par des modèles d'IA générative de pointe. Dans ce blog, nous exploreronsCrewAI How LLM Agents Enhance the Creative Process of Comic Book Creation (Comment les agents LLM améliorent le processus créatif de la création de bandes dessinées) se penche sur la structure et la mise en œuvre qui rendent cette magie possible.

 

Exemple : Création d'un livre d'histoires à partir du Panchatantra

Pour illustrer ce processus, utilisons une courte histoire tirée du Panchatantra, un recueil d'anciennes fables indiennes connues pour leur sagesse et leurs leçons de morale. Prenons l'histoire du lion et du lièvre :

Petite histoire : "Il était une fois un lion puissant nommé Basuraka qui se déchaînait dans la jungle. Les animaux se lassèrent de sa tyrannie et décidèrent de lui envoyer une proie chaque jour. Un jour, ce fut au tour du lapin, très malin, de mettre au point un plan pour se débarrasser du lion. Il attira Basuraka dans un puits profond et le convainquit qu'un autre lion y vivait. Voyant son reflet dans l'eau, Basuraka poussa un rugissement de colère et sauta dans le puits pour ne plus jamais revenir."

En utilisant le cadre CrewAI, nous suivrons les étapes ci-dessous :

  1. 1. Agents scénaristesLes scénaristes décomposent l'histoire en scènes, par exemple :
  • - Scène 1 : Des lions parcourent la jungle.
  • - Scène 2 : Les animaux décident de livrer une proie par jour.
  • - Scène 3 : Le lapin prévoit de tromper le lion.
  • - Scène 4 : Le lion saute dans le puits.
  1. 1. Agence d'artistes visuelsLes artistes visuels créeront des illustrations pour chaque scène, illustrant des moments clés tels que le rugissement du lion dans la jungle, le lapin guidant le lion vers le puits et la scène finale du lion sautant dans l'eau.
  2. 2. Agent de synthèseLe compositeur combine toutes ces scènes et images en un livre d'histoire cohérent, prêt à être visionné et partagé.

Pour des informations plus détaillées sur l'histoire du Panchatantra, vous pouvez vous référer à des ressources externes telles que Panchatantra sur Wikipedia ou le recueil d'histoires du Panchatantra.

Génération automatisée de textes avec des agents LLM

Les agents génératifs d'IA peuvent être considérés comme une "équipe" numérique travaillant ensemble pour réaliser des processus créatifs complexes. En assignant des tâches spécifiques à des agents d'IA individuels, le processus de création d'une bande dessinée entière devient efficace et automatisé. Dans l'illustration ci-dessous, des agents spécialisés travaillent ensemble :

  1. 1. scénaristeLes tâches sont multiples : traduire des histoires courtes en scènes de décomposition détaillées.
  2. 2. artiste visuelLe travail de l'artiste : Il est chargé de transformer chaque scène en une œuvre d'art visuelle convaincante.
  3. 3. synthétiseursLe compositeur est responsable de la fusion de toutes les scènes générées et de leurs images correspondantes en une bande dessinée cohérente et complète. Le compositeur s'assure que la narration est fluide et que le produit final est prêt à être publié.

La synergie entre ces agents automatise le processus de création de bandes dessinées, permettant un flux de travail efficace et créatif. La clé réside dans la capacité à exploiter de manière coordonnée les modèles linguistiques génératifs et les systèmes d'IA de génération d'images.

Aperçu de l'architecture

L'architecture de cette automatisation est simple mais efficace. Le processus commence par une brève histoire et se déroule comme suit :

  1. 1. Contribution à la rédaction de nouvellesLe processus utilise de courts récits qui servent de base à la bande dessinée.
  2. 2. Agents scénaristesL'agent décompose l'histoire courte en scènes distinctes, chacune d'entre elles contenant une partie importante de l'intrigue. Dans l'illustration, cela se traduit par des scènes intitulées "Scène 1, Scène 2, Scène 3", etc., jusqu'à ce que l'histoire entière soit décomposée en scènes plus petites.
  3. 3. Agence d'artistes visuelsL'artiste visuel est chargé de traduire chaque description de scène en une représentation visuelle, illustrant ainsi efficacement la bande dessinée. Les éléments visuels sont créés sous forme d'images pour représenter des scènes telles que le lion au soleil, le lion rencontrant le lapin, etc.
  4. 4. synthétiseursEnfin, toutes les scènes et les images correspondantes sont combinées par un agent compositeur pour créer un livre d'images complet.

L'ensemble du processus est conçu pour transformer de manière transparente les récits en bandes dessinées attrayantes qui ne nécessitent qu'une intervention humaine minimale.

Mise en œuvre à l'aide du cadre CrewAI

Pour concrétiser cette vision, nous avons mis en œuvre le cadre CrewAI avec trois agents travaillant en harmonie. Vous trouverez ci-dessous les étapes détaillées du processus de mise en œuvre, avec des espaces réservés aux extraits de code pour vous aider à reproduire le processus étape par étape :

Définition des agents et des tâchesLes agents : Nous utilisons le cadre CrewAI pour définir deux agents - l'agent 1 (scénariste) et l'agent 2 (artiste visuel). Les deux agents ont des rôles spécifiques avec des tâches interdépendantes pour un flux de travail efficace.

## 代理
scriptwriter:
 role: >
   为儿童短故事编写场景剧本
 goal: >
   为儿童图画书编写简单、清晰且引人入胜的场景剧本。
 backstory: >
   你是一个专注于将儿童短故事转化为剧本的剧本编写者,用于表演或动画制作。
 llm: llm_model               

## 任务

scriptwriting:
 description: >
   你将获得一个关于学习生活重要教训的儿童短故事。该故事需要转化为一本有趣的图画书,以便儿童阅读和参与。你负责将故事分解为 
   {number_of_scenes} 个独特场景,每个场景聚焦于故事中的特定事件或时刻。每个场景将转化为图像。你必须生成以下信息,遵循指定的pydantic模式:

   - 故事的合适名称 
   - 故事的简短摘要 
   - 故事的简短背景介绍,为读者提供重要的信息。
   - 故事中每个场景的详细叙述,至少一到两句话。
   - 故事中学到的最终教训。

   <short_story>    
     {story_text}
   </short_story>   
 expected_output: >   
   输出必须严格遵循pydantic模式。如果不遵循,将会有惩罚。       
 agent: scriptwriter

## 代理

visualartist:
 role: >
   故事书的视觉插图
 goal: >
   创建引人入胜的图画书。
 backstory: >
   创建图画故事书的专家。
 llm: llm_model

## 任务

illustration:
 description: > 

   你将获得一个关于学习生活重要教训的儿童短故事。该故事将转化为一本有趣的图画书,以便儿童阅读和参与。故事已经分解为独特的场景。

   下面是一个场景的描述,该场景的短摘要也在下面给出。 
   
   生成一个可以用于文本到图像模型的提示,以生成该场景的图像。将提示发送到提供的工具,以生成符合场景要求的角色和背景的图像。角色应为卡通风格。提示应少于40个字。

   <story_summary>
     {story_summary}
   <story_summary>

   <scene_description>
     {scene_description}
   </scene_description>
 expected_output: >   
   输出必须严格遵循pydantic模式。如果不遵循,将会有惩罚。       
 agent: visualartist

 

Configuration de l'équipe : Définir un schéma structuré pour les agents afin de générer des réponses et des modèles d'ILM, tels que les modèles OpenAI et DaLLE, et lier les agents à leurs tâches.

dalle_tool = DallETool(model="dall-e-3",
                      size="1024x1024",
                      quality="standard",
                      n=1)

## 为单个场景定义一个类
class StoryScene(BaseModel):
   scene_number: int 
   narration: str

## 为故事场景列表定义一个类
class StoryScenes(BaseModel):
story_name: str 
summary: str 
background: str 
lesson: str 
scenes: List[StoryScene]

## 为单个场景定义一个类
class SceneImage(BaseModel):
   prompt: str = Field(description = "可用于生成图像的文本到图像模型的提示。", max_length = 50)
   image_url: str = Field(description = "由工具生成的图像的URL")

@CrewBase
class StoryCrew():
 """故事团队"""

agents_config = 'config/story/agents.yaml'
tasks_config = '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) 

@agent
 def scriptwriter(self) -> Agent:
 return Agent(
  config=self.agents_config['scriptwriter'],
  output_pydantic = StoryScenes,   
  verbose=True
 )

@task
 def scriptwriting(self) -> Task:
 return Task(
  config=self.tasks_config['scriptwriting'],
  output_pydantic = StoryScenes,   
 )

@crew
 def crew(self) -> Crew:
 """创建故事团队"""
 script_crew =  Crew(
  agents=self.agents, # 由@agent装饰器自动创建
  tasks=self.tasks, # 由@task装饰器自动创建
  process=Process.sequential,
  verbose=True,
  # process=Process.hierarchical, # 如果你想改用这个,可以参考 https://docs.crewai.com/how-to/Hierarchical/
 )

 return script_crew
 
@CrewBase
class ArtistCrew():

agents_config = 'config/visual/agents.yaml'
tasks_config = 'config/visual/tasks.yaml'

@llm
 def llm_model(self):
 return ChatOpenAI(temperature=0.0,  # 设置为0以获得确定性输出
                   model="gpt-4o-2024-08-06",  # 使用GPT-4 Turbo模型
                   max_tokens=8000) 

@agent
 def visualartist(self) -> Agent:
 return Agent(
  config=self.agents_config['visualartist'],
  tools=[dalle_tool],   
  verbose=True
 )

@task
 def illustration(self) -> Task:
 return Task(
  config=self.tasks_config['illustration'],
  output_pydantic = SceneImage,      
  output_file='report.md'
 )

@crew
 def crew(self) -> Crew:
 """创建图画书团队"""
 artist_crew =  Crew(
  agents=self.agents, # 由@agent装饰器自动创建
  tasks=self.tasks, # 由@task装饰器自动创建
  process=Process.sequential,
  verbose=True,
  # process=Process.hierarchical, # 如果你想改用这个,可以参考 https://docs.crewai.com/how-to/Hierarchical/
 ) 

 return artist_crew

 

Flux de travail principal : Veiller à ce que les transferts entre les deux agents se fassent correctement. Par exemple, lorsqu'un scénariste termine une scène, celle-ci est automatiquement transmise à l'artiste visuel, ce qui garantit la continuité du flux de travail.

agentops.start_session( tags = ['story', 'scripts'] )

## 使用 QuestCrew 创建假设或生成问题
inputs = {
   'number_of_scenes': int(number_of_scenes),
   'story_text': story_text,
}

scenes_list = StoryCrew().crew().kickoff(inputs=inputs)

agentops.end_session("Success")

if scenes_list is not None:        
   print(f"Raw result from script writing: {scenes_list.raw}")

slist = scenes_list.pydantic
story_summary = slist.summary
for scene in slist.scenes:
   print(f"Scene: {scene.narration}") 

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}")

 

rendre un verdict

La puissance de l'IA générative réside dans sa capacité à augmenter et à soutenir le processus créatif, en fournissant aux créateurs de contenu de nouveaux outils pour donner vie à leurs idées. L'agent LLM de CrewAI aide à transformer de simples histoires courtes en bandes dessinées attrayantes, en assistant les conteurs à chaque étape du voyage. En automatisant les tâches répétitives telles que la décomposition du scénario et la génération de visuels, l'IA permet aux artistes et aux écrivains de se concentrer davantage sur les éléments créatifs essentiels, tout en préservant leur style artistique unique. Cette mise en œuvre démontre comment l'IA générative peut améliorer l'industrie créative, en offrant une vision d'un avenir où la créativité et la technologie travaillent ensemble de manière transparente.

 

© déclaration de droits d'auteur

Articles connexes

Pas de commentaires

Vous devez être connecté pour participer aux commentaires !
S'inscrire maintenant
aucun
Pas de commentaires...