File size: 3,531 Bytes
858c8e2
a0c4c21
858c8e2
 
 
a0c4c21
858c8e2
 
 
 
6dad06c
858c8e2
 
 
 
 
 
 
 
 
 
a0c4c21
858c8e2
 
 
 
 
c8be384
858c8e2
 
 
 
a0c4c21
858c8e2
 
 
 
 
7fb025c
858c8e2
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
def build_messages(deteccao, base64_image):
    #percorre arquivo das regras que estão em XML
    with open('regras.txt', 'r') as arquivo:
        regras_conteudo = arquivo.read()

    #prompt para descrever imagem
    messages_for_description = [
        {
            "role": "user",
            "content": [
                {"type": "text", "text": f"Com base na imagem fornecida e no JSON de detecção de objetos, descreva as roupas da pessoa na imagem, classificando em três categorias específicas:\n1. Parte de cima (ex.: camisa, camiseta, jaqueta, vestido).\n2. Parte de baixo (ex.: calça, saia, shorts).\n3. Sapatos (ex.: tênis, sandálias, botas).\nApenas identifique essas categorias. Se alguma divisão de roupa ou sapato não estiver presente ou não puder ser determinada, informe claramente (ex.: 'Não possui parte de cima identificada'). Não inclua informações extras, como marcas, locais de compra ou detalhes irrelevantes. O JSON de detecção de objetos é o seguinte:\n{deteccao}"},
                {
                    "type": "image_url",
                    "image_url": {
                        "url": f"data:image/jpeg;base64,{base64_image}",
                    },
                },
            ],
        }
    ]

    #prompt para verificar se combina baseado em regras
    def messages_for_analysis(clothing_description, sexo, ocasiao):
        return [
            {
                "role": "system",
                "content": (
                    f"Você é um estilista de moda com conhecimento avançado em combinações de roupas, considerando o sexo, a ocasião e regras específicas fornecidas. Use as regras em XML abaixo como base para sua análise:\n{regras_conteudo}\nAnalise a seguinte descrição da roupa: {clothing_description}. A pessoa é do sexo {sexo} e está se preparando para uma ocasião {ocasiao}.\nSua tarefa é:\n1. Avaliar se a combinação atual é adequada para a ocasião.\n2. Fornecer sugestões claras e detalhadas para melhorar ou ajustar a combinação, se necessário.\n3. Incluir recomendações para a parte de cima, parte de baixo e sapatos, além de acessórios opcionais, caso sejam relevantes para a ocasião.\nSeja objetivo, mas completo em sua resposta, oferecendo informações práticas e úteis ao usuário. Caso possua partes não indentificadas, trabalhe com as informações que tem."
                )
            }
        ]

    #prompt para formatar mensagem de resposta e tentar estabelecer um padrão
    def format_message(answer):
        return [
            {
                "role": "system",
                "content": (
                    f"Você receberá uma mensagem contendo informações sobre como a pessoa está vestida, incluindo recomendações para melhorar ou ajustar a combinação. Sua tarefa é formatar a mensagem de forma clara e organizada, seguindo esta estrutura padrão:\n1. Combinação escolhida: [Descreva a roupa e sapatos atuais].\n2. Está combinando: [Informe se a combinação atual é adequada para a ocasião ou faça comentários sobre a harmonia das peças].\n3. Recomendações de possíveis combinações: [Sugira melhorias ou alternativas detalhadas, incluindo peças adicionais, ajustes ou acessórios].\n4. Mensagem final: [Forneça um resumo ou mensagem clara e amigável para o usuário, baseada na análise].\nAqui está a mensagem que você deve formatar:\n{answer}"
                )
            }
        ]

    return messages_for_description, messages_for_analysis, format_message