CData Connect AI で Claude のトークン削減量を測定する方法



複数データソースのクエリで Claude のコストが膨らむ原因は、スキーマ探索にあります。整理されたツールがないと、Claude は回答する前に、接続されたすべてのデータソースのカタログ・スキーマ・テーブル・カラムをひとつずつたどっていきます。入力トークンが 6 桁に達することも珍しくありません。CData Connect AI は、この探索作業を、管理者が整理したツールの公開範囲に置き換えます。本ガイドのベンチマークでは、これによってトークンコストがどれだけ圧縮されるかを測定します。

主要な数値をご自身で検証できるように、また同じハーネスを自社のデータに対して実行できるように、ベンチマークの全体を GitHub で公開しています。本ガイドでは、キットのクローン、Connect AI でのデータソース設定、ベンチマークの実行までを順に説明します。そのうえで、ハーネスの仕組みと構成を簡単に紹介します。

注意: 標準のチュートリアルでは 3 つのデータソースすべてに Google Sheets を使用し、約 10 分でセットアップできます。同じ手法は数百種類の対応データソースに適用できます。Salesforce、ServiceNow、Snowflake など、すでに接続済みのデータソースに差し替えてみてください。

前提条件

必要なものは以下のとおりです。

概要

ベンチマークは次の 4 つのステップで実行します。

  1. キットをクローンして依存パッケージをインストールする
  2. シードデータを読み込み、Connect AI で 3 つの接続を作成する
  3. キットを設定してベンチマークを実行する
  4. 結果を読み解く

ステップ 1: キットをクローンしてインストールする

  1. リポジトリをクローンして依存パッケージをインストールします。
    git clone https://github.com/CDataSoftware/connect-ai-token-benchmark.git
    cd connect-ai-token-benchmark
    pip install -r requirements.txt
    Copy-Item .env.example .env

キットには 3 つのエントリポイントがあります。run_benchmark.py(ベンチマークを再実行します。API クレジットを消費します)、render_final.py(確定済みの数値からチャートとテーブルを再描画します。無料です)、render_token_flow_simple.py(フロー図を再生成します)の 3 つです。

注意: 何も実行せずに公開済みのチャートを検証したいだけであれば、ステップ 4 まで進んで python render_final.py を実行してください。API 呼び出しも Connect AI アカウントも不要です。

ステップ 2: シードデータを読み込み、接続を作成する

キットには seed/ に 3 つの CSV が含まれています。50 件のアカウント、50 件のインシデント、50 件の商談で、BMK_ プレフィックス付きのアカウント ID で結合されています。

もっとも手軽なのは Google Sheets を使う方法です。各テンプレートを開き、ファイル › コピーを作成をクリックし、ワークシートのタブ名を役割に合わせてリネームします。

役割テンプレート URLタブ名
CRM(アカウント)sheets.google.com/…/1KCZEr5b…HN7Zs/editaccounts
ITSM(インシデント)sheets.google.com/…/12Ah5Wj9…SpeIc0/editincidents
Warehouse(商談)sheets.google.com/…/1Y0ndX-_…suMH9w/editopportunities

コピーした各ファイルのファイル ID(URL 内の /d//edit の間にある長い文字列)を控えておきます。次のステップで Connect AI に貼り付けます。

Connect AI でコネクションを追加する

Connect AI で左ナビゲーションのSourcesをクリックし、右上の+ Add Connectionをクリックします。

Google Sheetsを検索して選択し、基本設定(Basic Settings)を入力します。

3 つの接続それぞれについて、以下を設定します。

Connection NameSpreadsheet IdSpreadsheet(タブ)
BMK_CRMaccounts のコピーのファイル IDaccounts
BMK_ITSMincidents のコピーのファイル IDincidents
BMK_WHopportunities のコピーのファイル IDopportunities

Auth SchemeOAuth のままにし、Sign inをクリックして Google の OAuth フローを完了したら、Save & Testをクリックします。3 つのコネクションすべてで同じ手順を繰り返してください。

パーソナルアクセストークンを作成する

ユーザーアイコン › SettingsPersonal Access TokensCreate PAT の順にクリックします。トークンはあとから取得できないため、すぐにコピーして、.envCDATA_ACCESS_TOKEN に貼り付けてください。

Connect AI の機能をセットアップする

ベンチマークの 8 つのシナリオは、それぞれ異なる Connect AI の機能を測定します。シナリオが実行される順番に沿って、5 つの機能すべてをセットアップしていきましょう。

1. Derived Views

クロスデータソースの SQL クエリを保存し、ひとつのツールとして公開したものです。このベンチマークでは、3 つのワークブックを 1 つのビューに結合します。

  1. 左ナビゲーションのExplorerをクリックし、続いてSQL Editorをクリックします。
  2. クロスデータソースの結合クエリ(先ほど作成した 3 つの接続を使用します)を貼り付けます。
    SELECT
        i.number              AS ticket_number,
        i.short_description   AS ticket_summary,
        i.priority            AS ticket_priority,
        a.name                AS AccountName,
        a.industry            AS Industry,
        a.annual_revenue      AS AnnualRevenue,
        o.amount              AS OpportunityAmount,
        o.stage_name          AS StageName,
        o.is_won              AS IsWon
    FROM [BMK_ITSM].[GoogleSheets].[incidents] i
    LEFT JOIN [BMK_CRM].[GoogleSheets].[accounts] a
        ON i.company = a.id
    LEFT JOIN [BMK_WH].[GoogleSheets].[opportunities] o
        ON a.id = o.account_id
    WHERE i.number LIKE 'BMK-%'
  3. Executeをクリックし、続いてSave › Save as Derived Viewをクリックします。名前を BMK_Incident_Account_Revenue として、Confirmをクリックします。

ドキュメント: docs.cloud.cdata.com/ja/Data-Explorer

注意: Google Sheets ではなく Salesforce + ServiceNow + Snowflake を使って忠実に再現したい場合は、リポジトリ内の seed/load-salesforce.mdseed/load-servicenow.mdseed/load-snowflake.md に従ってください。手法と SQL の構造は同じで、接続タイプとカラムの大文字小文字が変わるだけです。

2. ワークスペース

選択したアセットだけを公開する、スコープを絞った MCP エンドポイントです。

  1. 左ナビゲーションのWorkspacesをクリックし、続いて+ Addをクリックします。名前を BMK_Workspace として、Confirmをクリックします。
  2. ワークスペースを開き、+ AddAdd AssetTables and Views の順にクリックします。3 つの BMK_ テーブルと先ほど作成したDerived Viewsを選択し、Confirmをクリックします。
  3. View EndpointsAI (MCP) をクリックします。Remote MCP Server URL をコピーして、.envMCP_WORKSPACE_URL に貼り付けます。

ドキュメント: docs.cloud.cdata.com/ja/Workspaces

3. ツールキットとカスタムツール

AI が読み取れる説明を持つ、名前付きの MCP 呼び出し可能な SQL ツールです。主要なトークン削減効果は、ここから生まれます。

  1. AIToolkits+ Add の順にクリックします。名前を BMK_Toolkit として、Confirmをクリックします。
  2. ツールキットを開き、+ Addをクリックしてconnection toolを選択し、3 つの接続を割り当ててConfirmをクリックします。
  3. Custom Toolsタブを開き、+ Addをクリックします。Tool Nameget_incidents を設定します。AI Instructions の行に、たとえば 「Returns open enterprise tickets with their account profile and warehouse revenue.(エンタープライズ顧客の未対応チケットを、アカウントのプロファイルとウェアハウスの売上とあわせて返します)」 のような説明を追加します。次の SQL を貼り付けます。
    SELECT TOP 50 * FROM [CData].[DerivedViews].[BMK_Incident_Account_Revenue]
  4. Validate SQLをクリックしてクエリが正しく解析されることを確認したら、Save Changesをクリックします。ツールを有効化します。
  5. Toolkits のメインページからツールキットの MCP Remote Server URL をコピーして、.envMCP_TOOLKIT_URL に貼り付けます。

ドキュメント: docs.cloud.cdata.com/ja/Toolkits

4. ジョブ / キャッシュ

Connect AI が管理する PostgreSQL ウェアハウスにデータを事前取得しておくことで、クエリがリアルタイムデータソースへの呼び出しをスキップできるようにします。

  1. 左ナビゲーションのJobsをクリックし、続いてSetup Cache Connectionをクリックします。PostgreSQL の接続情報を設定して、Save & Testをクリックします。
  2. Jobs ページに戻り、+ Add Jobをクリックします。Cacheを選択し、接続を選び、キャッシュするテーブルを選択して、更新頻度とキャッシュ方式(フルまたは増分)を設定し、Confirmをクリックします。
  3. Run Nowをクリックしてデータを投入します。ステータスが Success になるまで待ちます。

ドキュメント: docs.cloud.cdata.com/ja/Caching

注意: キャッシュは、リレーショナルなソースデータベース(Snowflake、PostgreSQL、MySQL など)では利用できません。このベンチマークでは、キャッシュ経由のパスは ITSM + CRM をカバーしますが、ウェアハウスのデータソースはカバーしないことを意味します。

5. AI スキル

UI での操作はありません。これはベンチマークのハーネスが扱うプロンプトエンジニアリングのパターンで、SQL をあらかじめ指定して探索を禁止する、厳密にスクリプト化されたシステムプロンプトです。このプロンプトは config.pySYSTEM_PROMPT_SKILL として定義されています。Claude に何を伝えているのか正確に確認したい場合は、実行前に目を通しておきましょう。

各機能の背景にある考え方や、トークン効率に関するより広い文脈については、公開済みのブログ記事(リポジトリの README にリンクがあります)をご覧ください。

ステップ 3: キットを設定してベンチマークを実行する

.env を開き、ステップ 2 で集めた値を入力します。

ANTHROPIC_API_KEY=sk-ant-your-key-here
CDATA_EMAIL=your-connect-ai-email
CDATA_ACCESS_TOKEN=your-pat-from-step-2

CDATA_ITSM_CATALOG=BMK_ITSM
CDATA_ITSM_SCHEMA=GoogleSheets
CDATA_ITSM_TABLE=incidents

CDATA_CRM_CATALOG=BMK_CRM
CDATA_CRM_SCHEMA=GoogleSheets
CDATA_CRM_TABLE=accounts

CDATA_WH_CATALOG=BMK_WH
CDATA_WH_SCHEMA=GoogleSheets
CDATA_WH_TABLE=opportunities

DERIVED_VIEW_NAME=BMK_Incident_Account_Revenue

続いて、ベンチマークを実行します。

python run_benchmark.py --full --runs 3

デフォルトのシナリオあたり 3 回実行の場合、実時間でおよそ 1.5 時間、Anthropic API の費用は約 6 ドルを見込んでください。公開可能な信頼区間が必要な場合は --runs 10 を使用します(約 18 ドル、約 5 時間)。

注意: 公開済みのチャートを検証したいだけでステップ 2 をスキップした場合は、代わりに python render_final.py を実行してください。LOCKED_RESULTS.py の確定済みの数値から output/results.md と 4 つのチャートを再生成します。API 呼び出しもデータソース接続も不要です。

ステップ 4: 結果を読む

output/results.md を開きます。主要なテーブルには、8 つのシナリオそれぞれについて、合計トークン数、削減率、クエリあたりのコスト、そして月間 1K・10K・50K・100K クエリ時の月間削減見込みが記載されています。上から下へ順に読んでいきましょう。最初の行は Raw(生)のベースラインで、それ以降の各行は、Connect AI の機能ごとに数値がどう変わるかを示しています。

output/ にある 4 つのチャートは、スライドやドキュメントにそのまま貼り付けられます。

チャート表示内容
chart-tokens.webpシナリオごとの合計トークン数(削減量順にソート)
chart-reduction.webpRaw ベースラインに対する Connect AI 機能ごとの削減率
chart-cost.webpシナリオごとのクエリあたりのドルコスト
chart-waterfall.webpRaw からカスタムツールまでのトークン圧縮を、降順のウォーターフォールで表示

加えて、2 つのパスを比較するフロー図 token-flow-simple.webp もあります。

あなたの数値は、公開済みの確定値とぴったり一致するわけではありません。Raw ベースラインは Claude の探索パスによって実行ごとに変動します。一方、カスタムツールはスコープを絞ったツールがあらかじめ定義されているため、ほぼ決定論的です。再現されるのは傾向です。カスタムツールが他のどの機能よりも優れており、クエリにデータソースや結合が増えるほど削減量が大きくなります。

ベンチマークの仕組み

どのシナリオでも、Claude には同じ自然言語の質問を送ります。「Show me open support tickets, the related Salesforce accounts, and their Snowflake revenue data for enterprise customers. Return up to 50 rows.(エンタープライズ顧客の未対応サポートチケットと、関連する Salesforce アカウント、そして Snowflake の売上データを表示してください。最大 50 行を返してください)」 という質問です。変わるのは、Claude が見られるツールの公開範囲だけです。

Raw ベースラインでは、11 個の汎用 Connect AI ツール(getCatalogsgetSchemasgetTablesgetColumnsqueryData、…)を公開します。Claude は探索のチェーンを自分でたどっていき、回答できるようになるまでに約 180,000 の入力トークンを積み上げます。

カスタムツールでは、ユーザーの質問に直接対応する説明を持つ、get_incidents という名前のあらかじめ定義された 1 つのツールだけを公開します。Claude はこれを 1 回呼び出してクロスデータソースの結果を受け取り、回答します。探索もチェーン化されたクエリもなく、合計でわずか約 4,400 トークンです。

ベンチマークでは、それぞれ異なる Connect AI 機能(Derived Views、ワークスペース、カスタムツール、ツールキット、ジョブ/キャッシュ、AI スキル)を切り出した 8 つのシナリオで、この差を測定します。各シナリオは 4 ~ 16 回実行されます。確定値は、ばらつきの大きいシナリオでは中央値を、決定論的なシナリオでは平均値を使用しています。

注意: カスタムツールが劇的な削減を実現するのは、そのツールの説明が特定のクエリにうまく合致しているからです。本番環境では、管理者が、ユーザーが実際に送るクエリにマッチするツールを構築できているかどうかで効果が左右されます。このベンチマークが測定しているのはベストケースの効果であり、未知のクエリ分布全体にわたる平均的なパフォーマンスではありません。

独自に構築する

ハーネスは、8 つのモジュールにまたがる約 1,100 行の Python です。重要なのは次の 4 つの要素です。

  • MCP クライアントbenchmark/mcp_client.py) — SSE 対応の JSON-RPC クライアントで、任意の Connect AI MCP エンドポイントに対して tools/listtools/call を呼び出します。
  • ツールスキーマのノーマライザーbenchmark/normalizer.py) — MCP の inputSchema を Anthropic の input_schema の形式に変換します。
  • マルチターンランナーbenchmark/runner.py) — 中核となるループです。anthropic.messages.create を呼び出し、各 tool_use を MCP クライアントまたは合成レスポンダー経由でディスパッチし、tool_result を返し、end_turn またはターン上限に達するまで繰り返します。
  • シナリオとレポーターbenchmark/scenarios.pybenchmark/reporter.py) — 8 つのシナリオ定義と、results.mdresults.jsonresults.csv、そして実行ごとの run_ledger.jsonl を書き出すアグリゲーターです。

ベンチマークで使用するすべてのプロンプトと SQL の断片は、リポジトリの BENCHMARK-PROMPTS-AND-QUERIES.md にそのまま記載されています。これを scenarios.pyrunner.py とあわせて読めば、ハーネスをゼロから再現できます。

CData Connect AI でトークン効率の高い AI を

CData Connect AI は、Claude をはじめとするあらゆる AI エージェントに、実際のデータソースへの直接的でスキーマ自動検出のアクセスを提供します。設計時にはベンチマークキットで測定し、本番環境では Connect AI でデプロイしましょう。そうすれば、エージェントはこのベンチマークと同じ低いトークン使用量のまま、リアルタイムデータにクエリを実行できます。

CData Connect AI の無料トライアルを今すぐ始めましょう。あるいは CData コミュニティを訪れて、知見を共有したり、質問したり、エンタープライズ対応 AI の未来づくりに参加してみてください。