custom promtp no esstaba funcionando

This commit is contained in:
2025-11-26 00:13:32 -03:00
parent 98f0d94564
commit b867f11450
2 changed files with 64 additions and 25 deletions

View File

@@ -1591,13 +1591,25 @@ VALIDACIÓN DE IMAGEN:
- Si la imagen NO corresponde al contexto de la pregunta (por ejemplo, si piden luces pero muestran motor), indica en "recommendation" que deben cambiar la foto
- Si la imagen es borrosa, oscura o no permite análisis, indica en "recommendation" que tomen otra foto más clara
Responde en formato JSON:
Responde SOLO en formato JSON válido (sin markdown, sin ```json):
{{
"status": "ok|minor|critical",
"observations": "Análisis específico según el prompt personalizado, considerando el vehículo {inspection.vehicle_brand if inspection_id else ''}",
"recommendation": "Si la imagen no es apropiada, indica 'Por favor tome una foto de [componente correcto]'. Si es apropiada, da recomendación técnica.",
"confidence": 0.0-1.0
}}"""
"status": "ok",
"observations": "Análisis técnico específico según las instrucciones del prompt personalizado",
"recommendation": "Acción recomendada basada en el análisis",
"confidence": 0.85
}}
NOTA IMPORTANTE sobre el campo "status":
- Usa "ok" si el componente está en buen estado y pasa la inspección
- Usa "minor" si hay problemas leves que requieren atención pero no son críticos
- Usa "critical" si hay problemas graves que requieren reparación inmediata
RECORDATORIO: En tus observaciones, menciona si el estado es apropiado para el kilometraje y marca/modelo del vehículo."""
if vehicle_context:
user_message = f"Inspecciona esta imagen del vehículo y responde específicamente: {question_obj.text}. Aplica las instrucciones personalizadas y considera el contexto del vehículo en tu análisis."
else:
user_message = f"Inspecciona la imagen y responde específicamente: {question_obj.text}"
else:
# Prompt altamente específico para la pregunta
question_text = question_obj.text
@@ -1619,21 +1631,27 @@ VALIDACIÓN DE IMAGEN:
- Si la imagen NO corresponde al contexto de la pregunta, indica en "recommendation" que deben cambiar la foto
- Si la imagen es borrosa o no permite análisis, indica en "recommendation" que tomen otra foto más clara
Responde en formato JSON:
Responde SOLO en formato JSON válido (sin markdown, sin ```json):
{{
"status": "ok|minor|critical",
"observations": "Respuesta específica a: {question_text}",
"recommendation": "Si la imagen no es apropiada, indica 'Por favor tome una foto de [componente correcto]'. Si es apropiada, da acción técnica si aplica.",
"confidence": 0.0-1.0
"status": "ok",
"observations": "Respuesta técnica específica a: {question_text}",
"recommendation": "Acción técnica recomendada o mensaje si la foto no es apropiada",
"confidence": 0.85
}}
IMPORTANTE:
NOTA IMPORTANTE sobre el campo "status":
- Usa "ok" si el componente está en buen estado y pasa la inspección
- Usa "minor" si hay problemas leves que requieren atención pero no son críticos
- Usa "critical" si hay problemas graves que requieren reparación inmediata
RECUERDA:
- Responde SOLO lo que la pregunta pide
- No des información genérica del vehículo
- Sé específico y técnico
- Si la pregunta es pass/fail, indica claramente si pasa o falla
- Si la pregunta es bueno/regular/malo, indica el estado específico del componente"""
- Sé específico y técnico"""
if vehicle_context:
user_message = f"Inspecciona esta imagen del vehículo y responde específicamente: {question_obj.text}. En tus observaciones, menciona si el estado es apropiado para el kilometraje y marca/modelo del vehículo."
else:
user_message = f"Inspecciona la imagen y responde específicamente: {question_obj.text}"
else:
# Fallback para análisis general
@@ -1647,13 +1665,15 @@ Analiza la imagen y proporciona:
3. Observaciones técnicas breves
4. Recomendación de acción
Responde en formato JSON:
Responde SOLO en formato JSON válido (sin markdown, sin ```json):
{{
"status": "ok|minor|critical",
"observations": "descripción técnica",
"status": "ok",
"observations": "descripción técnica del componente",
"recommendation": "acción sugerida",
"confidence": 0.0-1.0
}}"""
"confidence": 0.85
}}
NOTA: "status" debe ser "ok" (bueno), "minor" (problemas leves) o "critical" (problemas graves)."""
user_message = "Analiza este componente del vehículo para la inspección general."
if ai_config.provider == "openai":

View File

@@ -3032,13 +3032,13 @@ function InspectionModal({ checklist, user, onClose, onComplete }) {
const filesArray = Array.from(files)
// Update photos immediately
setAnswers({
...answers,
setAnswers(prev => ({
...prev,
[questionId]: {
...answers[questionId],
...(prev[questionId] || { value: '', observations: '', photos: [] }),
photos: filesArray
}
})
}))
// If AI mode is assisted or full, analyze the photos
if ((checklist.ai_mode === 'assisted' || checklist.ai_mode === 'full') && filesArray.length > 0) {
@@ -3050,6 +3050,10 @@ function InspectionModal({ checklist, user, onClose, onComplete }) {
const question = questions.find(q => q.id === questionId)
if (!question) return
console.log('🔍 Iniciando análisis IA para pregunta:', questionId)
console.log('📸 Archivos a analizar:', files.length)
console.log('🎯 Modo IA del checklist:', checklist.ai_mode)
setAiAnalyzing(true)
try {
@@ -3106,9 +3110,11 @@ function InspectionModal({ checklist, user, onClose, onComplete }) {
}
if (analyses.length > 0) {
console.log('✅ Análisis recibidos:', analyses.length)
// Process analysis results
const firstResult = analyses[0]
const analysis = firstResult.analysis
console.log('📊 Análisis completo:', analysis)
let suggestedAnswer = null
let observationsText = ''
@@ -3193,6 +3199,19 @@ function InspectionModal({ checklist, user, onClose, onComplete }) {
console.log(`🤖 ASSISTED MODE: Sugerencia agregada a observaciones`)
console.log(`📝 Observaciones guardadas:`, `${suggestedAnswer ? `[IA Sugiere: ${suggestedAnswer}]\n` : ''}${observationsText}`)
}
// Siempre guardar observaciones incluso si no hay modo específico o sugerencia
else if (observationsText) {
setAnswers(prev => ({
...prev,
[questionId]: {
...(prev[questionId] || { value: '', observations: '', photos: [] }),
observations: observationsText,
photos: files,
aiAnalysis: firstResult.analysis
}
}))
console.log(`🤖 Análisis IA guardado en observaciones:`, observationsText)
}
}
} catch (error) {
console.error('❌ Error al analizar fotos con IA:', error)