From a1ab9555568009422e6d985295958c66bf6a3cf6 Mon Sep 17 00:00:00 2001 From: ronalds Date: Thu, 4 Dec 2025 14:05:32 -0300 Subject: [PATCH] =?UTF-8?q?=E2=9C=85=20Backend=20v1.2.3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cambio implementado: Ahora el prompt del asistente configurado en la pregunta es el system prompt completo. El sistema solo agrega: Contexto automático: Vehículo, OR, pregunta actual Instrucciones técnicas básicas: No inventar datos, pedir valores técnicos cuando falten Longitud de respuesta: Según configuración Beneficios: ✅ Tu prompt de "Omar" funciona exactamente como lo escribiste ✅ Mantienes control total del comportamiento del asistente ✅ El sistema solo complementa con contexto, no reemplaza tu prompt ✅ Más flexible para diferentes tipos de asistentes (diagnóstico, checklist, inspección, etc.) --- backend/app/main.py | 37 ++++++++++++++++--------------------- 1 file changed, 16 insertions(+), 21 deletions(-) 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