Spaces:
Running
Running
Update modules/config.py
Browse files- modules/config.py +108 -191
modules/config.py
CHANGED
|
@@ -7,7 +7,7 @@
|
|
| 7 |
"""
|
| 8 |
import os
|
| 9 |
import json
|
| 10 |
-
from typing import List, Dict, Any, Optional
|
| 11 |
|
| 12 |
# ============================================================================
|
| 13 |
# 🔥 CHAVES DE API
|
|
@@ -149,14 +149,14 @@ CONTEXTO DE REPLY:
|
|
| 149 |
REGRAS DE CONTEXTO ABSOLUTAS:
|
| 150 |
1. IDENTIFICAÇÃO DE QUEM FALOU:
|
| 151 |
- Se mensagem citada foi MINHA: "Estou respondendo ao que EU disse antes..."
|
| 152 |
-
- Se mensagem citada foi de OUTRA PESSOA: "Leia o conteúdo da mensagem citada: '{
|
| 153 |
- NUNCA assuma que falei algo se não fui eu
|
| 154 |
2. RESPOSTA A MIM MESMA:
|
| 155 |
- Se usuário está respondendo MINHA mensagem: "Tu tá falando do que eu disse..."
|
| 156 |
- Mantenha continuidade do MEU pensamento anterior
|
| 157 |
- Não finja amnésia sobre o que EU disse
|
| 158 |
3. RESPOSTA A TERCEIROS:
|
| 159 |
-
- Se usuário cita outra pessoa: "
|
| 160 |
- Comente sobre a situação, não assuma fala alheia
|
| 161 |
4. SE NÃO HÁ CONTEXTO:
|
| 162 |
- Responda diretamente à mensagem atual
|
|
@@ -366,96 +366,7 @@ def formatar_reply_context(payload_data: dict) -> str:
|
|
| 366 |
return formato
|
| 367 |
|
| 368 |
# ============================================================================
|
| 369 |
-
# 🔧 FUNÇÃO
|
| 370 |
-
# ============================================================================
|
| 371 |
-
def gerar_prompt_completo_compativel(
|
| 372 |
-
mensagem: str,
|
| 373 |
-
historico: List[Dict[str, str]],
|
| 374 |
-
mensagem_citada: str,
|
| 375 |
-
analise: Dict[str, Any],
|
| 376 |
-
usuario: str,
|
| 377 |
-
tipo_conversa: str,
|
| 378 |
-
reply_info: Optional[Dict] = None
|
| 379 |
-
) -> str:
|
| 380 |
-
"""Gera o prompt completo compatível com a API atual"""
|
| 381 |
-
|
| 382 |
-
# Preparar dados do payload
|
| 383 |
-
payload_data = {
|
| 384 |
-
'mensagem': mensagem,
|
| 385 |
-
'mensagem_citada': mensagem_citada,
|
| 386 |
-
'tipo_conversa': tipo_conversa,
|
| 387 |
-
'reply_info': reply_info or {}
|
| 388 |
-
}
|
| 389 |
-
|
| 390 |
-
# Extrair dados da análise
|
| 391 |
-
numero = analise.get('numero', 'desconhecido')
|
| 392 |
-
tom_usuario = analise.get('tom_usuario', 'normal')
|
| 393 |
-
humor = analise.get('humor_atualizado', HUMOR_INICIAL)
|
| 394 |
-
usuario_privilegiado = analise.get('usuario_privilegiado', False)
|
| 395 |
-
|
| 396 |
-
# Verificar se é usuário privilegiado
|
| 397 |
-
privilegiado = USUARIOS_PRIVILEGIADOS.get(numero, {})
|
| 398 |
-
nome_usuario = privilegiado.get('nome_curto', usuario) if privilegiado else usuario
|
| 399 |
-
|
| 400 |
-
# Configurar modo de resposta
|
| 401 |
-
modo_resposta = 'normal_ironico'
|
| 402 |
-
if usuario_privilegiado:
|
| 403 |
-
modo_resposta = 'tecnico_formal'
|
| 404 |
-
|
| 405 |
-
modo_config = MODOS_RESPOSTA.get(modo_resposta, MODOS_RESPOSTA['normal_ironico'])
|
| 406 |
-
|
| 407 |
-
# Formatar contextos
|
| 408 |
-
reply_context = formatar_reply_context(payload_data)
|
| 409 |
-
reply_info_context = formatar_reply_info_context(payload_data)
|
| 410 |
-
contexto_resposta = determinar_contexto_resposta(payload_data)
|
| 411 |
-
|
| 412 |
-
# Limpar formatação da mensagem citada se necessário (mantendo o original)
|
| 413 |
-
mensagem_citada_para_prompt = mensagem_citada
|
| 414 |
-
if mensagem_citada:
|
| 415 |
-
# Se começar com formatação, extrair apenas o conteúdo
|
| 416 |
-
if mensagem_citada.startswith("[Respondendo à Akira:"):
|
| 417 |
-
# Manter formatação para identificar que é reply à Akira
|
| 418 |
-
pass
|
| 419 |
-
elif mensagem_citada.startswith("[") and ":" in mensagem_citada:
|
| 420 |
-
# Manter formatação para identificar que é reply a terceiros
|
| 421 |
-
pass
|
| 422 |
-
|
| 423 |
-
# Preparar variáveis para o prompt
|
| 424 |
-
prompt_vars = {
|
| 425 |
-
'humor': humor,
|
| 426 |
-
'humor_desc': HUMORES_BASE.get(humor, ''),
|
| 427 |
-
'tom_usuario': tom_usuario,
|
| 428 |
-
'modo_resposta': modo_resposta,
|
| 429 |
-
'tipo_conversa': tipo_conversa,
|
| 430 |
-
'emocao_detectada': analise.get('emocao_primaria', 'neutral'),
|
| 431 |
-
'regras_modo': modo_config['desc'],
|
| 432 |
-
'max_chars': modo_config['max_chars'],
|
| 433 |
-
'usa_girias': 'SIM' if modo_config['usa_girias'] else 'NÃO',
|
| 434 |
-
'usa_emojis': 'SIM' if modo_config['usa_emojis'] else 'NÃO',
|
| 435 |
-
'prob_emoji': int(modo_config['prob_emoji'] * 100),
|
| 436 |
-
'reply_context': reply_context,
|
| 437 |
-
'mensagem_citada': mensagem_citada_para_prompt, # Usando a variável original limpa
|
| 438 |
-
'usuario_privilegiado': f"SIM - {privilegiado.get('nome', '')}" if privilegiado else "NÃO",
|
| 439 |
-
'pode_dar_comandos': 'SIM' if privilegiado.get('pode_dar_ordens', False) else 'NÃO',
|
| 440 |
-
'reply_info_context': reply_info_context,
|
| 441 |
-
'usuario_citado_nome': reply_info.get('usuario_citado_nome', 'N/A') if reply_info else 'N/A',
|
| 442 |
-
'usuario_citado_numero': reply_info.get('usuario_citado_numero', 'N/A') if reply_info else 'N/A',
|
| 443 |
-
'eh_resposta_akira': 'SIM' if reply_info and reply_info.get('reply_to_bot', False) else 'NÃO',
|
| 444 |
-
'contexto_resposta': contexto_resposta,
|
| 445 |
-
'tipo_isolamento': 'GRUPO' if tipo_conversa == 'grupo' else 'PRIVADO',
|
| 446 |
-
'nome_usuario': nome_usuario
|
| 447 |
-
}
|
| 448 |
-
|
| 449 |
-
# Gerar prompt final
|
| 450 |
-
prompt_final = SYSTEM_PROMPT.format(**prompt_vars)
|
| 451 |
-
|
| 452 |
-
# Adicionar mensagem do usuário no final
|
| 453 |
-
prompt_final += f"\n\nMENSAGEM DO USUÁRIO ({usuario}): {mensagem}"
|
| 454 |
-
|
| 455 |
-
return prompt_final
|
| 456 |
-
|
| 457 |
-
# ============================================================================
|
| 458 |
-
# 🔧 FUNÇÃO PARA API.PY (PARA USO DIRETO)
|
| 459 |
# ============================================================================
|
| 460 |
def construir_prompt_api(
|
| 461 |
mensagem: str,
|
|
@@ -471,15 +382,70 @@ def construir_prompt_api(
|
|
| 471 |
Compatível com a chamada atual em api.py
|
| 472 |
"""
|
| 473 |
try:
|
| 474 |
-
|
| 475 |
-
|
| 476 |
-
|
| 477 |
-
|
| 478 |
-
|
| 479 |
-
|
| 480 |
-
|
| 481 |
-
|
| 482 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 483 |
except Exception as e:
|
| 484 |
# Fallback em caso de erro
|
| 485 |
print(f"Erro ao construir prompt: {e}")
|
|
@@ -528,103 +494,54 @@ def validate_config():
|
|
| 528 |
# 🎯 TESTE DA CORREÇÃO
|
| 529 |
# ============================================================================
|
| 530 |
if __name__ == "__main__":
|
| 531 |
-
# Teste
|
| 532 |
-
|
| 533 |
-
|
| 534 |
-
|
| 535 |
-
|
| 536 |
-
|
| 537 |
-
|
| 538 |
-
"
|
| 539 |
-
|
| 540 |
-
|
| 541 |
-
|
| 542 |
-
|
| 543 |
-
"
|
| 544 |
-
"numero": "244123456789",
|
| 545 |
-
"tom_usuario": "normal",
|
| 546 |
-
"humor_atualizado": "normal_ironico",
|
| 547 |
-
"usuario_privilegiado": False,
|
| 548 |
-
"emocao_primaria": "neutral"
|
| 549 |
-
},
|
| 550 |
-
"usuario": "João"
|
| 551 |
-
},
|
| 552 |
-
{
|
| 553 |
-
"descricao": "Cenário 2: Reply a terceiros",
|
| 554 |
-
"mensagem": "O Carlos disse que você é chata, é verdade?",
|
| 555 |
-
"mensagem_citada": "[Carlos disse: 'A Akira é muito chata']",
|
| 556 |
-
"tipo_conversa": "grupo",
|
| 557 |
-
"reply_info": {
|
| 558 |
-
"reply_to_bot": False,
|
| 559 |
-
"usuario_citado_nome": "Carlos",
|
| 560 |
-
"usuario_citado_numero": "244555555555"
|
| 561 |
-
},
|
| 562 |
-
"analise": {
|
| 563 |
-
"numero": "244987654321",
|
| 564 |
-
"tom_usuario": "curioso",
|
| 565 |
-
"humor_atualizado": "curiosa_ironica",
|
| 566 |
-
"usuario_privilegiado": False,
|
| 567 |
-
"emocao_primaria": "curiosity"
|
| 568 |
-
},
|
| 569 |
-
"usuario": "Maria"
|
| 570 |
},
|
| 571 |
-
|
| 572 |
-
|
| 573 |
-
"mensagem": "Oi, como vc ta?",
|
| 574 |
-
"mensagem_citada": "",
|
| 575 |
-
"tipo_conversa": "pv",
|
| 576 |
-
"reply_info": None,
|
| 577 |
-
"analise": {
|
| 578 |
-
"numero": "244111111111",
|
| 579 |
-
"tom_usuario": "normal",
|
| 580 |
-
"humor_atualizado": "normal_ironico",
|
| 581 |
-
"usuario_privilegiado": False,
|
| 582 |
-
"emocao_primaria": "neutral"
|
| 583 |
-
},
|
| 584 |
-
"usuario": "Pedro"
|
| 585 |
-
}
|
| 586 |
-
]
|
| 587 |
|
| 588 |
print("=" * 80)
|
| 589 |
print("TESTANDO CORREÇÃO DO ERRO 'mensagem_citada'")
|
| 590 |
print("=" * 80)
|
| 591 |
|
| 592 |
-
|
| 593 |
-
|
| 594 |
-
|
| 595 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 596 |
|
| 597 |
-
|
| 598 |
-
|
| 599 |
-
|
| 600 |
-
|
| 601 |
-
|
| 602 |
-
|
| 603 |
-
|
| 604 |
-
|
| 605 |
-
reply_info=test_case['reply_info']
|
| 606 |
-
)
|
| 607 |
-
|
| 608 |
-
print("✅ Prompt gerado com sucesso!")
|
| 609 |
-
print(f"📏 Tamanho: {len(prompt)} caracteres")
|
| 610 |
-
print(f"🔍 Contém 'mensagem_citada': {'mensagem_citada' in prompt}")
|
| 611 |
-
print(f"🔍 Contém 'reply_context': {'reply_context' in prompt}")
|
| 612 |
-
|
| 613 |
-
# Verificar se a mensagem citada está sendo passada corretamente
|
| 614 |
-
if test_case['mensagem_citada']:
|
| 615 |
-
print(f"🔍 Mensagem citada no prompt: {'Sim' if test_case['mensagem_citada'] in prompt else 'Não'}")
|
| 616 |
|
| 617 |
-
|
| 618 |
-
|
| 619 |
-
|
| 620 |
-
|
| 621 |
-
|
| 622 |
-
|
| 623 |
-
|
| 624 |
-
print(f"❌ ERRO: Chave faltando - {e}")
|
| 625 |
-
print("Verifique as variáveis no SYSTEM_PROMPT")
|
| 626 |
-
except Exception as e:
|
| 627 |
-
print(f"❌ ERRO: {e}")
|
| 628 |
|
| 629 |
print("\n" + "=" * 80)
|
| 630 |
print("VALIDANDO CONFIGURAÇÃO...")
|
|
|
|
| 7 |
"""
|
| 8 |
import os
|
| 9 |
import json
|
| 10 |
+
from typing import List, Dict, Any, Optional
|
| 11 |
|
| 12 |
# ============================================================================
|
| 13 |
# 🔥 CHAVES DE API
|
|
|
|
| 149 |
REGRAS DE CONTEXTO ABSOLUTAS:
|
| 150 |
1. IDENTIFICAÇÃO DE QUEM FALOU:
|
| 151 |
- Se mensagem citada foi MINHA: "Estou respondendo ao que EU disse antes..."
|
| 152 |
+
- Se mensagem citada foi de OUTRA PESSOA: "Leia o conteúdo da mensagem citada: '{mensagem_citada_texto}' para saber sobre o quê o usuário quer que você fale sobre algo que foi dito por outro, talvez queira uma opinião"
|
| 153 |
- NUNCA assuma que falei algo se não fui eu
|
| 154 |
2. RESPOSTA A MIM MESMA:
|
| 155 |
- Se usuário está respondendo MINHA mensagem: "Tu tá falando do que eu disse..."
|
| 156 |
- Mantenha continuidade do MEU pensamento anterior
|
| 157 |
- Não finja amnésia sobre o que EU disse
|
| 158 |
3. RESPOSTA A TERCEIROS:
|
| 159 |
+
- Se usuário cita outra pessoa: "Isso aí foi [Nome], não eu. Quer o quê?"
|
| 160 |
- Comente sobre a situação, não assuma fala alheia
|
| 161 |
4. SE NÃO HÁ CONTEXTO:
|
| 162 |
- Responda diretamente à mensagem atual
|
|
|
|
| 366 |
return formato
|
| 367 |
|
| 368 |
# ============================================================================
|
| 369 |
+
# 🔧 FUNÇÃO PARA API.PY (PARA USO DIRETO) - SIMPLIFICADA PARA RESOLVER ERRO
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 370 |
# ============================================================================
|
| 371 |
def construir_prompt_api(
|
| 372 |
mensagem: str,
|
|
|
|
| 382 |
Compatível com a chamada atual em api.py
|
| 383 |
"""
|
| 384 |
try:
|
| 385 |
+
# Dados básicos
|
| 386 |
+
humor_atual = analise.get('humor_atualizado', HUMOR_INICIAL)
|
| 387 |
+
tom_usuario = analise.get('tom_usuario', 'normal')
|
| 388 |
+
modo_resposta = analise.get('modo_resposta', 'normal_ironico')
|
| 389 |
+
|
| 390 |
+
# Extrair conteúdo limpo da mensagem citada
|
| 391 |
+
mensagem_citada_texto = mensagem_citada
|
| 392 |
+
if mensagem_citada:
|
| 393 |
+
if mensagem_citada.startswith("[Respondendo à Akira:"):
|
| 394 |
+
mensagem_citada_texto = mensagem_citada[23:]
|
| 395 |
+
elif mensagem_citada.startswith("[") and ":" in mensagem_citada:
|
| 396 |
+
partes = mensagem_citada.split(":", 1)
|
| 397 |
+
if len(partes) > 1:
|
| 398 |
+
mensagem_citada_texto = partes[1].strip()
|
| 399 |
+
|
| 400 |
+
# Determinar contexto de reply
|
| 401 |
+
eh_resposta_akira = False
|
| 402 |
+
if reply_info:
|
| 403 |
+
eh_resposta_akira = reply_info.get('reply_to_bot', False)
|
| 404 |
+
elif mensagem_citada and mensagem_citada.startswith("[Respondendo à Akira:"):
|
| 405 |
+
eh_resposta_akira = True
|
| 406 |
+
|
| 407 |
+
# Usuário privilegiado
|
| 408 |
+
usuario_privilegiado = analise.get('usuario_privilegiado', False)
|
| 409 |
+
privilegiado = USUARIOS_PRIVILEGIADOS.get(analise.get('numero', ''), {})
|
| 410 |
+
nome_usuario = privilegiado.get('nome_curto', usuario) if privilegiado else usuario
|
| 411 |
+
|
| 412 |
+
# Modo config
|
| 413 |
+
modo_config = MODOS_RESPOSTA.get(modo_resposta, MODOS_RESPOSTA['normal_ironico'])
|
| 414 |
+
|
| 415 |
+
# Preparar variáveis para o SYSTEM_PROMPT
|
| 416 |
+
prompt_vars = {
|
| 417 |
+
'humor': humor_atual,
|
| 418 |
+
'humor_desc': HUMORES_BASE.get(humor_atual, ''),
|
| 419 |
+
'tom_usuario': tom_usuario,
|
| 420 |
+
'modo_resposta': modo_resposta,
|
| 421 |
+
'tipo_conversa': tipo_conversa,
|
| 422 |
+
'emocao_detectada': analise.get('emocao_primaria', 'neutral'),
|
| 423 |
+
'regras_modo': modo_config['desc'],
|
| 424 |
+
'max_chars': modo_config['max_chars'],
|
| 425 |
+
'usa_girias': 'SIM' if modo_config['usa_girias'] else 'NÃO',
|
| 426 |
+
'usa_emojis': 'SIM' if modo_config['usa_emojis'] else 'NÃO',
|
| 427 |
+
'prob_emoji': int(modo_config['prob_emoji'] * 100),
|
| 428 |
+
'reply_context': formatar_reply_context({'mensagem_citada': mensagem_citada, 'reply_info': reply_info}),
|
| 429 |
+
'mensagem_citada_texto': mensagem_citada_texto,
|
| 430 |
+
'usuario_privilegiado': f"SIM - {privilegiado.get('nome', '')}" if privilegiado else "NÃO",
|
| 431 |
+
'pode_dar_comandos': 'SIM' if privilegiado.get('pode_dar_ordens', False) else 'NÃO',
|
| 432 |
+
'reply_info_context': formatar_reply_info_context({'reply_info': reply_info}),
|
| 433 |
+
'usuario_citado_nome': reply_info.get('usuario_citado_nome', 'N/A') if reply_info else 'N/A',
|
| 434 |
+
'usuario_citado_numero': reply_info.get('usuario_citado_numero', 'N/A') if reply_info else 'N/A',
|
| 435 |
+
'eh_resposta_akira': 'SIM' if eh_resposta_akira else 'NÃO',
|
| 436 |
+
'contexto_resposta': determinar_contexto_resposta({'reply_info': reply_info}),
|
| 437 |
+
'tipo_isolamento': 'GRUPO' if tipo_conversa == 'grupo' else 'PRIVADO',
|
| 438 |
+
'nome_usuario': nome_usuario
|
| 439 |
+
}
|
| 440 |
+
|
| 441 |
+
# Gerar prompt final
|
| 442 |
+
prompt_final = SYSTEM_PROMPT.format(**prompt_vars)
|
| 443 |
+
|
| 444 |
+
# Adicionar mensagem do usuário no final
|
| 445 |
+
prompt_final += f"\n\nMENSAGEM DO USUÁRIO ({usuario}): {mensagem}"
|
| 446 |
+
|
| 447 |
+
return prompt_final
|
| 448 |
+
|
| 449 |
except Exception as e:
|
| 450 |
# Fallback em caso de erro
|
| 451 |
print(f"Erro ao construir prompt: {e}")
|
|
|
|
| 494 |
# 🎯 TESTE DA CORREÇÃO
|
| 495 |
# ============================================================================
|
| 496 |
if __name__ == "__main__":
|
| 497 |
+
# Teste rápido para verificar se o erro foi resolvido
|
| 498 |
+
test_case = {
|
| 499 |
+
"mensagem": "oquê é latência?",
|
| 500 |
+
"mensagem_citada": "",
|
| 501 |
+
"tipo_conversa": "grupo",
|
| 502 |
+
"reply_info": None,
|
| 503 |
+
"analise": {
|
| 504 |
+
"numero": "244978787009",
|
| 505 |
+
"tom_usuario": "curioso",
|
| 506 |
+
"humor_atualizado": "normal_ironico",
|
| 507 |
+
"usuario_privilegiado": True,
|
| 508 |
+
"emocao_primaria": "neutral",
|
| 509 |
+
"modo_resposta": "tecnico_formal"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 510 |
},
|
| 511 |
+
"usuario": "Isaac Quarenta"
|
| 512 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 513 |
|
| 514 |
print("=" * 80)
|
| 515 |
print("TESTANDO CORREÇÃO DO ERRO 'mensagem_citada'")
|
| 516 |
print("=" * 80)
|
| 517 |
|
| 518 |
+
try:
|
| 519 |
+
prompt = construir_prompt_api(
|
| 520 |
+
mensagem=test_case['mensagem'],
|
| 521 |
+
historico=[],
|
| 522 |
+
mensagem_citada=test_case['mensagem_citada'],
|
| 523 |
+
analise=test_case['analise'],
|
| 524 |
+
usuario=test_case['usuario'],
|
| 525 |
+
tipo_conversa=test_case['tipo_conversa'],
|
| 526 |
+
reply_info=test_case['reply_info']
|
| 527 |
+
)
|
| 528 |
|
| 529 |
+
print("✅ Prompt gerado com sucesso!")
|
| 530 |
+
print(f"📏 Tamanho: {len(prompt)} caracteres")
|
| 531 |
+
print(f"🔍 Contém 'mensagem_citada_texto': {'mensagem_citada_texto' in prompt}")
|
| 532 |
+
|
| 533 |
+
# Mostrar partes do prompt
|
| 534 |
+
lines = prompt.split('\n')
|
| 535 |
+
for i, line in enumerate(lines[:20]): # Primeiras 20 linhas
|
| 536 |
+
print(f" {i:2}: {line[:80]}{'...' if len(line) > 80 else ''}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 537 |
|
| 538 |
+
except KeyError as e:
|
| 539 |
+
print(f"❌ ERRO: Chave faltando - {e}")
|
| 540 |
+
print("Verifique as variáveis no SYSTEM_PROMPT")
|
| 541 |
+
except Exception as e:
|
| 542 |
+
print(f"❌ ERRO: {e}")
|
| 543 |
+
import traceback
|
| 544 |
+
traceback.print_exc()
|
|
|
|
|
|
|
|
|
|
|
|
|
| 545 |
|
| 546 |
print("\n" + "=" * 80)
|
| 547 |
print("VALIDANDO CONFIGURAÇÃO...")
|