🦚

【Dataiku】「提案資料作成エージェント」の実装レポート

に公開

本記事では、Dataikuを活用し、過去のナレッジを活かした提案資料(PowerPoint)を自動生成するエージェントの設計と、開発を通じた知見を共有します。


エージェントの概要

今回構築したエージェントは、過去の提案資料を参照し、提案ストーリーとスライド構成を自動生成することを目的としています。
本エージェントを実装できると下記のような効果が期待できると考えています。

  • 生産性向上: 作成・調整業務の自動化により、顧客対応時間を最大化。
  • 提案の標準化: 過去の成功事例を反映した高品質な提案を迅速に提供。

ユーザーが提案のテーマや要件を入力すると、エージェントはナレッジバンクから最適な情報を探し出し、論理的なストーリーを組み立てた上で、最終的にそのまま編集可能なPowerPointファイルとして出力します。

「テンプレートの構造理解」を組み合わせることで、自社で保持しているpptxのテンプレートに当てはめる試みを実施しました。パワポテンプレート

技術的アプローチ:エージェントとツールの設計

今回のシステムは、特定の役割を持ったエージェントが、複数の専用ツールを使い分ける構成で設計しました。エージェント構成図

1. 過去提案資料検索(Knowledge Bank Search)

過去の資産を再利用するための検索基盤です。

  • コンテンツ抽出: Dataikuの「embed documents」レシピを利用。フォルダ内に格納したPDF資料を「Visual-first Extraction」で解析します。
  • 特徴: テキストだけでなく、図表の解説も合わせてチャンクに含まれるため、従来よりも詳細なコンテキストを取得することが可能になりました。
  • 実装: 作成したKnowledge Bankを、ツール「Knowledge Bank Search」に紐付けます。

2. 提案ストーリー作成(Query an LLM/Agent)

検索結果をもとに、提案の骨子を作成します。

  • 指示内容: 提案内容やスケジュールなど、資料に必須となる要素を網羅するよう指示。
  • 連係: ツール「過去提案資料検索」で取得した検索結果を参照するよう、エージェントのシステムプロンプト(インストラクション)で制御しています。

3. スライド構成作成(Query an LLM/Agent)

提案の骨子をPPTX出力用の構造化データ(JSON)に変換します。

  • 入力情報: プロンプト内に以下の2つの情報を付与しています。
    1. スライドレイアウトの説明: 各スライドの利用目的や構成。あらかじめGeminiの画面(Dataiku外)にPPTXのテンプレートを読み込ませて作成した説明文を使用。
    2. プレースホルダー情報: python-pptxを用いて取得した各スライドの構成情報。
  • 重要ポイント: 次工程の「PPTXファイル作成」へ情報を渡す際、JSONの構成が異なるとエラーが発生するため、厳重に規定の構成を守るようプロンプトで指示しています。

4. PPTXファイル作成(Inline Python)

前工程のJSONを受け取り、pptxファイルを出力します。

  • 処理: ツール「スライド構成作成」で生成されたJSONをインプットとし、python-pptxを用いてPPTXファイルを作成するコードを実行。
  • 出力: 完成したファイルはマネージドフォルダーに格納されます。

Dataiku プラットフォームの活用メリット

開発を通して感じた、Dataikuならではの利点は以下の通りです。

オブジェクト単位のテストが容易

ツール・Agent・Agent Hubそれぞれに検証機能・トレース確認機能があるため、調整やデバッグが非常にスムーズでした。

ツール

ツール検証画面

Agent

Agent検証画面

Agent Hub

Agent Hub検証画面

エージェント(ハブ)のトレース活用

トレース機能には2つの形式があり、開発効率を大きく引き上げてくれました。

  1. ビジュアライズされたトレース: 処理フローを視覚的に把握。
  2. テキストベースのトレース: ログをLLMに解析させることで、エラーの解決方法をスピーディに導き出すことができました。

振り返りと今後の展望

要改善事項は多々ありますが、一通りのエージェントの動きを実装することができました。
今後は想定ユーザーへのヒアリングを通じ、テンプレートへの反映精度の向上や、参照情報の拡充など、実用性を高めるブラッシュアップできたらと考えています。

今後の挑戦したいこと

-提案ストーリー内容の調整など、ユーザーとのインタラクションが発生した際の回答スピード改善
-Nano-Banana などを利用した図解生成を組み込み、パワポへの自動埋め込み

truestarテックブログ

Discussion