You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
2.9 KiB
101 lines
2.9 KiB
5 months ago
|
import os
|
||
|
import random
|
||
|
|
||
|
from dotenv import load_dotenv
|
||
|
|
||
|
from swarms.models import OpenAIChat
|
||
|
from swarms.models.stable_diffusion import StableDiffusion
|
||
|
from swarms.structs import Agent
|
||
|
|
||
|
load_dotenv()
|
||
|
openai_api_key = os.getenv("OPENAI_API_KEY")
|
||
|
stability_api_key = os.getenv("STABILITY_API_KEY")
|
||
|
|
||
|
# Initialize the language model and image generation model
|
||
|
llm = OpenAIChat(
|
||
|
openai_api_key=openai_api_key, temperature=0.5, max_tokens=3000
|
||
|
)
|
||
|
sd_api = StableDiffusion(api_key=stability_api_key)
|
||
|
|
||
|
|
||
|
# Creative Concept Generator for Product Ads
|
||
|
class ProductAdConceptGenerator:
|
||
|
def __init__(self, product_name):
|
||
|
self.product_name = product_name
|
||
|
self.themes = [
|
||
|
"futuristic",
|
||
|
"rustic",
|
||
|
"luxurious",
|
||
|
"minimalistic",
|
||
|
"vibrant",
|
||
|
"elegant",
|
||
|
"retro",
|
||
|
"urban",
|
||
|
"ethereal",
|
||
|
"surreal",
|
||
|
"artistic",
|
||
|
"tech-savvy",
|
||
|
"vintage",
|
||
|
"natural",
|
||
|
"sophisticated",
|
||
|
"playful",
|
||
|
"dynamic",
|
||
|
"serene",
|
||
|
"lasers,lightning",
|
||
|
]
|
||
|
self.contexts = [
|
||
|
"in an everyday setting",
|
||
|
"in a rave setting",
|
||
|
"in an abstract environment",
|
||
|
"in an adventurous context",
|
||
|
"surrounded by nature",
|
||
|
"in a high-tech setting",
|
||
|
"in a historical context",
|
||
|
"in a busy urban scene",
|
||
|
"in a tranquil and peaceful setting",
|
||
|
"against a backdrop of city lights",
|
||
|
"in a surreal dreamscape",
|
||
|
"in a festive atmosphere",
|
||
|
"in a luxurious setting",
|
||
|
"in a playful and colorful background",
|
||
|
"in an ice cave setting",
|
||
|
"in a serene and calm landscape",
|
||
|
]
|
||
|
self.contexts = ["high realism product ad (extremely creative)"]
|
||
|
|
||
|
def generate_concept(self):
|
||
|
theme = random.choice(self.themes)
|
||
|
context = random.choice(self.contexts)
|
||
|
return f"{theme} inside a {style} {self.product_name}, {context}"
|
||
|
|
||
|
|
||
|
# User input
|
||
|
product_name = input(
|
||
|
"Enter a product name for ad creation (e.g., 'PS5', 'AirPods',"
|
||
|
" 'Kirkland Vodka'): "
|
||
|
)
|
||
|
|
||
|
# Generate creative concept
|
||
|
concept_generator = ProductAdConceptGenerator(product_name)
|
||
|
creative_concept = concept_generator.generate_concept()
|
||
|
|
||
|
# Generate product image based on the creative concept
|
||
|
image_paths = sd_api.run(creative_concept)
|
||
|
|
||
|
# Generate ad copy
|
||
|
ad_copy_agent = Agent(llm=llm, max_loops=1)
|
||
|
ad_copy_prompt = (
|
||
|
f"Write a compelling {social_media_platform} ad copy for a"
|
||
|
f" product photo showing {product_name} {creative_concept}."
|
||
|
)
|
||
|
ad_copy = ad_copy_agent.run(task=ad_copy_prompt)
|
||
|
|
||
|
# Output the results
|
||
|
print("Creative Concept:", concept_result)
|
||
|
print("Design Ideas:", design_result)
|
||
|
print("Ad Copy:", copywriting_result)
|
||
|
print(
|
||
|
"Image Path:",
|
||
|
image_paths[0] if image_paths else "No image generated",
|
||
|
)
|