Inicio de la guía 1. Topología de la solución 2. Aspire como plano de control local 3. Configuración y contratos compartidos 4. Metadatos con SQLite y EF Core 5. API e interfaz de carga 6. Almacenamiento de objetos con MinIO 7. Pipeline de ingesta del worker 8. Extracción y división de texto 9. Artefactos literarios 10. Abstracciones de proveedores de IA 11. Almacenamiento vectorial con Qdrant 12. Flujo de preguntas y recuperación 13. Prompts y citas 14. Pruebas del pipeline 15. Notas de desarrollo local Todas las guías
Navegación de la guíaÍndice y capítulos
Capítulo 13

Prompts y citas

Cómo los proveedores de chat reciben evidencia y devuelven respuestas con registros de citas inspeccionables.

Nota de traducción: Esta versión en español fue traducida con ayuda de un LLM y revisada para conservar los términos técnicos, el código y los nombres de archivos en inglés cuando corresponde.
Imagen decorativa del capítulo sobre Prompts y citas
La API devuelve respuesta más registros de citas
public sealed record AskResponse(
    string Answer,
    IReadOnlyList<CitationDto> Citations,
    RetrievalDiagnostics? Diagnostics = null);

public sealed record CitationDto(
    Guid DocumentId,
    string FileName,
    int ChunkIndex,
    int? PageNumber,
    double Score,
    string Snippet,
    string ChunkType = "source",
    string? Title = null,
    bool IsGeneratedArtifact = false,
    string? ArtifactKind = null);

La forma del prompt de chat es compartida por los proveedores Gemini y Ollama. GeminiChatCompletionProvider y OllamaChatCompletionProvider envían un mensaje de sistema más un mensaje de usuario que contiene extractos de evidencia numerados.

El prompt de sistema indica al modelo que:

El prompt de usuario lista extractos numerados:

[1] File name, page, chunk
chunk text...

[2] File name, page, chunk
chunk text...

La API devuelve registros CitationDto con:

La UI muestra estas citas debajo de la respuesta para que el usuario pueda inspeccionar de dónde vino la respuesta.

La UI etiqueta las citas como Source text, Generated book-club profile, Generated name profile o una ayuda genérica de recuperación generada.

Las citas no son prueba

Una cita en esta app significa: "este chunk fue seleccionado y enviado como contexto". No prueba que el modelo haya usado el chunk correctamente, y no prueba que un artefacto generado sea evidencia directa de la fuente. Esa distinción es la razón por la que los DTOs de citas exponen ChunkType, Title, IsGeneratedArtifact y ArtifactKind.

En un sistema de producción más estricto, la fidelidad de citas se evaluaría por separado: si cada afirmación de la respuesta tiene soporte en texto fuente citado, si el modelo citó el extracto correcto y si evitó tratar resúmenes generados como verdad de base.