“Make me the regional sales report from sales.csv” to prośba, na którą model językowy chętnie odpowie, generując tabelę w Markdown, zaokrąglając jedną‑dwie liczby po drodze i opisując wykres, którego nie potrafi narysować. Przy uruchomionym lokalnie GroupDocs.Assembly.Mcp (dnx GroupDocs.Assembly.Mcp --yes), Claude Desktop, Cursor lub Copilot przekazują plik danych do silnika: szablon Worda lub PowerPointa zawiera tabelę, sumy i prawdziwy wykres, a serwer wypełnia je z pliku CSV lub arkusza kalkulacyjnego, nie przepuszczając liczb przez model:
Utwórz regionalny raport sprzedaży z pliku sales.xlsx, zapisując sales-report.docx jako PDF oraz slajd wykresu jako sales-chart.pptx.
Szczegółowa wersja krok po kroku z konfiguracją i rozwiązywaniem problemów znajduje się w dokumentacji: Jak zbudować raport z tabelami i wykresami z pliku CSV lub arkusza kalkulacyjnego przy użyciu agenta AI.
Dlaczego liczby powinny ominąć model?
Ponieważ model jest generatorem tekstu, a raport to arytmetyka plus układ. Gdy agent odczytuje CSV i sam tworzy raport, każda wartość jest wpisywana przez prognozowanie kolejnego tokenu. Większość wychodzi poprawnie. Ta, która nie, jest niewidoczna, dopóki ktoś nie sprawdzi jej w źródle – dokładnie to zadanie, które raport miał zaoszczędzić. Wykresy są jeszcze gorsze: model może je opisać lub wygenerować kod, ale wykres w kwartalnym decku to obiekt w pliku PowerPoint, stylizowany przez kogoś z marketingu.
Dlatego podziel pracę według mocnych stron każdej ze stron. Szablon określa, jak raport ma wyglądać. Silnik odczytuje plik i wykonuje obliczenia. Agent wybiera szablon i dane oraz informuje, co wyszło.
Co przekazuje agent, a co widzi silnik
Oto podział w jednej tabeli:
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
Przed generowaniem agent może spojrzeć na plik danych. Dla naszego arkusza serwer zgłosił jedną tabelę z trzema kolumnami:
-> get_document_info {"file":{"filePath":"sales.xlsx"}}
<- { "dataKind": "table",
"data": { "tableCount": 1, "tables": [ { "number": 1,
"columns": [ "Region", "Quarter", "Revenue" ] } ] } }
Raport tabelaryczny
Szablon Worda ma jeden wiersz tabeli z <<foreach [r in sales]>> w pierwszej komórce i <</foreach>> w ostatniej, plus dwie linie poniżej: <<[sales.Sum(r => r.Revenue)]>> oraz <<[sales.OrderByDescending(r => r.Revenue).First().Region]>>. Jedno wywołanie:
-> 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
Raport zawiera cztery wiersze (North 182000, South 146500, East 98250, West 211900), „Total revenue: 638650 EUR” oraz „Best region: West”. Serwer nazwał dane sales, ponieważ tak szablon iteruje; nikt nie musiał tego określać. Ten sam szablon z sales.csv dał te same sumy; dla CSV parametry hasHeaders i csvDelimiter obsługują pliki bez wiersza nagłówka lub z średnikami.
Wykres
Wykres w szablonie GroupDocs.Assembly to zwykły wykres z tagami w dwóch miejscach. Tytuł wykresu brzmi Revenue by region<<foreach [r in sales]>><<x [r.Region]>>: pętla po wierszach, jedna kategoria na region. Nazwa serii to Revenue<<y [r.Revenue]>>: jedna wartość na wiersz. Dane zastępcze wewnątrz wykresu służą jedynie projektantowi do podglądu.
-> 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
Otworzyliśmy wynik: wykres słupkowy zatytułowany Revenue by region, kategorie North, South, East i West, wartości 182000, 146500, 98250 i 211900, z usuniętymi tagami i nienaruszonym stylem szablonu. Te same tagi działają w wykresach Worda i Excela.
Dlaczego nie prosić agenta o obraz wykresu?
Można, i w jednorazowej odpowiedzi w czacie to w porządku. W raporcie pojawiają się trzy problemy: obraz to zdjęcie, więc nikt nie może w nie kliknąć i sprawdzić wartości; jego styl to domyślne ustawienia kodu rysującego, a nie Twój firmowy styl; oraz liczby na obrazie przeszły przez model. Wykres szablonowy to natywny obiekt wykresu, wypełniony z pliku i wystylizowany raz przez właściciela szablonu.
Szczere ograniczenia
- Tagi tabeli i wykresu muszą już znajdować się w szablonie; agent ich nie projektuje.
get_template_fieldspokazuje, jakie dane szablon odczytuje. - Tryb ewaluacji: każde wyjście zaczyna się od „Evaluation Only. Created with GroupDocs.Assembly 26.7…”, a zapisane skoroszyty zyskują dodatkowy arkusz.
- Lista, która jest pusta w danych, nie ma typów kolumn, więc operacje arytmetyczne na niej zawodzą, nawet przy
allowMissingMembers. Sprawdź, czy filtr, którego używasz, zwraca wiersze. - Szablony prezentacji na Linuksie wymagają
libgdiplusprzy uruchamianiu przezdnx; obraz Docker go zawiera. - Daty w plikach danych: zachowaj je jako daty lub pełny format ISO z czasem i sformatuj w szablonie.
FAQ
Czy agent AI może stworzyć wykres z mojego CSV bez jego przesyłania?
Tak. Serwer działa lokalnie, odczytuje CSV lub arkusz kalkulacyjny z folderu przechowywania i zapisuje raport tam; liczby przechodzą z pliku do dokumentu, nie przechodząc przez model.
Jakie pliki danych może odczytać szablon?
JSON, XML, CSV i TSV oraz tabela wewnątrz arkusza kalkulacyjnego, dokumentu Word lub PowerPoint; dataTable wybiera tabelę, gdy jest ich kilka.
Czy raport może być plikiem Excel zamiast PDF?
Tak, użyj szablonu XLSX; tagi trafiają do komórek arkusza. W trybie ewaluacji zapisany skoroszyt zyskuje dodatkowy arkusz.
Zagłęb się
- Dokumentacja, kanoniczny przewodnik: Jak zbudować raport z tabelami i wykresami z pliku CSV lub arkusza kalkulacyjnego przy użyciu agenta AI
- Centrum dokumentacji: GroupDocs.Assembly MCP Server
- Zacznij tutaj: Niech model wypełni dane, a nie pisze dokument
- Powiązane: Setka spersonalizowanych PDF‑ów z jednego polecenia: mail merge z agentem AI
- Powiązane: Czego potrzebuje ten szablon? Zapytaj go.
- Powiązane: Twoje repozytorium już ma dane; niech agent wygeneruje PDF
- Model on‑premise i bezpieczeństwo: 3 architektury przetwarzania dokumentów AI i ta, która trzyma pliki w Twojej sieci
- Pytania: Forum GroupDocs Assembly
- Źródło: GroupDocs.Assembly.Mcp na GitHubie