“Make me the regional sales report from sales.csv” הוא בקשה שמודל שפה ישיב בשמחה על‑ידי כתיבת טבלת Markdown, עיגול מספר או שניים בדרך, ותיאור תרשים שהוא לא יכול לצייר. עם GroupDocs.Assembly.Mcp הפועל מקומית (dnx GroupDocs.Assembly.Mcp --yes), Claude Desktop, Cursor או Copilot מעבירים את קובץ הנתונים למנוע במקום זאת: תבנית ה‑Word או PowerPoint שלך מכילה את הטבלה, הסכומים ואת התרשים האמיתי, והשרת ממלא אותם מה‑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 וכותב את הדוח בעצמו, כל ערך נכתב מחדש על‑ידי ניבוי הטוקן הבא. רובם יוצאים נכונים. זה שהערך אינו נכון נותר בלתי נראה עד שמישהו בודק אותו מול המקור, וזה בדיוק העבודה שהדוח נועד לחסוך. תרשימים גרועים יותר: המודל יכול לתאר אחד, או להוציא קוד עבורו, אך התרשים במצגת הרבעונית שלך הוא אובייקט בקובץ PowerPoint, מעוצב על‑ידי מישהו משיווק.

לכן מחלקים את העבודה לפי מה שכל צד טוב בו. התבנית מחליטה איך יראה הדוח. המנוע קורא את הקובץ ומבצע את החישובים. הסוכן בוחר את התבנית והנתונים, ומודיע לך מה יצא.

מה הסוכן מעביר ומה המנוע רואה

הנה החלוקה בטבלה אחת:

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. ודא שהמסנן שאתה מבקש מחזיר שורות.
  • תבניות מצגת בלינוקס דורשות libgdiplus כאשר רצות דרך dnx; תמונת Docker כוללת זאת.
  • תאריכים בקבצי נתונים: שמור אותם כתאריכים או ISO מלא עם זמן, ועצב אותם בתבנית.

שאלות נפוצות

האם סוכן AI יכול ליצור תרשים מה‑CSV שלי ללא העלאה?
כן. השרת פועל מקומית, קורא את ה‑CSV או הגיליון האלקטרוני מתיקיית האחסון שלך וכותב את הדוח שם; המספרים עוברים מהקובץ למסמך מבלי לעבור דרך המודל.

אילו קבצי נתונים התבנית יכולה לקרוא?
JSON, XML, CSV ו‑TSV, וטבלה בתוך גיליון אלקטרוני, מסמך Word או PowerPoint; dataTable בוחר את הטבלה כאשר יש כמה.

האם ניתן לקבל את הדוח כקובץ Excel במקום PDF?
כן, השתמש בתבנית XLSX; התגיות נכנסות לתאי הגיליון. במצב הערכה קובץ העבודה שנשמר מקבל גיליון עבודה נוסף.

להעמיק יותר