Spaces:
Running
Running
| from typing import List, Dict | |
| import textwrap | |
| def build_prompt_core( | |
| product_name: str, | |
| images: List[str], | |
| colors: List[str], | |
| concept: str, | |
| ) -> str: | |
| """ | |
| Standalone version of the prompt builder (no Gradio dependencies). | |
| You can import this in other scripts to reuse the same logic. | |
| Args: | |
| product_name: Nome do produto. | |
| images: Lista de URLs (ou caminhos) de imagens de referência. | |
| colors: Lista de cores em texto/HEX. | |
| concept: Um dos conceitos: 'FOTO PRINCIPAL', 'FOTO DESCRIÇÃO', | |
| 'FOTO AVALIAÇÃO', 'FOTO DESCRIÇÃO 2'. | |
| Returns: | |
| Prompt de texto pronto para uso em modelos de geração de imagem. | |
| """ | |
| product_name = (product_name or "").strip() | |
| concept = concept or "" | |
| images = images or [] | |
| colors = colors or [] | |
| colors_block = ", ".join(colors) if colors else "não especificadas" | |
| validation_block = ( | |
| "Imagem de referência:\n" + "\n".join(f"- {u}" for u in images) | |
| if images | |
| else "Nenhuma imagem de referência fornecida." | |
| ) | |
| base_header = f"""\ | |
| PROMPT MASTER – PRODUCT PHOTOGRAPHY AI | |
| Produto: {product_name} | |
| Cores principais: {colors_block} | |
| Conceito selecionado: {concept} | |
| {validation_block} | |
| """ | |
| concept_blocks: Dict[str, str] = { | |
| "FOTO PRINCIPAL": """ | |
| Foto principal de catálogo em formato 1:1, produto centralizado sobre fundo claro, | |
| iluminação de estúdio suave, foco total no produto, sem textos ou elementos gráficos. | |
| """, | |
| "FOTO DESCRIÇÃO": """ | |
| Close-up macro da textura do tecido, evidenciando trama, costuras e acabamento, | |
| com fundo neutro desfocado e iluminação lateral suave. | |
| """, | |
| "FOTO AVALIAÇÃO": """ | |
| Cena orgânica estilo review real, com luz natural, ambiente cotidiano e aparência | |
| de foto feita no celular, mas com boa nitidez e foco no produto. | |
| """, | |
| "FOTO DESCRIÇÃO 2": """ | |
| Foto lifestyle com modelo usando o produto em ambiente urbano ou estúdio minimalista, | |
| enquadramento que valoriza o caimento, modelagem e proporções, estilo editorial de moda. | |
| """, | |
| } | |
| concept_block = concept_blocks.get( | |
| concept, | |
| "Foto de produto hiper‑realista em cenário adequado para e‑commerce.", | |
| ) | |
| return (base_header + "\n" + textwrap.dedent(concept_block).strip()).strip() |