“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 لأن ذلك ما ي loops القالب فوقه؛ لم يضطر أحد لذكر ذلك. نفس القالب مع 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 تحتاج إلى libgdiplus عند تشغيلها عبر dnx؛ صورة Docker تتضمنها.
  • التواريخ في ملفات البيانات: احتفظ بها كتاريخ أو ISO كامل مع وقت، وقم بتنسيقها في القالب.

الأسئلة المتكررة

هل يمكن لوكيل الذكاء الاصطناعي إنشاء مخطط من ملف CSV دون رفعه؟
نعم. الخادم يعمل محليًا، يقرأ CSV أو جدول البيانات من مجلد التخزين الخاص بك ويكتب التقرير هناك؛ الأرقام تنتقل من الملف إلى المستند دون المرور عبر النموذج.

ما هي ملفات البيانات التي يمكن للقالب قراءتها؟
JSON، XML، CSV و TSV، وجدول داخل جدول بيانات أو مستند Word أو PowerPoint؛ dataTable يختار الجدول عندما يكون هناك عدة جداول.

هل يمكن أن يكون التقرير ملف Excel بدلاً من PDF؟
نعم، استخدم قالب XLSX؛ توضع الوسوم في خلايا ورقة العمل. في وضع التقييم يضيف المصنف المحفوظ ورقة عمل إضافية.

تعمق أكثر