“Make me the regional sales report from sales.csv” es una solicitud que un modelo de lenguaje responderá gustosamente generando una tabla Markdown, redondeando uno que otro número en el proceso y describiendo un gráfico que no puede dibujar. Con GroupDocs.Assembly.Mcp ejecutándose localmente (dnx GroupDocs.Assembly.Mcp --yes), Claude Desktop, Cursor o Copilot entregan el archivo de datos al motor en su lugar: su plantilla de Word o PowerPoint contiene la tabla, los totales y un gráfico real, y el servidor los completa a partir del CSV o la hoja de cálculo sin que los números pasen nunca por el modelo:

Construye el informe de ventas regional a partir de sales.xlsx con sales-report.docx como PDF, y la diapositiva del gráfico con sales-chart.pptx.

La versión paso a paso con configuración y solución de problemas está en la documentación: Cómo crear un informe con tablas y gráficos a partir de un archivo CSV o de hoja de cálculo con un agente de IA.

¿Por qué deberían los números saltarse el modelo?

Porque un modelo es un generador de texto, y un informe es aritmética más diseño. Cuando un agente lee un CSV y escribe el informe por sí mismo, cada valor se vuelve a escribir mediante la predicción del siguiente token. La mayoría sale bien. El que no lo hace es invisible hasta que alguien lo verifica contra la fuente, que es precisamente el trabajo que el informe pretendía ahorrar. Los gráficos son peor: el modelo puede describir uno o generar código para uno, pero el gráfico en su presentación trimestral es un objeto dentro de un archivo PowerPoint, con estilo definido por alguien del marketing.

Así que separe el trabajo según lo que cada parte hace mejor. La plantilla decide cómo se ve el informe. El motor lee el archivo y realiza los cálculos. El agente elige la plantilla y los datos, y le indica lo que salió.

Qué pasa el agente y qué ve el motor

Aquí está la división en una tabla:

the agent decides        the engine does            the template owns
-----------------------  -------------------------  -----------------------
which template           reads sales.xlsx/.csv      the table layout
which data file          types the columns          the chart and its style
output format (pdf)      sums, sorts, picks max     headings, fonts, logo
                         fills table rows, chart    what "total" means

Antes de generar, el agente puede inspeccionar el archivo de datos. Para nuestra hoja de cálculo el servidor informó una tabla con tres columnas:

-> get_document_info {"file":{"filePath":"sales.xlsx"}}
<- { "dataKind": "table",
     "data": { "tableCount": 1, "tables": [ { "number": 1,
       "columns": [ "Region", "Quarter", "Revenue" ] } ] } }

El informe de tabla

La plantilla de Word tiene una fila de tabla con <<foreach [r in sales]>> en su primera celda y <</foreach>> en la última, más dos líneas debajo: <<[sales.Sum(r => r.Revenue)]>> y <<[sales.OrderByDescending(r => r.Revenue).First().Region]>>. Una llamada:

-> assemble_document {"template":{"filePath":"sales-report.docx"},
     "data":{"filePath":"sales.xlsx"},"format":"pdf"}
<- Assembled 'sales-report.docx' with 'sales.xlsx' (table 1 (3
   column(s): Region, Quarter, Revenue) as 'sales') as PDF
   Saved to: .../sales-report_assembled.pdf

El informe tiene cuatro filas (North 182000, South 146500, East 98250, West 211900), “Total revenue: 638650 EUR” y “Best region: West”. El servidor nombró los datos sales porque eso es lo que la plantilla itera; nadie tuvo que decirlo. La misma plantilla con sales.csv dio los mismos totales; para CSV, hasHeaders y csvDelimiter cubren archivos sin fila de encabezado o con punto y coma.

El gráfico

Un gráfico en una plantilla de GroupDocs.Assembly es un gráfico ordinario con etiquetas en dos lugares. El título del gráfico lee Revenue by region<<foreach [r in sales]>><<x [r.Region]>>: recorre las filas, una categoría por región. El nombre de la serie lee Revenue<<y [r.Revenue]>>: un valor por fila. Los datos de marcador de posición dentro del gráfico están solo para que el diseñador los vea.

-> assemble_document {"template":{"filePath":"sales-chart.pptx"},
     "data":{"filePath":"sales.xlsx"}}
<- Assembled 'sales-chart.pptx' with 'sales.xlsx' (table 1 (3
   column(s): Region, Quarter, Revenue) as 'sales') as PPTX
   Saved to: .../sales-chart_assembled.pptx

Abrimos el resultado: un gráfico de columnas titulado Revenue by region, categorías North, South, East y West, valores 182000, 146500, 98250 y 211900, con las etiquetas eliminadas y el estilo de la plantilla intacto. Las mismas etiquetas funcionan en gráficos de Word y Excel.

¿Por qué no pedirle al agente una imagen del gráfico?

Puedes hacerlo, y para una respuesta puntual en chat está bien. Para un informe tiene tres problemas: la imagen es una foto, por lo que nadie puede hacer clic en ella y verificar un valor; su estilo es el que el código de trazado asignó por defecto, no el estilo corporativo; y los números que muestra pasaron por el modelo en el proceso. Un gráfico de plantilla es un objeto de gráfico nativo, rellenado desde el archivo, estilizado una sola vez por quien sea dueño de la plantilla.

Límites honestos

  • Las etiquetas de tabla y gráfico deben estar ya en la plantilla; el agente no las diseña. get_template_fields muestra qué datos lee la plantilla.
  • Modo de evaluación: cada salida comienza con “Evaluation Only. Created with GroupDocs.Assembly 26.7…”, y los libros guardados ganan una hoja de cálculo extra.
  • Una lista que está vacía en los datos no tiene tipos de columna, por lo que la aritmética sobre ella falla, incluso con allowMissingMembers. Verifica que el filtro que solicitas devuelva filas.
  • Las plantillas de presentación en Linux necesitan libgdiplus cuando se ejecutan a través de dnx; la imagen Docker lo incluye.
  • Fechas en archivos de datos: mantenlas como fechas o ISO completo con hora, y formateálas en la plantilla.

Preguntas frecuentes

¿Puede un agente de IA crear un gráfico a partir de mi CSV sin subirlo?
Sí. El servidor se ejecuta localmente, lee el CSV o la hoja de cálculo desde su carpeta de almacenamiento y escribe el informe allí; los números van del archivo al documento sin pasar por el modelo.

¿Qué tipos de archivos de datos puede leer la plantilla?
JSON, XML, CSV y TSV, y una tabla dentro de una hoja de cálculo, documento Word o PowerPoint; dataTable elige la tabla cuando hay varias.

¿Puede el informe ser un archivo Excel en lugar de un PDF?
Sí, use una plantilla XLSX; las etiquetas se colocan en celdas de la hoja de cálculo. En modo de evaluación el libro guardado gana una hoja de cálculo extra.

Profundiza más