“Make me the regional sales report from sales.csv"은 언어 모델이 마크다운 표를 작성하고, 숫자를 반올림하고, 그릴 수 없는 차트를 설명하면서 기쁘게 답변할 수 있는 요청입니다. dnx GroupDocs.Assembly.Mcp --yes 로 로컬에서 GroupDocs.Assembly.Mcp를 실행하면, Claude Desktop, Cursor 또는 Copilot이 데이터 파일을 엔진에 전달합니다: 워드 또는 파워포인트 템플릿에 표와 합계, 실제 차트가 들어 있고, 서버가 CSV 또는 스프레드시트에서 데이터를 채워 넣으며 숫자가 모델을 거치지 않습니다.
sales.xlsx에서 지역 판매 보고서를 작성하고 sales-report.docx를 PDF로, 차트 슬라이드는 sales-chart.pptx로 만드세요.
구성 및 문제 해결이 포함된 단계별 버전은 문서에 있습니다: How to build a report with tables and charts from a CSV or spreadsheet with an AI agent.
왜 숫자를 모델이 건너뛰게 해야 할까요?
모델은 텍스트 생성기이고, 보고서는 산술 연산과 레이아웃이 결합된 것이기 때문입니다. 에이전트가 CSV를 읽고 직접 보고서를 작성하면, 모든 값이 다음 토큰 예측에 의해 다시 입력됩니다. 대부분은 정확하지만, 틀린 값은 원본과 비교해 보기 전까지는 눈에 보이지 않으며, 이는 보고서가 절약하려는 작업과 정확히 맞물립니다. 차트는 더 악화됩니다: 모델은 차트를 설명하거나 코드를 생성할 수 있지만, 분기별 프레젠테이션에 들어 있는 차트는 마케팅 담당자가 스타일링한 파워포인트 파일 안의 객체입니다.
따라서 각 측면이 잘하는 일로 작업을 나눕니다. 템플릿은 보고서의 모양을 결정합니다. 엔진은 파일을 읽고 계산을 수행합니다. 에이전트는 템플릿과 데이터를 선택하고 결과를 알려줍니다.
에이전트가 전달하는 내용과 엔진이 보는 내용
다음 표에 나눠서 보여줍니다:
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
생성을 시작하기 전에 에이전트는 데이터 파일을 살펴볼 수 있습니다. 우리 스프레드시트에 대해 서버는 세 개 열을 가진 하나의 테이블을 보고했습니다:
-> get_document_info {"file":{"filePath":"sales.xlsx"}}
<- { "dataKind": "table",
"data": { "tableCount": 1, "tables": [ { "number": 1,
"columns": [ "Region", "Quarter", "Revenue" ] } ] } }
표 보고서
Word 템플릿에는 첫 번째 셀에 <<foreach [r in sales]>>, 마지막 셀에 <</foreach>>가 들어 있는 한 행이 있으며, 그 아래에 두 줄이 추가됩니다: <<[sales.Sum(r => r.Revenue)]>>와 <<[sales.OrderByDescending(r => r.Revenue).First().Region]>>. 한 번의 호출:
-> 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
보고서에는 네 개의 행(North 182000, South 146500, East 98250, West 211900), “Total revenue: 638650 EUR” 및 *“Best region: West”*가 포함됩니다. 서버는 템플릿이 반복하는 데이터를 sales라고 명명했으며, 별도로 지정할 필요가 없었습니다. 동일한 템플릿을 sales.csv와 함께 사용해도 동일한 합계가 나오며, CSV의 경우 hasHeaders와 csvDelimiter 옵션을 통해 헤더가 없거나 세미콜론 구분 파일을 처리할 수 있습니다.
차트
GroupDocs.Assembly 템플릿의 차트는 두 곳에 태그가 들어 있는 일반 차트입니다. 차트 제목은 Revenue by region<<foreach [r in sales]>><<x [r.Region]>>이며, 행을 순회하면서 지역별 카테고리를 생성합니다. 시리즈 이름은 Revenue<<y [r.Revenue]>>이며, 행마다 하나의 값을 표시합니다. 차트 내부의 자리표시자 데이터는 디자이너가 미리 볼 수 있도록 넣은 것입니다.
-> 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
결과를 열어보니 Revenue by region이라는 제목의 세로 막대 차트가 나타났으며, 카테고리는 North, South, East, West이고 값은 각각 182000, 146500, 98250, 211900이며, 태그는 사라지고 템플릿 스타일이 그대로 유지되었습니다. 동일한 태그는 Word와 Excel 차트에서도 작동합니다.
왜 에이전트에게 차트 이미지를 요청하지 않을까요?
가능은 합니다. 채팅에서 일회성 답변으로는 괜찮지만, 보고서에서는 세 가지 문제가 있습니다: 이미지가 그림이기 때문에 값을 클릭해 확인할 수 없고, 스타일이 플롯 코드의 기본값에 불과해 조직의 디자인 가이드와 맞지 않으며, 이미지에 들어간 숫자는 모델을 거쳐 전달되었습니다. 템플릿 차트는 파일에서 직접 채워지는 네이티브 차트 객체이며, 템플릿 소유자가 한 번 스타일링합니다.
솔직한 제한 사항
- 표와 차트 태그는 이미 템플릿에 존재해야 하며, 에이전트가 이를 설계하지 않습니다.
get_template_fields명령으로 템플릿이 읽는 데이터를 확인할 수 있습니다. - 평가 모드: 모든 출력은 “Evaluation Only. Created with GroupDocs.Assembly 26.7…” 로 시작하고, 저장된 워크북에는 추가 워크시트가 생성됩니다.
- 데이터에 빈 리스트가 있으면 열 유형이 없으므로
allowMissingMembers옵션을 사용하더라도 산술 연산이 실패합니다. 필터가 행을 반환하는지 확인하세요. - Linux에서 프레젠테이션 템플릿을 사용하려면
dnx실행 시libgdiplus가 필요합니다; Docker 이미지에 포함되어 있습니다. - 데이터 파일의 날짜: 날짜 형식이나 전체 ISO 형식(시간 포함)으로 유지하고, 템플릿에서 포맷을 지정하세요.
FAQ
AI 에이전트가 CSV를 업로드하지 않고 차트를 만들 수 있나요?
예. 서버가 로컬에서 실행되며, 저장소 폴더에 있는 CSV 또는 스프레드시트를 읽고 보고서를 해당 위치에 작성합니다. 숫자는 파일에서 문서로 직접 이동하며 모델을 거치지 않습니다.
템플릿이 읽을 수 있는 데이터 파일 형식은 무엇인가요?
JSON, XML, CSV 및 TSV, 그리고 스프레드시트, Word 또는 PowerPoint 문서 안의 테이블을 지원합니다. 여러 테이블이 있을 경우 dataTable 옵션으로 원하는 테이블을 선택합니다.
보고서를 PDF 대신 Excel 파일로 만들 수 있나요?
예, XLSX 템플릿을 사용하면 태그를 워크시트 셀에 넣을 수 있습니다. 평가 모드에서는 저장된 워크북에 추가 워크시트가 생성됩니다.
더 깊이 파고들기
- 문서, 표준 사용법: How to build a report with tables and charts from a CSV or spreadsheet with an AI agent
- 문서 허브: GroupDocs.Assembly MCP Server
- 시작하기: Let the model fill in the data, not write the document
- 관련 글: A hundred personalised PDFs from one prompt: mail merge with an AI agent
- 관련 글: What does this template need? Ask it.
- 관련 글: Your repo already has the data; let the agent make the PDF
- 온프레미스 및 보안 모델: 3 architectures for AI document processing, and the one that keeps files inside your network
- 질문: GroupDocs Assembly forum
- 소스: GroupDocs.Assembly.Mcp on GitHub