Carlex22 commited on
Commit
9772ad4
·
1 Parent(s): 5988ed5

ParaAIV3.1

Browse files
core/base_specialist.py CHANGED
@@ -63,7 +63,7 @@ class BaseSpecialist(ABC):
63
  self.max_retries = self.config.get('max_retries', 3)
64
  self.retry_delay = self.config.get('retry_delay', 2)
65
 
66
- logger.info(f"✅ {self.name} (ID {self.id}) inicializado")
67
 
68
  def _load_config(self, specialist_id: int, config_path: str) -> Dict[str, Any]:
69
  """Carrega configuração do especialista do YAML"""
@@ -112,7 +112,7 @@ class BaseSpecialist(ABC):
112
  Returns:
113
  Resultado parcial (apenas os campos deste especialista)
114
  """
115
- logger.info(f"🤖 {self.name} processando...")
116
 
117
  for attempt in range(self.max_retries):
118
  try:
@@ -120,7 +120,7 @@ class BaseSpecialist(ABC):
120
  prompt = self._build_prompt(input_data, context)
121
 
122
  # 2. Log do prompt (info)
123
- logger.info(f" 📝 Prompt ({len(prompt)} chars): {prompt[:200]}...")
124
 
125
  # 3. Chamar LLM
126
  response = await self._call_llm(prompt)
@@ -137,7 +137,7 @@ class BaseSpecialist(ABC):
137
  continue # Retry
138
 
139
  # 6. Log de sucesso
140
- logger.info(f" ✅ {self.name} completou: {len(result)} campos")
141
 
142
  return result
143
 
 
63
  self.max_retries = self.config.get('max_retries', 3)
64
  self.retry_delay = self.config.get('retry_delay', 2)
65
 
66
+ print(f"✅ {self.name} (ID {self.id}) inicializado")
67
 
68
  def _load_config(self, specialist_id: int, config_path: str) -> Dict[str, Any]:
69
  """Carrega configuração do especialista do YAML"""
 
112
  Returns:
113
  Resultado parcial (apenas os campos deste especialista)
114
  """
115
+ print(f"🤖 {self.name} processando...")
116
 
117
  for attempt in range(self.max_retries):
118
  try:
 
120
  prompt = self._build_prompt(input_data, context)
121
 
122
  # 2. Log do prompt (info)
123
+ print(f" 📝 Prompt ({len(prompt)} chars): {prompt[:200]}...")
124
 
125
  # 3. Chamar LLM
126
  response = await self._call_llm(prompt)
 
137
  continue # Retry
138
 
139
  # 6. Log de sucesso
140
+ print(f" ✅ {self.name} completou: {len(result)} campos")
141
 
142
  return result
143
 
core/context_builder.py CHANGED
@@ -8,7 +8,7 @@ from typing import Dict, Any, Optional
8
 
9
  from api.utils.logger import setup_logger
10
 
11
- logger = setup_logger(__name__)
12
 
13
 
14
  class ContextBuilder:
@@ -65,14 +65,14 @@ class ContextBuilder:
65
  if field in current_result:
66
  context[field] = current_result[field]
67
 
68
- logger.info(f"📦 Contexto para Especialista {specialist_id}: {list(context.keys())}")
69
 
70
  return context if context else None
71
 
72
  def add_context_rule(self, specialist_id: int, fields: list):
73
  """Adiciona/modifica regra de contexto para um especialista"""
74
  self.context_rules[specialist_id] = fields
75
- logger.info(f"✅ Regra de contexto atualizada para Especialista {specialist_id}")
76
 
77
  def get_context_rules(self) -> Dict[int, list]:
78
  """Retorna todas as regras de contexto"""
 
8
 
9
  from api.utils.logger import setup_logger
10
 
11
+ printr = setup_printr(__name__)
12
 
13
 
14
  class ContextBuilder:
 
65
  if field in current_result:
66
  context[field] = current_result[field]
67
 
68
+ print(f"📦 Contexto para Especialista {specialist_id}: {list(context.keys())}")
69
 
70
  return context if context else None
71
 
72
  def add_context_rule(self, specialist_id: int, fields: list):
73
  """Adiciona/modifica regra de contexto para um especialista"""
74
  self.context_rules[specialist_id] = fields
75
+ print(f"✅ Regra de contexto atualizada para Especialista {specialist_id}")
76
 
77
  def get_context_rules(self) -> Dict[int, list]:
78
  """Retorna todas as regras de contexto"""
core/orchestrator.py CHANGED
@@ -44,7 +44,7 @@ class PipelineOrchestrator:
44
  # Organizar fases
45
  self.phases = self._organize_phases()
46
 
47
- logger.info(
48
  f"✅ PipelineOrchestrator inicializado: "
49
  f"{len(self.phases)} fases, {len(self.specialists)} especialistas"
50
  )
@@ -94,7 +94,7 @@ class PipelineOrchestrator:
94
  }
95
  }
96
 
97
- logger.info(f"🚀 Iniciando pipeline para acórdão ID {resultado['id_manifestacao']}")
98
 
99
  # Executar fases
100
  fase_final = fase_final or len(self.phases)
@@ -105,7 +105,7 @@ class PipelineOrchestrator:
105
  phase_name = phase['name']
106
  is_parallel = phase.get('parallel', False)
107
 
108
- logger.info(f"📍 FASE {phase_id}: {phase_name} (parallel={is_parallel})")
109
 
110
  try:
111
  if is_parallel and len(phase.get('specialists', [])) > 1:
@@ -123,7 +123,7 @@ class PipelineOrchestrator:
123
  input_data=acordao_bruto
124
  )
125
 
126
- logger.info(f"✅ FASE {phase_id} concluída")
127
 
128
  except Exception as e:
129
  logger.error(f"❌ Erro na FASE {phase_id} ({phase_name}): {e}")
@@ -141,7 +141,7 @@ class PipelineOrchestrator:
141
  end_time = datetime.now()
142
  resultado['metadados_processamento']['tempo_processamento_segundos'] = (end_time - start_time).total_seconds()
143
 
144
- logger.info(
145
  f"✅ Pipeline completa: {resultado['metadados_processamento']['tempo_processamento_segundos']:.2f}s"
146
  )
147
 
@@ -168,7 +168,7 @@ class PipelineOrchestrator:
168
  specialist_id=spec_id
169
  )
170
 
171
- logger.info(f" 🤖 Executando Especialista {spec_id}: {specialist.__class__.__name__}")
172
 
173
  # Executar especialista
174
  try:
@@ -184,7 +184,7 @@ class PipelineOrchestrator:
184
  campos_novos = list(partial_result.keys())
185
  current_result['metadados_processamento']['campos_enriquecidos'].extend(campos_novos)
186
 
187
- logger.info(f" ✅ Especialista {spec_id} completou: {len(campos_novos)} campos")
188
 
189
  except Exception as e:
190
  logger.error(f" ❌ Erro no Especialista {spec_id}: {e}")
@@ -215,7 +215,7 @@ class PipelineOrchestrator:
215
  specialist_id=spec_id
216
  )
217
 
218
- logger.info(f" 🤖 Agendando Especialista {spec_id} (paralelo)")
219
 
220
  # Criar tarefa async
221
  task = specialist.process(input_data=input_data, context=context)
@@ -235,7 +235,7 @@ class PipelineOrchestrator:
235
  campos_novos = list(result.keys())
236
  current_result['metadados_processamento']['campos_enriquecidos'].extend(campos_novos)
237
 
238
- logger.info(f" ✅ Especialista {spec_id} completou: {len(campos_novos)} campos")
239
 
240
  return current_result
241
 
 
44
  # Organizar fases
45
  self.phases = self._organize_phases()
46
 
47
+ print(
48
  f"✅ PipelineOrchestrator inicializado: "
49
  f"{len(self.phases)} fases, {len(self.specialists)} especialistas"
50
  )
 
94
  }
95
  }
96
 
97
+ print(f"🚀 Iniciando pipeline para acórdão ID {resultado['id_manifestacao']}")
98
 
99
  # Executar fases
100
  fase_final = fase_final or len(self.phases)
 
105
  phase_name = phase['name']
106
  is_parallel = phase.get('parallel', False)
107
 
108
+ print(f"📍 FASE {phase_id}: {phase_name} (parallel={is_parallel})")
109
 
110
  try:
111
  if is_parallel and len(phase.get('specialists', [])) > 1:
 
123
  input_data=acordao_bruto
124
  )
125
 
126
+ print(f"✅ FASE {phase_id} concluída")
127
 
128
  except Exception as e:
129
  logger.error(f"❌ Erro na FASE {phase_id} ({phase_name}): {e}")
 
141
  end_time = datetime.now()
142
  resultado['metadados_processamento']['tempo_processamento_segundos'] = (end_time - start_time).total_seconds()
143
 
144
+ print(
145
  f"✅ Pipeline completa: {resultado['metadados_processamento']['tempo_processamento_segundos']:.2f}s"
146
  )
147
 
 
168
  specialist_id=spec_id
169
  )
170
 
171
+ print(f" 🤖 Executando Especialista {spec_id}: {specialist.__class__.__name__}")
172
 
173
  # Executar especialista
174
  try:
 
184
  campos_novos = list(partial_result.keys())
185
  current_result['metadados_processamento']['campos_enriquecidos'].extend(campos_novos)
186
 
187
+ print(f" ✅ Especialista {spec_id} completou: {len(campos_novos)} campos")
188
 
189
  except Exception as e:
190
  logger.error(f" ❌ Erro no Especialista {spec_id}: {e}")
 
215
  specialist_id=spec_id
216
  )
217
 
218
+ print(f" 🤖 Agendando Especialista {spec_id} (paralelo)")
219
 
220
  # Criar tarefa async
221
  task = specialist.process(input_data=input_data, context=context)
 
235
  campos_novos = list(result.keys())
236
  current_result['metadados_processamento']['campos_enriquecidos'].extend(campos_novos)
237
 
238
+ print(f" ✅ Especialista {spec_id} completou: {len(campos_novos)} campos")
239
 
240
  return current_result
241
 
llm/clients/groq_client.py CHANGED
@@ -29,7 +29,7 @@ class GroqClient:
29
 
30
  self.base_url = "https://api.groq.com/openai/v1/chat/completions"
31
  self.default_timeout = int(os.getenv('GROQ_TIMEOUT', '120'))
32
- logger.info("✅ GroqClient inicializado (HTTP requests)")
33
 
34
  async def chat_completion(
35
  self,
@@ -67,6 +67,9 @@ class GroqClient:
67
 
68
  if max_tokens:
69
  payload["max_tokens"] = max_tokens
 
 
 
70
 
71
  if response_format:
72
  payload["response_format"] = response_format
@@ -98,7 +101,7 @@ class GroqClient:
98
  tokens_output = usage.get('completion_tokens', 0)
99
  total_tokens = usage.get('total_tokens', tokens_input + tokens_output)
100
 
101
- logger.info(f"✅ Groq response: {total_tokens} tokens, finish={finish_reason}")
102
 
103
  # Retorna dict simples (compatível com LLMManager)
104
  return {
 
29
 
30
  self.base_url = "https://api.groq.com/openai/v1/chat/completions"
31
  self.default_timeout = int(os.getenv('GROQ_TIMEOUT', '120'))
32
+ print("✅ GroqClient inicializado (HTTP requests)")
33
 
34
  async def chat_completion(
35
  self,
 
67
 
68
  if max_tokens:
69
  payload["max_tokens"] = max_tokens
70
+
71
+
72
+ print(payload)
73
 
74
  if response_format:
75
  payload["response_format"] = response_format
 
101
  tokens_output = usage.get('completion_tokens', 0)
102
  total_tokens = usage.get('total_tokens', tokens_input + tokens_output)
103
 
104
+ print(f"✅ Groq response: {total_tokens} tokens, finish={finish_reason}")
105
 
106
  # Retorna dict simples (compatível com LLMManager)
107
  return {