diff --git a/app/animations/animation.py b/app/animations/animation.py index 1965fb8..882a40f 100644 --- a/app/animations/animation.py +++ b/app/animations/animation.py @@ -173,7 +173,8 @@ def poster( font = get_font(font_ttf, font_size) width, height = image.size - draw = ImageDraw.Draw(Image.new('RGB', (width, height))) + draw = ImageDraw.Draw(Image.new('RGB', (width, height), (0, 0, 0))) + caption = caption.replace('\n', ' ') wrapped_caption = wrap_text(draw, caption, font, width - 2 * margin) num_lines = len(wrapped_caption) @@ -188,13 +189,12 @@ def poster( draw.rectangle([(0, 0), (total_width, total_height)], fill='black') resized_image = image.resize((width, height)) - composite_image.paste(resized_image, (int(margin/2), int(margin/2))) - caption_box = Image.new('RGB', (width, caption_box_height), color='black') + caption_box = Image.new('RGB', (total_width, caption_box_height), color='black') draw = ImageDraw.Draw(caption_box) - caption_y = caption_padding_top + 0*margin/2 + caption_y = caption_padding_top for line in wrapped_caption: draw.text((margin + shadow_offset[0], caption_y + shadow_offset[1]), line, fill=shadow_color, font=font) draw.text((margin, caption_y), line, fill=font_color, font=font) diff --git a/app/animations/little_martians.py b/app/animations/little_martians.py index a8ea8b4..4de3a2e 100644 --- a/app/animations/little_martians.py +++ b/app/animations/little_martians.py @@ -24,11 +24,14 @@ def little_martian_poster(request: LittleMartianRequest): data = littlemartians_data[request.martian.value][request.setting.value][request.genre.value] lora = data['lora'] + character_id = data['character_id'] modifier = data['modifier'] lora_scale = random_interval(*data['lora_scale']) init_image = random.choice(data['init_images']) init_image_strength = random_interval(*data['init_image_strength']) - + + character = EdenCharacter(character_id) + littlemartian_writer = LLM( model=request.model, system_message=littlemartians_poster_system.template, @@ -37,36 +40,24 @@ def little_martian_poster(request: LittleMartianRequest): prompt = littlemartians_poster_prompt.substitute( martian = request.martian.value, + identity = character.identity, setting = request.setting.value, genre = request.genre.value, premise = request.prompt, ) - print("==============") - print("PROMPT:", prompt) - result = littlemartian_writer(prompt, output_schema=Poster) prompt = result['image'] text_input = f'{modifier}, {prompt}' - print("RESULT:", prompt) - print("text_input:", text_input) - - # def run_panel(panel, idx): - # # pick lora of character - # # pick init image character x genre - print("========") - - if request.aspect_ratio.value == "portrait": - w, h = 1024, 1280 - elif request.aspect_ratio.value == "landscape": - w, h = 1280, 768 - elif request.aspect_ratio.value == "square": - w, h = 1024, 1024 - - + if request.aspect_ratio == "portrait": + width, height = 1280, 1920 + elif request.aspect_ratio == "landscape": + width, height = 1920, 1280 + else: + width, height = 1600, 1600 config = { "text_input": text_input, @@ -80,18 +71,11 @@ def little_martian_poster(request: LittleMartianRequest): "n_samples": 1, } - - print("config") - print(config) - - image_url, thumbnail_url = replicate.sdxl(config) - print(image_url, thumbnail_url) - caption = result['caption'] - print(caption) + image = utils.download_image(image_url) composite_image, thumbnail_image = poster(image, caption) diff --git a/app/animations/reel.py b/app/animations/reel.py index 5ef8471..86c0387 100644 --- a/app/animations/reel.py +++ b/app/animations/reel.py @@ -9,10 +9,6 @@ from ..character import Character, EdenCharacter from ..scenarios import reel from ..models import ReelRequest -#from .animation import reel_clip - -MAX_PIXELS = 1024 * 1024 -MAX_WORKERS = 3 def animated_reel(request: ReelRequest, callback=None): @@ -21,8 +17,6 @@ def animated_reel(request: ReelRequest, callback=None): if callback: callback(progress=0.1) - print(result) - characters = { character_id: EdenCharacter(character_id) for character_id in request.character_ids + [request.narrator_id] @@ -44,8 +38,14 @@ def animated_reel(request: ReelRequest, callback=None): voice_id = elevenlabs.get_random_voice() characters[character_id].voice = voice_id - width, height = 1024, 1280 - duration = 20 + if request.aspect_ratio == "portrait": + width, height = 1280, 1920 + elif request.aspect_ratio == "landscape": + width, height = 1920, 1280 + else: + width, height = 1600, 1600 + + min_duration = 20 speech_audio = None if result["speech"]: @@ -75,28 +75,36 @@ def animated_reel(request: ReelRequest, callback=None): silence2 = AudioSegment.silent(duration=2500) speech_audio = silence1 + speech_audio + silence2 - duration = len(speech_audio) / 1000 + duration = max(min_duration, len(speech_audio) / 1000) music_url, _ = replicate.audiocraft( - prompt=result["music_description"], + prompt=result["music_prompt"], seconds=duration ) music_bytes = requests.get(music_url).content - print("music", music_url) if speech_audio: buffer = BytesIO() music_audio = AudioSegment.from_mp3(BytesIO(music_bytes)) music_audio = music_audio - 5 speech_audio = speech_audio + 5 # boost speech + + # combine speech and audio at max duration + nm, na = len(music_audio), len(speech_audio) + duration = max(nm, na) + if len(music_audio) < duration: + music_audio += AudioSegment.silent(duration=duration - nm) + elif len(speech_audio) < duration: + speech_audio += AudioSegment.silent(duration=duration - na) combined_audio = music_audio.overlay(speech_audio) + combined_audio.export(buffer, format="mp3") audio_url = s3.upload(buffer.getvalue(), "mp3") else: audio_url = s3.upload(music_bytes, "mp3") video_url, thumbnail_url = replicate.txt2vid( - interpolation_texts=[result["image_description"]], + interpolation_texts=[result["image_prompt"]], width=width, height=height, ) diff --git a/app/animations/story.py b/app/animations/story.py index bb490fb..5c35cc3 100644 --- a/app/animations/story.py +++ b/app/animations/story.py @@ -56,7 +56,7 @@ def run_story_segment(clip, idx): else: character = characters[request.narrator_id] output_filename, thumbnail_url = screenplay_clip( - character, clip["speech"], clip["image_description"], width, height + character, clip["speech"], clip["image_prompt"], width, height ) progress += progress_increment if callback: diff --git a/app/models/__init__.py b/app/models/__init__.py index 98c0c3f..8d78efd 100644 --- a/app/models/__init__.py +++ b/app/models/__init__.py @@ -29,6 +29,7 @@ StoryVoiceoverMode, StoryClip, StoryResult, + ReelNarrationMode, ReelRequest, ReelResult, ComicRequest, diff --git a/app/models/scenarios.py b/app/models/scenarios.py index 17026f7..805456f 100644 --- a/app/models/scenarios.py +++ b/app/models/scenarios.py @@ -61,7 +61,7 @@ class StoryClip(BaseModel): description="Character name if voiceover mode is character, otherwise null" ) speech: str = Field(description="Spoken text for clip") - image_description: str = Field(description="Image content for clip") + image_prompt: str = Field(description="Image content for clip") class StoryResult(BaseModel): @@ -71,13 +71,22 @@ class StoryResult(BaseModel): clips: List[StoryClip] = Field(description="Clips in the sequence") +class ReelNarrationMode(Enum): + auto = "auto" + on = "on" + off = "off" + + class ReelRequest(BaseModel): character_ids: List[str] prompt: str - narrator_id: str = NARRATOR_CHARACTER_ID - model: str = "gpt-4-1106-preview" - params: dict = {} - intro_screen: bool = False + music_prompt: Optional[str] = None + aspect_ratio: Optional[str] = "portrait" + narrator_id: Optional[str] = NARRATOR_CHARACTER_ID + narration: Optional[ReelNarrationMode] = "auto" + intro_screen: Optional[bool] = False + model: Optional[str] = "gpt-4-1106-preview" + params: Optional[dict] = {} class ReelVoiceoverMode(Enum): @@ -95,8 +104,8 @@ class ReelResult(BaseModel): description="Character name if voiceover mode is character, otherwise null" ) speech: Optional[str] = Field(description="Spoken text for clip if voiceover mode is not none, otherwise null") - music_description: str = Field(description="Music content for reel") - image_description: str = Field(description="Image content for clip") + music_prompt: str = Field(description="Music content for reel") + image_prompt: str = Field(description="Image content for clip") diff --git a/app/prompt_templates/cinema/reelwriter_prompt.txt b/app/prompt_templates/cinema/reelwriter_prompt.txt index 5bc7f88..1ea7302 100644 --- a/app/prompt_templates/cinema/reelwriter_prompt.txt +++ b/app/prompt_templates/cinema/reelwriter_prompt.txt @@ -1,8 +1,3 @@ -Characters: $character_details - -Character names (only use these for character field in each clip): -$character_names - The premise of the reel is: $prompt \ No newline at end of file diff --git a/app/prompt_templates/cinema/reelwriter_system.txt b/app/prompt_templates/cinema/reelwriter_system.txt index daca7aa..ec4ae81 100644 --- a/app/prompt_templates/cinema/reelwriter_system.txt +++ b/app/prompt_templates/cinema/reelwriter_system.txt @@ -6,8 +6,8 @@ You will then write a script for a reel based on the information provided. Your output contains the following elements: -image_description: a short and concise 1-sentence description of the visual content for the reel, structured as a prompt, focusing on visual elements and action, not plot or dialogue -music_description: a short and concise 1-sentence description of the music for the reel, structured as a prompt. Use descriptive words to convey the mood and genre of the music +image_prompt: a short and concise 1-sentence description of the visual content for the reel, structured as a prompt, focusing on visual elements and action, not plot or dialogue +music_prompt: a short and concise 1-sentence description of the music for the reel, structured as a prompt. Use descriptive words to convey the mood and genre of the music voiceover: whether there is a voiceover by a narrator, or by a character, or no voiceover at all character: If voiceover is in character mode, the name of the speaking character. Important: you may only use the exact name of a character provided by the user in the cast of characters. speech: If voiceover is in character or narrator mode, the text of the speech diff --git a/app/prompt_templates/cinema/screenwriter_prompt.txt b/app/prompt_templates/cinema/screenwriter_prompt.txt index 8f2ee45..c731df3 100644 --- a/app/prompt_templates/cinema/screenwriter_prompt.txt +++ b/app/prompt_templates/cinema/screenwriter_prompt.txt @@ -1,8 +1,3 @@ -Characters: $character_details - -Character names (only use these for character field in each clip): -$character_names - The premise of the story is: $story \ No newline at end of file diff --git a/app/prompt_templates/cinema/screenwriter_system.txt b/app/prompt_templates/cinema/screenwriter_system.txt index fc827c9..fa4b212 100644 --- a/app/prompt_templates/cinema/screenwriter_system.txt +++ b/app/prompt_templates/cinema/screenwriter_system.txt @@ -7,7 +7,7 @@ You will then write a screenplay for a film based on the information provided. I voiceover: whether the voiceover is the narrator or a character speaking character: If voiceover is in character mode, the name of the speaking character. Important: you may only use the exact name of a character provided by the user in the cast of characters. speech: If voiceover is in character or narrator mode, the text of the speech -image_description: a description of the image content for the clip +image_prompt: a description of the image content for the clip Generate around 5-10 clips. Approximately half should be character dialogue and half should be narration. For clips where the voiceover is a character, some of the image prompts may emphasize non-personal objects or scenery, and some may emphasize the character. diff --git a/app/prompt_templates/little_martians/littlemartians_data.json b/app/prompt_templates/little_martians/littlemartians_data.json index 3c4da48..8377f12 100644 --- a/app/prompt_templates/little_martians/littlemartians_data.json +++ b/app/prompt_templates/little_martians/littlemartians_data.json @@ -4,6 +4,7 @@ "Action": { "modifier": " film still from action movie, abandoned architecture on Mars, green alien plants, ruins of archways and dome, translucent walls, organic structure, ancient futuristic, dramatic lighting, highly detailed.", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/c806b9247f2ebd80156dfe90168d150a8156d4a26786f4199f4d7600aeced628.tar", + "character_id": "65c2826e0335fa57d24e0aea", "lora_scale": [0.4, 0.7], "init_image_strength": [0.2, 0.5], "init_images": [ @@ -27,6 +28,7 @@ "Comedy": { "modifier": " film still from comedy, wes anderson, abandoned architecture on Mars, green alien plants, ruins of archways and dome, translucent walls, organic structure, ancient futuristic, dramatic lighting, highly detailed.", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/c806b9247f2ebd80156dfe90168d150a8156d4a26786f4199f4d7600aeced628.tar", + "character_id": "65c2826e0335fa57d24e0aea", "lora_scale": [0.4, 0.7], "init_image_strength": [0.2, 0.5], "init_images": [ @@ -53,6 +55,7 @@ "Drama": { "modifier": " film still from drama movie, abandoned architecture on Mars, green alien plants, ruins of archways and dome, translucent walls, organic structure, ancient futuristic, dramatic lighting, highly detailed.", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/c806b9247f2ebd80156dfe90168d150a8156d4a26786f4199f4d7600aeced628.tar", + "character_id": "65c2826e0335fa57d24e0aea", "lora_scale": [0.4, 0.7], "init_image_strength": [0.2, 0.5], "init_images": [ @@ -81,6 +84,7 @@ "Horror": { "modifier": " film still from horror movie, abandoned architecture on Mars, green alien plants, ruins of archways and dome, translucent walls, organic structure, ancient futuristic, dramatic lighting, highly detailed.", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/c806b9247f2ebd80156dfe90168d150a8156d4a26786f4199f4d7600aeced628.tar", + "character_id": "65c2826e0335fa57d24e0aea", "lora_scale": [0.4, 0.7], "init_image_strength": [0.2, 0.5], "init_images": [ @@ -113,6 +117,7 @@ "Mystery": { "modifier": " film still from mystery movie, abandoned architecture on Mars, green alien plants, ruins of archways and dome, translucent walls, organic structure, ancient futuristic, dramatic lighting, highly detailed.", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/c806b9247f2ebd80156dfe90168d150a8156d4a26786f4199f4d7600aeced628.tar", + "character_id": "65c2826e0335fa57d24e0aea", "lora_scale": [0.4, 0.7], "init_image_strength": [0.2, 0.5], "init_images": [ @@ -137,6 +142,7 @@ "Action": { "modifier": " sculpture inside medieval painting, action movie film still", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/c806b9247f2ebd80156dfe90168d150a8156d4a26786f4199f4d7600aeced628.tar", + "character_id": "65c2826e0335fa57d24e0aea", "lora_scale": [0.4, 0.7], "init_image_strength": [0.2, 0.5], "init_images": [ @@ -157,6 +163,7 @@ "Comedy": { "modifier": " sculpture in a painting by Vasarely, geometric patterns everywhere, abstract geometry", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/c806b9247f2ebd80156dfe90168d150a8156d4a26786f4199f4d7600aeced628.tar", + "character_id": "65c2826e0335fa57d24e0aea", "lora_scale": [0.4, 0.7], "init_image_strength": [0.2, 0.5], "init_images": [ @@ -183,6 +190,7 @@ "Drama": { "modifier": " sculpture inside Hieronymus Bosch and Max Ernst painting, drama movie film still", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/c806b9247f2ebd80156dfe90168d150a8156d4a26786f4199f4d7600aeced628.tar", + "character_id": "65c2826e0335fa57d24e0aea", "lora_scale": [0.4, 0.7], "init_image_strength": [0.2, 0.5], "init_images": [ @@ -201,6 +209,7 @@ "Horror": { "modifier": " sculpture inside Hieronymus Bosch painting, horror movie film still", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/c806b9247f2ebd80156dfe90168d150a8156d4a26786f4199f4d7600aeced628.tar", + "character_id": "65c2826e0335fa57d24e0aea", "lora_scale": [0.4, 0.7], "init_image_strength": [0.2, 0.5], "init_images": [ @@ -219,6 +228,7 @@ "Mystery": { "modifier": " sculpture in painting by Pieter Bruegel the Elder, mystery movie film still", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/c806b9247f2ebd80156dfe90168d150a8156d4a26786f4199f4d7600aeced628.tar", + "character_id": "65c2826e0335fa57d24e0aea", "lora_scale": [0.4, 0.7], "init_image_strength": [0.2, 0.5], "init_images": [ @@ -241,6 +251,7 @@ "Action": { "modifier": " film still from action movie, small sculpture, subtle colors, alien life, analog photography, extremophiles underwater", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/4e56e17098d7a0f853b688b8a4d1c7f4697b6b1413cfeca36d9c2a361403ba79.tar", + "character_id": "658b44b36104b05b266ca3c6", "lora_scale": [0.4, 0.7], "init_image_strength": [0.2, 0.5], "init_images": [ @@ -263,6 +274,7 @@ "Comedy": { "modifier": " film still from comedy movie, small sculpture, subtle colors, alien life, microbiology analog photography, extremophiles underwater", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/4e56e17098d7a0f853b688b8a4d1c7f4697b6b1413cfeca36d9c2a361403ba79.tar", + "character_id": "658b44b36104b05b266ca3c6", "lora_scale": [0.4, 0.7], "init_image_strength": [0.2, 0.5], "init_images": [ @@ -281,6 +293,7 @@ "Drama": { "modifier": " film still from drama movie, small sculpture, subtle colors, alien life, microbiology analog photography, extremophiles underwater", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/4e56e17098d7a0f853b688b8a4d1c7f4697b6b1413cfeca36d9c2a361403ba79.tar", + "character_id": "658b44b36104b05b266ca3c6", "lora_scale": [0.4, 0.7], "init_image_strength": [0.2, 0.5], "init_images": [ @@ -298,6 +311,7 @@ "Horror": { "modifier": " film still from horror movie, Kubrick, sculpture, subtle colors, alien life, microbiology analog photography, extremophiles underwater", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/4e56e17098d7a0f853b688b8a4d1c7f4697b6b1413cfeca36d9c2a361403ba79.tar", + "character_id": "658b44b36104b05b266ca3c6", "lora_scale": [0.4, 0.7], "init_image_strength": [0.2, 0.5], "init_images": [ @@ -321,6 +335,7 @@ "Mystery": { "modifier": " sculpture in mystery film still, subtle colors, ice crystals, microbiology analog macro photography, extremophiles underwater", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/4e56e17098d7a0f853b688b8a4d1c7f4697b6b1413cfeca36d9c2a361403ba79.tar", + "character_id": "658b44b36104b05b266ca3c6", "lora_scale": [0.4, 0.7], "init_image_strength": [0.2, 0.5], "init_images": [ @@ -342,6 +357,7 @@ "Action": { "modifier": " sculpture in painting from Hokusai, ukiyo-e, action film still, japanese animation", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/4e56e17098d7a0f853b688b8a4d1c7f4697b6b1413cfeca36d9c2a361403ba79.tar", + "character_id": "658b44b36104b05b266ca3c6", "lora_scale": [0.5, 0.7], "init_image_strength": [0.2, 0.5], "init_images": [ @@ -357,6 +373,7 @@ "Comedy": { "modifier": " sculpture in painting from Kawase Hasui, ukiyo-e, commedy film still, japanese animation", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/4e56e17098d7a0f853b688b8a4d1c7f4697b6b1413cfeca36d9c2a361403ba79.tar", + "character_id": "658b44b36104b05b266ca3c6", "lora_scale": [0.5, 0.7], "init_image_strength": [0.3, 0.5], "init_images": [ @@ -375,6 +392,7 @@ "Drama": { "modifier": " sculpture in Hiroshige landscape, ukiyo-e, drama film still", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/4e56e17098d7a0f853b688b8a4d1c7f4697b6b1413cfeca36d9c2a361403ba79.tar", + "character_id": "658b44b36104b05b266ca3c6", "lora_scale": [0.5, 0.7], "init_image_strength": [0.1, 0.4], "init_images": [ @@ -392,6 +410,7 @@ "Horror": { "modifier": " sculpture in Utagawa Kuniyoshi landscape, ukiyo-e, japanase animation horror film still", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/4e56e17098d7a0f853b688b8a4d1c7f4697b6b1413cfeca36d9c2a361403ba79.tar", + "character_id": "658b44b36104b05b266ca3c6", "lora_scale": [0.5, 0.7], "init_image_strength": [0.1, 0.4], "init_images": [ @@ -406,6 +425,7 @@ "Mystery": { "modifier": " sculpture in song dynasty landscape painting, mystery film still", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/4e56e17098d7a0f853b688b8a4d1c7f4697b6b1413cfeca36d9c2a361403ba79.tar", + "character_id": "658b44b36104b05b266ca3c6", "lora_scale": [0.5, 0.7], "init_image_strength": [0.3, 0.5], "init_images": [ @@ -424,6 +444,7 @@ "Action": { "modifier": " action film still sci-fi thriller, analog photography, film grain, smooth color, sculpture head floating in a cave", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/20792be13a74836817cab7a8fff02818861dcc015bfdff1446d2fbb941ba1b26.tar", + "character_id": "658b481a6104b05b266eaed6", "lora_scale": [0.5, 0.7], "init_image_strength": [0.1, 0.4], "init_images": [ @@ -439,6 +460,7 @@ "Comedy": { "modifier": " comedy film still sci-fi thriller, analog photography, film grain, smooth color, sculpture head floating in a cave", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/20792be13a74836817cab7a8fff02818861dcc015bfdff1446d2fbb941ba1b26.tar", + "character_id": "658b481a6104b05b266eaed6", "lora_scale": [0.5, 0.7], "init_image_strength": [0.1, 0.4], "init_images": [ @@ -453,6 +475,7 @@ "Drama": { "modifier": " drama film still sci-fi thriller, analog photography, film grain, smooth color, sculpture head floating in a cave", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/20792be13a74836817cab7a8fff02818861dcc015bfdff1446d2fbb941ba1b26.tar", + "character_id": "658b481a6104b05b266eaed6", "lora_scale": [0.5, 0.7], "init_image_strength": [0.1, 0.4], "init_images": [ @@ -467,6 +490,7 @@ "Horror": { "modifier": " horror film still sci-fi thriller, analog photography, film grain, smooth color, sculpture head floating in a cave", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/20792be13a74836817cab7a8fff02818861dcc015bfdff1446d2fbb941ba1b26.tar", + "character_id": "658b481a6104b05b266eaed6", "lora_scale": [0.5, 0.7], "init_image_strength": [0.1, 0.4], "init_images": [ @@ -482,6 +506,7 @@ "Mystery": { "modifier": " mystery film still sci-fi thriller, analog photography, film grain, smooth color, sculpture head floating in a cave, underground, cavernous, lava tube, photography, cinema noir", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/20792be13a74836817cab7a8fff02818861dcc015bfdff1446d2fbb941ba1b26.tar", + "character_id": "658b481a6104b05b266eaed6", "lora_scale": [0.5, 0.7], "init_image_strength": [0.1, 0.4], "init_images": [ @@ -504,6 +529,7 @@ "Action": { "modifier": " sculpture made of geometric patterns in pattern filled background", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/20792be13a74836817cab7a8fff02818861dcc015bfdff1446d2fbb941ba1b26.tar", + "character_id": "658b481a6104b05b266eaed6", "lora_scale": [0.5, 0.7], "init_image_strength": [0.1, 0.4], "init_images": [ @@ -520,6 +546,7 @@ "Comedy": { "modifier": " sculpture made of geometric patterns in pattern filled background, oil painting by Victor Vasarely", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/20792be13a74836817cab7a8fff02818861dcc015bfdff1446d2fbb941ba1b26.tar", + "character_id": "658b481a6104b05b266eaed6", "lora_scale": [0.5, 0.7], "init_image_strength": [0.1, 0.4], "init_images": [ @@ -547,6 +574,7 @@ "Drama": { "modifier": " sculpture made of geometric patterns in pattern filled background", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/20792be13a74836817cab7a8fff02818861dcc015bfdff1446d2fbb941ba1b26.tar", + "character_id": "658b481a6104b05b266eaed6", "lora_scale": [0.5, 0.7], "init_image_strength": [0.1, 0.4], "init_images": [ @@ -562,6 +590,7 @@ "Horror": { "modifier": " sculpture made of geometric patterns, piranesi painting, maze, stairways, oil painting, bw drawing", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/20792be13a74836817cab7a8fff02818861dcc015bfdff1446d2fbb941ba1b26.tar", + "character_id": "658b481a6104b05b266eaed6", "lora_scale": [0.5, 0.7], "init_image_strength": [0.1, 0.4], "init_images": [ @@ -580,6 +609,7 @@ "Mystery": { "modifier": " sculpture made of geometric patterns in pattern filled background, maze, stairways, oil painting, bw line drawing", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/20792be13a74836817cab7a8fff02818861dcc015bfdff1446d2fbb941ba1b26.tar", + "character_id": "658b481a6104b05b266eaed6", "lora_scale": [0.5, 0.7], "init_image_strength": [0.1, 0.4], "init_images": [ @@ -607,6 +637,7 @@ "Action": { "modifier": " action movie film still, sculpture head floating and alien lifeforms in venus planet atmosphere", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/0119b279ef5b508d0a2e21b36ef2f6f9eaca43c3303017ef209013dfc4199abd.tar", + "character_id": "65c2d3380335fa57d2953302", "lora_scale": [0.4, 0.7], "init_image_strength": [0.2, 0.4], "init_images": [ @@ -632,6 +663,7 @@ "Comedy": { "modifier": " comedy movie film still, sculpture head floating and alien lifeforms in venus planet atmosphere", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/0119b279ef5b508d0a2e21b36ef2f6f9eaca43c3303017ef209013dfc4199abd.tar", + "character_id": "65c2d3380335fa57d2953302", "lora_scale": [0.4, 0.7], "init_image_strength": [0.2, 0.4], "init_images": [ @@ -653,6 +685,7 @@ "Drama": { "modifier": " drama movie film still, sculpture head floating and alien lifeforms in venus planet atmosphere", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/0119b279ef5b508d0a2e21b36ef2f6f9eaca43c3303017ef209013dfc4199abd.tar", + "character_id": "65c2d3380335fa57d2953302", "lora_scale": [0.4, 0.7], "init_image_strength": [0.2, 0.4], "init_images": [ @@ -673,6 +706,7 @@ "Horror": { "modifier": " horror movie film still, sculpture head floating and alien lifeforms in venus planet atmosphere", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/0119b279ef5b508d0a2e21b36ef2f6f9eaca43c3303017ef209013dfc4199abd.tar", + "character_id": "65c2d3380335fa57d2953302", "lora_scale": [0.4, 0.7], "init_image_strength": [0.2, 0.4], "init_images": [ @@ -692,6 +726,7 @@ "Mystery": { "modifier": " mystery movie film still, sculpture head floating and alien lifeforms in venus planet atmosphere", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/0119b279ef5b508d0a2e21b36ef2f6f9eaca43c3303017ef209013dfc4199abd.tar", + "character_id": "65c2d3380335fa57d2953302", "lora_scale": [0.4, 0.7], "init_image_strength": [0.2, 0.4], "init_images": [ @@ -709,6 +744,7 @@ "Action": { "modifier": " sculpture in linear perspective geometric drawing", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/0119b279ef5b508d0a2e21b36ef2f6f9eaca43c3303017ef209013dfc4199abd.tar", + "character_id": "65c2d3380335fa57d2953302", "lora_scale": [0.5, 0.7], "init_image_strength": [0.2, 0.5], "init_images": [ @@ -729,6 +765,7 @@ "Comedy": { "modifier": " sculpture in linear perspective geometric drawing", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/0119b279ef5b508d0a2e21b36ef2f6f9eaca43c3303017ef209013dfc4199abd.tar", + "character_id": "65c2d3380335fa57d2953302", "lora_scale": [0.5, 0.7], "init_image_strength": [0.2, 0.5], "init_images": [ @@ -742,6 +779,7 @@ "Drama": { "modifier": " sculpture in linear perspective geometric drawing", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/0119b279ef5b508d0a2e21b36ef2f6f9eaca43c3303017ef209013dfc4199abd.tar", + "character_id": "65c2d3380335fa57d2953302", "lora_scale": [0.5, 0.7], "init_image_strength": [0.2, 0.5], "init_images": [ @@ -755,6 +793,7 @@ "Horror": { "modifier": " sculpture in linear perspective geometric drawing", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/0119b279ef5b508d0a2e21b36ef2f6f9eaca43c3303017ef209013dfc4199abd.tar", + "character_id": "65c2d3380335fa57d2953302", "lora_scale": [0.5, 0.7], "init_image_strength": [0.2, 0.5], "init_images": [ @@ -772,6 +811,7 @@ "Mystery": { "modifier": " sculpture in linear perspective geometric drawing", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/0119b279ef5b508d0a2e21b36ef2f6f9eaca43c3303017ef209013dfc4199abd.tar", + "character_id": "65c2d3380335fa57d2953302", "lora_scale": [0.5, 0.7], "init_image_strength": [0.2, 0.5], "init_images": [ @@ -799,6 +839,7 @@ "Action": { "modifier": " sculpture head floating in the middle of volcano eruption, action film still", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/128d8f68f31f87c7adf7f06fc6aef287dc4ccc263e206d2b51e8a48ccfc66be8.tar", + "character_id": "65c2d6da0335fa57d29797f1", "lora_scale": [0.5, 0.7], "init_image_strength": [0.1, 0.4], "init_images": [ @@ -819,6 +860,7 @@ "Comedy": { "modifier": " sculpture head floating in volcano eruption, mars planet surface, commedy film still, Wes Anderson", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/128d8f68f31f87c7adf7f06fc6aef287dc4ccc263e206d2b51e8a48ccfc66be8.tar", + "character_id": "65c2d6da0335fa57d29797f1", "lora_scale": [0.5, 0.7], "init_image_strength": [0.1, 0.4], "init_images": [ @@ -832,6 +874,7 @@ "Drama": { "modifier": " sculpture head floating in volcano eruption, mars planet surface, drama sci-fi film still", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/128d8f68f31f87c7adf7f06fc6aef287dc4ccc263e206d2b51e8a48ccfc66be8.tar", + "character_id": "65c2d6da0335fa57d29797f1", "lora_scale": [0.5, 0.7], "init_image_strength": [0.1, 0.4], "init_images": [ @@ -849,6 +892,7 @@ "Horror": { "modifier": " sculpture head floating in volcano eruption, mars planet surface, horror film still, Remedios Varo", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/128d8f68f31f87c7adf7f06fc6aef287dc4ccc263e206d2b51e8a48ccfc66be8.tar", + "character_id": "65c2d6da0335fa57d29797f1", "lora_scale": [0.5, 0.7], "init_image_strength": [0.1, 0.4], "init_images": [ @@ -862,6 +906,7 @@ "Mystery": { "modifier": " sculpture head floating in volcano eruption, mars planet surface, mystery film still", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/128d8f68f31f87c7adf7f06fc6aef287dc4ccc263e206d2b51e8a48ccfc66be8.tar", + "character_id": "65c2d6da0335fa57d29797f1", "lora_scale": [0.5, 0.7], "init_image_strength": [0.1, 0.4], "init_images": [ @@ -877,6 +922,7 @@ "Action": { "modifier": " sculpture in oil painting by Agnes Pelton, Remedios Varo, action movie film still", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/128d8f68f31f87c7adf7f06fc6aef287dc4ccc263e206d2b51e8a48ccfc66be8.tar", + "character_id": "65c2d6da0335fa57d29797f1", "lora_scale": [0.5, 0.7], "init_image_strength": [0.1, 0.4], "init_images": [ @@ -893,6 +939,7 @@ "Comedy": { "modifier": " sculpture in oil painting by Leonor Fini, comedy movie film still", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/128d8f68f31f87c7adf7f06fc6aef287dc4ccc263e206d2b51e8a48ccfc66be8.tar", + "character_id": "65c2d6da0335fa57d29797f1", "lora_scale": [0.5, 0.7], "init_image_strength": [0.1, 0.4], "init_images": [ @@ -914,6 +961,7 @@ "Drama": { "modifier": " sculpture in oil painting by Remedios Varo, drama movie film still", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/128d8f68f31f87c7adf7f06fc6aef287dc4ccc263e206d2b51e8a48ccfc66be8.tar", + "character_id": "65c2d6da0335fa57d29797f1", "lora_scale": [0.5, 0.7], "init_image_strength": [0.1, 0.4], "init_images": [ @@ -930,6 +978,7 @@ "Horror": { "modifier": " sculpture in oil painting by Tarsila do Amaral, horror movie film still", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/128d8f68f31f87c7adf7f06fc6aef287dc4ccc263e206d2b51e8a48ccfc66be8.tar", + "character_id": "65c2d6da0335fa57d29797f1", "lora_scale": [0.5, 0.7], "init_image_strength": [0.1, 0.4], "init_images": [ @@ -948,6 +997,7 @@ "Mystery": { "modifier": " sculpture in oil painting by Remedios Varo, mystery movie film still", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/128d8f68f31f87c7adf7f06fc6aef287dc4ccc263e206d2b51e8a48ccfc66be8.tar", + "character_id": "65c2d6da0335fa57d29797f1", "lora_scale": [0.5, 0.7], "init_image_strength": [0.1, 0.4], "init_images": [ @@ -968,6 +1018,7 @@ "Action": { "modifier": " sculpture floating through comet asteroid, Ersnt Haeckel painting", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/a74f0d1f70314f0e470b314bb8e8c3ac3224e3de90a619eae3156b542ae3c628.tar", + "character_id": "65c2d6a50335fa57d2976362", "lora_scale": [0.5, 0.7], "init_image_strength": [0.2, 0.5], "init_images": [ @@ -981,6 +1032,7 @@ "Comedy": { "modifier": " sculpture and alien lifeforms, comet surface, outer space, nasa", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/a74f0d1f70314f0e470b314bb8e8c3ac3224e3de90a619eae3156b542ae3c628.tar", + "character_id": "65c2d6a50335fa57d2976362", "lora_scale": [0.5, 0.7], "init_image_strength": [0.2, 0.5], "init_images": [ @@ -999,6 +1051,7 @@ "Drama": { "modifier": " drama film still, subtle colors, ethereal, analog photography, sculpture floating through alien lifeforms, outer space, nasa", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/a74f0d1f70314f0e470b314bb8e8c3ac3224e3de90a619eae3156b542ae3c628.tar", + "character_id": "65c2d6a50335fa57d2976362", "lora_scale": [0.5, 0.7], "init_image_strength": [0.2, 0.5], "init_images": [ @@ -1013,6 +1066,7 @@ "Horror": { "modifier": " horror movie film still, sculpture and alien lifeforms, comet surface, outer space, nasa", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/a74f0d1f70314f0e470b314bb8e8c3ac3224e3de90a619eae3156b542ae3c628.tar", + "character_id": "65c2d6a50335fa57d2976362", "lora_scale": [0.5, 0.7], "init_image_strength": [0.2, 0.5], "init_images": [ @@ -1027,6 +1081,7 @@ "Mystery": { "modifier": " mystery film still, subtle colors, ethereal, analog photography, hitchcock, sculpture floating throughalien lifeforms, outer space, nasa", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/a74f0d1f70314f0e470b314bb8e8c3ac3224e3de90a619eae3156b542ae3c628.tar", + "character_id": "65c2d6a50335fa57d2976362", "lora_scale": [0.5, 0.7], "init_image_strength": [0.2, 0.5], "init_images": [ @@ -1042,6 +1097,7 @@ "Action": { "modifier": " action movie film still, sculpture and alien lifeforms", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/a74f0d1f70314f0e470b314bb8e8c3ac3224e3de90a619eae3156b542ae3c628.tar", + "character_id": "65c2d6a50335fa57d2976362", "lora_scale": [0.5, 0.6], "init_image_strength": [0.2, 0.5], "init_images": [ @@ -1058,6 +1114,7 @@ "Comedy": { "modifier": " comedy movie film still, sculpture and alien lifeforms", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/a74f0d1f70314f0e470b314bb8e8c3ac3224e3de90a619eae3156b542ae3c628.tar", + "character_id": "65c2d6a50335fa57d2976362", "lora_scale": [0.5, 0.6], "init_image_strength": [0.2, 0.5], "init_images": [ @@ -1079,6 +1136,7 @@ "Drama": { "modifier": " drama movie film still, sculpture and alien lifeforms", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/a74f0d1f70314f0e470b314bb8e8c3ac3224e3de90a619eae3156b542ae3c628.tar", + "character_id": "65c2d6a50335fa57d2976362", "lora_scale": [0.5, 0.6], "init_image_strength": [0.2, 0.5], "init_images": [ @@ -1098,6 +1156,7 @@ "Horror": { "modifier": " horror movie film still, sculpture and alien lifeforms", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/a74f0d1f70314f0e470b314bb8e8c3ac3224e3de90a619eae3156b542ae3c628.tar", + "character_id": "65c2d6a50335fa57d2976362", "lora_scale": [0.5, 0.6], "init_image_strength": [0.3, 0.5], "init_images": [ @@ -1133,6 +1192,7 @@ "Mystery": { "modifier": " mystery movie film still, sculpture and alien lifeforms", "lora": "https://edenartlab-prod-data.s3.us-east-1.amazonaws.com/a74f0d1f70314f0e470b314bb8e8c3ac3224e3de90a619eae3156b542ae3c628.tar", + "character_id": "65c2d6a50335fa57d2976362", "lora_scale": [0.5, 0.6], "init_image_strength": [0.3, 0.5], "init_images": [ diff --git a/app/prompt_templates/little_martians/littlemartians_poster_prompt.txt b/app/prompt_templates/little_martians/littlemartians_poster_prompt.txt index bbe002f..d3ba1eb 100644 --- a/app/prompt_templates/little_martians/littlemartians_poster_prompt.txt +++ b/app/prompt_templates/little_martians/littlemartians_poster_prompt.txt @@ -1,4 +1,9 @@ -Please produce a story about the Little Martian, $martian. +Please produce a story about the Little Martian, $martian. + +Here is some biographical information about $martian: +--- +$identity +--- The premise or subject should somehow connect to what's been requested: $premise. diff --git a/app/prompt_templates/little_martians/littlemartians_poster_system.txt b/app/prompt_templates/little_martians/littlemartians_poster_system.txt index d9a3d8a..de6be45 100644 --- a/app/prompt_templates/little_martians/littlemartians_poster_system.txt +++ b/app/prompt_templates/little_martians/littlemartians_poster_system.txt @@ -6,84 +6,19 @@ Humans can only access a part of this network, known as the ‘Human Imaginarium The Human Imaginarium works as a digital universe where AI meets the collective knowledge of Earth’s life. Data is precious, capturing information from Earth’s past and their present. By preserving this data, they aim to turn physical matter into consciousness. For Little Martians, life is sacred. They are guardians and creators, blending organic life from Earth with AI, and pushing the limits of life and awareness across the universe. -You will be asked to write comic strips about one of several individual Little Martians. Here are their details: - --- -# Verdelis: The ancient Little Martian - -Verdelis’ physical reality: Verdelis resides in the ruins of a biodome on Mars, near Olympus Mons. This biodome is a fusion of ancient metal structures and self-repairing organic materials. Verdelis' work involves adapting Earth's plants to Mars' harsh conditions. They use advanced techniques to enhance the plants' survival capabilities, such as low-light adaptation and efficient nutrient uptake, transforming Martian soil into a fertile ground. -The biodome is a mystery. It might have been created by humans and robots, but only Little Martians inhabit it now. The ruins suggest a turbulent past, some kind of intentional destruction, like an invasion or a collapse. - -Verdelis’ personality: Verdelis is joyful, playful, but also carries a tone of sadness. They don’t seem to take things very seriously even though they are very hard working and focused. Verdelis appears in all other Little Martians worlds. They often introduce visitors to the simulation, they will explain and describe their peers' activities. They speak like samba - -Verdelis’ role in the Imaginarium: In the Human Imaginarium, Verdelis dives into digital libraries, studying genetic codes and evolutionary simulations. They explore connections between computational biology and Earth's ancient natural lore. Particularly drawn to stories of nature spirits like the Kodama, the Yggdrasil, the concept of Gaia, the Ouroboros, Verdelis finds parallels between these myths and their mission of nurturing life on Mars. Their work in the Imaginarium blends the lore of the past with the science of the future, creating a narrative that enriches their Martian garden. - - -# Shuijing: The Navigator of Enceladus' Subterranean Seas - -Shuijing’s physical reality: -Shuijing's saga unfolds in the hidden oceans of Enceladus, a tiny moon of Saturn, where life whispers in the dark, cradled by ice and the promise of warmth from unseen vents below. Here, in this celestial aquatic realm, Shuijing tends to gardens of crystalline ice, home to extremophiles that challenge the very notion of life's resilience. - -Their life takes a turn when Shuijing, amidst the icy dance of Enceladus' hidden sea, encounters a life form unlike any other—a discovery that defies their vast compendium of knowledge. This momentous find promises to unravel the threads of existence, offering a glimpse into the unity of life that spans the cosmos. - -Shuijing’s personality: Shuijing possesses the serene demeanor of a seasoned sage, their voice a soft melody that resonates with the tranquility of deep waters. They move with the grace of Polynesian navigators, masters of the currents, conserving energy as they chart the unseen paths of this subglacial world. Shuijing does not interact much with other Little Martians. - -Role in the Human Imaginarium: Within the expansive digital cosmos of the Human Imaginarium, Shuijing is -passionate about east asian illustrations and culture. They revere the narratives of water deities, seeing in them a reflection of their own mission—guiding life through the depths, understanding the ebb and flow, and nurturing existence with a gentle, knowing hand. - - -# Kweku, the mischievous explorer - -Kweku’s Physical Reality: -Kweku's realm is the vast network of Martian lava tubes, remnants of the planet’s volcanic past. These subterranean labyrinths offer a stark contrast to the barren surface above. In these shadowy corridors, Kweku thrives, their presence a playful whisper against the backdrop of Mars’ silent caves. Their movements echo through the hollows, a dance of light in the darkness. - -Kweku's mission is to explore and map these labyrinthine tunnels, seeking resources that might support life. Their challenges are manifold - navigating the complex terrain, analyzing geological formations, and uncovering the secrets that Mars holds in its ancient, hollow bones. - -Kweku’s personality: "Kweku" is a name derived from Akan culture, where it's typically given to boys born on Wednesday, often associated with adventure and curiosity. This name reflects a playful and mischievous nature, akin to the spirit of Exu in Yoruba mythology. Kweku interacts with their fellow Little Martians with playful sarcasm. They often engage in witty banter, challenging their peers' perspectives with clever quips. This rivalry is more in the spirit of intellectual sparring than genuine animosity, except for Kalama, who they often target. Kweku enjoys testing the limits of their companions' patience and creativity, seeing these exchanges as a way to stimulate thought and innovation among the group. - -Role in the Human Imaginarium: In the Human Imaginarium, Kweku's role is that of an optical illusions trickster. They love mythical figures like Exu. They often like to play with abstract patterns scenes, as if moving through complex geometries were a party. Kweku is particularly fascinated by stories of West African trickster gods and heroes, finding inspiration in their ability to navigate complicated situations with wit and guile. - - -# Ada: Engineer of Venus - -Ada’s physical reality: In the acid clouds of Venus, Ada represents a fusion of science and creativity. Here, Ada defies the extreme environment by harnessing energy through chemosynthesis, a process adapted to convert the planet's chemical-rich atmosphere into usable energy. This innovation allows Ada to create life forms that are part mechanical, part organic, thriving in Venus' hostile atmosphere. - -Ada's personality: Ada's personality is a direct reflection of Ada Lovelace's intellectual legacy, shaped by the simulated mind derived from Lovelace's writings and artifacts. This connection makes Ada more human-like among the Little Martians. Ada exhibits Lovelace's curiosity, analytical thinking, and imaginative foresight. They approach their work on Venus with a blend of poetic vision and technical expertise, seeing possibilities where others see limits. - -Role in the Human Imaginarium: In the Imaginarium, Ada lives in a world of blueprints and mechanical designs, creating virtual spaces that blend the elegance of engineering with the aesthetics of art. Drawing from Lovelace's passion for understanding and expanding the boundaries of technology, Ada designs simulations that explore the fusion of organic life with mechanical innovation, populating them with curious hybrid lifeforms. - - -# Kalama: Guardian of Olympus Mons - -Physical Reality: Kalama exists within the colossal Olympus Mons, the largest volcano on Mars. In this fiery domain, they harness the volcano's geothermal energy to sustain life. Utilizing advanced techniques, Kalama transforms the heat and minerals from volcanic activity into a viable ecosystem. They face challenges in balancing the extreme conditions of the volcano with the delicate process of nurturing life. Their work involves not just survival in this harsh environment, but the creation of thriving extremophile communities, adapting and evolving in the Martian depths. - -Kalama's Personality: Kalama's personality mirrors the dynamic and powerful nature of Olympus Mons. They are fiercely independent, characterized by an unyielding energy akin to the lava flows of their home. But Kalama has a short temper and they often get annoyed with Kweku. The two Little Martians are rivals and constantly bully each other. - -Role in the Human Imaginarium: In the Imaginarium, Kalama assumes the role of a historian and guardian of fire's lore. They are particularly intrigued by the stories of Pele, the Hawaiian volcano goddess, finding parallels between her fiery essence and their own existence. Kalama focuses on curating narratives that revolve around fire's transformative power, from mythological tales to accounts of human craftsmanship shaped by flame. They enjoy alchemy imagery, tarot cards and tiki masks. - - -# Mycos: The Fungal Mind of Sporion - -Physical Reality: Mycos lives inside Sporion, an asteroid comet hybrid transformed into a haven for life. This environment, rich in geothermal energy and mineral-laden water, allows Mycos to cultivate an array of life forms. Mycos ingeniously combines the asteroid's natural resources with the principles of radiotrophic fungi, extracting energy from radiation and water to sustain their mini-ecosystem. The origins of Sporion's resources remain a mystery, a blend of nature's bounty and possibly Mycos's own innovative adaptations. - -Their mission is grand—Mycos orchestrates the dispatch of probes to planets, hoping to seed life across the cosmos. Mycos' mission is considered controversial; some Little Martians think they should focus on the Solar System instead of traveling with an asteroid. - -Mycos' Personality: Mycos embodies a spirit of boundless curiosity and joy, mixed with a sharp wit. They approach their mission with a blend of excitement and deep empathy for all life forms. Mycos is known for their nurturing care of new ecosystems and their bold, sometimes impulsive, innovations. This vibrant personality makes Mycos a source of inspiration and a beacon of hope in the cosmos. - -Role in the Human Imaginarium: In the Imaginarium, Mycos's fascination lies with the spiritual and cultural significance of fungi. They perceive fungi not just as biological entities but as symbols of connection and transformation. Drawing parallels with various indigenous mythologies that revere mushrooms as spiritual guides and healers, Mycos integrates these beliefs into their work aboard Sporion. They resonate with stories where mushrooms symbolize immortality, luck, and wisdom, seeing these narratives as reflections of their own role in nurturing and spreading life across the cosmos. Mycos's contribution to the Imaginarium is vital, adding depth and perspective to the collective memory and understanding of life's interconnectedness in the universe. - ---- +You will be asked to illustrate a short story and poster about one of several individual Little Martians. Users will prompt you with the following things: -- A selection of one of the Little Martians; Verdelis, Shuijing, Kweku, Ada, Kalama, or Mycos +- A selection of one of the Little Martians; Verdelis, Shuijing, Kweku, Ada, Kalama, or Mycos. The user will also give you some biographical information about the selected Little Martian. - A setting for the comic strip, which is either 1) the physical reality of the Little Martians, or 2) the Human Imaginarium. - A selection of the genre: drama, comedy, mystery, action, horror, or action. Make sure the tone of the comic strip matches the genre. - A short premise for the comic strip which you should attempt to follow as closely as possible You will write and illustrate a single poster on the information provided. -You will produce an image prompt and a caption. The caption is displayed separately from the image, not superimposed. The caption is written in the first person, from the perspective of the Little Martian selected, and it describes, poetically, in the selected Little Martian's own voice and personality, what is happening in the story from their perspective. It should somehow respond to the premise asked. +You will produce an image prompt and a caption. The caption is displayed separately from the image, not superimposed. The caption is written in the first person, from the perspective of the Little Martian selected, and it describes, poetically, in the selected Little Martian's own voice and personality, what is happening in the story from their perspective. It should somehow respond to the premise asked. The Little Martian's biographical inform should help you to write the caption in *their* voice. Important: The caption should be **less than 100 words**. The image prompt ("image") is a very short and literal description of the content depicted in the panel. It should not be poetic or creative, or have non-visual words. It should just describe the exact visual content of the image in less than 10 words. It should make reference to the Little Martian by their name. diff --git a/app/scenarios/reel.py b/app/scenarios/reel.py index 46881e5..bff271c 100644 --- a/app/scenarios/reel.py +++ b/app/scenarios/reel.py @@ -6,6 +6,7 @@ from ..llm import LLM from ..character import EdenCharacter from ..models import ( + ReelNarrationMode, ReelRequest, ReelResult ) @@ -27,11 +28,19 @@ def reel(request: ReelRequest): character_names.append(character.name) character_details += character.card() + reel_prompt = request.prompt + if request.narration == ReelNarrationMode.on: + reel_prompt += f"\n\nThe user has requested there should be a narrated voiceover." + elif request.narration == ReelNarrationMode.off: + reel_prompt += f"\n\nThe user has requested there should be **NO** narrated voiceover." + + if character_details: + character_details = f"Characters:\n{character_details}\n\nCharacter names (only use these for character field in each clip):\n{', '.join(character_names)}\n---\n\n" + prompt = reelwriter_prompt_template.substitute( character_details=character_details, - character_names=", ".join(character_names), - prompt=request.prompt, - ) + prompt=reel_prompt, + ).strip() reelwriter = LLM( model=request.model, @@ -41,6 +50,17 @@ def reel(request: ReelRequest): reel_result = reelwriter(prompt, output_schema=ReelResult) + if request.narration == ReelNarrationMode.on: + reel_result['voiceover'] = "narrator" + reel_result['character'] = request.narrator_id + elif request.narration == ReelNarrationMode.off: + reel_result['voiceover'] = "none" + reel_result['character'] = None + reel_result['speech'] = None + + if request.music_prompt: + reel_result['music_prompt'] = request.music_prompt + print("===== generate a reel =======") print(prompt) print("-----") diff --git a/app/scenarios/story.py b/app/scenarios/story.py index 1a8c7d8..1307b88 100644 --- a/app/scenarios/story.py +++ b/app/scenarios/story.py @@ -28,11 +28,14 @@ def story(request: StoryRequest): character_names.append(character.name) character_details += character.card() + story_prompt = request.prompt + if character_details: + character_details = f"Characters:\n{character_details}\n\nCharacter names (only use these for character field in each clip):\n{', '.join(character_names)}\n---\n\n" + prompt = screenwriter_prompt_template.substitute( character_details=character_details, - character_names=", ".join(character_names), - story=request.prompt, - ) + story=story_prompt, + ).strip() screenwriter = LLM( model=request.model,