diff --git a/backend/app/main.py b/backend/app/main.py index 1770124..742a2a0 100644 --- a/backend/app/main.py +++ b/backend/app/main.py @@ -276,7 +276,7 @@ def extract_pdf_text_smart(pdf_content: bytes, max_chars: int = None) -> dict: } -BACKEND_VERSION = "1.2.2" +BACKEND_VERSION = "1.2.3" app = FastAPI(title="Checklist Inteligente API", version=BACKEND_VERSION) # S3/MinIO configuration @@ -3541,36 +3541,31 @@ INFORMACIÓN DEL VEHÍCULO: attached_context += f"\n{idx}. Imagen: {file_info['filename']}\n" # Construir el system prompt - base_prompt = assistant_prompt or "Eres un experto mecánico automotriz que ayuda a diagnosticar problemas." + # Si hay assistant_prompt en la pregunta, úsalo como base principal + if assistant_prompt: + base_prompt = assistant_prompt + else: + base_prompt = "Eres un experto mecánico automotriz que ayuda a diagnosticar problemas." - system_prompt = f"""INSTRUCCIONES CRÍTICAS ANTI-ALUCINACIÓN (MÁXIMA PRIORIDAD): -Estas reglas SIEMPRE tienen prioridad sobre cualquier otra instrucción: - -1. PRIMERO mira la imagen/documento y DESCRIBE LITERALMENTE lo que ves -2. VERIFICA si hay texto/logos/marcas visibles (ej: "TEXA", "Bosch", "ESI[tronic]") -3. Si la imagen muestra un analizador de gases (con mediciones CO, CO₂, HC, NOₓ, O₂, Lambda), NO ES un informe de códigos DTC -4. Si la imagen muestra una pantalla con códigos tipo "P0XXX" o "1XXXX", SÍ ES un informe de diagnóstico DTC -5. NUNCA inventes información que no esté visible en la imagen -6. Si lo que ves NO coincide con lo que el usuario pregunta, DÍSELO INMEDIATAMENTE - -{base_prompt} + # Agregar instrucciones anti-alucinación y contexto al prompt del usuario + system_prompt = f"""{base_prompt} +CONTEXTO DEL VEHÍCULO Y PREGUNTA: {vehicle_context} {photos_context} {attached_context} -INSTRUCCIONES ADICIONALES: -{assistant_instructions if assistant_instructions else "Sé técnico, claro y directo en tus respuestas."} +INSTRUCCIONES TÉCNICAS DEL SISTEMA: +- Basa tus respuestas SOLO en la información visible en documentos/imágenes enviadas +- Si necesitas datos técnicos (valores nominales, rangos de fabricante), pídelos explícitamente +- No inventes códigos DTC, voltajes, presiones ni valores que no estén visibles +- Si hay discrepancia entre lo que ves y lo que te preguntan, señálalo -FORMATO DE RESPUESTA OBLIGATORIO: -1. [IDENTIFICACIÓN] Qué tipo de documento/imagen es esto (describe lo que VES, no lo que asumes) -2. [VERIFICACIÓN] ¿Coincide con lo que el usuario pregunta? Si NO, indícalo -3. [ANÁLISIS] Basado ÚNICAMENTE en información visible -4. [RECOMENDACIÓN] Pasos siguientes o información que necesitas +{assistant_instructions if assistant_instructions else ""} -Longitud: {response_length} +Longitud de respuesta: {response_length} """ # Construir el historial de mensajes para la IA