File size: 3,923 Bytes
106773b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import gradio as gr
import json
import random
from openai import OpenAI
import os

# Configuração da API do Manus/OpenAI (será passada como secret no Space)
client = OpenAI()

def load_examples():
    examples = []
    try:
        with open("dataset.jsonl", "r", encoding="utf-8") as f:
            for line in f:
                examples.append(json.loads(line))
    except Exception as e:
        print(f"Erro ao carregar dataset: {e}")
    return examples

dataset_examples = load_examples()

def reality_engine(instruction, category, premise_strength, physics_mode, output_style):
    prompt = f"""
Tu és o Reality Engine. O teu objetivo é simular realidades alternativas e cenários especulativos.

PREMISSA: {instruction}
CATEGORIA: {category}
FORÇA DA PREMISSA: {premise_strength}
MODO DE FÍSICA: {physics_mode}
ESTILO DE SAÍDA: {output_style}

REGRAS DE RACIOCÍNIO: "aceitar premissa, definir regras, calcular consequências, evitar contradições"

Por favor, gera uma simulação detalhada baseada nestes parâmetros.
Distingue claramente entre realidade factual e esta especulação.
Mantém a coerência interna, mesmo que a premissa seja impossível.
"""

    try:
        response = client.chat.completions.create(
            model="gpt-4o",
            messages=[
                {"role": "system", "content": "És o Reality Engine, um simulador de realidades alternativas de alta fidelidade."},
                {"role": "user", "content": prompt}
            ],
            temperature=0.7
        )
        return response.choices[0].message.content
    except Exception as e:
        return f"Erro na simulação: {str(e)}"

def get_random_example():
    if not dataset_examples:
        return "E se a Lua desaparecesse?", "astronomia", "teorica", "realista", "analise_de_consequencias"
    ex = random.choice(dataset_examples)
    return ex['instruction'], ex['category'], ex['premise_strength'], ex['physics_mode'], ex['output_style']

with gr.Blocks(theme=gr.themes.Soft()) as demo:
    gr.Markdown("# 🌌 Reality Engine Bot")
    gr.Markdown("Simulador de realidades alternativas, mundos hipotéticos e cenários especulativos.")
    
    with gr.Row():
        with gr.Column():
            instruction = gr.Textbox(label="Instrução (E se...)", placeholder="Ex: E se a biblioteca de Alexandria nunca tivesse ardido?")
            category = gr.Dropdown(
                choices=["historia_alternativa", "ficcao_cientifica", "fantasia", "tecnologia", "biologia", "astronomia", "sociedade", "filosofia", "geopolitica", "evolucao", "transhumanismo"],
                label="Categoria"
            )
            premise_strength = gr.Dropdown(
                choices=["historica", "teorica", "especulativa", "alta_especulacao", "ficcao"],
                label="Força da Premissa"
            )
            physics_mode = gr.Dropdown(
                choices=["realista", "cientifico", "nova_fisica", "fantasia_regrada"],
                label="Modo de Física"
            )
            output_style = gr.Dropdown(
                choices=["analise_de_consequencias", "worldbuilding", "simulacao_temporal", "impacto_social", "primeiro_contacto", "evolucao_civilizacional"],
                label="Estilo de Saída"
            )
            
            with gr.Row():
                btn_random = gr.Button("🎲 Exemplo Aleatório")
                btn_run = gr.Button("🚀 Iniciar Simulação", variant="primary")
                
        with gr.Column():
            output = gr.Markdown(label="Resultado da Simulação")

    btn_random.click(
        fn=get_random_example,
        outputs=[instruction, category, premise_strength, physics_mode, output_style]
    )
    
    btn_run.click(
        fn=reality_engine,
        inputs=[instruction, category, premise_strength, physics_mode, output_style],
        outputs=output
    )

if __name__ == "__main__":
    demo.launch()