“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 のチャートスライドも作成してください。

ステップバイステップの設定とトラブルシューティングはドキュメントにあります: CSV またはスプレッドシートから AI エージェントで表とチャートを含むレポートを作成する方法.

なぜ数値はモデルを通さない方が良いのか?

モデルはテキスト生成器であり、レポートは計算とレイアウトです。エージェントが CSV を読み取り自分でレポートを作成すると、すべての値が次のトークン予測によって再入力されます。ほとんどは正しく出ますが、間違いはソースと照合するまで見えません。これはレポートが本来節約すべき作業です。チャートはさらに悪く、モデルはチャートを説明したりコードを出したりできますが、四半期プレゼンのチャートは PowerPoint ファイル内のオブジェクトであり、マーケティング担当者がスタイルを設定したものです。

したがって、各側が得意な部分に仕事を分担させます。テンプレートはレポートの外観を決め、エンジンはファイルを読み取り計算を行い、エージェントはテンプレートとデータを選んで結果を通知します。

エージェントが渡すもの、エンジンが見るもの

以下は 1 つの表で示した分担です:

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

生成前にエージェントはデータファイルを確認できます。今回のスプレッドシートではサーバーが 3 列のテーブルを 1 つ報告しました:

-> 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>> があり、さらにその下に 2 行のタグ <<[sales.Sum(r => r.Revenue)]>> と <<[sales.OrderByDescending(r => r.Revenue).First().Region]>> が配置されています。1 回の呼び出しは次の通りです:

-> 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

レポートは 4 行(North 182000、South 146500、East 98250、West 211900)と 「総収益: 638650 EUR」、「最優秀地域: West」 を含みます。サーバーはテンプレートがループするデータを sales と名付けましたが、特に指示する必要はありませんでした。同じテンプレートを sales.csv で使用しても同じ合計が得られます。CSV の場合は hasHeaders と csvDelimiter がヘッダー行がないファイルやセミコロン区切りのファイルに対応します。

チャート

GroupDocs.Assembly のテンプレート内のチャートは、2 カ所にタグが付いた普通のチャートです。チャートタイトルは Revenue by region<<foreach [r in sales]>><<x [r.Region]>> で、行ごとに 1 つのカテゴリ(地域)をループします。系列名は Revenue<<y [r.Revenue]>> で、行ごとに 1 つの値(収益)を設定します。チャート内のプレースホルダー データはデザイナーが確認できるように置いてあるだけです。

-> 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 のチャートでも機能します。

なぜエージェントにチャート画像を求めないのか?

一度きりのチャット回答としては可能です。しかしレポートでは次の 3 つの問題があります。画像はピクチャーなので、値をクリックして確認できません。スタイルはプロットコードのデフォルトであり、社内のデザイン基準に合いません。さらに数値はモデルを通過しているため、正確性が保証されません。テンプレートチャートはファイルから直接埋め込まれ、テンプレート所有者が一度だけスタイルを設定します。

正直な制限事項

  • テーブルとチャートのタグはあらかじめテンプレートに入っている必要があります。エージェントがそれらを設計することはありません。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 テンプレートを使用します。タグはワークシートのセルに配置されます。評価モードでは保存されたブックに余分なワークシートが追加されます。

さらに詳しく