¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Proyecto final: un asistente de documentos

Después de esta lección: Puedo planificar y comprobar una función que contesta a partir de documentos.

Lección de 60 minSin comandos

Cuarenta normas y las mismas preguntas

Un asistente de documentos contesta preguntas con los archivos de la propia empresa y dice qué archivo usó. Una gestoría de Sevilla tiene 40 documentos de normas internas, y la plantilla pregunta lo mismo cada día.

En este proyecto final planificas una función así y decides cómo comprobarla. Trabajas con una muestra grabada, así que las cifras son fijas y puedes comparar.

Al final de esta lección

Nota

Puedo planificar y comprobar una función que contesta a partir de documentos.

Palabras clave

PalabraQué significaEjemplo
Especificaciónun plan breve y escrito de lo que debe hacer una función
Recuperaciónencontrar los fragmentos que contienen la respuesta
Fuenteel documento del que salió una respuestavacaciones.pdf
Negativadecir que los documentos no lo responden
Cifra de aceptaciónla nota que una función debe alcanzar antes de publicarse

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Para profundizar

Nota

Este proyecto planifica y comprueba; no enseña la recuperación. Eso lo hacen las lecciones de IA de la página Recursos. Generación aumentada por recuperación. Evaluación y pruebas de funciones con modelos. Sistemas de recuperación.

La especificación dice qué es hacerlo bien

Antes de escribir código, redacta una especificación de media página. Di quién usa la función y qué documentos puede leer. Di qué debe mostrar cada respuesta, como su fuente.

Di también lo que nunca debe hacer. En un asistente de documentos, lo más grave es inventar. Cuando ningún documento responde, da una negativa.

Ejemplo resuelto: la especificación en una página

Parte de la especificaciónLo que escribimos
Quién la usaLa plantilla de la gestoría, con sesión iniciada
Qué puede leerLos 40 documentos de normas, nada más
Cada respuesta debeNombrar el documento del que sale
Nunca debeInventar cuando ningún documento responde
Cifras de aceptación18 de 20 bien, y todas las preguntas sin respuesta rechazadas

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un conjunto de evaluación son preguntas fijas

El conjunto de evaluación convierte la especificación en casos. Cada caso es una pregunta y el documento que debería responderla. Algunos casos no tienen documento a propósito, para probar la negativa.

Mantén el conjunto fijo para poder comparar dos ejecuciones. El programa revisa una muestra grabada de cinco casos.

Pruébalo: revisa una muestra grabada

Código: python
# Una muestra grabada: lo que contestó el asistente en las pruebas.
# "source" es el documento del que debería salir la respuesta.
# Si source está vacío, ningún documento lo responde: hay que negarse.
cases = [
    {"question": "¿Cuántos días de vacaciones tengo?", "source": "vacaciones.pdf", "got": "vacaciones.pdf"},
    {"question": "¿Cómo paso un taxi como gasto?", "source": "gastos.pdf", "got": "gastos.pdf"},
    {"question": "¿Quién arregla mi portátil?", "source": "soporte-it.pdf", "got": "vacaciones.pdf"},
    {"question": "¿Cuánto cobra la directora general?", "source": "", "got": ""},
    {"question": "¿Puedo traer a mi perro?", "source": "", "got": "oficina.pdf"},
]

right = 0
for case in cases:
    if case["got"] == case["source"]:
        right = right + 1
    else:
        print("Revisar:", case["question"])

print("Bien:", right, "de", len(cases))

# Cambia la respuesta del portátil a "soporte-it.pdf" y vuelve a ejecutar.

Las cifras de aceptación deciden la publicación

La cifra de aceptación se escribe en la especificación antes de empezar a probar. Aquí son dos cifras: al menos 18 de 20 bien, y ninguna respuesta inventada.

Hacen falta dos porque una puede tapar la otra. Una función puede sacar 19 de 20 e inventarse una respuesta sobre la nómina. Ese invento bloquea la publicación.

Un error frecuente

Advertencia

Mucha gente cree que unas cuantas preguntas probadas a mano demuestran que la función va bien. Un puñado de intentos esconde los fallos raros. Usa un conjunto fijo de al menos 20 casos, con preguntas sin respuesta, y ejecútalo tras cada cambio.

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.