Spaces:
Running
Running
🔧 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_nomewas being extracted and stored inunified_context.system_overridebut was NOT being passed to_execute_agent_loopand 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:
test_group_name_injection.py- Unit tests for context buildingtest_group_name_flow.py- Integration test simulating full API flow
Verification Steps
To verify this works:
- Start AKIRA server
- Send message to a group with
grupo_nomein the payload:
{
"usuario": "John",
"numero": "5511999999999",
"mensagem": "qual é o nome desse grupo?",
"tipo_conversa": "grupo",
"grupo_nome": "Programadores da Zona",
...
}
- Check logs for:
✅ [CONTEXT] Grupo injetado no unified_context.system_override: 'Programadores da Zona'✅ [CONTEXT INJECTION] system_override injetado no prompt
- 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_contextparameter to_execute_agent_loopcall - Line 2829: Added
unified_context=Noneparameter to function signature - Line 2851-2858: Added system_override injection logic
Files Created
test_group_name_injection.py- Unit testtest_group_name_flow.py- Integration testGRUPO_NOME_FIX_SUMMARY.md- This file
Status
✅ IMPLEMENTATION COMPLETE AND READY FOR TESTING