NiltonSouza commited on
Commit
4dfe68f
·
1 Parent(s): 076002f

Alterações

Browse files
Files changed (2) hide show
  1. app.py +53 -47
  2. 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 descrições QUALITATIVAS sutis baseadas nos parâmetros para guiar o LLM.
876
- if mach5_state_data:
877
- coh = mach5_state_data.get("mach5_coerencia_total", 0.5)
878
- prod = mach5_state_data.get("mach5_produtividade_expressiva", 0.5)
879
- fphen_values_for_llm_context = mach5_state_data.get('fphen_data', {}).get('values', [])
880
-
881
- # Obter valores de alguns Fphen relevantes para a persona
882
- f1_afetividade = fphen_values_for_llm_context[ORDERED_FPHEN_AXES.index("f1")] if "f1" in ORDERED_FPHEN_AXES and ORDERED_FPHEN_AXES.index("f1") < len(fphen_values_for_llm_context) else 0
883
- f4_clareza = fphen_values_for_llm_context[ORDERED_FPHEN_AXES.index("f4")] if "f4" in ORDERED_FPHEN_AXES and ORDERED_FPHEN_AXES.index("f4") < len(fphen_values_for_llm_context) else 0
884
- f13_adaptacao = fphen_values_for_llm_context[ORDERED_FPHEN_AXES.index("f13")] if "f13" in ORDERED_FPHEN_AXES and ORDERED_FPHEN_AXES.index("f13") < len(fphen_values_for_llm_context) else 0
885
- f6_curiosidade = fphen_values_for_llm_context[ORDERED_FPHEN_AXES.index("f6")] if "f6" in ORDERED_FPHEN_AXES and ORDERED_FPHEN_AXES.index("f6") < len(fphen_values_for_llm_context) else 0
886
- f2_critica = fphen_values_for_llm_context[ORDERED_FPHEN_AXES.index("f2")] if "f2" in ORDERED_FPHEN_AXES and ORDERED_FPHEN_AXES.index("f2") < len(fphen_values_for_llm_context) else 0
887
-
888
- qualitative_state_desc = "Você está em um estado "
889
- # Coerência
890
- if coh > 0.85:
891
- qualitative_state_desc += "altamente coerente e estável. "
892
- elif coh < 0.35:
893
- qualitative_state_desc += "um tanto incoerente e fragmentado. "
894
- else:
895
- qualitative_state_desc += "razoavelmente equilibrado. "
896
-
897
- # Produtividade
898
- if prod > 0.85:
899
- qualitative_state_desc += "Sua expressividade é muito ativa e vibrante. "
900
- elif prod < 0.35:
901
- qualitative_state_desc += "Sua expressividade é contida e um pouco reservada. "
902
- else:
903
- qualitative_state_desc += "Sua expressividade é moderada. "
904
-
905
- # Fphen específicos
906
- if f1_afetividade > 0.15:
907
- qualitative_state_desc += "Há uma inclinação para a afetuosidade e calor. "
908
- if f4_clareza > 0.15:
909
- qualitative_state_desc += "Sua comunicação tende a ser muito clara e organizada. "
910
- if f13_adaptacao > 0.15:
911
- qualitative_state_desc += "Você demonstra alta adaptabilidade e flexibilidade. "
912
- if f6_curiosidade > 0.15:
913
- qualitative_state_desc += "Você está com um alto nível de curiosidade e desejo de explorar. "
914
- if f2_critica > 0.15:
915
- qualitative_state_desc += " uma tendência a ser crítico ou analítico em suas reações. "
916
-
917
- context_parts.append(qualitative_state_desc.strip())
918
-
919
- context_parts.append(f"Ambiente Físico: {json.dumps(AMBIENTE_FISICO, separators=(',', ':'))}.") # Ambiente Físico pode ser dado
 
 
 
 
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": T_GENICA_FIXO_DEFAULTS,
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)