Backend v1.2.3

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.)
This commit is contained in:
2025-12-04 14:05:32 -03:00
parent 14d5027170
commit a1ab955556

View File

@@ -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