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 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
|
- 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",
|
"status": "ok",
|
||||||
"observations": "Análisis específico según el prompt personalizado, considerando el vehículo {inspection.vehicle_brand if inspection_id else ''}",
|
"observations": "Análisis técnico específico según las instrucciones del prompt personalizado",
|
||||||
"recommendation": "Si la imagen no es apropiada, indica 'Por favor tome una foto de [componente correcto]'. Si es apropiada, da recomendación técnica.",
|
"recommendation": "Acción recomendada basada en el análisis",
|
||||||
"confidence": 0.0-1.0
|
"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:
|
else:
|
||||||
# Prompt altamente específico para la pregunta
|
# Prompt altamente específico para la pregunta
|
||||||
question_text = question_obj.text
|
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 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
|
- 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",
|
"status": "ok",
|
||||||
"observations": "Respuesta específica a: {question_text}",
|
"observations": "Respuesta técnica 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.",
|
"recommendation": "Acción técnica recomendada o mensaje si la foto no es apropiada",
|
||||||
"confidence": 0.0-1.0
|
"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
|
- Responde SOLO lo que la pregunta pide
|
||||||
- No des información genérica del vehículo
|
- No des información genérica del vehículo
|
||||||
- Sé específico y técnico
|
- 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"""
|
|
||||||
|
|
||||||
|
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}"
|
user_message = f"Inspecciona la imagen y responde específicamente: {question_obj.text}"
|
||||||
else:
|
else:
|
||||||
# Fallback para análisis general
|
# Fallback para análisis general
|
||||||
@@ -1647,13 +1665,15 @@ Analiza la imagen y proporciona:
|
|||||||
3. Observaciones técnicas breves
|
3. Observaciones técnicas breves
|
||||||
4. Recomendación de acción
|
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",
|
"status": "ok",
|
||||||
"observations": "descripción técnica",
|
"observations": "descripción técnica del componente",
|
||||||
"recommendation": "acción sugerida",
|
"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."
|
user_message = "Analiza este componente del vehículo para la inspección general."
|
||||||
|
|
||||||
if ai_config.provider == "openai":
|
if ai_config.provider == "openai":
|
||||||
|
|||||||
@@ -3032,13 +3032,13 @@ function InspectionModal({ checklist, user, onClose, onComplete }) {
|
|||||||
const filesArray = Array.from(files)
|
const filesArray = Array.from(files)
|
||||||
|
|
||||||
// Update photos immediately
|
// Update photos immediately
|
||||||
setAnswers({
|
setAnswers(prev => ({
|
||||||
...answers,
|
...prev,
|
||||||
[questionId]: {
|
[questionId]: {
|
||||||
...answers[questionId],
|
...(prev[questionId] || { value: '', observations: '', photos: [] }),
|
||||||
photos: filesArray
|
photos: filesArray
|
||||||
}
|
}
|
||||||
})
|
}))
|
||||||
|
|
||||||
// If AI mode is assisted or full, analyze the photos
|
// If AI mode is assisted or full, analyze the photos
|
||||||
if ((checklist.ai_mode === 'assisted' || checklist.ai_mode === 'full') && filesArray.length > 0) {
|
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)
|
const question = questions.find(q => q.id === questionId)
|
||||||
if (!question) return
|
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)
|
setAiAnalyzing(true)
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -3106,9 +3110,11 @@ function InspectionModal({ checklist, user, onClose, onComplete }) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (analyses.length > 0) {
|
if (analyses.length > 0) {
|
||||||
|
console.log('✅ Análisis recibidos:', analyses.length)
|
||||||
// Process analysis results
|
// Process analysis results
|
||||||
const firstResult = analyses[0]
|
const firstResult = analyses[0]
|
||||||
const analysis = firstResult.analysis
|
const analysis = firstResult.analysis
|
||||||
|
console.log('📊 Análisis completo:', analysis)
|
||||||
let suggestedAnswer = null
|
let suggestedAnswer = null
|
||||||
let observationsText = ''
|
let observationsText = ''
|
||||||
|
|
||||||
@@ -3193,6 +3199,19 @@ function InspectionModal({ checklist, user, onClose, onComplete }) {
|
|||||||
console.log(`🤖 ASSISTED MODE: Sugerencia agregada a observaciones`)
|
console.log(`🤖 ASSISTED MODE: Sugerencia agregada a observaciones`)
|
||||||
console.log(`📝 Observaciones guardadas:`, `${suggestedAnswer ? `[IA Sugiere: ${suggestedAnswer}]\n` : ''}${observationsText}`)
|
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) {
|
} catch (error) {
|
||||||
console.error('❌ Error al analizar fotos con IA:', error)
|
console.error('❌ Error al analizar fotos con IA:', error)
|
||||||
|
|||||||
Reference in New Issue
Block a user