Cambios principales: ## Nuevos archivos - services/ai/parallel_provider.py: Ejecución paralela de múltiples proveedores AI - services/ai/prompt_manager.py: Gestión centralizada de prompts (resumen.md como fuente) - latex/resumen.md: Template del prompt para resúmenes académicos LaTeX ## Mejoras en generación LaTeX (document/generators.py) - Nueva función _sanitize_latex(): Corrige automáticamente errores comunes de AI - Agrega align=center a nodos TikZ con saltos de línea (\\) - Previene errores 'Not allowed in LR mode' antes de compilar - Soporte para procesamiento paralelo de proveedores AI - Conversión DOCX en paralelo con generación PDF - Uploads a Notion en background (non-blocking) - Callbacks de notificación para progreso en Telegram ## Mejoras en proveedores AI - claude_provider.py: fix_latex() con instrucciones específicas para errores TikZ - gemini_provider.py: fix_latex() mejorado + rate limiting + circuit breaker - provider_factory.py: Soporte para parallel provider ## Otros cambios - config/settings.py: Nuevas configuraciones para Gemini models - services/webdav_service.py: Mejoras en manejo de conexión - .gitignore: Ignora archivos LaTeX auxiliares (.aux, .toc, .out, .pdf) ## Archivos de ejemplo - latex/imperio_romano.tex, latex/clase_revolucion_rusa_crisis_30.tex - resumen_curiosidades.tex (corregido y compilado exitosamente)
222 lines
5.8 KiB
Markdown
222 lines
5.8 KiB
Markdown
# Prompt para Generar Resúmenes Académicos en LaTeX
|
|
|
|
## Instrucciones de Uso
|
|
|
|
1. Transcribir la clase (audio a texto) usando Whisper o similar
|
|
2. Tener el material bibliográfico en formato digital (PDF escaneado con OCR o texto)
|
|
3. Copiar el prompt de abajo y completar los campos entre `[corchetes]`
|
|
|
|
---
|
|
|
|
## Prompt Template
|
|
|
|
```
|
|
Sos un asistente académico experto en [MATERIA]. Tu tarea es crear un resumen extenso y detallado en LaTeX basado en la transcripción de clase y el material bibliográfico que te proporciono.
|
|
|
|
## Material de entrada
|
|
|
|
### Transcripción de clase:
|
|
[PEGAR TRANSCRIPCIÓN AQUÍ]
|
|
|
|
### Material bibliográfico de apoyo:
|
|
[PEGAR TEXTO DEL LIBRO/APUNTE O INDICAR QUE LO SUBISTE COMO ARCHIVO]
|
|
|
|
## Requisitos del resumen
|
|
|
|
### Extensión y profundidad:
|
|
- Mínimo 10 páginas
|
|
- Cubrir TODOS los temas mencionados en clase
|
|
- Expandir cada concepto con definiciones formales del material bibliográfico
|
|
- No resumir demasiado: preferir explicaciones completas
|
|
|
|
### Estructura obligatoria:
|
|
1. Portada con título, materia, fecha y tema
|
|
2. Índice (table of contents)
|
|
3. Introducción contextualizando el tema
|
|
4. Desarrollo organizado en secciones y subsecciones
|
|
5. Tablas comparativas cuando haya clasificaciones o tipos
|
|
6. Diagramas con TikZ cuando haya procesos, flujos o relaciones
|
|
7. Cajas destacadas para definiciones, ejemplos y conceptos importantes
|
|
8. Fórmulas matemáticas cuando corresponda
|
|
9. Glosario de términos técnicos al final
|
|
10. Referencias al material bibliográfico
|
|
|
|
### Formato LaTeX requerido:
|
|
|
|
```latex
|
|
\documentclass[11pt,a4paper]{article}
|
|
\usepackage[utf8]{inputenc}
|
|
\usepackage[spanish,provide=*]{babel}
|
|
\usepackage{amsmath,amssymb}
|
|
\usepackage{geometry}
|
|
\usepackage{graphicx}
|
|
\usepackage{tikz}
|
|
\usetikzlibrary{arrows.meta,positioning,shapes.geometric,calc}
|
|
\usepackage{booktabs}
|
|
\usepackage{enumitem}
|
|
\usepackage{fancyhdr}
|
|
\usepackage{titlesec}
|
|
\usepackage{tcolorbox}
|
|
\usepackage{array}
|
|
\usepackage{multirow}
|
|
|
|
\geometry{margin=2.5cm}
|
|
\pagestyle{fancy}
|
|
\fancyhf{}
|
|
\fancyhead[L]{[MATERIA] - CBC}
|
|
\fancyhead[R]{Clase [N]}
|
|
\fancyfoot[C]{\thepage}
|
|
|
|
% Cajas para destacar contenido
|
|
\newtcolorbox{definicion}[1][]{
|
|
colback=blue!5!white,
|
|
colframe=blue!75!black,
|
|
fonttitle=\bfseries,
|
|
title=#1
|
|
}
|
|
|
|
\newtcolorbox{importante}[1][]{
|
|
colback=red!5!white,
|
|
colframe=red!75!black,
|
|
fonttitle=\bfseries,
|
|
title=#1
|
|
}
|
|
|
|
\newtcolorbox{ejemplo}[1][]{
|
|
colback=green!5!white,
|
|
colframe=green!50!black,
|
|
fonttitle=\bfseries,
|
|
title=#1
|
|
}
|
|
```
|
|
|
|
### Estilo de contenido:
|
|
- Usar \textbf{} para términos clave en su primera aparición
|
|
- Usar \textit{} para énfasis y palabras en otros idiomas
|
|
- Incluir ejemplos concretos mencionados en clase
|
|
- Relacionar teoría con casos prácticos
|
|
- Mantener el tono académico pero accesible
|
|
- Si el profesor hizo énfasis en algo ("esto es importante", "esto entra en el parcial"), destacarlo en caja roja
|
|
|
|
### Elementos visuales:
|
|
- Tablas con booktabs para comparaciones (usar \toprule, \midrule, \bottomrule)
|
|
- Diagramas TikZ para flujos, ciclos o relaciones entre conceptos
|
|
- Listas itemize/enumerate para secuencias o características
|
|
- Fórmulas centradas con equation o align para expresiones matemáticas
|
|
|
|
## Ejemplo de calidad esperada
|
|
|
|
Para cada concepto principal:
|
|
1. Definición formal (del libro)
|
|
2. Explicación en palabras simples (como lo explicó el profesor)
|
|
3. Ejemplo concreto
|
|
4. Relación con otros conceptos
|
|
5. Por qué es importante / para qué sirve
|
|
|
|
## Output
|
|
|
|
Generá el archivo .tex completo, listo para compilar con pdflatex (dos pasadas para el índice).
|
|
```
|
|
|
|
---
|
|
|
|
## Comandos para compilar
|
|
|
|
```bash
|
|
# Compilar (dos veces para índice)
|
|
pdflatex resumen_clase_X.tex
|
|
pdflatex resumen_clase_X.tex
|
|
|
|
# Abrir PDF
|
|
xdg-open resumen_clase_X.pdf # Linux
|
|
open resumen_clase_X.pdf # macOS
|
|
```
|
|
|
|
---
|
|
|
|
## Pipeline completo
|
|
|
|
### 1. Transcripción de audio (con Whisper)
|
|
|
|
```bash
|
|
# Instalar whisper
|
|
pip install openai-whisper
|
|
|
|
# Transcribir audio de clase
|
|
whisper "clase_X.mp3" --language Spanish --output_format txt
|
|
```
|
|
|
|
### 2. OCR de PDFs escaneados (con marker-pdf)
|
|
|
|
```bash
|
|
# Crear entorno virtual
|
|
python -m venv .venv
|
|
source .venv/bin/activate
|
|
|
|
# Instalar marker
|
|
pip install marker-pdf
|
|
|
|
# Procesar PDF (usa GPU si está disponible)
|
|
marker_single "libro_capitulo_X.pdf" --output_dir output/
|
|
```
|
|
|
|
### 3. Generar resumen
|
|
|
|
Usar el prompt de arriba con:
|
|
- Claude (Anthropic)
|
|
- GPT-4 (OpenAI)
|
|
- Gemini (Google)
|
|
|
|
### 4. Compilar LaTeX
|
|
|
|
```bash
|
|
pdflatex resumen.tex && pdflatex resumen.tex
|
|
```
|
|
|
|
---
|
|
|
|
## Tips para mejores resultados
|
|
|
|
1. **Transcripción completa**: No cortar la transcripción, la IA necesita todo el contexto
|
|
2. **Material bibliográfico**: Incluir los capítulos específicos, no todo el libro
|
|
3. **Ser específico**: Indicar la materia, el nivel (CBC, carrera, posgrado) y el enfoque del profesor
|
|
4. **Iterar**: Si el primer resultado es corto, pedir "expandí la sección X con más detalle"
|
|
5. **Diagramas**: Si hay un diagrama importante, describirlo y pedir que lo haga en TikZ
|
|
6. **Revisar**: La IA puede cometer errores conceptuales, siempre verificar con el material
|
|
|
|
---
|
|
|
|
## Materias donde funciona bien
|
|
|
|
- Economía (micro/macro)
|
|
- Física
|
|
- Química
|
|
- Matemática (álgebra, análisis)
|
|
- Biología
|
|
- Sociología
|
|
- Historia
|
|
- Derecho (con adaptaciones)
|
|
- Cualquier materia con contenido teórico estructurado
|
|
|
|
---
|
|
|
|
## Ejemplo de uso rápido
|
|
|
|
```
|
|
Sos un asistente académico experto en Física. Creá un resumen extenso en LaTeX sobre "Cinemática" basado en esta transcripción de clase del CBC:
|
|
|
|
[pegar transcripción]
|
|
|
|
Material de apoyo: Capítulo 2 de Serway "Movimiento en una dimensión":
|
|
|
|
[pegar texto del capítulo]
|
|
|
|
Incluí:
|
|
- Definiciones de posición, velocidad, aceleración
|
|
- Fórmulas del MRU y MRUV
|
|
- Diagramas de movimiento con TikZ
|
|
- Gráficos posición-tiempo y velocidad-tiempo
|
|
- Ejemplos resueltos paso a paso
|
|
- Glosario de términos
|
|
```
|