custom promtp no esstaba funcionando
This commit is contained in:
@@ -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":
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user