Prompts y citas
Cómo los proveedores de chat reciben evidencia y devuelven respuestas con registros de citas inspeccionables.
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:
- responda directamente;
- use solo los extractos proporcionados;
- prefiera artefactos literarios para preguntas literarias amplias;
- evite volcar pasajes largos;
- distinga evidencia de interpretación;
- cite extractos inline con números entre corchetes;
- diga qué falta cuando la evidencia es insuficiente.
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:
- ID de documento;
- nombre de archivo;
- índice de chunk;
- número de página;
- score;
- snippet;
- tipo de chunk;
- título;
- si la cita es un artefacto generado;
- tipo de artefacto cuando aplica.
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.