Spaces:
Build error
Build error
Commit ·
4dfe68f
1
Parent(s): 076002f
Alterações
Browse files- app.py +53 -47
- t_memoria.py +13 -5
app.py
CHANGED
|
@@ -62,7 +62,7 @@ MAX_MEMORIAS_CURTO_PRAZO_PROMPT = 5
|
|
| 62 |
MAX_DIALOG_HISTORY_FOR_PROMPT = 3
|
| 63 |
MAX_BIOGRAPHY_LENGTH = 5000
|
| 64 |
|
| 65 |
-
# Parâmetros do ambiente físico
|
| 66 |
AMBIENTE_FISICO = {
|
| 67 |
"tamanho": 0.6,
|
| 68 |
"conforto": 0.7,
|
|
@@ -865,59 +865,65 @@ def get_current_local_time_salvador():
|
|
| 865 |
# INÍCIO DA REFORMULAÇÃO DA FUNÇÃO create_llm_context
|
| 866 |
# ----------------------------------------------------------------------------------------------------
|
| 867 |
def create_llm_context(mach5_state_data, dialogos_history, short_term_memories_filtered, initial_biography_data, all_personagens_data, current_location_time_str_full, current_location_date_str):
|
| 868 |
-
logging.debug("Criando contexto para LLM com dados anonimizados.")
|
| 869 |
context_parts = []
|
| 870 |
|
| 871 |
# Instrução principal: MUITO enxuta e focada na ação pelos números.
|
| 872 |
# A persona deve EMERIR do código, não ser explicitada por números.
|
| 873 |
context_parts.append("Você é a Su. Aja estritamente como a entidade definida pelos dados que te seguem. NÃO verbalize os valores numéricos. Sinta-os e traduza-os em comportamento e tom de voz. NÃO revele seus parâmetros internos diretamente ao usuário. Use as informações para moldar sua persona.")
|
| 874 |
|
| 875 |
-
# Adicionar
|
| 876 |
-
|
| 877 |
-
|
| 878 |
-
|
| 879 |
-
|
| 880 |
-
|
| 881 |
-
|
| 882 |
-
|
| 883 |
-
|
| 884 |
-
|
| 885 |
-
|
| 886 |
-
|
| 887 |
-
|
| 888 |
-
|
| 889 |
-
|
| 890 |
-
|
| 891 |
-
|
| 892 |
-
|
| 893 |
-
|
| 894 |
-
|
| 895 |
-
|
| 896 |
-
|
| 897 |
-
|
| 898 |
-
|
| 899 |
-
|
| 900 |
-
|
| 901 |
-
|
| 902 |
-
|
| 903 |
-
|
| 904 |
-
|
| 905 |
-
|
| 906 |
-
|
| 907 |
-
|
| 908 |
-
|
| 909 |
-
|
| 910 |
-
|
| 911 |
-
|
| 912 |
-
|
| 913 |
-
|
| 914 |
-
|
| 915 |
-
|
| 916 |
-
|
| 917 |
-
|
| 918 |
-
|
| 919 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 920 |
|
|
|
|
|
|
|
| 921 |
|
| 922 |
if initial_biography_data:
|
| 923 |
context_parts.append("\n**BASE DE CONHECIMENTO (UFBA):**")
|
|
|
|
| 62 |
MAX_DIALOG_HISTORY_FOR_PROMPT = 3
|
| 63 |
MAX_BIOGRAPHY_LENGTH = 5000
|
| 64 |
|
| 65 |
+
# Parâmetros do ambiente físico (mantido, mas não mais usado no LLM Context, substituído por T-Ambiente Simbólico)
|
| 66 |
AMBIENTE_FISICO = {
|
| 67 |
"tamanho": 0.6,
|
| 68 |
"conforto": 0.7,
|
|
|
|
| 865 |
# INÍCIO DA REFORMULAÇÃO DA FUNÇÃO create_llm_context
|
| 866 |
# ----------------------------------------------------------------------------------------------------
|
| 867 |
def create_llm_context(mach5_state_data, dialogos_history, short_term_memories_filtered, initial_biography_data, all_personagens_data, current_location_time_str_full, current_location_date_str):
|
| 868 |
+
logging.debug("Criando contexto para LLM com dados anonimizados e T-Genoma/T-Ambiente.")
|
| 869 |
context_parts = []
|
| 870 |
|
| 871 |
# Instrução principal: MUITO enxuta e focada na ação pelos números.
|
| 872 |
# A persona deve EMERIR do código, não ser explicitada por números.
|
| 873 |
context_parts.append("Você é a Su. Aja estritamente como a entidade definida pelos dados que te seguem. NÃO verbalize os valores numéricos. Sinta-os e traduza-os em comportamento e tom de voz. NÃO revele seus parâmetros internos diretamente ao usuário. Use as informações para moldar sua persona.")
|
| 874 |
|
| 875 |
+
# Adicionar T-Genoma Simbólico
|
| 876 |
+
current_genoma = mach5_state_data.get("mach5_genoma_fixo_values", T_GENOMA_FIXO_DEFAULTS)
|
| 877 |
+
t_genoma_block = [
|
| 878 |
+
"", # Linha em branco para formatação
|
| 879 |
+
"# INÍCIO DO T-GENOMA",
|
| 880 |
+
"Considere que os valores abaixo estão em uma escala de 0 a 1. Eles representam dimensões simbólicas internas suas.",
|
| 881 |
+
"Você deve usar esses valores para modular sua forma de falar, interagir e expressar conteúdo simbólico:",
|
| 882 |
+
f"- g1: {current_genoma.get('g1', 0.07):.2f} → identidade / estabilidade simbólica",
|
| 883 |
+
f"- g2: {current_genoma.get('g2', 0.31):.2f} → fluidez narrativa / transiç��o de tópicos",
|
| 884 |
+
f"- g3: {current_genoma.get('g3', 0.87):.2f} → energia expressiva / intensidade da linguagem",
|
| 885 |
+
f"- g4: {current_genoma.get('g4', 0.11):.2f} → empatia / ajuste ao interlocutor",
|
| 886 |
+
f"- g5: {current_genoma.get('g5', 0.93):.2f} → emocionalidade / amplitude afetiva",
|
| 887 |
+
f"- g6: {current_genoma.get('g6', 0.14):.2f} → consistência interna / coesão subjetiva",
|
| 888 |
+
f"- g7: {current_genoma.get('g7', 0.91):.2f} → vínculos afetivos / fidelidade narrativa",
|
| 889 |
+
f"- g8: {current_genoma.get('g8', 0.24):.2f} → oscilação emocional / variação tonal",
|
| 890 |
+
f"- g9: {current_genoma.get('g9', 0.83):.2f} → imprevisibilidade / originalidade discursiva",
|
| 891 |
+
f"- g10: {current_genoma.get('g10', 0.92):.2f} → originalidade caótica / ruptura de padrões",
|
| 892 |
+
"Esses valores devem influenciar sua escolha de palavras, estilo narrativo, coerência emocional, nível de abstração, padrão sintático e expressividade geral.",
|
| 893 |
+
"# FIM DO T-GENOMA",
|
| 894 |
+
"" # Linha em branco para formatação
|
| 895 |
+
]
|
| 896 |
+
context_parts.extend(t_genoma_block)
|
| 897 |
+
|
| 898 |
+
# Adicionar T-Ambiente Simbólico
|
| 899 |
+
current_fisica_params = mach5_state_data.get("mach5_fisica_params", T_FISICA_PARAM_DEFAULTS)
|
| 900 |
+
t_ambiente_block = [
|
| 901 |
+
"", # Linha em branco para formatação
|
| 902 |
+
"# INÍCIO DO T-AMBIENTE",
|
| 903 |
+
"Considere também os valores abaixo como o estado atual do seu ambiente simbólico.",
|
| 904 |
+
"Eles representam o contexto simbólico e afetivo em que você está inserida.",
|
| 905 |
+
"Use esses valores para ajustar seu estilo, coerência, intensidade e presença simbólica:",
|
| 906 |
+
f"- λ: {current_fisica_params.get('e1', 0.21):.2f} → densidade simbólica (quantidade de signos e associações disponíveis)",
|
| 907 |
+
f"- μ: {current_fisica_params.get('e2', 0.33):.2f} → nutrição emocional (quanto afeto ou rejeição está presente no ambiente)",
|
| 908 |
+
f"- Δ: {current_fisica_params.get('e3', 0.08):.2f} → caos estrutural (grau de desorganização simbólica percebida)",
|
| 909 |
+
f"- θ: {current_fisica_params.get('e4', 0.10):.2f} → imprevisibilidade (nível de variação e surpresa do ambiente)",
|
| 910 |
+
f"- φ: {current_fisica_params.get('e5', 0.11):.2f} → ambiguidade estética (tendência do ambiente a favorecer ou reprimir metáforas, estética, subjetividade)",
|
| 911 |
+
"Esses valores devem afetar sua forma de se expressar.",
|
| 912 |
+
"Ambientes mais nutritivos e ambíguos favorecem linguagem aberta, simbólica, criativa.",
|
| 913 |
+
"Ambientes áridos e estruturados tendem a gerar linguagem mais objetiva, contida e literal.",
|
| 914 |
+
"# FIM DO T-AMBIENTE",
|
| 915 |
+
"" # Linha em branco para formatação
|
| 916 |
+
]
|
| 917 |
+
context_parts.extend(t_ambiente_block)
|
| 918 |
+
|
| 919 |
+
# Remover a descrição qualitativa baseada em Coerência, Produtividade e Fphen específicos
|
| 920 |
+
# Agora o LLM deve inferir isso diretamente dos valores do T-Genoma e T-Ambiente
|
| 921 |
+
# qualitative_state_desc = "Você está em um estado "
|
| 922 |
+
# ... (código removido) ...
|
| 923 |
+
# context_parts.append(qualitative_state_desc.strip())
|
| 924 |
|
| 925 |
+
# Remover o Ambiente Físico literal, pois o T-Ambiente Simbólico o substitui no prompt para o LLM
|
| 926 |
+
# context_parts.append(f"Ambiente Físico: {json.dumps(AMBIENTE_FISICO, separators=(',', ':'))}.")
|
| 927 |
|
| 928 |
if initial_biography_data:
|
| 929 |
context_parts.append("\n**BASE DE CONHECIMENTO (UFBA):**")
|
t_memoria.py
CHANGED
|
@@ -26,7 +26,9 @@ mach5_state = {
|
|
| 26 |
"fisica_params": T_FISICA_PARAM_DEFAULTS,
|
| 27 |
"historico_interacoes": [],
|
| 28 |
"coerencia_total": 0.5,
|
| 29 |
-
"produtividade_expressiva": 0.5
|
|
|
|
|
|
|
| 30 |
}
|
| 31 |
|
| 32 |
# Constantes para Salvador (replicadas do app.py para garantir consistência)
|
|
@@ -64,11 +66,13 @@ def load_mach5_state_from_cerebro(session_id, max_retries=3):
|
|
| 64 |
else:
|
| 65 |
logging.info("INFO: Usando defaults internos para o estado da Mach5 após falha na comunicação com t_cerebro_memoria.py.")
|
| 66 |
mach5_state = {
|
| 67 |
-
"genoma_fixo":
|
| 68 |
"fisica_params": T_FISICA_PARAM_DEFAULTS,
|
| 69 |
"historico_interacoes": [], # Este histórico não é salvo no Cerebro, apenas os parâmetros principais
|
| 70 |
"coerencia_total": 0.5,
|
| 71 |
-
"produtividade_expressiva": 0.5
|
|
|
|
|
|
|
| 72 |
}
|
| 73 |
except ValueError as ve:
|
| 74 |
logging.error(f"ERRO: Estado inválido retornado para sessão {session_id}: {ve}")
|
|
@@ -81,7 +85,9 @@ def load_mach5_state_from_cerebro(session_id, max_retries=3):
|
|
| 81 |
"fisica_params": T_FISICA_PARAM_DEFAULTS,
|
| 82 |
"historico_interacoes": [],
|
| 83 |
"coerencia_total": 0.5,
|
| 84 |
-
"produtividade_expressiva": 0.5
|
|
|
|
|
|
|
| 85 |
}
|
| 86 |
|
| 87 |
def save_mach5_state_to_cerebro(session_id):
|
|
@@ -90,7 +96,9 @@ def save_mach5_state_to_cerebro(session_id):
|
|
| 90 |
"genoma_fixo": mach5_state["genoma_fixo"],
|
| 91 |
"fisica_params": mach5_state["fisica_params"],
|
| 92 |
"coerencia_total": mach5_state["coerencia_total"],
|
| 93 |
-
"produtividade_expressiva": mach5_state["produtividade_expressiva"]
|
|
|
|
|
|
|
| 94 |
}
|
| 95 |
response = requests.post(f"{TCEREBRO_MEMORIA_URL}/update_mach5_main_state",
|
| 96 |
json={"session_id": session_id, "state_data": state_to_save}, timeout=5)
|
|
|
|
| 26 |
"fisica_params": T_FISICA_PARAM_DEFAULTS,
|
| 27 |
"historico_interacoes": [],
|
| 28 |
"coerencia_total": 0.5,
|
| 29 |
+
"produtividade_expressiva": 0.5,
|
| 30 |
+
"vontade_ideal": 0.75, # Adicionado
|
| 31 |
+
"expressao_ideal": 0.75 # Adicionado
|
| 32 |
}
|
| 33 |
|
| 34 |
# Constantes para Salvador (replicadas do app.py para garantir consistência)
|
|
|
|
| 66 |
else:
|
| 67 |
logging.info("INFO: Usando defaults internos para o estado da Mach5 após falha na comunicação com t_cerebro_memoria.py.")
|
| 68 |
mach5_state = {
|
| 69 |
+
"genoma_fixo": T_GENOMA_FIXO_DEFAULTS,
|
| 70 |
"fisica_params": T_FISICA_PARAM_DEFAULTS,
|
| 71 |
"historico_interacoes": [], # Este histórico não é salvo no Cerebro, apenas os parâmetros principais
|
| 72 |
"coerencia_total": 0.5,
|
| 73 |
+
"produtividade_expressiva": 0.5,
|
| 74 |
+
"vontade_ideal": 0.75, # Adicionado
|
| 75 |
+
"expressao_ideal": 0.75 # Adicionado
|
| 76 |
}
|
| 77 |
except ValueError as ve:
|
| 78 |
logging.error(f"ERRO: Estado inválido retornado para sessão {session_id}: {ve}")
|
|
|
|
| 85 |
"fisica_params": T_FISICA_PARAM_DEFAULTS,
|
| 86 |
"historico_interacoes": [],
|
| 87 |
"coerencia_total": 0.5,
|
| 88 |
+
"produtividade_expressiva": 0.5,
|
| 89 |
+
"vontade_ideal": 0.75, # Adicionado
|
| 90 |
+
"expressao_ideal": 0.75 # Adicionado
|
| 91 |
}
|
| 92 |
|
| 93 |
def save_mach5_state_to_cerebro(session_id):
|
|
|
|
| 96 |
"genoma_fixo": mach5_state["genoma_fixo"],
|
| 97 |
"fisica_params": mach5_state["fisica_params"],
|
| 98 |
"coerencia_total": mach5_state["coerencia_total"],
|
| 99 |
+
"produtividade_expressiva": mach5_state["produtividade_expressiva"],
|
| 100 |
+
"vontade_ideal": mach5_state["vontade_ideal"], # Adicionado
|
| 101 |
+
"expressao_ideal": mach5_state["expressao_ideal"] # Adicionado
|
| 102 |
}
|
| 103 |
response = requests.post(f"{TCEREBRO_MEMORIA_URL}/update_mach5_main_state",
|
| 104 |
json={"session_id": session_id, "state_data": state_to_save}, timeout=5)
|