AKIRA-SOFTEDGE / GRUPO_NOME_FIX_SUMMARY.md
akra35567's picture
Upload 190 files
b259a65 verified
|
Raw
History Blame Contribute Delete
4.98 kB

🔧 GROUP NAME CONTEXT INJECTION FIX - SUMMARY

Problem Identified

  • User asks "qual é o nome desse grupo?" in a group chat
  • AKIRA responds "não sei" instead of the actual group name
  • Root cause: grupo_nome was being extracted and stored in unified_context.system_override but was NOT being passed to _execute_agent_loop and thus NOT injected into the final prompt sent to the model

Solution Implemented

Change 1: Pass unified_context to _execute_agent_loop (api.py line ~1843)

Before:

resposta, modelo_usado, remote_actions, media_response = self._execute_agent_loop(
    prompt=prompt_enriched,
    context_history=context_history,
    usuario=usuario,
    numero=numero,
    analise_visao=analise_visao,
    conversation_id=conversation_id,
    original_message=mensagem
)

After:

resposta, modelo_usado, remote_actions, media_response = self._execute_agent_loop(
    prompt=prompt_enriched,
    context_history=context_history,
    usuario=usuario,
    numero=numero,
    analise_visao=analise_visao,
    conversation_id=conversation_id,
    original_message=mensagem,
    unified_context=unified_context  # ✅ NEW: Pass unified_context
)

Change 2: Update _execute_agent_loop signature (api.py line ~2829)

Before:

def _execute_agent_loop(self, prompt, context_history, usuario, numero, analise_visao=None, conversation_id=None, original_message=None):

After:

def _execute_agent_loop(self, prompt, context_history, usuario, numero, analise_visao=None, conversation_id=None, original_message=None, unified_context=None):

Change 3: Inject system_override into prompt before model call (api.py line ~2851)

Before:

for i in range(max_iterations):
    self.logger.info(f"🧠 [AGENT] Iteração {i+1}/{max_iterations}")
    
    # Gera resposta (pode conter tool_calls)
    res, model = self.providers.generate(current_prompt, current_context, tools=tools)

After:

for i in range(max_iterations):
    self.logger.info(f"🧠 [AGENT] Iteração {i+1}/{max_iterations}")
    
    # ✅ INJETAR SYSTEM_OVERRIDE DO CONTEXTO UNIFICADO (grupo_nome, etc)
    final_prompt = current_prompt
    if unified_context and unified_context.system_override:
        final_prompt = current_prompt + "\n" + unified_context.system_override
        self.logger.info(f"✅ [CONTEXT INJECTION] system_override injetado no prompt")
    
    # Gera resposta (pode conter tool_calls)
    res, model = self.providers.generate(final_prompt, current_context, tools=tools)

Change 4: Add logging for grupo_nome injection (api.py line ~1633)

Added:

if unified_context and grupo_nome:
    unified_context.system_override = (unified_context.system_override or "") + f"\n[AMBIENTE]: Você está num grupo chamado '{grupo_nome}'."
    self.logger.info(f"✅ [CONTEXT] Grupo injetado no unified_context.system_override: '{grupo_nome}'")  # ✅ NEW

Data Flow

API /akira endpoint
    ↓
Extract: grupo_nome = data.get('grupo_nome', '')  [Line 1426]
    ↓
Build unified_context [Line 1624]
    ↓
Set system_override: 
  "[AMBIENTE]: Você está num grupo chamado 'XYZ'"  [Line 1632]
    ↓
Pass unified_context to _execute_agent_loop  [Line 1843] ✅ NEW
    ↓
Inside _execute_agent_loop:
    Inject system_override into final_prompt [Line 2851-2858] ✅ NEW
    ↓
Call providers.generate(final_prompt, ...)
    ↓
Model receives grupo_nome in system prompt
    ↓
AKIRA responds with actual group name ✅

Testing

Created two test files:

  1. test_group_name_injection.py - Unit tests for context building
  2. test_group_name_flow.py - Integration test simulating full API flow

Verification Steps

To verify this works:

  1. Start AKIRA server
  2. Send message to a group with grupo_nome in the payload:
{
  "usuario": "John",
  "numero": "5511999999999",
  "mensagem": "qual é o nome desse grupo?",
  "tipo_conversa": "grupo",
  "grupo_nome": "Programadores da Zona",
  ...
}
  1. Check logs for:
    • ✅ [CONTEXT] Grupo injetado no unified_context.system_override: 'Programadores da Zona'
    • ✅ [CONTEXT INJECTION] system_override injetado no prompt
  2. AKIRA should respond with the actual group name

Files Modified

  • modules/api.py
    • Line 1632-1633: Added logging for grupo_nome injection
    • Line 1843: Added unified_context parameter to _execute_agent_loop call
    • Line 2829: Added unified_context=None parameter to function signature
    • Line 2851-2858: Added system_override injection logic

Files Created

  • test_group_name_injection.py - Unit test
  • test_group_name_flow.py - Integration test
  • GRUPO_NOME_FIX_SUMMARY.md - This file

Status

✅ IMPLEMENTATION COMPLETE AND READY FOR TESTING