
{
    "kind": "term",
    "name": "AI用ティーリウム",
    "count": 9,
    "items": [

    
        {
            "weight": "0",
            "url": "https://docs.tealium.com/ja/guides/function-for-ai-activation/",
            "title": "AIアクティベーション用の関数を作成する",
            "body": "<p>このガイドでは、リアルタイムアクティベーションのために外部AIモデルをTealium関数に統合する方法について説明します。モデルエンドポイントに安全に接続し、イベントデータと訪問データを使用してAI予測を呼び出し、モデル出力で訪問プロファイルを豊かにします。非同期応答と一般的な統合問題についても取り上げます。</p>\n<p>Tealium関数またはAIコネクタを使用するタイミングについての情報は、<a href=\"/ja/guides/ai-connectors-and-functions/\">AIコネクタとTealium関数</a>を参照してください。</p>\n<h2 id=\"動作原理\">動作原理</h2>\n<p>機能を使用して、顧客離脱リスク、詐欺検出、傾向スコアリング、次の最適なアクションの推奨などのタスクのために外部AIモデルを呼び出します。機能はイベントデータと訪問プロファイル属性を収集し、ペイロードを構築し、モデルエンドポイントに送信し、予測を受け取り、アクティベーションのために訪問プロファイルを更新します。</p>\n<p>リアルタイムモデル推論とアクティベーションのためのデータフローには、以下のステップが含まれます：</p>\n<ol>\n<li><strong>顧客アクション</strong>: ユーザーがアクションを実行します（例：商品を見る、カートに追加する、フォームを送信する）。</li>\n<li><strong>機能トリガー</strong>: イベントまたは訪問機能が構成されたトリガーに基づいて発火し、予測（スコア、分類、推奨）を返します。</li>\n<li><strong>イベントを収集する</strong>: 機能は予測データを<code>track()</code>メソッドを通じてTealium Collectに送信します。</li>\n<li><strong>エンリッチメント処理</strong>: 構成されたエンリッチメントが予測値を訪問プロファイル属性に書き込みます。</li>\n<li><strong>ダウンストリームアクティベーション</strong>: オーディエンスが評価し、更新されたプロファイル属性に基づいてコネクタが発火します。</li>\n</ol>\n<p>機能は直接訪問プロファイルを変更することはできないため、予測はTealium Collectを通じてプロファイルに書き込まれる必要があります。</p>\n<p><code>track()</code>メソッドはイベントをTealium Collectに送信します。これらのイベント属性値を訪問プロファイル属性に書き込むためにエンリッチメントを構成する必要があります。</p>\n<h3 id=\"機能の種類\">機能の種類</h3>\n<table>\n<thead>\n<tr>\n<th>機能の種類</th>\n<th>トリガー</th>\n<th>シグネチャ</th>\n<th>使用例</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>イベント機能</td>\n<td>特定のイベントが処理された後に発火</td>\n<td><code>{ event, helper }</code></td>\n<td>即時のイベントコンテキストに基づいてスコアリング（例：商品閲覧時の商品推薦）</td>\n</tr>\n<tr>\n<td>訪問機能</td>\n<td>訪問プロファイルが更新された後に発火</td>\n<td><code>{ visitor, visit, helper }</code></td>\n<td>蓄積されたプロファイルデータに基づいてスコアリング（例：エンゲージメント履歴に基づく顧客離脱予測）</td>\n</tr>\n</tbody>\n</table>\n<p>リアルタイム推論とアクティベーションのために外部AIモデルを呼び出すことで、以下のような複数の利点があります：</p>\n<ul>\n<li>訪問の行動からリアルタイムで顧客離脱リスクを検出します。</li>\n<li>高リスク訪問を特定することでリテンションキャンペーンのターゲティングを改善します。</li>\n<li>AIに基づく予測を使用してセグメンテーションによるパーソナライズされた体験をサポートします。</li>\n<li>モデル駆動の洞察によってプロファイルをエンリッチすることで、ダウンストリームアクティベーションの精度を向上させます。</li>\n<li>高スループットデータストリームを処理してタイムリーな分析と対応を行います。</li>\n<li>マーケティング、アナリティクス、コンプライアンスのワークフローのデータ品質を向上させます。</li>\n</ul>\n<h3 id=\"前提条件\">前提条件</h3>\n<p>AIモデルを呼び出すための機能を作成する前に、以下のものを確保してください：</p>\n<ul>\n<li>REST APIエンドポイントにデプロイされた訓練済みのMLモデル、例えばSnowflake Cortex、Databricks Model Serving、AWS SageMaker、Google Vertex AI、Azure ML、Hugging Face Inference Endpoints、または任意のHTTPSエンドポイント。</li>\n<li>モデルエンドポイントのAPI認証情報、例えばAPIキー、ベアラートークン、またはJWT。</li>\n<li>プロファイルリージョンのTealium IPアドレスをデータクラウドの許可リストに追加します。詳細については、<a href=\"/ja/administration/security-access/ip-allow-list/\">許可するTealium IPアドレス</a>を参照してください。</li>\n<li>モデルが期待するリクエストペイロードスキーマ。</li>\n<li>モデルが返すレスポンスペイロードスキーマ。</li>\n</ul>\n<h2 id=\"aiに基づく顧客離脱リスク分析のための主要コンポーネント\">AIに基づく顧客離脱リスク分析のための主要コンポーネント</h2>\n<ul>\n<li>\n<p><strong>データ変換機能</strong><br>\n受信イベントデータを評価し、正規表現を適用して顧客離脱リスクに関連する行動を特定します。</p>\n</li>\n<li>\n<p><strong>派生属性</strong><br>\nイベントデータから顧客離脱リスクスコアを計算します。この値は各イベントに対して機能によって構成されます。</p>\n</li>\n<li>\n<p><strong>AudienceStreamイベントフィルター</strong><br>\n顧客離脱リスクスコアを使用してイベントをフィルタリングします。高リスクのイベントのみが訪問プロファイルを豊かにします。</p>\n</li>\n<li>\n<p><strong>イベントフィード</strong><br>\n高リスクとフラグ付けされたイベントをコネクタ、保存、または他の機能によるさらなる処理のためにストリーミングします。</p>\n</li>\n<li>\n<p><strong>外部モデル呼び出し機能</strong><br>\nイベントまたはプロファイルデータを外部AIモデルエンドポイントに送信して高度な顧客離脱予測を行います。</p>\n</li>\n<li>\n<p><strong>エンリッチメント</strong><br>\nAIモデルの予測を訪問プロファイル属性に書き込み、アクティベーションとセグメンテーションのために使用します。</p>\n</li>\n</ul>\n<h2 id=\"要件\">要件</h2>\n<p>このソリューションを実装するためには、以下が必要です：</p>\n<ul>\n<li>Tealiumの要件\n<ul>\n<li>AudienceStreamが有効になっていること</li>\n<li>Tealiumの機能が有効になっていること</li>\n<li><code>track()</code>イベントを受信するための構成済みデータソース</li>\n<li>予測属性を訪問プロファイルに書き込むためのエンリッチメント</li>\n</ul>\n</li>\n<li>モデルエンドポイントの要件\n<ul>\n<li>HTTPSプロトコルを使用すること</li>\n<li>10秒以内に応答すること。リアルタイムパーソナライゼーションのためには、応答時間が500ミリ秒未満であることを推奨します。</li>\n<li>ベアラートークン、APIキー、またはヘッダーベースの認証を使用すること</li>\n<li>JSON形式で応答すること。</li>\n</ul>\n</li>\n</ul>\n<h2 id=\"ステップ1-機能を作成する\">ステップ1: 機能を作成する</h2>\n<p>イベント機能または訪問機能を使用してAIアクティベーションロジックを実装できます。使用例とスコアリング時の利用可能なデータに最も適した機能タイプを選択します。</p>\n<h3 id=\"コード参照\">コード参照</h3>\n<table>\n<thead>\n<tr>\n<th>オブジェクト/メソッド</th>\n<th>説明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>event.data.udo.*</code></td>\n<td>トリガーイベントからのイベント属性</td>\n</tr>\n<tr>\n<td><code>visitor.properties.*</code></td>\n<td>訪問プロファイルの文字列属性</td>\n</tr>\n<tr>\n<td><code>visitor.metrics.*</code></td>\n<td>訪問プロファイルの数値属性</td>\n</tr>\n<tr>\n<td><code>visitor.audiences</code></td>\n<td>訪問のオーディエンスメンバーシップ</td>\n</tr>\n<tr>\n<td><code>visitor.current_visit.*</code></td>\n<td>訪問の現在のセッションからの訪問属性</td>\n</tr>\n<tr>\n<td><code>helper.getAuth('name')</code></td>\n<td>保存された認証トークンを取得</td>\n</tr>\n<tr>\n<td><code>helper.getGlobalVariable('name')</code></td>\n<td>保存されたグローバル変数を取得</td>\n</tr>\n<tr>\n<td><code>track(data, config)</code></td>\n<td>Tealium Collectにイベントを送信（呼び出し毎に最大6回）</td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"プラットフォーム固有の注意点\">プラットフォーム固有の注意点</h3>\n<p>以下のコード例は一般的なREST APIパターンを示しています。実際の実装はプラットフォームによって異なります：</p>\n<table>\n<thead>\n<tr>\n<th>プラットフォーム</th>\n<th>注意点</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Snowflake Cortex</td>\n<td>Cortex機能はSnowflake SQL APIを使用してSQLステートメントを通じて呼び出されます。JWT認証が必要です。</td>\n</tr>\n<tr>\n<td>Databricks Model Serving</td>\n<td>MLflowモデルはRESTエンドポイントとして公開されます。個人アクセストークン（PAT）認証を使用します。ジョブAPIを通じて非同期推論をサポートします。</td>\n</tr>\n<tr>\n<td>AWS SageMaker</td>\n<td>エンドポイントはAWS署名バージョン4認証が必要です。認証を簡素化するためにLambdaプロキシの使用を検討してください。長時間実行されるジョブのための非同期推論エンドポイントをサポートします。</td>\n</tr>\n<tr>\n<td>Hugging Face</td>\n<td>推論エンドポイントはベアラートークン認証を使用します。レスポンス形式はモデルタイプに依存します。</td>\n</tr>\n<tr>\n<td>GCP Vertex</td>\n<td>Vertex AIエンドポイントはOAuth 2.0またはサービスアカウント認証を使用します。</td>\n</tr>\n<tr>\n<td>Azure</td>\n<td>Azure ML管理エンドポイントはAPIキーまたはAzure ADトークン認証を使用します。</td>\n</tr>\n</tbody>\n</table>\n<p>プラットフォームのAPIドキュメントを参照して、リクエスト/レスポンス形式と認証要件について確認してください。</p>\n<h3 id=\"イベント関数の例\">イベント関数の例</h3>\n<p>次の例は、イベント関数から外部モデルAPIを呼び出す方法を示しています。ペイロードの構造とレスポンスの解析を、あなたのモデルのAPIに合わせて調整してください。</p>\n\n<div class=\"pv2\">\n<div class=\"expand ba pa2 b--black-20 pv3\">\n    <div class=\"expand-label\" style=\"cursor: pointer;\" onclick=\"$h = $(this);$h.next('div').slideToggle(100,function () {$h.children('i').attr('class',function () {return $h.next('div').is(':visible') ? 'fas fa-chevron-down' : 'fas fa-chevron-right';});});\">\n        <i style=\"font-size:x-small;\" class=\"fas fa-chevron-right\"></i>\n        <span style=\"font-weight:bold;\">\n        \n    \t\n    \tコードを表示する\n    \t\n    \t</span>\n    </div>\n    <div class=\"expand-content pa2\" style=\"display: none;\">\n        <div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-js\" data-lang=\"js\"><span style=\"display:flex;\"><span><span style=\"color:#a6e22e\">activate</span>(<span style=\"color:#66d9ef\">async</span> ({ <span style=\"color:#a6e22e\">event</span>, <span style=\"color:#a6e22e\">helper</span> }) =&gt; {\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#75715e\">// 1. イベントデータから特徴ペイロードを組み立てる\n</span></span></span><span style=\"display:flex;\"><span><span style=\"color:#75715e\"></span>  <span style=\"color:#75715e\">// これをモデルの期待する入力形式に合わせて調整してください\n</span></span></span><span style=\"display:flex;\"><span><span style=\"color:#75715e\"></span>  <span style=\"color:#66d9ef\">const</span> <span style=\"color:#a6e22e\">payload</span> <span style=\"color:#f92672\">=</span> {\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">product_id</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">event</span>.<span style=\"color:#a6e22e\">data</span>.<span style=\"color:#a6e22e\">udo</span>.<span style=\"color:#a6e22e\">product_id</span>,\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">category</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">event</span>.<span style=\"color:#a6e22e\">data</span>.<span style=\"color:#a6e22e\">udo</span>.<span style=\"color:#a6e22e\">product_category</span>,\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">price</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">event</span>.<span style=\"color:#a6e22e\">data</span>.<span style=\"color:#a6e22e\">udo</span>.<span style=\"color:#a6e22e\">product_price</span>\n</span></span><span style=\"display:flex;\"><span>  };\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#75715e\">// 2. モデルAPIを呼び出す\n</span></span></span><span style=\"display:flex;\"><span><span style=\"color:#75715e\"></span>  <span style=\"color:#66d9ef\">const</span> <span style=\"color:#a6e22e\">response</span> <span style=\"color:#f92672\">=</span> <span style=\"color:#66d9ef\">await</span> <span style=\"color:#a6e22e\">fetch</span>(\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">helper</span>.<span style=\"color:#a6e22e\">getGlobalVariable</span>(<span style=\"color:#e6db74\">&#39;MODEL_ENDPOINT_URL&#39;</span>),\n</span></span><span style=\"display:flex;\"><span>    {\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#a6e22e\">method</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;POST&#39;</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#a6e22e\">headers</span><span style=\"color:#f92672\">:</span> {\n</span></span><span style=\"display:flex;\"><span>        <span style=\"color:#e6db74\">&#39;Authorization&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;Bearer &#39;</span> <span style=\"color:#f92672\">+</span> <span style=\"color:#a6e22e\">helper</span>.<span style=\"color:#a6e22e\">getAuth</span>(<span style=\"color:#e6db74\">&#39;model_api_token&#39;</span>),\n</span></span><span style=\"display:flex;\"><span>        <span style=\"color:#e6db74\">&#39;Content-Type&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;application/json&#39;</span>\n</span></span><span style=\"display:flex;\"><span>      },\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#a6e22e\">body</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">JSON</span>.<span style=\"color:#a6e22e\">stringify</span>(<span style=\"color:#a6e22e\">payload</span>)\n</span></span><span style=\"display:flex;\"><span>    }\n</span></span><span style=\"display:flex;\"><span>  );\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#66d9ef\">if</span> (<span style=\"color:#f92672\">!</span><span style=\"color:#a6e22e\">response</span>.<span style=\"color:#a6e22e\">ok</span>) {\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">console</span>.<span style=\"color:#a6e22e\">error</span>(<span style=\"color:#e6db74\">&#39;Model API error:&#39;</span>, <span style=\"color:#a6e22e\">response</span>.<span style=\"color:#a6e22e\">status</span>);\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#66d9ef\">return</span>;\n</span></span><span style=\"display:flex;\"><span>  }\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#66d9ef\">const</span> <span style=\"color:#a6e22e\">result</span> <span style=\"color:#f92672\">=</span> <span style=\"color:#66d9ef\">await</span> <span style=\"color:#a6e22e\">response</span>.<span style=\"color:#a6e22e\">json</span>();\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#75715e\">// 3. Tealium Collectに予測を送信する\n</span></span></span><span style=\"display:flex;\"><span><span style=\"color:#75715e\"></span>  <span style=\"color:#75715e\">// 属性名をモデルのレスポンスに合わせて調整してください\n</span></span></span><span style=\"display:flex;\"><span><span style=\"color:#75715e\"></span>  <span style=\"color:#a6e22e\">track</span>({\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">tealium_event</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;model_prediction&#39;</span>,\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">prediction_score</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">result</span>.<span style=\"color:#a6e22e\">score</span>,\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">prediction_label</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">result</span>.<span style=\"color:#a6e22e\">label</span>\n</span></span><span style=\"display:flex;\"><span>  }, {\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">tealium_account</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">event</span>.<span style=\"color:#a6e22e\">account</span>,\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">tealium_profile</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">event</span>.<span style=\"color:#a6e22e\">profile</span>,\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">tealium_datasource</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">helper</span>.<span style=\"color:#a6e22e\">getGlobalVariable</span>(<span style=\"color:#e6db74\">&#39;DATASOURCE_KEY&#39;</span>)\n</span></span><span style=\"display:flex;\"><span>  });\n</span></span><span style=\"display:flex;\"><span>});\n</span></span></code></pre></div>\n    </div>\n</div>\n</div>\n<h3 id=\"ビジター関数の例\">ビジター関数の例</h3>\n<p>ビジター関数は蓄積されたプロファイルデータにアクセスしてスコアリングが可能ですが、<code>event</code> オブジェクトにはアクセスできませんので、<code>account</code>、<code>profile</code>、および <code>datasource</code> の値にはグローバル変数を使用する必要があります。</p>\n\n<div class=\"pv2\">\n<div class=\"expand ba pa2 b--black-20 pv3\">\n    <div class=\"expand-label\" style=\"cursor: pointer;\" onclick=\"$h = $(this);$h.next('div').slideToggle(100,function () {$h.children('i').attr('class',function () {return $h.next('div').is(':visible') ? 'fas fa-chevron-down' : 'fas fa-chevron-right';});});\">\n        <i style=\"font-size:x-small;\" class=\"fas fa-chevron-right\"></i>\n        <span style=\"font-weight:bold;\">\n        \n    \t\n    \tコードを表示する\n    \t\n    \t</span>\n    </div>\n    <div class=\"expand-content pa2\" style=\"display: none;\">\n        <div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-js\" data-lang=\"js\"><span style=\"display:flex;\"><span><span style=\"color:#a6e22e\">activate</span>(<span style=\"color:#66d9ef\">async</span> ({ <span style=\"color:#a6e22e\">visitor</span>, <span style=\"color:#a6e22e\">visit</span>, <span style=\"color:#a6e22e\">helper</span> }) =&gt; {\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#75715e\">// ビジタープロファイル属性からペイロードを組み立てる\n</span></span></span><span style=\"display:flex;\"><span><span style=\"color:#75715e\"></span>  <span style=\"color:#66d9ef\">const</span> <span style=\"color:#a6e22e\">payload</span> <span style=\"color:#f92672\">=</span> {\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">lifetime_value</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">visitor</span>.<span style=\"color:#a6e22e\">metrics</span>.<span style=\"color:#a6e22e\">lifetime_value</span>,\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">purchase_count</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">visitor</span>.<span style=\"color:#a6e22e\">metrics</span>.<span style=\"color:#a6e22e\">purchase_count</span>,\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">days_since_last_purchase</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">visitor</span>.<span style=\"color:#a6e22e\">metrics</span>.<span style=\"color:#a6e22e\">days_since_last_purchase</span>,\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">loyalty_tier</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">visitor</span>.<span style=\"color:#a6e22e\">properties</span>.<span style=\"color:#a6e22e\">loyalty_tier</span>\n</span></span><span style=\"display:flex;\"><span>  };\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#66d9ef\">const</span> <span style=\"color:#a6e22e\">response</span> <span style=\"color:#f92672\">=</span> <span style=\"color:#66d9ef\">await</span> <span style=\"color:#a6e22e\">fetch</span>(\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">helper</span>.<span style=\"color:#a6e22e\">getGlobalVariable</span>(<span style=\"color:#e6db74\">&#39;MODEL_ENDPOINT_URL&#39;</span>),\n</span></span><span style=\"display:flex;\"><span>    {\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#a6e22e\">method</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;POST&#39;</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#a6e22e\">headers</span><span style=\"color:#f92672\">:</span> {\n</span></span><span style=\"display:flex;\"><span>        <span style=\"color:#e6db74\">&#39;Authorization&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;Bearer &#39;</span> <span style=\"color:#f92672\">+</span> <span style=\"color:#a6e22e\">helper</span>.<span style=\"color:#a6e22e\">getAuth</span>(<span style=\"color:#e6db74\">&#39;model_api_token&#39;</span>),\n</span></span><span style=\"display:flex;\"><span>        <span style=\"color:#e6db74\">&#39;Content-Type&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;application/json&#39;</span>\n</span></span><span style=\"display:flex;\"><span>      },\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#a6e22e\">body</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">JSON</span>.<span style=\"color:#a6e22e\">stringify</span>(<span style=\"color:#a6e22e\">payload</span>)\n</span></span><span style=\"display:flex;\"><span>    }\n</span></span><span style=\"display:flex;\"><span>  );\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#66d9ef\">if</span> (<span style=\"color:#f92672\">!</span><span style=\"color:#a6e22e\">response</span>.<span style=\"color:#a6e22e\">ok</span>) {\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">console</span>.<span style=\"color:#a6e22e\">error</span>(<span style=\"color:#e6db74\">&#39;Model API error:&#39;</span>, <span style=\"color:#a6e22e\">response</span>.<span style=\"color:#a6e22e\">status</span>);\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#66d9ef\">return</span>;\n</span></span><span style=\"display:flex;\"><span>  }\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#66d9ef\">const</span> <span style=\"color:#a6e22e\">result</span> <span style=\"color:#f92672\">=</span> <span style=\"color:#66d9ef\">await</span> <span style=\"color:#a6e22e\">response</span>.<span style=\"color:#a6e22e\">json</span>();\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#75715e\">// ビジター関数では、ルーティングにグローバル変数を使用する\n</span></span></span><span style=\"display:flex;\"><span><span style=\"color:#75715e\"></span>  <span style=\"color:#75715e\">// イベントが正しいプロファイルに紐付けられるようにvisitor_idを含める\n</span></span></span><span style=\"display:flex;\"><span><span style=\"color:#75715e\"></span>  <span style=\"color:#a6e22e\">track</span>({\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">tealium_event</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;churn_prediction&#39;</span>,\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">tealium_visitor_id</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">visitor</span>.<span style=\"color:#a6e22e\">properties</span>.<span style=\"color:#a6e22e\">visitor_id</span>,\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">churn_score</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">result</span>.<span style=\"color:#a6e22e\">churn_probability</span>,\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">churn_risk_tier</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">result</span>.<span style=\"color:#a6e22e\">risk_tier</span>\n</span></span><span style=\"display:flex;\"><span>  }, {\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">tealium_account</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">helper</span>.<span style=\"color:#a6e22e\">getGlobalVariable</span>(<span style=\"color:#e6db74\">&#39;TEALIUM_ACCOUNT&#39;</span>),\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">tealium_profile</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">helper</span>.<span style=\"color:#a6e22e\">getGlobalVariable</span>(<span style=\"color:#e6db74\">&#39;TEALIUM_PROFILE&#39;</span>),\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">tealium_datasource</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">helper</span>.<span style=\"color:#a6e22e\">getGlobalVariable</span>(<span style=\"color:#e6db74\">&#39;DATASOURCE_KEY&#39;</span>)\n</span></span><span style=\"display:flex;\"><span>  });\n</span></span><span style=\"display:flex;\"><span>});\n</span></span></code></pre></div>\n    </div>\n</div>\n</div>\n<h3 id=\"モデル応答の遅延処理\">モデル応答の遅延処理</h3>\n<p>モデル推論に10秒以上かかる場合は、非同期パターンを使用します。関数はリクエストを送信してすぐに終了します。処理が完了すると、モデルがTealiumにコールバックします。</p>\n<ol>\n<li>関数はビジターデータとコールバックURLをモデルエンドポイントに送信します</li>\n<li>モデルエンドポイントは直ちに202 Acceptedを返します</li>\n<li>関数は終了します（タイムアウトなし）</li>\n<li>モデルは非同期で推論を完了します</li>\n<li>モデルはTealiumのHTTP APIに予測をPOSTします</li>\n<li>エンリッチメントは予測をビジタープロファイルに書き込みます</li>\n</ol>\n<h4 id=\"モデルコールバック用のhttp-apiデータソースを作成する\">モデルコールバック用のHTTP APIデータソースを作成する</h4>\n<p>モデルコールバックを受信するためのHTTP APIデータソースを作成します。詳細については、<a href=\"/ja/server-side/data-sources/platform-data-sources/create-data-source/\">データソースを作成する</a>を参照してください。</p>\n<h3 id=\"非同期関数コード\">非同期関数コード</h3>\n<p>次の関数コードを使用します：</p>\n\n<div class=\"pv2\">\n<div class=\"expand ba pa2 b--black-20 pv3\">\n    <div class=\"expand-label\" style=\"cursor: pointer;\" onclick=\"$h = $(this);$h.next('div').slideToggle(100,function () {$h.children('i').attr('class',function () {return $h.next('div').is(':visible') ? 'fas fa-chevron-down' : 'fas fa-chevron-right';});});\">\n        <i style=\"font-size:x-small;\" class=\"fas fa-chevron-right\"></i>\n        <span style=\"font-weight:bold;\">\n        \n    \t\n    \tコードを表示する\n    \t\n    \t</span>\n    </div>\n    <div class=\"expand-content pa2\" style=\"display: none;\">\n        <div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-js\" data-lang=\"js\"><span style=\"display:flex;\"><span><span style=\"color:#a6e22e\">activate</span>(<span style=\"color:#66d9ef\">async</span> ({ <span style=\"color:#a6e22e\">visitor</span>, <span style=\"color:#a6e22e\">visit</span>, <span style=\"color:#a6e22e\">helper</span> }) =&gt; {\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#66d9ef\">const</span> <span style=\"color:#a6e22e\">payload</span> <span style=\"color:#f92672\">=</span> {\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">visitor_id</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">visitor</span>.<span style=\"color:#a6e22e\">properties</span>.<span style=\"color:#a6e22e\">visitor_id</span>,\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">lifetime_value</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">visitor</span>.<span style=\"color:#a6e22e\">metrics</span>.<span style=\"color:#a6e22e\">lifetime_value</span>,\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">purchase_count</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">visitor</span>.<span style=\"color:#a6e22e\">metrics</span>.<span style=\"color:#a6e22e\">purchase_count</span>,\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">callback_url</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">helper</span>.<span style=\"color:#a6e22e\">getGlobalVariable</span>(<span style=\"color:#e6db74\">&#39;TEALIUM_CALLBACK_URL&#39;</span>),\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">callback_datasource</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">helper</span>.<span style=\"color:#a6e22e\">getGlobalVariable</span>(<span style=\"color:#e6db74\">&#39;DATASOURCE_KEY&#39;</span>)\n</span></span><span style=\"display:flex;\"><span>  };\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#75715e\">// 応答を待たずに発火 - レスポンスを待たない\n</span></span></span><span style=\"display:flex;\"><span><span style=\"color:#75715e\"></span>  <span style=\"color:#a6e22e\">fetch</span>(\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">helper</span>.<span style=\"color:#a6e22e\">getGlobalVariable</span>(<span style=\"color:#e6db74\">&#39;MODEL_ENDPOINT_URL&#39;</span>),\n</span></span><span style=\"display:flex;\"><span>    {\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#a6e22e\">method</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;POST&#39;</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#a6e22e\">headers</span><span style=\"color:#f92672\">:</span> {\n</span></span><span style=\"display:flex;\"><span>        <span style=\"color:#e6db74\">&#39;Authorization&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;Bearer &#39;</span> <span style=\"color:#f92672\">+</span> <span style=\"color:#a6e22e\">helper</span>.<span style=\"color:#a6e22e\">getAuth</span>(<span style=\"color:#e6db74\">&#39;model_api_token&#39;</span>),\n</span></span><span style=\"display:flex;\"><span>        <span style=\"color:#e6db74\">&#39;Content-Type&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;application/json&#39;</span>\n</span></span><span style=\"display:flex;\"><span>      },\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#a6e22e\">body</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">JSON</span>.<span style=\"color:#a6e22e\">stringify</span>(<span style=\"color:#a6e22e\">payload</span>)\n</span></span><span style=\"display:flex;\"><span>    }\n</span></span><span style=\"display:flex;\"><span>  ).<span style=\"color:#66d9ef\">catch</span>(<span style=\"color:#a6e22e\">error</span> =&gt; <span style=\"color:#a6e22e\">console</span>.<span style=\"color:#a6e22e\">error</span>(<span style=\"color:#e6db74\">&#39;Request failed:&#39;</span>, <span style=\"color:#a6e22e\">error</span>.<span style=\"color:#a6e22e\">message</span>));\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#75715e\">// 関数はすぐに終了 - モデルが準備ができたときにコールバックする\n</span></span></span><span style=\"display:flex;\"><span><span style=\"color:#75715e\"></span>});\n</span></span></code></pre></div>\n    </div>\n</div>\n</div>\n<h3 id=\"モデルコールバックペイロード\">モデルコールバックペイロード</h3>\n<p>モデルエンドポイントは、推論が完了するとTealium HTTP APIにPOSTする必要があります：</p>\n<pre tabindex=\"0\"><code>POST https://collect.tealiumiq.com/event?tealium_account={account}&amp;tealium_profile={profile}&amp;tealium_datasource={datasource_key}\n\n{\n  &#34;tealium_event&#34;: &#34;model_prediction_complete&#34;,\n  &#34;tealium_visitor_id&#34;: &#34;original_visitor_id_from_request&#34;,\n  &#34;churn_score&#34;: 0.82,\n  &#34;churn_risk_tier&#34;: &#34;high&#34;,\n  &#34;model_version&#34;: &#34;v2.1&#34;\n}\n</code></pre><p><code>tealium_visitor_id</code>を含めることで、予測が正しいビジタープロファイルに紐付けられることが保証されます。ステップ3で説明されているように、これらの属性をプロファイルに書き込むためにエンリッチメントを構成します。</p>\n<h2 id=\"ステップ2-mlプラットフォームの認証情報を構成する\">ステップ2: MLプラットフォームの認証情報を構成する</h2>\n<p>モデルAPIの認証情報と構成をTealium関数に安全に保存します。</p>\n<h3 id=\"mlプラットフォームの認証トークンを追加する\">MLプラットフォームの認証トークンを追加する</h3>\n<p>Tealiumプラットフォームの関数にAPI認証情報を保存するには、認証トークンを追加します。この例では、APIキーまたはトークンエンドポイントURLを<code>model_api_token</code>として保存します。詳細については、<a href=\"/ja/server-side/functions/event-visitor-functions/authentication/\">認証を追加する</a>を参照してください。</p>\n<p>関数でトークンを取得するには、次のコードを使用します：</p>\n<pre tabindex=\"0\"><code>    {\n      method: &#39;POST&#39;,\n      headers: {\n        &#39;Authorization&#39;: &#39;Bearer &#39; + helper.getAuth(&#39;model_api_token&#39;),\n        &#39;Content-Type&#39;: &#39;application/json&#39;\n      },\n      body: JSON.stringify(payload)\n    }\n</code></pre><p class=\"note\"><i class=\"fa fa-exclamation-triangle\"></i>認証トークンは、HTTPリクエスト内の関数からのみ参照できます。HTTPリクエストの外でトークンを参照しようとすると、トークンはUUIDプレースホルダーに置き換えられます。</p>\n<h3 id=\"mlプラットフォームのグローバル変数を追加する\">MLプラットフォームのグローバル変数を追加する</h3>\n<p>関数のための構成情報、例えばモデルエンドポイントのURLや名前をグローバル変数として保存します。この例では、モデルエンドポイントのURLを<code>MODEL_ENDPOINT_URL</code>として保存します。詳細については、<a href=\"/ja/server-side/functions/manage-functions/manage-global-variables/\">グローバル変数を管理する</a>を参照してください。</p>\n<p>関数で変数を取得するには、次のコードを使用します：</p>\n<pre tabindex=\"0\"><code>  const response = await fetch(\n    helper.getGlobalVariable(&#39;MODEL_ENDPOINT_URL&#39;),\n...\n    }\n  );\n</code></pre><h2 id=\"ステップ3-ビジタープロファイルにチャーンスコアを追加する\">ステップ3: ビジタープロファイルにチャーンスコアを追加する</h2>\n<p>予測を下流システムで活用する前に、モデルの出力をビジタープロファイルに保存して処理するための属性とエンリッチメントを構成する必要があります。</p>\n<h3 id=\"チャーンスコアプロファイル属性を作成する\">チャーンスコアプロファイル属性を作成する</h3>\n<p>ビジタープロファイルにモデルの予測を保存するための属性を作成します。この例では、<code>churn_score</code>という数値属性を作成します。</p>\n<p>詳細については、<a href=\"/ja/server-side/attributes/manage-as-attributes/#create-an-attribute\">属性を作成する</a>を参照してください。</p>\n<p>作成した属性にモデルの予測をイベントからビジタープロファイルに書き込むためのエンリッチメントを作成します。エンリッチメントがなければ、予測はビジタープロファイルに表示されません。この例では、<code>tealium_event</code>が<code>model_prediction</code>（またはあなたのイベント名）と等しい場合に、<code>track()</code>コールから<code>prediction_score</code>イベント属性を<code>churn_score</code>ビジター属性に書き込むエンリッチメントを作成します。</p>\n<div class=\"mv3 pv2 ph4 ba br2 b--light-gray\">\n  <div class=\"boolean-logic-container\">\n      <div class=\"condition-group\">\n        <span class=\"input\">tealium_event</span>\n        <span class=\"operator\">EQUALS (IGNORE CASE)</span>\n        <span class=\"filter\">model_prediction</span>\n      </div>\n  </div>\n</div>\n<p>詳細については、<a href=\"/ja/server-side/attributes/enrichments/add-enrichment/\">エンリッチメントを追加する</a>を参照してください。</p>\n<h2 id=\"ステップ4-高リスクのチャーンオーディエンスを活性化する\">ステップ4: 高リスクのチャーンオーディエンスを活性化する</h2>\n<p>予測属性を使用してオーディエンスを構築し、チャーンリスクに基づいてアクションをトリガーして活性化します。</p>\n<h3 id=\"チャーンリスクオーディエンスの作成\">チャーンリスクオーディエンスの作成</h3>\n<p>予測属性に基づいてオーディエンスを作成します。この例では、<code>churn_score</code>が<code>0.7</code>を超える訪問のために<code>High Churn Risk</code>オーディエンスを作成します。</p>\n<div class=\"mv3 pv2 ph4 ba br2 b--light-gray\">\n  <div class=\"boolean-logic-container\">\n      <div class=\"condition-group\">\n        <span class=\"input\">churn_score</span>\n        <span class=\"operator\">GREATER THAN</span>\n        <span class=\"filter\">0.7</span>\n      </div>\n  </div>\n</div>\n<p>詳細については、<a href=\"/ja/server-side/audiences/manage/#create-an-audience\">オーディエンスの作成</a>を参照してください。</p>\n<h3 id=\"コネクタの構成\">コネクタの構成</h3>\n<p>予測値に基づいてオーディエンスにコネクタアクションをアタッチしてアクティベートします。この例では、高いチャーンリスクのためのリテンションメールをトリガーしたり、購買意向に基づいてユーザーをリマーケティングオーディエンスに追加することができます。</p>\n<p>詳細については、<a href=\"/ja/server-side/connectors/add/\">コネクタの追加</a>を参照してください。</p>\n<h2 id=\"デバッグ\">デバッグ</h2>\n<h3 id=\"ログの表示\">ログの表示</h3>\n<p>デバッグには<code>console.log()</code>を使用します：</p>\n<pre tabindex=\"0\"><code>console.log(&#39;Payload:&#39;, JSON.stringify(payload));\nconsole.log(&#39;Response status:&#39;, response.status);\nconsole.log(&#39;Result:&#39;, JSON.stringify(result));\n</code></pre><p>ログを表示するには、関数エディターの<strong>ログ</strong>タブをクリックします。</p>\n<h3 id=\"一般的な問題\">一般的な問題</h3>\n<table>\n<thead>\n<tr>\n<th>問題</th>\n<th>解決策</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>関数がタイムアウトする</td>\n<td>モデルが10秒以内に応答することを確認してください。専用またはプロビジョニングされたエンドポイントを使用してください。平均モデル応答時間に応じて非同期モデル呼び出しを検討してください。</td>\n</tr>\n<tr>\n<td>プロファイルに予測が表示されない</td>\n<td>エンリッチメントが構成されていることを確認してください。<code>tealium_datasource</code>の値をチェックしてください。</td>\n</tr>\n<tr>\n<td>認証エラー</td>\n<td><strong>認証トークン</strong>でトークン値を確認してください。トークンの有効期限をチェックしてください。</td>\n</tr>\n<tr>\n<td><code>track()</code>が実行されない</td>\n<td><code>track()</code>の前にエラーをチェックしてください。データソースがアクティブであることを確認してください。</td>\n</tr>\n</tbody>\n</table>\n<h2 id=\"リソース\">リソース</h2>\n<ul>\n<li><a href=\"/ja/server-side/functions/about/\">関数</a></li>\n</ul>\n"
        }  

    , 
        {
            "weight": "0",
            "url": "https://docs.tealium.com/ja/guides/ai-connectors-and-functions/",
            "title": "AIコネクタとTealium機能の概要",
            "body": "<p>Tealiumは、リアルタイムデータワークフローにAIモデルを統合するための2つのアプローチをサポートしています：</p>\n<ul>\n<li><strong>AIコネクタ</strong>：プロンプトベースのインタラクションのためにサポートされている大規模言語モデル（LLM）プロバイダーと統合します。</li>\n<li><strong>Tealium機能</strong>：独自のモデルを呼び出すか、カスタムエンドポイントを呼び出します。</li>\n</ul>\n<p>このガイドを使用して、各アプローチの動作と使用時期を理解してください。</p>\n<h2 id=\"aiコネクタ\">AIコネクタ</h2>\n<h3 id=\"動作方法\">動作方法</h3>\n<p>AIコネクタは、サポートされているプロバイダーのホストされたLLM APIと統合し、構造化されたJSONを返すプロンプトベースのインタラクションが必要です。これらは、サポートされているすべてのプロバイダー間で一貫したプロンプト、応答、およびアクティベーションパターンに従います。</p>\n<p>AIコネクタを使用するには、プロバイダーの認証資格情報と、プロンプトとTealiumデータをAIモデルに送信するように定義された少なくとも1つの構成済みアクションが必要です。</p>\n<p class=\"note\"><i class=\"fa fa-exclamation-triangle\"></i>AIコネクタはLLMアクティベーションのみを目的として設計されています。数値スコアや表形式の予測を返す従来の機械学習モデルを呼び出すためには、Tealium機能を使用してください。</p>\n<h3 id=\"データフロー\">データフロー</h3>\n<figure class=\"tc\"><a class=\"slb\" href=\"/images/guides/ai-connectors-flow.png\"><img src=\"https://docs.tealium.com/images/guides/ai-connectors-flow.png\"\n         alt=\"AIコネクタのデータフロー\"\n         title=\"AIコネクタのデータフロー\" width=\"30%\"/>\n    </a>\n</figure>\n<ol>\n<li><strong>トリガーが発火</strong>：イベントまたはオーディエンスの変更がコネクタアクションをトリガーします。</li>\n<li><strong>プロンプト送信</strong>：コネクタはプロンプトとTealiumデータをAIモデルのエンドポイントに送信します。</li>\n<li><strong>応答受信</strong>：モデルは要求された値を生成し、JSONオブジェクトを返します。</li>\n<li><strong>イベント取り込み</strong>：コネクタは応答をTealium Collectに転送します。</li>\n<li><strong>プロファイルが豊かに</strong>：エンリッチメントルールは応答値を訪問プロファイル属性に書き込みます。</li>\n<li><strong>オーディエンスがアクティブ化</strong>：オーディエンスルールが更新された属性を評価し、下流のコネクタが発火します。</li>\n</ol>\n<h3 id=\"プロンプト\">プロンプト</h3>\n<p>プロンプトは、モデルに評価するコンテキストデータを指示し、特定の質問をし、期待される応答を定義します。ベンダーコネクタによっては、応答出力について特定の指示を含める必要がある場合もある場合もありません。詳細については、特定のコネクタの指示を参照してください。</p>\n<h4 id=\"コンテキストデータ\">コンテキストデータ</h4>\n<p>プロンプトのコンテキストに特定の属性またはイベント全体または訪問データオブジェクトを含めることができます。</p>\n<p>特定の属性を含めるには、コネクタアクションでそれらをマップし、プロンプトでそれらを参照します。たとえば、<code>product_review</code>をマップする場合、プロンプトで<code>{{product_review}}</code>を参照できます。</p>\n<p>プロンプトにデータオブジェクト全体を含めるには、コネクタアクション構成で<strong>イベントペイロード追加</strong>または<strong>訪問プロファイル追加</strong>を有効にし、プロンプトで<code>{{event_payload}}</code>または<code>{{visitor_profile}}</code>を参照します。</p>\n<p>オーディエンスアクションの場合、訪問プロファイルオブジェクト内の現在の訪問データを含めるために<strong>現在の訪問追加</strong>も有効にすることができます。</p>\n<p><strong>重要</strong><br>\nコネクタがコンテキストデータに関するプロンプト指示を必要とする場合、それをプロンプトの最初の行に含めます。たとえば：</p>\n<pre tabindex=\"0\"><code class=\"language-wrap\" data-lang=\"wrap\">顧客イベントを説明するJSONオブジェクトを受け取ります：\n{{event_payload}}\n</code></pre><p>コネクタが応答形式に関するプロンプト指示を必要とする場合、プロンプトの最後にそれを含めます。たとえば：</p>\n<pre tabindex=\"0\"><code class=\"language-wrap\" data-lang=\"wrap\">次の構造で1行に1つのJSONオブジェクトのみを返します：\n{\n  &#34;tealium_account&#34;: &#34;{{tealium_account}}&#34;,\n  &#34;tealium_profile&#34;: &#34;{{tealium_profile}}&#34;,\n  &#34;tealium_visitor_id&#34;: &#34;{{tealium_visitor_id}}&#34;,\n  &#34;tealium_event&#34;:  &#34;ai_response&#34;,\n  &#34;ai_review_sentiment&#34;: &#34;&lt;customer review sentiment&gt;&#34;\n}\n</code></pre><h4 id=\"質問\">質問</h4>\n<p>プロンプトは、モデルにデータを評価する方法を伝え、1つ以上の特定の値を生成するように依頼します。</p>\n<p>たとえば、このプロンプトは、顧客のレビューの感情を表すテキスト値を生成するように依頼します：</p>\n<pre tabindex=\"0\"><code class=\"language-wrap\" data-lang=\"wrap\">提供された製品レビューイベントに基づいて、顧客の感情を「不満足」、「中立」、または「満足」として分類します。\n</code></pre><h3 id=\"応答イベント\">応答イベント</h3>\n<p>コネクタはAI応答を解析し、JSONオブジェクトを抽出し、イベントとしてTealium Collectに送り返します。</p>\n<p>応答イベントの例：</p>\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-json\" data-lang=\"json\"><span style=\"display:flex;\"><span>{\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;tealium_account&#34;</span>: <span style=\"color:#e6db74\">&#34;acme&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;tealium_profile&#34;</span>: <span style=\"color:#e6db74\">&#34;main&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;tealium_visitor_id&#34;</span>: <span style=\"color:#e6db74\">&#34;383...05d&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;tealium_event&#34;</span>: <span style=\"color:#e6db74\">&#34;ai_response&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;ai_review_sentiment&#34;</span>: <span style=\"color:#e6db74\">&#34;satisfied&#34;</span>\n</span></span><span style=\"display:flex;\"><span>}\n</span></span></code></pre></div><h3 id=\"例\">例</h3>\n<h4 id=\"イベントトリガー\">イベントトリガー</h4>\n<p>この例では、顧客が製品レビューを提出したばかりで、プロンプトはモデルに感情を評価するように依頼します。</p>\n<p><strong>例のプロンプト</strong>：</p>\n<pre tabindex=\"0\"><code class=\"language-wrap\" data-lang=\"wrap\">顧客の製品レビューを説明するJSONオブジェクトを受け取ります：\n{{event_payload}}\n\n提供された製品レビューイベントに基づいて、顧客の感情を「不満足」、「中立」、または「満足」として分類します。\n\n次の構造で1行に1つのJSONオブジェクトのみを返します：\n{\n  &#34;tealium_account&#34;: &#34;{{tealium_account}}&#34;,\n  &#34;tealium_profile&#34;: &#34;{{tealium_profile}}&#34;,\n  &#34;tealium_visitor_id&#34;: &#34;{{tealium_visitor_id}}&#34;,\n  &#34;tealium_event&#34;:  &#34;ai_response&#34;,\n  &#34;ai_review_sentiment&#34;: &#34;&lt;customer review sentiment&gt;&#34;\n}\n</code></pre><p><strong>例の応答イベント</strong>：</p>\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-json\" data-lang=\"json\"><span style=\"display:flex;\"><span>{\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;tealium_account&#34;</span>: <span style=\"color:#e6db74\">&#34;acme&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;tealium_profile&#34;</span>: <span style=\"color:#e6db74\">&#34;main&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;tealium_visitor_id&#34;</span>: <span style=\"color:#e6db74\">&#34;383...05d&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;tealium_event&#34;</span>: <span style=\"color:#e6db74\">&#34;ai_response&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;ai_review_sentiment&#34;</span>: <span style=\"color:#e6db74\">&#34;satisfied&#34;</span>\n</span></span><span style=\"display:flex;\"><span>}\n</span></span></code></pre></div><h4 id=\"オーディエンストリガー\">オーディエンストリガー</h4>\n<p>この例では、顧客が「頻繁なブラウザ、購入なし」というオーディエンスに参加し、プロンプトはモデルに顧客の意図を評価するように依頼します。</p>\n<p><strong>例のプロンプト</strong>：</p>\n<pre tabindex=\"0\"><code class=\"language-wrap\" data-lang=\"wrap\">小売り訪問を説明するJSONオブジェクトを受け取ります：\n{{visitor_profile}}\n\n提供された顧客データに基づいて、彼らのおそらくのショッピング意図を「掘り出し物探し」、「製品比較」、「後での調査」、または「興味なし」として分類します。データが不足している場合は、最善の推測を行います。\n\n次の構造で1行に1つのJSONオブジェクトのみを返します：\n{\n  &#34;tealium_account&#34;: &#34;{{tealium_account}}&#34;,\n  &#34;tealium_profile&#34;: &#34;{{tealium_profile}}&#34;,\n  &#34;tealium_visitor_id&#34;: &#34;{{tealium_visitor_id}}&#34;,\n  &#34;tealium_event&#34;:  &#34;ai_response&#34;,\n  &#34;ai_shopping_intent&#34;: &#34;&lt;customer shopping intent&gt;&#34;\n}\n</code></pre><p><strong>例の応答イベント</strong>：</p>\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-json\" data-lang=\"json\"><span style=\"display:flex;\"><span>{\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;tealium_account&#34;</span>: <span style=\"color:#e6db74\">&#34;acme&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;tealium_profile&#34;</span>: <span style=\"color:#e6db74\">&#34;main&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;tealium_visitor_id&#34;</span>: <span style=\"color:#e6db74\">&#34;383...05d&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;tealium_event&#34;</span>: <span style=\"color:#e6db74\">&#34;ai_response&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;ai_shopping_intent&#34;</span>: <span style=\"color:#e6db74\">&#34;bargain hunting&#34;</span>\n</span></span><span style=\"display:flex;\"><span>}\n</span></span></code></pre></div><h3 id=\"アクティベーション\">アクティベーション</h3>\n<p>モデルが有効なJSONオブジェクトを返すと、コネクタはそれをTealium Collectに受信イベントとして転送します。その後、エンリッチメントルールは応答値を訪問プロファイル属性に書き込みます。そこから、オーディエンスと下流のコネクタは、豊かにされたプロファイルに基づいてアクティブ化されます。</p>\n<p class=\"tip\"><i class=\"fa fa-info-circle\"></i><code>tealium_event</code>にコネクタ固有の値を構成し、使用ケースに特有の応答属性を命名することで、これらのイベントに一致するイベントフィードやルールを簡単に作成できます。</p>\n<p>AI応答イベントアクティベーションのための例のルール：</p>\n<div class=\"mv3 pv2 ph4 ba br2 b--light-gray\">\n  <div class=\"boolean-logic-container\">\n      <div class=\"condition-group\">\n        <span class=\"input\">tealium_event</span>\n        <span class=\"operator\">EQUALS</span>\n        <span class=\"filter\">ai_response</span>\n      </div>\n      <div class=\"fw8 mv2\">AND</div>\n      <div class=\"condition-group\">\n        <span class=\"input\">ai_review_sentiment</span>\n        <span class=\"operator\">IS POPULATED</span>\n        \n      </div>\n  </div>\n</div>\n<h3 id=\"テスト\">テスト</h3>\n<p>本番環境でAIコネクタをアクティブ化する前に、コネクタマッピングで<strong>デバッグモード</strong>を有効にし、トレースを使用して構成とプロンプトの動作を検証します。デバッグモードを使用すると、本番コストを発生させたり、ライブデータに影響を与えたりする前に、エラーをキャッチし、プロンプトを最適化するのに役立ちます。</p>\n<p>デバッグモードでは、コネクタはAIリクエストを実行しますが、応答イベントをアカウントに送り返すことなく結果を記録します。トレースツールを使用して、完全なリクエストと応答を検査し、生成された出力を確認し、トリガー条件と属性マッピングが正しく機能していることを確認します。</p>\n<h3 id=\"サポートされているベンダー\">サポートされているベンダー</h3>\n<p>認証、モデル選択、プロンプト要件、およびアクションパラメーターなどの構成詳細は、各コネクターに固有です。</p>\n<p>以下のAIコネクターが利用可能です：</p>\n\n\n\n\n\n\n\n  \n  \n    \n  \n    \n  \n    \n  \n    \n  \n    \n  \n    \n  \n    \n  \n    \n  \n    \n  \n  \n\n\n\n\n\n<table>\n  <thead>\n    <tr>\n      <th>コネクター</th>\n      <th>説明</th>\n    </tr>\n  </thead>\n  <tbody>\n    \n  </tbody>\n</table>\n\n\n<h2 id=\"aiのための関数\">AIのための関数</h2>\n<h3 id=\"仕組み\">仕組み</h3>\n<p>Tealiumの関数は、独自のモデル（IYOM）を呼び出すためのコードベースのアプローチを提供します。事前に構成されたコネクターを使用する代わりに、イベントまたは訪問関数から直接任意のモデルエンドポイントを呼び出すためにJavaScriptを記述します。使用例には、数値スコアを返す従来の機械学習モデル、専用のAIコネクターを持たないプラットフォームでホストされているLLM、Snowflake Cortex、Databricks Model Serving、またはAmazon SageMakerなどのデータプラットフォーム上のエンドポイントが含まれます。</p>\n<p>Tealiumの関数は、イベント関数（イベント処理後にトリガーされる）と訪問関数（訪問プロファイルの更新後にトリガーされる）の両方をサポートし、即時のイベントコンテキストまたは蓄積された訪問履歴のいずれかをスコアリングすることができます。</p>\n<p>関数が発火すると、以下のステップに従います：</p>\n<ol>\n<li>イベント属性または訪問プロファイルデータを収集します。</li>\n<li>モデルエンドポイント用のリクエストペイロードを構築します。</li>\n<li><code>fetch()</code>を使用してエンドポイントを呼び出します。</li>\n<li>レスポンスを解析します。</li>\n<li><code>track()</code>を使用して予測をTealium Collectに送信します。</li>\n<li>エンリッチメントが訪問プロファイルに予測値を書き込みます。</li>\n</ol>\n<p>関数は直接訪問プロファイルを変更することはできないため、予測はTealium Collectを通じて流れ、エンリッチメントを通じてプロファイルに書き込まれる必要があります。</p>\n<p>関数は同期および非同期のモデル呼び出しをサポートしています。10秒以内に応答するモデルの場合は、標準の<code>await</code>パターンを使用します。遅いモデルの場合は、ファイア・アンド・フォーゲットパターンを使用します。関数はリクエストを送信し、すぐに終了します。その後、モデルが推論を完了したときに、結果をコールバックURLにPOSTします。</p>\n<p>実装の詳細については、<a href=\"/ja/guides/function-for-ai-activation/\">AIアクティベーションのための関数を作成する</a>を参照してください。</p>\n<h2 id=\"コネクターと関数の選択\">コネクターと関数の選択</h2>\n<h3 id=\"aiコネクターを使用する場合\">AIコネクターを使用する場合</h3>\n<ul>\n<li>プロンプトベースの推論のために大規模な言語モデルを呼び出す場合。</li>\n<li>サポートされているAIプロバイダーのいずれかに使用例がマッピングされている場合。</li>\n<li>イベントまたは訪問データを入力として使用する一貫したテンプレートをプロンプトに使用する場合。</li>\n<li>モデルがTealiumイベントとして直接転送できる構造化されたJSONを返す場合。</li>\n<li>コードを書かずにTealium UIを通じて統合を構成したい場合。</li>\n<li>ページビューなどの高ボリュームで低価値のイベントではなく、ターゲット指定された高価値のイベントやオーディエンスで構成される使用例の場合。</li>\n</ul>\n<p class=\"note\"><i class=\"fa fa-exclamation-triangle\"></i>AIコネクターは、分類ラベル、信頼値、または事前に定義されたリストからの識別子など、構造化された予測可能なJSON出力を返す使用例に設計されています。長文コンテンツやメディア生成には適していません。自由形式の出力が必要な使用例の場合は、本番環境に移行する前に組織のAIガバナンスプロセスに沿ってください。</p>\n<h3 id=\"tealium関数を使用する場合\">Tealium関数を使用する場合</h3>\n<ul>\n<li>数値スコアまたは表形式の予測を返す従来の機械学習モデルを呼び出す必要がある場合。</li>\n<li>専用のAIコネクターを持たないプラットフォームでモデルがホストされている場合。</li>\n<li>モデルに送信する前にカスタムロジック、データ変換、またはPIIフィルタリングが必要な場合。</li>\n<li>非同期モデル応答またはカスタムネットワーク構成を処理する必要がある場合。</li>\n</ul>\n<p>モデルにデータを送信する前にPIIを削除またはトークン化する必要がある場合は、Tealium関数を使用してカスタムフィルタリングを適用し、承認されたフィールドのみをエンドポイントに送信します。</p>\n<h2 id=\"比較概要\">比較概要</h2>\n<table>\n<thead>\n<tr>\n<th>考慮事項</th>\n<th>AIコネクター</th>\n<th>Tealium関数</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>構成</td>\n<td>UIを通じて構成</td>\n<td>JavaScriptコードを書く</td>\n</tr>\n<tr>\n<td>サポートされているモデルタイプ</td>\n<td>LLMのみ</td>\n<td>伝統的なMLを含む任意のMLまたはAIモデル</td>\n</tr>\n<tr>\n<td>サポートされているプロバイダー</td>\n<td><a href=\"#supported-vendors\">サポートされているベンダー</a>を参照</td>\n<td>任意のHTTPSエンドポイント</td>\n</tr>\n<tr>\n<td>プロンプト制御</td>\n<td>変数置換を伴うテンプレートベース</td>\n<td>完全にプログラム可能</td>\n</tr>\n<tr>\n<td>認証</td>\n<td>コネクター構成で管理</td>\n<td>Tealium関数内の認証トークンとして保存</td>\n</tr>\n<tr>\n<td>ペイロード構造</td>\n<td>イベントまたは訪問データに基づいて固定</td>\n<td>完全にカスタマイズ可能</td>\n</tr>\n<tr>\n<td>モデル呼び出し前のPIIフィルタリング</td>\n<td>プラットフォームレベルのみ（同意カテゴリと制限された属性）。コネクター内にカスタム前処理コードはない</td>\n<td>JavaScriptでのモデル呼び出し前の完全にカスタマイズ可能なフィルタリングと変換</td>\n</tr>\n<tr>\n<td>レスポンス処理</td>\n<td>自動JSON解析とイベント転送</td>\n<td>コード内のカスタム解析</td>\n</tr>\n<tr>\n<td>非同期サポート</td>\n<td>限定的。Bedrock AIワークフローアクションはLambdaコールバックを通じて非同期応答をサポート</td>\n<td>ファイア・アンド・フォーゲットパターンとTealium Collectへのモデルコールバックを通じてサポート</td>\n</tr>\n</tbody>\n</table>\n<h2 id=\"一般的な使用例\">一般的な使用例</h2>\n<p>以下の表は、一般的なAI使用例と各使用例に推奨される統合アプローチをリストしています。</p>\n<table>\n<thead>\n<tr>\n<th>使用例</th>\n<th>説明</th>\n<th>推奨されるアプローチ</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>感情分析</td>\n<td>顧客のフィードバックやレビューイベントを肯定的、中立的、または否定的に分類します。</td>\n<td>AIコネクター</td>\n</tr>\n<tr>\n<td>意図分類</td>\n<td>閲覧または購入履歴に基づいて顧客の可能性のある意図を特定します。</td>\n<td>AIコネクター</td>\n</tr>\n<tr>\n<td>次の最適なアクション（プレイブック選択）</td>\n<td>訪問のコンテキストに基づいて承認されたアクションまたはオファーの有限セットから選択します。</td>\n<td>AIコネクター</td>\n</tr>\n<tr>\n<td>傾向スコアリング</td>\n<td>訓練された機械学習モデルを使用して、コンバージョン、離脱、または高価値アクションの可能性を予測します。</td>\n<td>Tealium関数</td>\n</tr>\n<tr>\n<td>次の最適なアクション（スコア最適化）</td>\n<td>数値モデルを使用して候補アクションのセットをスコアリングし、最も高いスコアのものを選択します。</td>\n<td>Tealium関数</td>\n</tr>\n<tr>\n<td>フィーチャーストアルックアップ</td>\n<td>アクティベーションのためにデータプラットフォームから事前に計算されたスコアまたはフィーチャーを取得します。</td>\n<td>Tealium関数</td>\n</tr>\n<tr>\n<td>カスタムエンドポイント推論</td>\n<td>専用のAIコネクターを持たないプラットフォームでホストされているモデルを呼び出します。</td>\n<td>Tealium関数</td>\n</tr>\n</tbody>\n</table>\n"
        }  

    , 
        {
            "weight": "0",
            "url": "https://docs.tealium.com/ja/server-side-connectors/amazon-bedrock-ai-connector/",
            "title": "Amazon Bedrock AIコネクタ構成ガイド",
            "body": "<p class=\"tip\"><i class=\"fa fa-info-circle\"></i>AIコネクタの動作概要とAIコネクタまたはTealium機能をいつ使用するかについてのガイダンスについては、<a href=\"/ja/guides/ai-connectors-and-functions/\">AIコネクタとTealium機能</a>を参照してください。</p>\n<h2 id=\"サポートされているモデル\">サポートされているモデル</h2>\n<p>Amazon Bedrock AIコネクタは、幅広い基盤モデルをサポートしています。現在サポートされているモデルのリストについては、<a href=\"https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html\">Amazon Bedrock: Amazon Bedrockでサポートされている基盤モデル</a>を参照してください。</p>\n<p>一部のBedrockモデルはプロビジョニングされたスループットが必要であり、オンデマンド推論を使用して呼び出すことはできません。オンデマンドスループットエラーに遭遇した場合は、<code>ON_DEMAND</code>推論をサポートするモデルを使用するか、構成リストにプロビジョニングされたスループットまたは推論プロファイルARNを提供してください。</p>\n<h2 id=\"iamロールと権限の作成\">IAMロールと権限の作成</h2>\n<p>Tealiumは、サーバーサイドコネクタからAmazon Bedrockに接続するために、AWSアカウント内のIAMロールと権限が必要です。接続を認証するには2つのオプションがあります：</p>\n<ul>\n<li><a href=\"#access-key-and-secret-credentials\">アクセスキーとアクセスシークレットを提供する</a>。</li>\n<li><a href=\"#sts-credentials\">STS認証情報を提供する</a>。</li>\n</ul>\n<h3 id=\"アクセスキーとシークレット認証情報\">アクセスキーとシークレット認証情報</h3>\n<p>AWSアクセスキーとシークレットを作成するには：</p>\n<ol>\n<li>AWS管理コンソールにログインし、<strong>IAM</strong>（Identity and Access Management）サービスに移動します。</li>\n<li><strong>ユーザー</strong>をクリックし、<strong>ユーザーを追加</strong>をクリックします。</li>\n<li>ユーザー名を入力します。例：<code>TealiumBedrockUser</code>。</li>\n<li>ユーザーにポリシーをアタッチします。詳細については、<a href=\"#attach-policies\">ポリシーのアタッチ</a>を参照してください。</li>\n<li>キーを作成します。\n<ul>\n<li><strong>セキュリティ認証情報</strong>タブに移動し、<strong>アクセスキーの作成</strong>をクリックします。</li>\n<li><strong>アクセスキーID</strong>と<strong>シークレットアクセスキー</strong>をコピーし、安全に保存します。</li>\n</ul>\n</li>\n</ol>\n<h3 id=\"sts認証情報\">STS認証情報</h3>\n<p>STS認証情報を作成するには：</p>\n<ol>\n<li>AWS管理コンソールにログインし、<strong>IAM</strong>（Identity and Access Management）サービスに移動します。</li>\n<li><strong>ロール</strong>をクリックし、<strong>ロールの作成</strong>をクリックします。</li>\n<li><strong>信頼されたエンティティタイプ</strong>で、AWSアカウントを選択します。</li>\n<li><strong>別のAWSアカウント</strong>を選択し、TealiumアカウントID：<code>757913464184</code>を入力します。</li>\n<li>（オプション）<strong>外部IDが必要</strong>チェックボックスを選択し、使用する外部IDを指定します。外部IDは最大256文字で、英数字（<code>A-Z</code>, <code>a-z</code>, <code>0-9</code>）およびハイフン（<code>-</code>）、アンダースコア（<code>_</code>）、ピリオド（<code>.</code>）などの記号を含めることができます。</li>\n<li>ロールの名前を入力します。ロール名は<code>TealiumBedrock</code>で始まる必要があります。例：<code>TealiumBedrock-RoleName</code>。</li>\n<li>ロールにポリシーをアタッチします。詳細については、<a href=\"#attach-policies\">ポリシーのアタッチ</a>を参照してください。</li>\n<li>信頼ポリシーを作成します。\n<ul>\n<li><strong>信頼関係</strong>タブに移動し、<strong>信頼関係の編集</strong>をクリックします。</li>\n<li>作成したロールを使用するために特定の外部IDを許可する信頼ポリシーがあることを確認し、Tealiumの本番アカウントIDが<code>757913464184</code>であることを確認します。</li>\n<li>Tealiumとの接続に使用する<code>EXTERNAL_ID</code>値を構成します。IDは最大256文字で、英数字（<code>A-Z</code>, <code>a-z</code>, <code>0-9</code>）およびハイフン（<code>-</code>）、アンダースコア（<code>_</code>）、ピリオド（<code>.</code>）などの記号を含めることができます。</li>\n</ul>\n</li>\n</ol>\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-json\" data-lang=\"json\"><span style=\"display:flex;\"><span>    {\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#f92672\">&#34;Version&#34;</span>: <span style=\"color:#e6db74\">&#34;2012-10-17&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#f92672\">&#34;Statement&#34;</span>: [\n</span></span><span style=\"display:flex;\"><span>        {\n</span></span><span style=\"display:flex;\"><span>          <span style=\"color:#f92672\">&#34;Effect&#34;</span>: <span style=\"color:#e6db74\">&#34;Allow&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>          <span style=\"color:#f92672\">&#34;Principal&#34;</span>: {\n</span></span><span style=\"display:flex;\"><span>            <span style=\"color:#f92672\">&#34;AWS&#34;</span>: <span style=\"color:#e6db74\">&#34;arn:aws:iam::757913464184:root&#34;</span>\n</span></span><span style=\"display:flex;\"><span>          },\n</span></span><span style=\"display:flex;\"><span>          <span style=\"color:#f92672\">&#34;Action&#34;</span>: <span style=\"color:#e6db74\">&#34;sts:AssumeRole&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>          <span style=\"color:#f92672\">&#34;Condition&#34;</span>: {\n</span></span><span style=\"display:flex;\"><span>            <span style=\"color:#f92672\">&#34;StringEquals&#34;</span>: {\n</span></span><span style=\"display:flex;\"><span>              <span style=\"color:#f92672\">&#34;sts:ExternalId&#34;</span>: <span style=\"color:#e6db74\">&#34;EXTERNAL_ID&#34;</span>\n</span></span><span style=\"display:flex;\"><span>            }\n</span></span><span style=\"display:flex;\"><span>          }\n</span></span><span style=\"display:flex;\"><span>        }\n</span></span><span style=\"display:flex;\"><span>      ]\n</span></span><span style=\"display:flex;\"><span>    }\n</span></span></code></pre></div><h3 id=\"ポリシーのアタッチ\">ポリシーのアタッチ</h3>\n<p>AWS管理コンソールで、コネクタアクションに必要なポリシーを入力します。各コネクタアクションには次のポリシーが必要です：</p>\n<p class=\"note\"><i class=\"fa fa-exclamation-triangle\"></i>必要なフローやLambda関数の特定のARNに対してのみ権限を制限することをお勧めします。</p>\n\n<div class=\"code-tabs\">\n  <ul class=\"nav nav-tabs\"></ul>\n  <div class=\"tab-content\"><div class=\"tab-pane\" data-lang=\"Send Data to Bedrock AI Model\" title=\"Send Data to Bedrock AI Model\">\n  <div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-json\" data-lang=\"json\"><span style=\"display:flex;\"><span>{\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;Version&#34;</span>: <span style=\"color:#e6db74\">&#34;2012-10-17&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;Statement&#34;</span>: [\n</span></span><span style=\"display:flex;\"><span>    {\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#f92672\">&#34;Sid&#34;</span>: <span style=\"color:#e6db74\">&#34;ListModels&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#f92672\">&#34;Effect&#34;</span>: <span style=\"color:#e6db74\">&#34;Allow&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#f92672\">&#34;Action&#34;</span>: [\n</span></span><span style=\"display:flex;\"><span>        <span style=\"color:#e6db74\">&#34;bedrock:ListFoundationModels&#34;</span>\n</span></span><span style=\"display:flex;\"><span>      ],\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#f92672\">&#34;Resource&#34;</span>: <span style=\"color:#e6db74\">&#34;*&#34;</span>\n</span></span><span style=\"display:flex;\"><span>    },\n</span></span><span style=\"display:flex;\"><span>    {\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#f92672\">&#34;Sid&#34;</span>: <span style=\"color:#e6db74\">&#34;InvokeModel&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#f92672\">&#34;Effect&#34;</span>: <span style=\"color:#e6db74\">&#34;Allow&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#f92672\">&#34;Action&#34;</span>: [\n</span></span><span style=\"display:flex;\"><span>        <span style=\"color:#e6db74\">&#34;bedrock:InvokeModel&#34;</span>\n</span></span><span style=\"display:flex;\"><span>      ],\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#f92672\">&#34;Resource&#34;</span>: <span style=\"color:#e6db74\">&#34;*&#34;</span>\n</span></span><span style=\"display:flex;\"><span>    }\n</span></span><span style=\"display:flex;\"><span>  ]\n</span></span><span style=\"display:flex;\"><span>}\n</span></span></code></pre></div>\n</div>\n<div class=\"tab-pane\" data-lang=\"Send Data to Bedrock AI Managed Prompt\" title=\"Send Data to Bedrock AI Managed Prompt\">\n  <div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-json\" data-lang=\"json\"><span style=\"display:flex;\"><span>{\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;Version&#34;</span>: <span style=\"color:#e6db74\">&#34;2012-10-17&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;Statement&#34;</span>: [\n</span></span><span style=\"display:flex;\"><span>    {\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#f92672\">&#34;Sid&#34;</span>: <span style=\"color:#e6db74\">&#34;RenderManagedPrompt&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#f92672\">&#34;Effect&#34;</span>: <span style=\"color:#e6db74\">&#34;Allow&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#f92672\">&#34;Action&#34;</span>: [\n</span></span><span style=\"display:flex;\"><span>        <span style=\"color:#e6db74\">&#34;bedrock:RenderPrompt&#34;</span>\n</span></span><span style=\"display:flex;\"><span>      ],\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#f92672\">&#34;Resource&#34;</span>: <span style=\"color:#e6db74\">&#34;*&#34;</span>\n</span></span><span style=\"display:flex;\"><span>    }\n</span></span><span style=\"display:flex;\"><span>  ]\n</span></span><span style=\"display:flex;\"><span>}\n</span></span></code></pre></div>\n</div>\n<div class=\"tab-pane\" data-lang=\"Send Data to Bedrock AI Workflow\" title=\"Send Data to Bedrock AI Workflow\">\n  <p>Lambdaを使用する場合：</p>\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-json\" data-lang=\"json\"><span style=\"display:flex;\"><span>{\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;Version&#34;</span>: <span style=\"color:#e6db74\">&#34;2012-10-17&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;Statement&#34;</span>: [\n</span></span><span style=\"display:flex;\"><span>    {\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#f92672\">&#34;Sid&#34;</span>: <span style=\"color:#e6db74\">&#34;BedrockFlowInvoke&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#f92672\">&#34;Effect&#34;</span>: <span style=\"color:#e6db74\">&#34;Allow&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#f92672\">&#34;Action&#34;</span>: [\n</span></span><span style=\"display:flex;\"><span>        <span style=\"color:#e6db74\">&#34;bedrock:InvokeFlow&#34;</span>\n</span></span><span style=\"display:flex;\"><span>      ],\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#f92672\">&#34;Resource&#34;</span>: <span style=\"color:#e6db74\">&#34;arn:aws:bedrock:&lt;REGION&gt;:&lt;ACCOUNT_ID&gt;:flow/&lt;flow_id&gt;/alias/&lt;alias_name&gt;&#34;</span>\n</span></span><span style=\"display:flex;\"><span>    },\n</span></span><span style=\"display:flex;\"><span>    {\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#f92672\">&#34;Sid&#34;</span>: <span style=\"color:#e6db74\">&#34;LambdaInvokeFunction&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#f92672\">&#34;Effect&#34;</span>: <span style=\"color:#e6db74\">&#34;Allow&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#f92672\">&#34;Action&#34;</span>: [\n</span></span><span style=\"display:flex;\"><span>        <span style=\"color:#e6db74\">&#34;lambda:InvokeFunction&#34;</span>\n</span></span><span style=\"display:flex;\"><span>      ],\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#f92672\">&#34;Resource&#34;</span>: <span style=\"color:#e6db74\">&#34;arn:aws:lambda:&lt;REGION&gt;:&lt;ACCOUNT_ID&gt;:function:&lt;FUNCTION_NAME&gt;&#34;</span>\n</span></span><span style=\"display:flex;\"><span>    }\n</span></span><span style=\"display:flex;\"><span>  ]\n</span></span><span style=\"display:flex;\"><span>}\n</span></span></code></pre></div><p>Lambdaを使用しない場合：</p>\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-json\" data-lang=\"json\"><span style=\"display:flex;\"><span>{\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;Version&#34;</span>: <span style=\"color:#e6db74\">&#34;2012-10-17&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;Statement&#34;</span>: [\n</span></span><span style=\"display:flex;\"><span>    {\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#f92672\">&#34;Sid&#34;</span>: <span style=\"color:#e6db74\">&#34;BedrockFlowInvoke&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#f92672\">&#34;Effect&#34;</span>: <span style=\"color:#e6db74\">&#34;Allow&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#f92672\">&#34;Action&#34;</span>: [\n</span></span><span style=\"display:flex;\"><span>        <span style=\"color:#e6db74\">&#34;bedrock:InvokeFlow&#34;</span>\n</span></span><span style=\"display:flex;\"><span>      ],\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#f92672\">&#34;Resource&#34;</span>: <span style=\"color:#e6db74\">&#34;arn:aws:bedrock:&lt;REGION&gt;:&lt;ACCOUNT_ID&gt;:flow/&lt;flow_id&gt;/alias/&lt;alias_name&gt;&#34;</span>\n</span></span><span style=\"display:flex;\"><span>    }\n</span></span><span style=\"display:flex;\"><span>  ]\n</span></span><span style=\"display:flex;\"><span>}\n</span></span></code></pre></div>\n</div>\n</div>\n</div>\n\n<p>ポリシーを入力してアタッチするには：</p>\n<ol>\n<li>AWSコンソールで<strong>IAM &gt; ポリシー</strong>に移動し、<strong>ポリシーの作成</strong>をクリックします。</li>\n<li>ポリシーエディタで<strong>JSON</strong>タブを選択し、コネクタアクション用のポリシーを貼り付け、検証警告を解決し、<strong>次へ</strong>をクリックします。</li>\n<li>ポリシー名（例：<code>TealiumCustomAccessPolicy</code>）とオプションの説明を入力し、<strong>ポリシーの作成</strong>をクリックします。</li>\n<li><strong>IAM &gt; ロール</strong>に移動し、変更したいロールを選択します。</li>\n<li><strong>権限</strong>タブで<strong>権限の追加 &gt; ポリシーのアタッチ</strong>をクリックします。</li>\n<li>カスタムポリシーを検索し、選択して<strong>ポリシーのアタッチ</strong>をクリックします。</li>\n</ol>\n<h2 id=\"構成\">構成</h2>\n<p>コネクタマーケットプレイスに移動し、新しいコネクタを追加します。コネクタの追加方法についての一般的な指示については、<a href=\"/ja/server-side/connectors/about/\">コネクタについて</a>を参照してください。</p>\n<p>コネクタを追加した後、次の構成を構成します：</p>\n<ul>\n<li><strong>認証タイプ</strong>：（必須）使用する認証のタイプ。\n<ul>\n<li><strong>アクセスキー</strong>\n<ul>\n<li><strong>アクセスキー</strong>：（必須）IAMユーザーのアクセスキーを提供します。関連するIAMポリシー（IAMユーザーまたは想定されるロール用）は、データを送信するストリームに対して<code>bedrock:PutRecord</code>権限を付与する必要があります。</li>\n<li><strong>シークレットキー</strong>：（必須）IAMユーザーのシークレットキーを提供します。</li>\n</ul>\n</li>\n<li><strong>STS</strong>\n<ul>\n<li><strong>STS - Assume Role: ARN</strong>：（必須）想定されるロールに割り当てられたAmazonリソース名。詳細については、<a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-api.html\">AWS: IAMロールへの切り替え</a>を参照してください。</li>\n<li><strong>STS - Assume Role: Session Name</strong>：（必須）想定されるロールセッションの一意の識別子。</li>\n<li><strong>STS - Assume Role: External ID</strong>：（オプション）第三者が顧客のアカウントでロールを想定する際に使用する一意の識別子。詳細については、<a href=\"https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html\">AWS: 第三者によるAWSアカウントへのアクセス</a>を参照してください。</li>\n</ul>\n</li>\n</ul>\n</li>\n<li><strong>リージョン</strong>：（必須）リージョンを選択します。</li>\n</ul>\n<h2 id=\"プロンプト情報\">プロンプト情報</h2>\n<p>Tealiumから送信されたり、Amazon Bedrock内で管理されたり、フローで使用されたりするBedrock AIプロンプトは、Tealiumがレスポンスを正しく処理できるように、有効なJSONのみを返すように作成する必要があります。以下のガイドラインに従ってください：</p>\n<ul>\n<li>マップされたパラメータを参照するには二重中括弧を使用します。例：<code>{{tealium_account}}</code>、<code>{{tealium_profile}}</code>、<code>{{tealium_visitor_id}}</code>、<code>{{visitor_json}}</code>。</li>\n<li>モデルに対して、説明、マークダウン、コードフェンス、JSONの前後の余分なテキストなしで、有効なJSONのみを返すように明確に指示します。</li>\n<li>出力を安全に解析できるように、期待する正確なJSON構造（フィールド名、必要なキー、値のタイプ）を定義します。</li>\n<li>Tealiumフィールドを明示的に返すようにモデルに指示します（例：<code>tealium_account</code>、<code>tealium_profile</code>、<code>tealium_visitor_id</code>、<code>tealium_event</code>）。</li>\n<li>プロンプトで特定の属性を参照する必要がある場合は、その属性をベンダーパラメータにマッピングします。例えば、<code>Last product viewed</code>を<code>last_product_viewed</code>にマッピングし、プロンプトで<code>{{last_product_viewed}}</code>として参照します。</li>\n<li>曖昧な指示を避けます。繰り返し呼び出しても同じJSONスキーマを生成する決定論的なプロンプトを書きます。</li>\n<li>最良の結果を得るために、次のような行を含めます：&ldquo;プローズ、バックティック、追加のフォーマットなしで、単一のJSONオブジェクトのみを返します。&rdquo;</li>\n</ul>\n<h3 id=\"プロンプト例\">プロンプト例</h3>\n<pre tabindex=\"0\"><code class=\"language-none\" data-lang=\"none\">あなたは、有効なJSONのみを返す必要があるAIアシスタントです。\n説明、マークダウン、コードフェンス、またはJSONオブジェクトの外側のテキストを含めないでください。\n\n以下の訪問データを使用して、このセッションでの訪問の変換可能性を表す0から100の間の数値スコアを計算します。\n\n単一のJSONオブジェクトのみを返し、この正確な構造で：\n\n{\n  &#34;tealium_account&#34;: &#34;{{tealium_account}}&#34;,\n  &#34;tealium_profile&#34;: &#34;{{tealium_profile}}&#34;,\n  &#34;tealium_visitor_id&#34;: &#34;{{tealium_visitor_id}}&#34;,\n  &#34;tealium_event&#34;: &#34;bedrock_ai_insight&#34;,\n  &#34;visitor_score&#34;: &lt;0から100の間の整数&gt;\n}\n\n訪問データ：\n{{visitor_json}}\n\n{{last_product_viewed}}の値に特に注意してください。\n</code></pre><p>レスポンスは以下のようになります：</p>\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-json\" data-lang=\"json\"><span style=\"display:flex;\"><span>{\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#f92672\">&#34;metrics&#34;</span>: {\n</span></span><span style=\"display:flex;\"><span>        <span style=\"color:#f92672\">&#34;latencyMs&#34;</span>: <span style=\"color:#ae81ff\">1272</span>\n</span></span><span style=\"display:flex;\"><span>    },\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#f92672\">&#34;output&#34;</span>: {\n</span></span><span style=\"display:flex;\"><span>        <span style=\"color:#f92672\">&#34;message&#34;</span>: {\n</span></span><span style=\"display:flex;\"><span>            <span style=\"color:#f92672\">&#34;content&#34;</span>: [\n</span></span><span style=\"display:flex;\"><span>                {\n</span></span><span style=\"display:flex;\"><span>                    <span style=\"color:#f92672\">&#34;text&#34;</span>: <span style=\"color:#e6db74\">&#34;{\\&#34;tealium_account\\&#34;:\\&#34;your-account\\&#34;,\\&#34;tealium_profile\\&#34;:\\&#34;main\\&#34;,\\&#34;tealium_visitor_id\\&#34;:\\&#34;__your-account_main__5574_438850__\\&#34;,\\&#34;tealium_event\\&#34;:\\&#34;bedrock_ai_insight\\&#34;,\\&#34;visitor_score\\&#34;:85}&#34;</span>\n</span></span><span style=\"display:flex;\"><span>                }\n</span></span><span style=\"display:flex;\"><span>            ],\n</span></span><span style=\"display:flex;\"><span>            <span style=\"color:#f92672\">&#34;role&#34;</span>: <span style=\"color:#e6db74\">&#34;assistant&#34;</span>\n</span></span><span style=\"display:flex;\"><span>        }\n</span></span><span style=\"display:flex;\"><span>    },\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#f92672\">&#34;stopReason&#34;</span>: <span style=\"color:#e6db74\">&#34;end_turn&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#f92672\">&#34;usage&#34;</span>: {\n</span></span><span style=\"display:flex;\"><span>        <span style=\"color:#f92672\">&#34;inputTokens&#34;</span>: <span style=\"color:#ae81ff\">8811</span>,\n</span></span><span style=\"display:flex;\"><span>        <span style=\"color:#f92672\">&#34;outputTokens&#34;</span>: <span style=\"color:#ae81ff\">65</span>,\n</span></span><span style=\"display:flex;\"><span>        <span style=\"color:#f92672\">&#34;serverToolUsage&#34;</span>: {},\n</span></span><span style=\"display:flex;\"><span>        <span style=\"color:#f92672\">&#34;totalTokens&#34;</span>: <span style=\"color:#ae81ff\">8876</span>\n</span></span><span style=\"display:flex;\"><span>    }\n</span></span><span style=\"display:flex;\"><span>}\n</span></span></code></pre></div><p>コネクタはレスポンスを受け取り、JSONイベントオブジェクトをTealium Collect APIエンドポイントに送信します。</p>\n<h2 id=\"amazon-bedrockフロー\">Amazon Bedrockフロー</h2>\n<p>Amazon Bedrockフローは、プロンプト、ナレッジベース、Lambda関数、条件ロジック、外部データを組み合わせた複数ステップのAIオーケストレーションです。フローは、複雑なAI意思決定を単一のAPIエンドポイントに変換するために、入力データがプロンプト、エンリッチメントステップ、ビジネスロジック、最終出力を通過する方法を定義します。</p>\n<p><strong>Send Data to Bedrock Flow</strong>アクションを使用するには、Tealiumから入力を受け取るAmazon Bedrockでフローを作成し、AIステップを処理して結果をLambda関数を通じてTealiumに返送します。</p>\n<p>以下のセクションでは、フローの必須およびオプションのコンポーネントについて説明します。</p>\n<h3 id=\"ステップ1---フロー入力の定義\">ステップ1 - フロー入力の定義</h3>\n<p>すべてのフローは入力ノードから始まります。このノードは、Tealiumがフローに送信するJSONドキュメントを表します。</p>\n<p>Tealiumは、次の例に似た形式でマップされた属性を送信します：</p>\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-json\" data-lang=\"json\"><span style=\"display:flex;\"><span><span style=\"color:#e6db74\">&#34;document&#34;</span><span style=\"color:#960050;background-color:#1e0010\">:</span> {\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#f92672\">&#34;tealium_account&#34;</span>: <span style=\"color:#e6db74\">&#34;services-example&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#f92672\">&#34;tealium_profile&#34;</span>: <span style=\"color:#e6db74\">&#34;ai&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#f92672\">&#34;tealium_visitor_id&#34;</span>: <span style=\"color:#e6db74\">&#34;1234567890abc&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#f92672\">&#34;visitor_profile&#34;</span>: {\n</span></span><span style=\"display:flex;\"><span>        <span style=\"color:#f92672\">&#34;lifetime_value&#34;</span>: <span style=\"color:#e6db74\">&#34;1200&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>        <span style=\"color:#f92672\">&#34;total_orders&#34;</span>: <span style=\"color:#ae81ff\">5</span>,\n</span></span><span style=\"display:flex;\"><span>        <span style=\"color:#960050;background-color:#1e0010\">...</span>\n</span></span><span style=\"display:flex;\"><span>        }\n</span></span><span style=\"display:flex;\"><span>}\n</span></span></code></pre></div><p>フロー内でフィールドを参照するには、<code>$.data.attribute_name</code>を使用します。前の例に基づいて：</p>\n<table>\n<thead>\n<tr>\n<th>Tealium属性</th>\n<th>Bedrock参照</th>\n<th>例</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>tealium_account</code></td>\n<td><code>$.data.tealium_account</code> または <code>{{tealium_account}}</code></td>\n<td><code>services-example</code></td>\n</tr>\n<tr>\n<td><code>tealium_profile</code></td>\n<td><code>$.data.tealium_profile</code> または <code>{{tealium_profile}}</code></td>\n<td><code>ai</code></td>\n</tr>\n<tr>\n<td><code>tealium_visitor_id</code></td>\n<td><code>$.data.tealium_visitor_id</code> または <code>{{tealium_visitor_id}}</code></td>\n<td><code>1234567890abc</code></td>\n</tr>\n<tr>\n<td><code>visitor_profile</code></td>\n<td><code>$.data.visitor_profile</code></td>\n<td><code>&quot;visitor_profile&quot;: {&quot;lifetime_value&quot;: &quot;1200&quot;,&quot;total_orders&quot;: 5,...}</code></td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"ステップ2---プロンプトノードにデータをマッピングする必須\">ステップ2 - プロンプトノードにデータをマッピングする（必須）</h3>\n<p>次に、AI出力（スコア、推奨事項、または決定など）を生成するためのプロンプトノードを追加します。</p>\n<p>プロンプトノード内で：</p>\n<ol>\n<li>プロンプトテキストを構成します。</li>\n<li><code>{{fieldname}}</code>形式を使用して変数を挿入します。例：<code>{{tealium_account}}</code>。</li>\n<li>Bedrockモデルを選択します。</li>\n<li>プロンプトの出力として有効なJSONを返します。</li>\n</ol>\n<p>例については、上記の<a href=\"#prompt-example\">プロンプト例</a>セクションを参照してください。</p>\n<h3 id=\"ステップ3---オプションナレッジベースの取得を追加する\">ステップ3 - （オプション）ナレッジベースの取得を追加する</h3>\n<p>Amazon Bedrockナレッジベースを使用すると、AIワークフローをAmazon S3、Amazon Redshift、またはAmazon OpenSearch Serviceなどの外部データソースに接続できます。ナレッジベースはドキュメントを保存およびインデックス化し、プロンプト実行中の取得および接地に使用できるようにします。このステップはオプションですが、パーソナライゼーション、レコメンデーション、またはコンテキストに基づいた意思決定には価値があります。</p>\n<p>ナレッジベースを接続した後、<code>{{$.kbResults}}</code>のようなフィールドを使用して、ナレッジベースの結果をプロンプトに渡すことができます。</p>\n<p>ナレッジベースに関する詳細は、<a href=\"https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base.html\">Amazon Bedrock: Retrieve data and generate AI responses with Amazon Bedrock Knowledge Bases</a>を参照してください。</p>\n<p>ナレッジベースの作成に関する詳細は、<a href=\"https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-create.html\">Amazon Bedrock: Create a knowledge base by connecting to a data source in Amazon Bedrock Knowledge Bases</a>を参照してください。</p>\n<h3 id=\"ステップ4---tealiumとの統合に必要なlambdaノードを追加する\">ステップ4 - Tealiumとの統合に必要なLambdaノードを追加する</h3>\n<p>プロンプトが構造化されたJSONを生成した後、その結果をプロファイルエンリッチメントのためにTealiumに戻す必要があります。</p>\n<p>Lambdaノードを追加します：</p>\n<ul>\n<li>プロンプトノードからの出力（<code>$.data</code>）を受け取ります。</li>\n<li>JSONを解析します。</li>\n<li>Tealium Collectに投稿します：<code>POST https://collect.tealiumiq.com/event</code>。</li>\n<li>次のものを含みます：\n<ul>\n<li><code>tealium_account</code></li>\n<li><code>tealium_profile</code></li>\n<li><code>tealium_visitor_id</code></li>\n<li><code>tealium_event</code>（ユーザー定義）</li>\n<li>AI出力フィールド（例：<code>visitor_score</code>）</li>\n</ul>\n</li>\n</ul>\n<p><a href=\"#lambda-example\">提供されたLambda例</a>を使用するか、独自のものを構築します。</p>\n<h3 id=\"ステップ5---フロー出力ノードを追加する\">ステップ5 - フロー出力ノードを追加する</h3>\n<p>TealiumはフローのAPIレスポンスを処理しませんが、出力ノードはフローを完了するために必要です。</p>\n<p>Lambda出力を<code>FlowOutputNode</code>に接続することはTealiumの処理に影響を与えませんが、次のツールを使用してフローが機能していることを確認するのに役立ちます：</p>\n<ul>\n<li>Bedrockコンソールでのデバッグ。</li>\n<li>Lambda関数からのエラーの表示。</li>\n<li>検証のための最終JSON結果の検査。</li>\n<li>Traceを使用したTealiumでの出力の表示。</li>\n</ul>\n<h4 id=\"lambdaの例\">Lambdaの例</h4>\n<p>以下は、プロンプト出力を受け入れ、JSONを解析し、TealiumのCollectエンドポイントにデータを送信してTealiumでエンリッチメントとアクティベーションを行うLambdaの例です。さまざまなデータ構造を考慮したフォールバックが含まれています。必要に応じて書き換えてください。</p>\n<p>アカウントとプロファイルは、指定されたデータソースでサーバーサイドイベントを受け入れるように構成する必要があります。</p>\n<p class=\"note\"><i class=\"fa fa-exclamation-triangle\"></i>この例は、ランタイム環境としてNode.jsバージョン18.x以降が必要です。</p>\n\n<div class=\"pv2\">\n<div class=\"expand ba pa2 b--black-20 pv3\">\n    <div class=\"expand-label\" style=\"cursor: pointer;\" onclick=\"$h = $(this);$h.next('div').slideToggle(100,function () {$h.children('i').attr('class',function () {return $h.next('div').is(':visible') ? 'fas fa-chevron-down' : 'fas fa-chevron-right';});});\">\n        <i style=\"font-size:x-small;\" class=\"fas fa-chevron-right\"></i>\n        <span style=\"font-weight:bold;\">\n        \n    \t\n    \tLambdaコードを表示する\n    \t\n    \t</span>\n    </div>\n    <div class=\"expand-content pa2\" style=\"display: none;\">\n        <div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-js\" data-lang=\"js\"><span style=\"display:flex;\"><span><span style=\"color:#66d9ef\">const</span> <span style=\"color:#a6e22e\">COLLECT_URL</span> <span style=\"color:#f92672\">=</span> <span style=\"color:#a6e22e\">process</span>.<span style=\"color:#a6e22e\">env</span>.<span style=\"color:#a6e22e\">COLLECT_URL</span> <span style=\"color:#f92672\">||</span> <span style=\"color:#e6db74\">&#34;https://collect.tealiumiq.com/event&#34;</span>;\n</span></span><span style=\"display:flex;\"><span><span style=\"color:#66d9ef\">function</span> <span style=\"color:#a6e22e\">extractInputByName</span>(<span style=\"color:#a6e22e\">event</span>, <span style=\"color:#a6e22e\">name</span>) {\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#66d9ef\">const</span> <span style=\"color:#a6e22e\">arr</span> <span style=\"color:#f92672\">=</span> <span style=\"color:#a6e22e\">event</span><span style=\"color:#f92672\">?</span>.<span style=\"color:#a6e22e\">node</span><span style=\"color:#f92672\">?</span>.<span style=\"color:#a6e22e\">inputs</span>;\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#66d9ef\">if</span> (Array.<span style=\"color:#a6e22e\">isArray</span>(<span style=\"color:#a6e22e\">arr</span>)) {\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#66d9ef\">const</span> <span style=\"color:#a6e22e\">hit</span> <span style=\"color:#f92672\">=</span> <span style=\"color:#a6e22e\">arr</span>.<span style=\"color:#a6e22e\">find</span>(<span style=\"color:#a6e22e\">i</span> =&gt; <span style=\"color:#a6e22e\">i</span><span style=\"color:#f92672\">?</span>.<span style=\"color:#a6e22e\">name</span> <span style=\"color:#f92672\">===</span> <span style=\"color:#a6e22e\">name</span>);\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#66d9ef\">if</span> (<span style=\"color:#a6e22e\">hit</span> <span style=\"color:#f92672\">&amp;&amp;</span> <span style=\"color:#66d9ef\">typeof</span> <span style=\"color:#a6e22e\">hit</span>.<span style=\"color:#a6e22e\">value</span> <span style=\"color:#f92672\">===</span> <span style=\"color:#e6db74\">&#34;string&#34;</span>) <span style=\"color:#66d9ef\">return</span> <span style=\"color:#a6e22e\">hit</span>.<span style=\"color:#a6e22e\">value</span>;\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#66d9ef\">if</span> (<span style=\"color:#a6e22e\">hit</span> <span style=\"color:#f92672\">&amp;&amp;</span> <span style=\"color:#66d9ef\">typeof</span> <span style=\"color:#a6e22e\">hit</span>.<span style=\"color:#a6e22e\">value</span> <span style=\"color:#f92672\">===</span> <span style=\"color:#e6db74\">&#34;object&#34;</span>) <span style=\"color:#66d9ef\">return</span> <span style=\"color:#a6e22e\">JSON</span>.<span style=\"color:#a6e22e\">stringify</span>(<span style=\"color:#a6e22e\">hit</span>.<span style=\"color:#a6e22e\">value</span>);\n</span></span><span style=\"display:flex;\"><span>  }\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#66d9ef\">return</span> <span style=\"color:#66d9ef\">undefined</span>;\n</span></span><span style=\"display:flex;\"><span>}\n</span></span><span style=\"display:flex;\"><span><span style=\"color:#66d9ef\">function</span> <span style=\"color:#a6e22e\">extractJsonStringFromEvent</span>(<span style=\"color:#a6e22e\">event</span>) {\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#66d9ef\">const</span> <span style=\"color:#a6e22e\">fromStandardPin</span> <span style=\"color:#f92672\">=</span> <span style=\"color:#a6e22e\">extractInputByName</span>(<span style=\"color:#a6e22e\">event</span>, <span style=\"color:#e6db74\">&#34;codeHookInput&#34;</span>);\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#66d9ef\">if</span> (<span style=\"color:#66d9ef\">typeof</span> <span style=\"color:#a6e22e\">fromStandardPin</span> <span style=\"color:#f92672\">===</span> <span style=\"color:#e6db74\">&#34;string&#34;</span>) <span style=\"color:#66d9ef\">return</span> <span style=\"color:#a6e22e\">fromStandardPin</span>;\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#66d9ef\">const</span> <span style=\"color:#a6e22e\">anyString</span> <span style=\"color:#f92672\">=</span> <span style=\"color:#a6e22e\">event</span><span style=\"color:#f92672\">?</span>.<span style=\"color:#a6e22e\">node</span><span style=\"color:#f92672\">?</span>.<span style=\"color:#a6e22e\">inputs</span><span style=\"color:#f92672\">?</span>.<span style=\"color:#a6e22e\">find</span><span style=\"color:#f92672\">?</span>.(<span style=\"color:#a6e22e\">i</span> =&gt; <span style=\"color:#66d9ef\">typeof</span> <span style=\"color:#a6e22e\">i</span><span style=\"color:#f92672\">?</span>.<span style=\"color:#a6e22e\">value</span> <span style=\"color:#f92672\">===</span> <span style=\"color:#e6db74\">&#34;string&#34;</span>)<span style=\"color:#f92672\">?</span>.<span style=\"color:#a6e22e\">value</span>;\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#66d9ef\">if</span> (<span style=\"color:#66d9ef\">typeof</span> <span style=\"color:#a6e22e\">anyString</span> <span style=\"color:#f92672\">===</span> <span style=\"color:#e6db74\">&#34;string&#34;</span>) <span style=\"color:#66d9ef\">return</span> <span style=\"color:#a6e22e\">anyString</span>;\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#66d9ef\">if</span> (<span style=\"color:#66d9ef\">typeof</span> <span style=\"color:#a6e22e\">event</span><span style=\"color:#f92672\">?</span>.<span style=\"color:#a6e22e\">codeHookInput</span> <span style=\"color:#f92672\">===</span> <span style=\"color:#e6db74\">&#34;string&#34;</span>) <span style=\"color:#66d9ef\">return</span> <span style=\"color:#a6e22e\">event</span>.<span style=\"color:#a6e22e\">codeHookInput</span>;\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#66d9ef\">if</span> (<span style=\"color:#66d9ef\">typeof</span> <span style=\"color:#a6e22e\">event</span><span style=\"color:#f92672\">?</span>.document <span style=\"color:#f92672\">===</span> <span style=\"color:#e6db74\">&#34;string&#34;</span>) <span style=\"color:#66d9ef\">return</span> <span style=\"color:#a6e22e\">event</span>.document;\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#66d9ef\">const</span> <span style=\"color:#a6e22e\">doc</span> <span style=\"color:#f92672\">=</span> <span style=\"color:#a6e22e\">event</span><span style=\"color:#f92672\">?</span>.<span style=\"color:#a6e22e\">fields</span><span style=\"color:#f92672\">?</span>.[<span style=\"color:#ae81ff\">0</span>]<span style=\"color:#f92672\">?</span>.<span style=\"color:#a6e22e\">content</span><span style=\"color:#f92672\">?</span>.document;\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#66d9ef\">if</span> (<span style=\"color:#66d9ef\">typeof</span> <span style=\"color:#a6e22e\">doc</span> <span style=\"color:#f92672\">===</span> <span style=\"color:#e6db74\">&#34;string&#34;</span>) <span style=\"color:#66d9ef\">return</span> <span style=\"color:#a6e22e\">doc</span>;\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#66d9ef\">if</span> (<span style=\"color:#66d9ef\">typeof</span> <span style=\"color:#a6e22e\">event</span> <span style=\"color:#f92672\">===</span> <span style=\"color:#e6db74\">&#34;string&#34;</span>) <span style=\"color:#66d9ef\">return</span> <span style=\"color:#a6e22e\">event</span>;\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#66d9ef\">throw</span> <span style=\"color:#66d9ef\">new</span> Error(<span style=\"color:#e6db74\">&#34;Could not find JSON string in event&#34;</span>);\n</span></span><span style=\"display:flex;\"><span>}\n</span></span><span style=\"display:flex;\"><span><span style=\"color:#66d9ef\">export</span> <span style=\"color:#66d9ef\">const</span> <span style=\"color:#a6e22e\">handler</span> <span style=\"color:#f92672\">=</span> <span style=\"color:#66d9ef\">async</span> (<span style=\"color:#a6e22e\">event</span>) =&gt; {\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#66d9ef\">try</span> {\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#66d9ef\">const</span> <span style=\"color:#a6e22e\">jsonStr</span> <span style=\"color:#f92672\">=</span> <span style=\"color:#a6e22e\">extractJsonStringFromEvent</span>(<span style=\"color:#a6e22e\">event</span>);\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#66d9ef\">const</span> <span style=\"color:#a6e22e\">obj</span> <span style=\"color:#f92672\">=</span> <span style=\"color:#a6e22e\">JSON</span>.<span style=\"color:#a6e22e\">parse</span>(<span style=\"color:#a6e22e\">jsonStr</span>);  <span style=\"color:#75715e\">// Fixed: store parsed result\n</span></span></span><span style=\"display:flex;\"><span><span style=\"color:#75715e\"></span>    <span style=\"color:#66d9ef\">const</span> <span style=\"color:#a6e22e\">required</span> <span style=\"color:#f92672\">=</span> [<span style=\"color:#e6db74\">&#34;tealium_account&#34;</span>, <span style=\"color:#e6db74\">&#34;tealium_profile&#34;</span>, <span style=\"color:#e6db74\">&#34;tealium_visitor_id&#34;</span>];\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#66d9ef\">for</span> (<span style=\"color:#66d9ef\">const</span> <span style=\"color:#a6e22e\">key</span> <span style=\"color:#66d9ef\">of</span> <span style=\"color:#a6e22e\">required</span>) {\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#66d9ef\">if</span> (<span style=\"color:#f92672\">!</span>Object.<span style=\"color:#a6e22e\">prototype</span>.<span style=\"color:#a6e22e\">hasOwnProperty</span>.<span style=\"color:#a6e22e\">call</span>(<span style=\"color:#a6e22e\">obj</span>, <span style=\"color:#a6e22e\">key</span>)) {\n</span></span><span style=\"display:flex;\"><span>        <span style=\"color:#66d9ef\">throw</span> <span style=\"color:#66d9ef\">new</span> Error(<span style=\"color:#e6db74\">`Missing required field &#39;</span><span style=\"color:#e6db74\">${</span><span style=\"color:#a6e22e\">key</span><span style=\"color:#e6db74\">}</span><span style=\"color:#e6db74\">&#39; in model output`</span>);\n</span></span><span style=\"display:flex;\"><span>      }\n</span></span><span style=\"display:flex;\"><span>    }\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#66d9ef\">const</span> <span style=\"color:#a6e22e\">r</span> <span style=\"color:#f92672\">=</span> <span style=\"color:#66d9ef\">await</span> <span style=\"color:#a6e22e\">fetch</span>(<span style=\"color:#a6e22e\">COLLECT_URL</span>, {\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#a6e22e\">method</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#34;POST&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#a6e22e\">headers</span><span style=\"color:#f92672\">:</span> { <span style=\"color:#e6db74\">&#34;Content-Type&#34;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#34;application/json&#34;</span> },\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#a6e22e\">body</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">jsonStr</span>\n</span></span><span style=\"display:flex;\"><span>    });\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#66d9ef\">if</span> (<span style=\"color:#f92672\">!</span><span style=\"color:#a6e22e\">r</span>.<span style=\"color:#a6e22e\">ok</span>) {\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#66d9ef\">const</span> <span style=\"color:#a6e22e\">txt</span> <span style=\"color:#f92672\">=</span> <span style=\"color:#66d9ef\">await</span> <span style=\"color:#a6e22e\">r</span>.<span style=\"color:#a6e22e\">text</span>().<span style=\"color:#66d9ef\">catch</span>(() =&gt; <span style=\"color:#e6db74\">&#34;&#34;</span>);\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#66d9ef\">throw</span> <span style=\"color:#66d9ef\">new</span> Error(<span style=\"color:#e6db74\">`Collect failed </span><span style=\"color:#e6db74\">${</span><span style=\"color:#a6e22e\">r</span>.<span style=\"color:#a6e22e\">status</span><span style=\"color:#e6db74\">}</span><span style=\"color:#e6db74\">: </span><span style=\"color:#e6db74\">${</span><span style=\"color:#a6e22e\">txt</span><span style=\"color:#e6db74\">}</span><span style=\"color:#e6db74\">`</span>);\n</span></span><span style=\"display:flex;\"><span>    }\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#66d9ef\">return</span> <span style=\"color:#a6e22e\">jsonStr</span>;\n</span></span><span style=\"display:flex;\"><span>  } <span style=\"color:#66d9ef\">catch</span> (<span style=\"color:#a6e22e\">err</span>) {\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">console</span>.<span style=\"color:#a6e22e\">error</span>(<span style=\"color:#e6db74\">&#34;Shim error:&#34;</span>, <span style=\"color:#a6e22e\">err</span>);\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#66d9ef\">return</span> <span style=\"color:#a6e22e\">JSON</span>.<span style=\"color:#a6e22e\">stringify</span>({ <span style=\"color:#a6e22e\">ok</span><span style=\"color:#f92672\">:</span> <span style=\"color:#66d9ef\">false</span>, <span style=\"color:#a6e22e\">error</span><span style=\"color:#f92672\">:</span> String(<span style=\"color:#a6e22e\">err</span>.<span style=\"color:#a6e22e\">message</span> <span style=\"color:#f92672\">||</span> <span style=\"color:#a6e22e\">err</span>) });\n</span></span><span style=\"display:flex;\"><span>  }\n</span></span><span style=\"display:flex;\"><span>};\n</span></span></code></pre></div>\n    </div>\n</div>\n</div>\n<h2 id=\"アクション\">アクション</h2>\n<table>\n<thead>\n<tr>\n<th>アクション名</th>\n<th style=\"text-align:center\">AudienceStream</th>\n<th style=\"text-align:center\">EventStream</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Bedrock AIモデルへのプロンプト送信</td>\n<td style=\"text-align:center\">✓</td>\n<td style=\"text-align:center\">✓</td>\n</tr>\n<tr>\n<td>Bedrock AI管理プロンプトへのデータ送信</td>\n<td style=\"text-align:center\">✓</td>\n<td style=\"text-align:center\">✓</td>\n</tr>\n<tr>\n<td>Bedrock AIワークフローへのデータ送信</td>\n<td style=\"text-align:center\">✓</td>\n<td style=\"text-align:center\">✓</td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"bedrock-aiモデルへのプロンプト送信\">Bedrock AIモデルへのプロンプト送信</h3>\n<p><strong>Bedrock AIモデルへのプロンプト送信</strong>を使用する場合、コネクタを通じて同期的にレスポンスを返すシンプルな単一モデルコールが必要です。</p>\n<h4 id=\"パラメータ\">パラメータ</h4>\n<table>\n<thead>\n<tr>\n<th>パラメータ</th>\n<th>説明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>モデルIDまたは推論プロファイルARN</td>\n<td>オンデマンド推論を使用するAmazon Bedrockモデルを選択するか、プロビジョニングスループットモデルARNまたは推論プロファイルARNを手動で入力します。<br>オンデマンド推論とテキスト入出力をサポートするモデルのみが表示されます。<br>希望のモデルが表示されない場合は、そのモデルがAWSアカウントとリージョンで有効になっているか確認してください。<br><br><br>プロビジョニングスループットを使用する場合は、完全なモデルARN（例：<code>arn:aws:bedrock:region:account-id:provisioned-model/...</code>）を入力します。<br>AWSアカウントで構成されている場合は、推論プロファイルARNも使用できます。<br>モデルの可用性とサポートされる推論タイプは、AWSアカウントの権限とリージョン構成によって決まります。</td>\n</tr>\n<tr>\n<td>プロンプトパラメータ</td>\n<td>プロンプト内のプレースホルダーにパラメータをマッピングします。デフォルトでは、コネクタは<code>{{tealium_account}}</code>、<code>{{tealium_profile}}</code>、<code>{{tealium_visitor_id}}</code>にアクセスできます。これらはマッピングで上書き可能です。</td>\n</tr>\n<tr>\n<td>訪問プロファイルの追加</td>\n<td>(オーディエンスアクションのみ) プロンプトテンプレートで訪問プロファイルを変数<code>{{visitor_profile}}</code>として使用することを許可します。</td>\n</tr>\n<tr>\n<td>現在の訪問の追加</td>\n<td>(オーディエンスアクションのみ) <code>{{visitor_profile}}</code>オブジェクトに現在の訪問データを含めるかどうか。</td>\n</tr>\n<tr>\n<td>イベントペイロードの追加</td>\n<td>(イベントアクションのみ) イベントペイロードをプロンプトテンプレートの変数<code>{{event_payload}}</code>として使用することを許可します。</td>\n</tr>\n<tr>\n<td>プロンプト</td>\n<td><ul><li>マッピングされたパラメータを参照するには、二重の中括弧を使用します。例：<code>{{tealium_account}}</code>, <code>{{visitor_id}}</code>, <code>{{event_value}}</code>。</li><li><code>{{visitor_profile}}</code>を使用して、訪問プロファイルをプロンプトに含めます。<br>モデルには、説明、マークダウン、コードフェンス、余分なテキストなしで有効なJSONのみを返すように明確に指示します。</li><li>期待される正確なJSON構造を定義します（例：フィールド名、必要なキー、値の形式）。</li><li>Tealiumフィールドを含める必要がある場合は、プロンプトで明確に指定します。<br>あいまいな表現を避けます。決定論的なプロンプトを書きます。</li><li>「プローズ、バックティック、余分なフォーマットなしで、単一のJSONオブジェクトのみを返す」という直接的な指示を含めます。</li></ul></td>\n</tr>\n<tr>\n<td>デバッグモード</td>\n<td>デバッグモードが有効になっている場合、コネクタはTealium Collectに送信する前に生のBedrockレスポンスを受け入れます。完全な処理を有効にする前に、Traceを使用してレスポンス形式を検証します。</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"推論パラメータ\">推論パラメータ</h4>\n<p>詳細については、<a href=\"https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent_InferenceConfiguration.html\">Amazon Bedrock API Reference: InferenceConfiguration</a>を参照してください。</p>\n<table>\n<thead>\n<tr>\n<th>パラメータ</th>\n<th>説明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>maxTokens</code></td>\n<td>モデルがレスポンスで生成可能なトークンの最大数。値が低いほど出力が短くなり、レイテンシ、コスト、スロットリングリスクが低減します。</td>\n</tr>\n<tr>\n<td><code>temperature</code></td>\n<td>出力のランダム性を制御します。値が低い（例：<code>0.2</code>）とレスポンスがより決定論的になり、値が高い（例：<code>0.8</code>）とより創造的で多様な結果が得られます。</td>\n</tr>\n<tr>\n<td><code>topP</code></td>\n<td>トークン選択をこの値を超える累積確率を持つ最小セットに制限する核サンプリングパラメータ。値が低いほど出力が集中し、値が高いほど多様性が許容されます。</td>\n</tr>\n<tr>\n<td><code>stopSequences</code></td>\n<td>モデルが遭遇したときに生成を停止する一つまたは複数の文字列。レスポンスの切り捨てや構造化された出力境界の強制に役立ちます。</td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"bedrock-ai-管理プロンプトへデータを送信\">Bedrock AI 管理プロンプトへデータを送信</h3>\n<p><strong>Bedrock AI 管理プロンプトへデータを送信</strong>を使用する場合は、プロンプトがコネクタを通じて同期的に応答を返す、再利用可能でバージョン管理された呼び出しを行いたいときに使用します。</p>\n<table>\n<thead>\n<tr>\n<th>パラメータ</th>\n<th>説明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>プロンプト ARN</td>\n<td>(必須) Bedrock プロンプト管理テンプレートの ARN を提供してください。プロンプト ARN は Bedrock のプロンプト詳細の <strong>概要</strong> セクションで見つけることができます。</td>\n</tr>\n<tr>\n<td>プロンプトデータ</td>\n<td><ul><li>Tealium は、それを呼び出すときにマッピングされた属性をプロンプトに渡します。</li><li>コネクタには <code>tealium_account</code>、<code>tealium_profile</code>、<code>tealium_visitor_id</code> の変数が含まれており、マッピングで上書きすることができます。</li><li>モデルに JSON のみを返すように明確に指示するプロンプトを記述してください。説明、マークダウン、コードフェンス、JSON の前後の追加テキストは含まないでください。</li><li>モデルが JSON で <code>tealium_account</code>、<code>tealium_profile</code>、<code>tealium_visitor_id</code> を返すように指示を含めてプロンプトを作成する必要があります。</li><li>あいまいな表現を避けてください。出力が確実に解析できるように決定論的なプロンプトを記述してください。</li><li>最良の結果を得るためには、「JSON オブジェクトのみを返し、散文、バックティック、余分なフォーマットは含まない」という直接的な指示を含めてください。</li></ul></td>\n</tr>\n<tr>\n<td>訪問プロファイルを追加</td>\n<td>(オーディエンスアクションのみ) プロンプトテンプレートで訪問プロファイルを <code>{{visitor_profile}}</code> 変数として使用することを許可するかどうか。</td>\n</tr>\n<tr>\n<td>現在の訪問を追加</td>\n<td>(オーディエンスアクションのみ) <code>{{visitor_profile}}</code> オブジェクトに現在の訪問データを含めるかどうか。</td>\n</tr>\n<tr>\n<td>イベントペイロードを追加</td>\n<td>(イベントアクションのみ) プロンプトテンプレートでイベントペイロードを <code>{{event_payload}}</code> 変数として使用することを許可するかどうか。</td>\n</tr>\n<tr>\n<td>デバッグモード</td>\n<td>デバッグモードが有効になっている場合、コネクタは Tealium Collect に送信することなく生の Bedrock 応答を受け入れます。完全な処理を有効にする前に応答形式を検証するために Trace を使用します。</td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"bedrock-ai-ワークフローへデータを送信\">Bedrock AI ワークフローへデータを送信</h3>\n<p><strong>Bedrock AI ワークフローへデータを送信</strong>を使用する場合は、Lambda を通じて非同期で実行されるマルチステップのオーケストレーションまたはナレッジベースの取得が必要なときに使用します。</p>\n<table>\n<thead>\n<tr>\n<th>パラメータ</th>\n<th>説明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Bedrock Flow Alias ARN</td>\n<td>(必須) このアクションが呼び出す Bedrock Flow Alias の ARN を入力してください。<code>live</code> などのエイリアスを作成し、ここでその ARN を使用することをお勧めします。</td>\n</tr>\n<tr>\n<td>Flow データ</td>\n<td><ul><li>AWS でエイリアスが指す Flow バージョンをこのコネクタを更新せずに変更します。</li><li>コネクタはマッピングされたフィールドを document という JSON オブジェクトとして Flow に送信します。</li><li>Flow 内で、これらのフィールドを Prompt、Lambda、または他のノードで <code>$.data.&lt;fieldName&gt;</code> を使用して参照します。</li><li>デフォルトでは、<code>tealium_account</code>、<code>tealium_profile</code>、および <code>tealium_visitor_id</code> が自動的に含まれ、必要に応じてフィールドマッピングを通じて上書きすることができます。</li><li>Flow には <code>FlowOutputNode</code> を含める必要がありますが、Tealium はその出力を使用しません。</li><li>Collect エンドポイントを通じて Tealium にデータを送り返すために Lambda を使用します。</li><li>Bedrock コンソールでフローをテストする際に成功/エラー情報を確認するために、Lambda の出力を <code>FlowOutputNode</code> に接続することをお勧めします。</li></ul></td>\n</tr>\n<tr>\n<td>訪問プロファイルを追加</td>\n<td>(オーディエンスアクションのみ) Flow 入力に完全な訪問プロファイルを <code>visitor_profile</code> JSON オブジェクトとして含めるかどうか。</td>\n</tr>\n<tr>\n<td>現在の訪問を追加</td>\n<td>(オーディエンスアクションのみ) <code>visitor_profile</code> JSON オブジェクトに現在の訪問データを含めるかどうか。</td>\n</tr>\n<tr>\n<td>イベントペイロードを追加</td>\n<td>(イベントアクションのみ) Flow 入力にイベントペイロードを <code>event_payload</code> JSON オブジェクトとして含めるかどうか。</td>\n</tr>\n</tbody>\n</table>\n<h2 id=\"一般的なエラーとトラブルシューティング\">一般的なエラーとトラブルシューティング</h2>\n<p>以下は一般的なエラーコードと解決策です：</p>\n<h3 id=\"一般的な-aws-エラーコード\">一般的な AWS エラーコード：</h3>\n<ul>\n<li>\n<p><strong><code>AccessDeniedException</code> または <code>NotAuthorized</code></strong><br>\nIAM ユーザーまたはロールに必要な権限がありません（例：<code>bedrock:InvokeModel</code>, <code>bedrock:RenderPrompt</code>, <code>bedrock:InvokeFlow</code>, <code>bedrock:ListFoundationModels</code>）。<br>\nこれを解決するには、ロールまたはアクセスキーに添付されている IAM ポリシーを更新して、必要な Bedrock アクションを正しいリソースに含めてください。</p>\n</li>\n<li>\n<p><strong><code>InvalidClientTokenId</code>, <code>UnrecognizedClientException</code>, または <code>ExpiredTokenException</code></strong><br>\n構成されたアクセスキーまたは STS セッションが無効または期限切れです。<br>\nこれを解決するには、コネクタで資格情報を回転させて再入力するか、STS ロールと外部 ID が正しく、期限切れでないことを確認してください。</p>\n</li>\n<li>\n<p><strong><code>OptInRequired</code> または <code>FTUFormNotFilled</code></strong><br>\nAWS アカウントが Bedrock または特定のモデル（例：Anthropic）で完全に有効化されていません。<br>\nこれを解決するには、AWS コンソールで必要な Bedrock 有効化手順と任意のモデル固有のフォームまたはマーケットプレースのサブスクリプションを完了してください。</p>\n</li>\n</ul>\n<p>これらのエラーが表示された場合は、まず AWS で IAM またはアカウント構成を解決してください。権限が修正されるまでコネクタアクションを再試行しても成功しません。</p>\n<h3 id=\"bedrock-api-呼び出しからの一般的なエラー\">Bedrock API 呼び出しからの一般的なエラー</h3>\n<p>以下のエラーは、リクエストが Bedrock に到達したが、サービスまたはモデルが正常に完了できなかったことを意味します。</p>\n<ul>\n<li>\n<p><strong><code>ValidationException</code> または <code>ValidationError</code></strong><br>\nリクエスト本体またはパラメータがターゲットモデルまたは API に対して無効です（例：間違ったモデル ID、サポートされていないパラメータ、入力が大きすぎる）。<br>\nこれを解決するには、モデル ID / プロンプト ARN / フロー ARN を確認し、リクエスト本体がモデルの期待するスキーマに一致していることを確認し、必要に応じてプロンプトのサイズや最大トークン数を減らしてください。</p>\n</li>\n<li>\n<p><strong><code>ResourceNotFound</code> または <code>ResourceNotFoundException</code></strong><br>\n指定されたモデル、プロンプトバージョン、または Flow エイリアス ARN が存在しないか、その地域で利用できません。<br>\nこれを解決するには、コネクタ構成の ARN と地域を Bedrock コンソールに表示されている値と照らし合わせて再確認してください。</p>\n</li>\n<li>\n<p><strong><code>ThrottlingException</code> または <code>ServiceQuotaExceededException</code></strong><br>\n呼び出しが Bedrock のクォータを超えています（例：TPS またはトークン制限）。<br>\nこれを解決するには、呼び出し頻度を減らすか、AWS でクォータ増加をリクエストしてください。</p>\n</li>\n<li>\n<p><strong><code>ServiceUnavailable</code>, <code>InternalFailure</code>, または <code>InternalServerException</code></strong><br>\nBedrock 内の一時的または内部エラーです。<br>\nこれを解決するには、エラーが持続する場合は AWS Service Health Dashboard を確認するか、AWS サポートケースを開いてください。</p>\n</li>\n<li>\n<p><strong><code>ModelErrorException</code>, <code>ModelNotReadyException</code>, または <code>ModelTimeoutException</code></strong> (プロンプトまたは管理プロンプトフロー)<br>\nモデルが失敗した、まだウォーミングアップ中、または応答に時間がかかりすぎました。<br>\nこれを解決するには、待って再試行し、プロンプトを簡素化するかトークン使用を減らし、モデルまたはプロビジョニングされたスループットが完全にアクティブであることを確認してください。</p>\n</li>\n</ul>\n<p>これらのエラーについては、Tealium は Bedrock からの元の AWS エラーメッセージを表示するため、トラブルシューティング時に AWS のドキュメントと照らし合わせることができます。</p>\n"
        }  

    , 
        {
            "weight": "0",
            "url": "https://docs.tealium.com/ja/guides/chatgpt-apps/",
            "title": "Tealium + ChatGPT アプリ",
            "body": "<h2 id=\"はじめに\">はじめに</h2>\n<p>Tealiumは、ブラウザ、ウィジェット、カスタムChatGPTインターフェースでアプリのような体験のためのデータ基盤を提供します。これは、プラットフォーム間で一貫したデータ収集と訪問ID管理をサポートします。</p>\n<p>このChatGPTソリューションは、MCPフレンドリーな設計を使用して以下を実現します：</p>\n<ul>\n<li>主要なインタラクション（製品閲覧、ボタンクリック、購入）の追跡。</li>\n<li>クライアント、サーバー、およびChatGPTコンテキスト間でのIDの統合。</li>\n<li>Tealium Collectを使用したリアルタイムでのイベントストリーミング。</li>\n<li>Tealium Moments APIおよびTealium AudienceStreamを使用した体験のパーソナライズ。</li>\n</ul>\n<h2 id=\"オプション1クライアントサイドトラッキング\">オプション1：クライアントサイドトラッキング</h2>\n<p>このアプローチは、Tealium iQの専用プロファイルからの標準的な<a href=\"/ja/platforms/javascript/\">Universal Tag (<code>utag.js</code>)</a>インストールを使用します。唯一の違いは、<code>utag.js</code>によって生成された匿名IDに依存しないため、独自のIDを生成して永続化することです。</p>\n<p><strong>利点：</strong></p>\n<ul>\n<li>Tealium iQタグ管理タグベンダーマーケットプレイスへのフルアクセス。</li>\n<li>同意のための組み込みサポート。</li>\n<li>A/Bテストとパーソナライゼーショントリガーをサポート。</li>\n</ul>\n<p>以下のサンプルコードは次のことを示しています：</p>\n<ul>\n<li>ウェブサイトで行うように<code>utag.js</code>をロードします。</li>\n<li>匿名訪問IDを生成して永続化します。</li>\n<li>ChatGPTアプリの初期ロードを追跡します。</li>\n<li>カスタムメソッドで関連するユーザーアクションを追跡します。</li>\n</ul>\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-html\" data-lang=\"html\"><span style=\"display:flex;\"><span>&lt;<span style=\"color:#f92672\">script</span>&gt;\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#75715e\">// Tealium iQをロード\n</span></span></span><span style=\"display:flex;\"><span><span style=\"color:#75715e\"></span>  (<span style=\"color:#66d9ef\">function</span>(<span style=\"color:#a6e22e\">a</span>,<span style=\"color:#a6e22e\">b</span>,<span style=\"color:#a6e22e\">c</span>,<span style=\"color:#a6e22e\">d</span>){\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">a</span><span style=\"color:#f92672\">=</span><span style=\"color:#e6db74\">&#39;https://tags.tiqcdn.com/utag/[ACCOUNT]/[PROFILE]/[ENVIRONMENT]/utag.js&#39;</span>;\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">b</span><span style=\"color:#f92672\">=</span>document;<span style=\"color:#a6e22e\">c</span><span style=\"color:#f92672\">=</span><span style=\"color:#e6db74\">&#39;script&#39;</span>;<span style=\"color:#a6e22e\">d</span><span style=\"color:#f92672\">=</span><span style=\"color:#a6e22e\">b</span>.<span style=\"color:#a6e22e\">createElement</span>(<span style=\"color:#a6e22e\">c</span>);<span style=\"color:#a6e22e\">d</span>.<span style=\"color:#a6e22e\">src</span><span style=\"color:#f92672\">=</span><span style=\"color:#a6e22e\">a</span>;\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">d</span>.<span style=\"color:#a6e22e\">type</span><span style=\"color:#f92672\">=</span><span style=\"color:#e6db74\">&#39;text/java&#39;</span><span style=\"color:#f92672\">+</span><span style=\"color:#a6e22e\">c</span>;<span style=\"color:#a6e22e\">d</span>.<span style=\"color:#66d9ef\">async</span><span style=\"color:#f92672\">=</span><span style=\"color:#66d9ef\">true</span>;\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">a</span><span style=\"color:#f92672\">=</span><span style=\"color:#a6e22e\">b</span>.<span style=\"color:#a6e22e\">getElementsByTagName</span>(<span style=\"color:#a6e22e\">c</span>)[<span style=\"color:#ae81ff\">0</span>];<span style=\"color:#a6e22e\">a</span>.<span style=\"color:#a6e22e\">parentNode</span>.<span style=\"color:#a6e22e\">insertBefore</span>(<span style=\"color:#a6e22e\">d</span>,<span style=\"color:#a6e22e\">a</span>);\n</span></span><span style=\"display:flex;\"><span>  })();\n</span></span><span style=\"display:flex;\"><span>\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#75715e\">// 32文字の小文字英数字の訪問IDを生成\n</span></span></span><span style=\"display:flex;\"><span><span style=\"color:#75715e\"></span>  <span style=\"color:#66d9ef\">function</span> <span style=\"color:#a6e22e\">generateTealiumVisitorId</span>() {\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#66d9ef\">const</span> <span style=\"color:#a6e22e\">chars</span> <span style=\"color:#f92672\">=</span> <span style=\"color:#e6db74\">&#39;abcdefghijklmnopqrstuvwxyz0123456789&#39;</span>;\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#66d9ef\">return</span> Array.<span style=\"color:#a6e22e\">from</span>({ <span style=\"color:#a6e22e\">length</span><span style=\"color:#f92672\">:</span> <span style=\"color:#ae81ff\">32</span> }, () =&gt; <span style=\"color:#a6e22e\">chars</span>[Math.<span style=\"color:#a6e22e\">floor</span>(Math.<span style=\"color:#a6e22e\">random</span>() <span style=\"color:#f92672\">*</span> <span style=\"color:#a6e22e\">chars</span>.<span style=\"color:#a6e22e\">length</span>)]).<span style=\"color:#a6e22e\">join</span>(<span style=\"color:#e6db74\">&#39;&#39;</span>);\n</span></span><span style=\"display:flex;\"><span>  }\n</span></span><span style=\"display:flex;\"><span>\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#75715e\">// 訪問IDを取得または作成して永続化\n</span></span></span><span style=\"display:flex;\"><span><span style=\"color:#75715e\"></span>  <span style=\"color:#66d9ef\">let</span> <span style=\"color:#a6e22e\">tealium_visitor_id</span> <span style=\"color:#f92672\">=</span> <span style=\"color:#a6e22e\">localStorage</span>.<span style=\"color:#a6e22e\">getItem</span>(<span style=\"color:#e6db74\">&#39;tealium_visitor_id&#39;</span>);\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#66d9ef\">if</span> (<span style=\"color:#f92672\">!</span><span style=\"color:#a6e22e\">tealium_visitor_id</span>) {\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">tealium_visitor_id</span> <span style=\"color:#f92672\">=</span> <span style=\"color:#a6e22e\">generateTealiumVisitorId</span>();\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">localStorage</span>.<span style=\"color:#a6e22e\">setItem</span>(<span style=\"color:#e6db74\">&#39;tealium_visitor_id&#39;</span>, <span style=\"color:#a6e22e\">tealium_visitor_id</span>);\n</span></span><span style=\"display:flex;\"><span>  }\n</span></span><span style=\"display:flex;\"><span>\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#75715e\">// アプリ初期化\n</span></span></span><span style=\"display:flex;\"><span><span style=\"color:#75715e\"></span>  <span style=\"color:#a6e22e\">utag</span>.<span style=\"color:#a6e22e\">track</span>(<span style=\"color:#e6db74\">&#39;event&#39;</span>, {\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#e6db74\">&#39;tealium_event&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;interface_loaded&#39;</span>,\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#e6db74\">&#39;app_version&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;2.1.0&#39;</span>,\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#e6db74\">&#39;user_tier&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;enterprise&#39;</span>,\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#e6db74\">&#39;tealium_visitor_id&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">tealium_visitor_id</span>\n</span></span><span style=\"display:flex;\"><span>  });\n</span></span><span style=\"display:flex;\"><span>\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#75715e\">// PDPビュー\n</span></span></span><span style=\"display:flex;\"><span><span style=\"color:#75715e\"></span>  <span style=\"color:#66d9ef\">function</span> <span style=\"color:#a6e22e\">trackViewPdp</span>(<span style=\"color:#a6e22e\">product</span>) {\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">utag</span>.<span style=\"color:#a6e22e\">track</span>(<span style=\"color:#e6db74\">&#39;view&#39;</span>, {\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;tealium_event&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;view_pdp&#39;</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;product_id&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">product</span>.<span style=\"color:#a6e22e\">id</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;product_name&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">product</span>.<span style=\"color:#a6e22e\">name</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;category&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">product</span>.<span style=\"color:#a6e22e\">category</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;price&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">product</span>.<span style=\"color:#a6e22e\">price</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;currency&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">product</span>.<span style=\"color:#a6e22e\">currency</span> <span style=\"color:#f92672\">||</span> <span style=\"color:#e6db74\">&#39;USD&#39;</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;tealium_visitor_id&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">tealium_visitor_id</span>\n</span></span><span style=\"display:flex;\"><span>    });\n</span></span><span style=\"display:flex;\"><span>  }\n</span></span><span style=\"display:flex;\"><span>\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#75715e\">// ボタンクリック\n</span></span></span><span style=\"display:flex;\"><span><span style=\"color:#75715e\"></span>  <span style=\"color:#66d9ef\">function</span> <span style=\"color:#a6e22e\">trackButtonClick</span>(<span style=\"color:#a6e22e\">button</span>) {\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">utag</span>.<span style=\"color:#a6e22e\">track</span>(<span style=\"color:#e6db74\">&#39;link&#39;</span>, {\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;tealium_event&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;button_click&#39;</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;button_id&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">button</span>.<span style=\"color:#a6e22e\">id</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;button_text&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">button</span>.<span style=\"color:#a6e22e\">text</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;location&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">button</span>.<span style=\"color:#a6e22e\">location</span> <span style=\"color:#f92672\">||</span> <span style=\"color:#e6db74\">&#39;pdp&#39;</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;app_version&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;2.1.0&#39;</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;tealium_visitor_id&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">tealium_visitor_id</span>\n</span></span><span style=\"display:flex;\"><span>    });\n</span></span><span style=\"display:flex;\"><span>  }\n</span></span><span style=\"display:flex;\"><span>&lt;/<span style=\"color:#f92672\">script</span>&gt;\n</span></span></code></pre></div><h2 id=\"オプション2サーバーサイドトラッキング\">オプション2：サーバーサイドトラッキング</h2>\n<p>サーバーサイドトラッキングは、<a href=\"/ja/platforms/http-api/endpoint/\">HTTP API</a>を使用してイベントを直接Tealiumに送信します。クライアントサイドソリューションと同様に、独自の匿名訪問IDを生成して永続化するための追加のユーティリティ関数を使用します。</p>\n<p>次のシナリオでこのアプローチを推奨します：</p>\n<ul>\n<li>CSP制限により外部JavaScriptのロードが防止される場合。</li>\n<li>購入などの重要なイベントのデータトラッキングを保証するため。</li>\n</ul>\n<p>以下に利用可能なサーバーサイドトラッキングソリューションを示します：</p>\n<h3 id=\"nodejsアプリ推奨\">Node.jsアプリ（推奨）</h3>\n<p>Node.jsソリューションには、匿名訪問IDを生成して永続化するクライアントコードと、追跡されたイベントのためのラッパー関数の呼び出しが含まれています。</p>\n<p>たとえば、次のサンプルコードは訪問IDを生成し、顧客が購入を完了したときにアプリから取得される<code>order</code>オブジェクトを使用してサーバーに注文追跡リクエストを送信します。</p>\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-js\" data-lang=\"js\"><span style=\"display:flex;\"><span><span style=\"color:#75715e\">// 32文字の小文字英数字の訪問IDを生成\n</span></span></span><span style=\"display:flex;\"><span><span style=\"color:#75715e\"></span><span style=\"color:#66d9ef\">function</span> <span style=\"color:#a6e22e\">generateTealiumVisitorId</span>() {\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#66d9ef\">const</span> <span style=\"color:#a6e22e\">chars</span> <span style=\"color:#f92672\">=</span> <span style=\"color:#e6db74\">&#39;abcdefghijklmnopqrstuvwxyz0123456789&#39;</span>;\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#66d9ef\">return</span> Array.<span style=\"color:#a6e22e\">from</span>({ <span style=\"color:#a6e22e\">length</span><span style=\"color:#f92672\">:</span> <span style=\"color:#ae81ff\">32</span> }, () =&gt; <span style=\"color:#a6e22e\">chars</span>[Math.<span style=\"color:#a6e22e\">floor</span>(Math.<span style=\"color:#a6e22e\">random</span>() <span style=\"color:#f92672\">*</span> <span style=\"color:#a6e22e\">chars</span>.<span style=\"color:#a6e22e\">length</span>)]).<span style=\"color:#a6e22e\">join</span>(<span style=\"color:#e6db74\">&#39;&#39;</span>);\n</span></span><span style=\"display:flex;\"><span>}\n</span></span><span style=\"display:flex;\"><span>\n</span></span><span style=\"display:flex;\"><span><span style=\"color:#75715e\">// 訪問IDを取得または作成して永続化\n</span></span></span><span style=\"display:flex;\"><span><span style=\"color:#75715e\"></span><span style=\"color:#66d9ef\">let</span> <span style=\"color:#a6e22e\">tealium_visitor_id</span> <span style=\"color:#f92672\">=</span> <span style=\"color:#a6e22e\">localStorage</span>.<span style=\"color:#a6e22e\">getItem</span>(<span style=\"color:#e6db74\">&#39;tealium_visitor_id&#39;</span>);\n</span></span><span style=\"display:flex;\"><span><span style=\"color:#66d9ef\">if</span> (<span style=\"color:#f92672\">!</span><span style=\"color:#a6e22e\">tealium_visitor_id</span>) {\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#a6e22e\">tealium_visitor_id</span> <span style=\"color:#f92672\">=</span> <span style=\"color:#a6e22e\">generateTealiumVisitorId</span>();\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#a6e22e\">localStorage</span>.<span style=\"color:#a6e22e\">setItem</span>(<span style=\"color:#e6db74\">&#39;tealium_visitor_id&#39;</span>, <span style=\"color:#a6e22e\">tealium_visitor_id</span>);\n</span></span><span style=\"display:flex;\"><span>}\n</span></span><span style=\"display:flex;\"><span>\n</span></span><span style=\"display:flex;\"><span><span style=\"color:#66d9ef\">async</span> <span style=\"color:#66d9ef\">function</span> <span style=\"color:#a6e22e\">trackPurchaseServer</span>(<span style=\"color:#a6e22e\">order</span>) {\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#66d9ef\">await</span> <span style=\"color:#a6e22e\">fetch</span>(<span style=\"color:#e6db74\">&#39;/api/tealium/track&#39;</span>, {\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">method</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;POST&#39;</span>,\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">headers</span><span style=\"color:#f92672\">:</span> { <span style=\"color:#e6db74\">&#39;Content-Type&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;application/json&#39;</span> },\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">body</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">JSON</span>.<span style=\"color:#a6e22e\">stringify</span>({\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;tealium_event&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;purchase&#39;</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;tealium_visitor_id&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">tealium_visitor_id</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;order_id&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">order</span>.<span style=\"color:#a6e22e\">id</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;order_total&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">order</span>.<span style=\"color:#a6e22e\">total</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;currency&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">order</span>.<span style=\"color:#a6e22e\">currency</span> <span style=\"color:#f92672\">||</span> <span style=\"color:#e6db74\">&#39;USD&#39;</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;items&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">order</span>.<span style=\"color:#a6e22e\">items</span>\n</span></span><span style=\"display:flex;\"><span>    })\n</span></span><span style=\"display:flex;\"><span>  });\n</span></span><span style=\"display:flex;\"><span>}\n</span></span></code></pre></div><p>次のサンプルサーバーサイドコードは、トラッキングコールを受け入れるエンドポイントを構成し、<a href=\"/ja/platforms/node/install/\">Tealium for Node.js</a>を使用してそれらのイベントをTealium Collectに転送します。</p>\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-js\" data-lang=\"js\"><span style=\"display:flex;\"><span><span style=\"color:#75715e\">// npm i tealium-collect express\n</span></span></span><span style=\"display:flex;\"><span><span style=\"color:#75715e\"></span><span style=\"color:#66d9ef\">const</span> <span style=\"color:#a6e22e\">express</span> <span style=\"color:#f92672\">=</span> <span style=\"color:#a6e22e\">require</span>(<span style=\"color:#e6db74\">&#39;express&#39;</span>);\n</span></span><span style=\"display:flex;\"><span><span style=\"color:#66d9ef\">const</span> <span style=\"color:#a6e22e\">TealiumCollect</span> <span style=\"color:#f92672\">=</span> <span style=\"color:#a6e22e\">require</span>(<span style=\"color:#e6db74\">&#39;tealium-collect&#39;</span>);\n</span></span><span style=\"display:flex;\"><span><span style=\"color:#66d9ef\">const</span> <span style=\"color:#a6e22e\">app</span> <span style=\"color:#f92672\">=</span> <span style=\"color:#a6e22e\">express</span>();\n</span></span><span style=\"display:flex;\"><span><span style=\"color:#a6e22e\">app</span>.<span style=\"color:#a6e22e\">use</span>(<span style=\"color:#a6e22e\">express</span>.<span style=\"color:#a6e22e\">json</span>());\n</span></span><span style=\"display:flex;\"><span>\n</span></span><span style=\"display:flex;\"><span><span style=\"color:#66d9ef\">const</span> <span style=\"color:#a6e22e\">tealium</span> <span style=\"color:#f92672\">=</span> <span style=\"color:#66d9ef\">new</span> <span style=\"color:#a6e22e\">TealiumCollect</span>({\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#e6db74\">&#39;account&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;your-account&#39;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#e6db74\">&#39;profile&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;chatgpt-app&#39;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#e6db74\">&#39;environment&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;prod&#39;</span>\n</span></span><span style=\"display:flex;\"><span>});\n</span></span><span style=\"display:flex;\"><span>\n</span></span><span style=\"display:flex;\"><span><span style=\"color:#a6e22e\">app</span>.<span style=\"color:#a6e22e\">post</span>(<span style=\"color:#e6db74\">&#39;/api/tealium/track&#39;</span>, <span style=\"color:#66d9ef\">async</span> (<span style=\"color:#a6e22e\">req</span>, <span style=\"color:#a6e22e\">res</span>) =&gt; {\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#66d9ef\">try</span> {\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#66d9ef\">const</span> <span style=\"color:#a6e22e\">tealium_visitor_id</span> <span style=\"color:#f92672\">=</span> <span style=\"color:#a6e22e\">req</span>.<span style=\"color:#a6e22e\">body</span>.<span style=\"color:#a6e22e\">tealium_visitor_id</span>;\n</span></span><span style=\"display:flex;\"><span>\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#66d9ef\">if</span> (<span style=\"color:#f92672\">!</span><span style=\"color:#e6db74\">/^[a-z0-9]{32}$/</span>.<span style=\"color:#a6e22e\">test</span>(<span style=\"color:#a6e22e\">tealium_visitor_id</span> <span style=\"color:#f92672\">||</span> <span style=\"color:#e6db74\">&#39;&#39;</span>)) {\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#66d9ef\">return</span> <span style=\"color:#a6e22e\">res</span>.<span style=\"color:#a6e22e\">status</span>(<span style=\"color:#ae81ff\">400</span>).<span style=\"color:#a6e22e\">json</span>({ <span style=\"color:#a6e22e\">error</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;Invalid or missing tealium_visitor_id&#39;</span> });\n</span></span><span style=\"display:flex;\"><span>    }\n</span></span><span style=\"display:flex;\"><span>\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#66d9ef\">const</span> <span style=\"color:#a6e22e\">allowed</span> <span style=\"color:#f92672\">=</span> <span style=\"color:#66d9ef\">new</span> <span style=\"color:#a6e22e\">Set</span>([<span style=\"color:#e6db74\">&#39;interface_loaded&#39;</span>,<span style=\"color:#e6db74\">&#39;view_pdp&#39;</span>,<span style=\"color:#e6db74\">&#39;button_click&#39;</span>,<span style=\"color:#e6db74\">&#39;purchase&#39;</span>]);\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#66d9ef\">if</span> (<span style=\"color:#f92672\">!</span><span style=\"color:#a6e22e\">allowed</span>.<span style=\"color:#a6e22e\">has</span>(<span style=\"color:#a6e22e\">req</span>.<span style=\"color:#a6e22e\">body</span>.<span style=\"color:#a6e22e\">tealium_event</span>)) {\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#66d9ef\">return</span> <span style=\"color:#a6e22e\">res</span>.<span style=\"color:#a6e22e\">status</span>(<span style=\"color:#ae81ff\">400</span>).<span style=\"color:#a6e22e\">json</span>({ <span style=\"color:#a6e22e\">error</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;Unsupported event type&#39;</span> });\n</span></span><span style=\"display:flex;\"><span>    }\n</span></span><span style=\"display:flex;\"><span>\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#66d9ef\">await</span> <span style=\"color:#a6e22e\">tealium</span>.<span style=\"color:#a6e22e\">track</span>({\n</span></span><span style=\"display:flex;\"><span>      ...<span style=\"color:#a6e22e\">req</span>.<span style=\"color:#a6e22e\">body</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#a6e22e\">tealium_visitor_id</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;timestamp&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">req</span>.<span style=\"color:#a6e22e\">body</span>.<span style=\"color:#a6e22e\">timestamp</span> <span style=\"color:#f92672\">||</span> <span style=\"color:#66d9ef\">new</span> Date().<span style=\"color:#a6e22e\">toISOString</span>()\n</span></span><span style=\"display:flex;\"><span>    });\n</span></span><span style=\"display:flex;\"><span>\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">res</span>.<span style=\"color:#a6e22e\">status</span>(<span style=\"color:#ae81ff\">204</span>).<span style=\"color:#a6e22e\">end</span>();\n</span></span><span style=\"display:flex;\"><span>  } <span style=\"color:#66d9ef\">catch</span> (<span style=\"color:#a6e22e\">e</span>) {\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">console</span>.<span style=\"color:#a6e22e\">error</span>(<span style=\"color:#e6db74\">&#39;Tealium track error:&#39;</span>, <span style=\"color:#a6e22e\">e</span>);\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">res</span>.<span style=\"color:#a6e22e\">status</span> <span style=\"color:#ae81ff\">500</span>).<span style=\"color:#a6e22e\">json</span>({ <span style=\"color:#a6e22e\">error</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;Tracking failed&#39;</span> });\n</span></span><span style=\"display:flex;\"><span>  }\n</span></span><span style=\"display:flex;\"><span>});\n</span></span><span style=\"display:flex;\"><span>\n</span></span><span style=\"display:flex;\"><span><span style=\"color:#a6e22e\">app</span>.<span style=\"color:#a6e22e\">listen</span>(<span style=\"color:#ae81ff\">3000</span>, () =&gt; <span style=\"color:#a6e22e\">console</span>.<span style=\"color:#a6e22e\">log</span>(<span style=\"color:#e6db74\">&#39;Tealium server listening on 3000&#39;</span>));\n</span></span></code></pre></div><h3 id=\"ブラウザアプリ\">ブラウザアプリ</h3>\n<p><code>&lt;script&gt;</code> タグを埋め込むことができるブラウザアプリでこのアプローチを使用します。このコードは <code>fetch()</code> と <a href=\"/ja/platforms/http-api/endpoint/\">HTTP API</a> を使用してイベントを直接 Tealium に送信し、匿名訪問 ID を生成および保持するための同じユーティリティメソッドを使用します。</p>\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-html\" data-lang=\"html\"><span style=\"display:flex;\"><span>&lt;<span style=\"color:#f92672\">script</span>&gt;\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#75715e\">// 32文字の小文字英数字の訪問IDを生成\n</span></span></span><span style=\"display:flex;\"><span><span style=\"color:#75715e\"></span>  <span style=\"color:#66d9ef\">function</span> <span style=\"color:#a6e22e\">generateTealiumVisitorId</span>() {\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#66d9ef\">const</span> <span style=\"color:#a6e22e\">chars</span> <span style=\"color:#f92672\">=</span> <span style=\"color:#e6db74\">&#39;abcdefghijklmnopqrstuvwxyz0123456789&#39;</span>;\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#66d9ef\">return</span> Array.<span style=\"color:#a6e22e\">from</span>({ <span style=\"color:#a6e22e\">length</span><span style=\"color:#f92672\">:</span> <span style=\"color:#ae81ff\">32</span> }, () =&gt; <span style=\"color:#a6e22e\">chars</span>[Math.<span style=\"color:#a6e22e\">floor</span>(Math.<span style=\"color:#a6e22e\">random</span>() <span style=\"color:#f92672\">*</span> <span style=\"color:#a6e22e\">chars</span>.<span style=\"color:#a6e22e\">length</span>)]).<span style=\"color:#a6e22e\">join</span>(<span style=\"color:#e6db74\">&#39;&#39;</span>);\n</span></span><span style=\"display:flex;\"><span>  }\n</span></span><span style=\"display:flex;\"><span>\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#75715e\">// 訪問IDを取得または作成して保持\n</span></span></span><span style=\"display:flex;\"><span><span style=\"color:#75715e\"></span>  <span style=\"color:#66d9ef\">let</span> <span style=\"color:#a6e22e\">tealium_visitor_id</span> <span style=\"color:#f92672\">=</span> <span style=\"color:#a6e22e\">localStorage</span>.<span style=\"color:#a6e22e\">getItem</span>(<span style=\"color:#e6db74\">&#39;tealium_visitor_id&#39;</span>);\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#66d9ef\">if</span> (<span style=\"color:#f92672\">!</span><span style=\"color:#a6e22e\">tealium_visitor_id</span>) {\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">tealium_visitor_id</span> <span style=\"color:#f92672\">=</span> <span style=\"color:#a6e22e\">generateTealiumVisitorId</span>();\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#a6e22e\">localStorage</span>.<span style=\"color:#a6e22e\">setItem</span>(<span style=\"color:#e6db74\">&#39;tealium_visitor_id&#39;</span>, <span style=\"color:#a6e22e\">tealium_visitor_id</span>);\n</span></span><span style=\"display:flex;\"><span>  }\n</span></span><span style=\"display:flex;\"><span>\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#66d9ef\">async</span> <span style=\"color:#66d9ef\">function</span> <span style=\"color:#a6e22e\">sendCollectEvent</span>(<span style=\"color:#a6e22e\">payload</span>) {\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#66d9ef\">const</span> <span style=\"color:#a6e22e\">base</span> <span style=\"color:#f92672\">=</span> {\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;tealium_account&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;your-account&#39;</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;tealium_profile&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;chatgpt-app&#39;</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;tealium_visitor_id&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">tealium_visitor_id</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;timestamp&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#66d9ef\">new</span> Date().<span style=\"color:#a6e22e\">toISOString</span>()\n</span></span><span style=\"display:flex;\"><span>    };\n</span></span><span style=\"display:flex;\"><span>\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#66d9ef\">await</span> <span style=\"color:#a6e22e\">fetch</span>(<span style=\"color:#e6db74\">&#39;https://collect.tealiumiq.com/event&#39;</span>, {\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;method&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;POST&#39;</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;headers&#39;</span><span style=\"color:#f92672\">:</span> { <span style=\"color:#e6db74\">&#39;Content-Type&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;application/json&#39;</span> },\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;body&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">JSON</span>.<span style=\"color:#a6e22e\">stringify</span>({ ...<span style=\"color:#a6e22e\">base</span>, ...<span style=\"color:#a6e22e\">payload</span> })\n</span></span><span style=\"display:flex;\"><span>    });\n</span></span><span style=\"display:flex;\"><span>  }\n</span></span><span style=\"display:flex;\"><span>\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#66d9ef\">function</span> <span style=\"color:#a6e22e\">trackViewPdpServer</span>(<span style=\"color:#a6e22e\">product</span>) {\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#66d9ef\">return</span> <span style=\"color:#a6e22e\">sendCollectEvent</span>({\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;tealium_event&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;view_pdp&#39;</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;product_id&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">product</span>.<span style=\"color:#a6e22e\">id</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;product_name&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">product</span>.<span style=\"color:#a6e22e\">name</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;product_category&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">product</span>.<span style=\"color:#a6e22e\">category</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;product_price&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">product</span>.<span style=\"color:#a6e22e\">price</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;product_currency&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">product</span>.<span style=\"color:#a6e22e\">currency</span> <span style=\"color:#f92672\">||</span> <span style=\"color:#e6db74\">&#39;USD&#39;</span>\n</span></span><span style=\"display:flex;\"><span>    });\n</span></span><span style=\"display:flex;\"><span>  }\n</span></span><span style=\"display:flex;\"><span>\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#66d9ef\">function</span> <span style=\"color:#a6e22e\">trackButtonClickServer</span>(<span style=\"color:#a6e22e\">button</span>) {\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#66d9ef\">return</span> <span style=\"color:#a6e22e\">sendCollectEvent</span>({\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;tealium_event&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;button_click&#39;</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;button_id&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">button</span>.<span style=\"color:#a6e22e\">id</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;button_text&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">button</span>.<span style=\"color:#a6e22e\">text</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;location&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#a6e22e\">button</span>.<span style=\"color:#a6e22e\">location</span> <span style=\"color:#f92672\">||</span> <span style=\"color:#e6db74\">&#39;pdp&#39;</span>,\n</span></span><span style=\"display:flex;\"><span>      <span style=\"color:#e6db74\">&#39;app_version&#39;</span><span style=\"color:#f92672\">:</span> <span style=\"color:#e6db74\">&#39;2.1.0&#39;</span>\n</span></span><span style=\"display:flex;\"><span>    });\n</span></span><span style=\"display:flex;\"><span>  }\n</span></span><span style=\"display:flex;\"><span>&lt;/<span style=\"color:#f92672\">script</span>&gt;\n</span></span></code></pre></div><h2 id=\"オプション3-ハイブリッド推奨\">オプション3: ハイブリッド（推奨）</h2>\n<p>ハイブリッドアプローチは、クライアントサイドソリューションを使用して <code>interface_loaded</code>、<code>view_pdp</code>、<code>button_click</code> などのインタラクションイベントを追跡し、サーバーサイドソリューションを使用して <code>purchase</code> などの権威あるイベントを追跡します。このアプローチを使用することで、アプリの追跡を最も完全に行うことができます。</p>\n<p class=\"note\"><i class=\"fa fa-exclamation-triangle\"></i>ハイブリッドソリューションを実行する際は、iQプロファイルでTealium Collectタグをロードしないでください。これにより、イベントの重複追跡が防止されます。</p>\n<h2 id=\"訪問のアイデンティティ\">訪問のアイデンティティ</h2>\n<p>正確な追跡と統一された訪問プロファイルを確保するためには、クライアントサイドとサーバーサイドのイベントの両方で同じ匿名訪問IDを常に使用してください。このアプローチにより、ChatGPT、ウェブ、モバイルを通じて単一の訪問アイデンティティが維持され、一貫した追跡とリアルタイムのパーソナライゼーションが可能になります。</p>\n<p class=\"tip\"><i class=\"fa fa-info-circle\"></i>利用可能な場合は、<code>customer_id</code> や <code>email_address_hash</code> などの既知のユーザー識別子を別のパラメータとして含めることをお勧めしますが、これらの値を <code>tealium_visitor_id</code> で置き換えることはしないでください。</p>\n<h2 id=\"mcp統合オプション\">MCP統合（オプション）</h2>\n<p>サーバーからChatGPTが呼び出すシンプルなMCPツールを公開します。このアプローチにより、ChatGPTは会話ロジックを処理し、サーバーは形式、アイデンティティ、ポリシーを強制します。</p>\n<p><strong>ツール:</strong> <code>tealium-track-event</code></p>\n<p><strong>例のスキーマ:</strong></p>\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-json\" data-lang=\"json\"><span style=\"display:flex;\"><span>{\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;account&#34;</span>: <span style=\"color:#e6db74\">&#34;your-account&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;profile&#34;</span>: <span style=\"color:#e6db74\">&#34;chatgpt-app&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;environment&#34;</span>: <span style=\"color:#e6db74\">&#34;prod&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;event&#34;</span>: <span style=\"color:#e6db74\">&#34;view_pdp&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;visitorId&#34;</span>: <span style=\"color:#e6db74\">&#34;abcdefghijklmnopqrstuvwxyz012345&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;data&#34;</span>: {\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#f92672\">&#34;product_id&#34;</span>: <span style=\"color:#e6db74\">&#34;widget-123&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#f92672\">&#34;price&#34;</span>: <span style=\"color:#ae81ff\">29.99</span>,\n</span></span><span style=\"display:flex;\"><span>    <span style=\"color:#f92672\">&#34;currency&#34;</span>: <span style=\"color:#e6db74\">&#34;USD&#34;</span>\n</span></span><span style=\"display:flex;\"><span>  }\n</span></span><span style=\"display:flex;\"><span>}\n</span></span></code></pre></div><p><strong>検証:</strong></p>\n<ul>\n<li><code>visitorId</code> は正規表現 <code>/^[a-z0-9]{32}$/</code> に一致する必要があります。</li>\n<li><code>event</code> は許可されたイベントリスト（<code>interface_loaded</code>, <code>view_pdp</code>, <code>button_click</code>, <code>purchase</code>）に含まれている必要があります。</li>\n</ul>\n<h2 id=\"moments-api-mcp\">Moments API MCP</h2>\n<p><a href=\"/ja/server-side/moments-api/managed-mcp-server/\">Moments MCP server</a> をアプリに追加してパーソナライゼーションを有効にします。</p>\n<p><strong>例のフロー:</strong></p>\n<ol>\n<li><code>view_pdp</code>, <code>button_click</code>, <code>purchase</code> のイベントを追跡します。</li>\n<li><strong>AudienceStream</strong> が訪問プロファイルを構築します。</li>\n<li>Chat UI（またはMCPツール）が <code>tealium_visitor_id</code> で <strong>Moments API</strong> を照会します。</li>\n<li>応答は（推奨、オファー、トーンなど）適応します。</li>\n</ol>\n<h2 id=\"データプライバシーとコンプライアンス\">データプライバシーとコンプライアンス</h2>\n<p>このアプリは、以下の機能を通じてデータプライバシーとコンプライアンスをサポートします：</p>\n<ul>\n<li>Tealium iQ Consent Managerを通じた同意駆動のアクティベーション。</li>\n<li>データを送信する前に省略またはハッシュ化することによるPIIガバナンス。</li>\n<li>地域コンプライアンス（GDPR、CCPA、データ居住）。</li>\n</ul>\n<h2 id=\"サンプルアプリ\">サンプルアプリ</h2>\n<h3 id=\"前提条件\">前提条件</h3>\n<ul>\n<li>Node.js 18+ (LTS)</li>\n<li><code>npm</code> または <code>pnpm</code></li>\n<li>Tealium アカウント、プロファイル、環境</li>\n<li>(オプション) ngrok for MCP exposure</li>\n</ul>\n<h3 id=\"インストール\">インストール</h3>\n<ol>\n<li>メインプロジェクトの依存関係をインストールします：\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-bash\" data-lang=\"bash\"><span style=\"display:flex;\"><span>pnpm install\n</span></span></code></pre></div></li>\n<li>サーバーの依存関係をインストールします：\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-bash\" data-lang=\"bash\"><span style=\"display:flex;\"><span>cd server\n</span></span><span style=\"display:flex;\"><span>pnpm install\n</span></span><span style=\"display:flex;\"><span>cd ..\n</span></span></code></pre></div></li>\n</ol>\n<h3 id=\"アプリケーションの実行\">アプリケーションの実行</h3>\n<ol>\n<li>フロントエンドバンドルをビルドします：\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-sh\" data-lang=\"sh\"><span style=\"display:flex;\"><span>pnpm run build\n</span></span></code></pre></div></li>\n<li>MCPサーバーを起動します：\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-sh\" data-lang=\"sh\"><span style=\"display:flex;\"><span>cd server\n</span></span><span style=\"display:flex;\"><span>pnpm start\n</span></span></code></pre></div></li>\n<li>サーバーは <a href=\"http://localhost:8000/mcp\">http://localhost:8000/mcp</a> で実行されます</li>\n<li>新しいターミナルでngrokトンネルを生成します：\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-sh\" data-lang=\"sh\"><span style=\"display:flex;\"><span>ngrok http <span style=\"color:#ae81ff\">8000</span>\n</span></span></code></pre></div></li>\n<li>ngrokは次の出力を返します：\n<pre tabindex=\"0\"><code class=\"language-none\" data-lang=\"none\">Session Status    online\nAccount           Your Account (Plan: Free)\nUpdate            update available (version 3.x.x, Ctrl-C to update)\nVersion           3.x.x\nRegion            United States (us)\nWeb Interface     http://127.0.0.1:4040\nForwarding        https://abc123def456.ngrok-free.app -&gt; http://localhost:8000\n</code></pre></li>\n<li>サーバーコードのCSPドメインを更新します：\n<ul>\n<li>ターミナル出力からngrok URLをコピーします（例：<code>https://abc123def456.ngrok-free.app</code>）。</li>\n<li><code>server/index.ts</code> の30行目と34行目で、<code>https://resolvedly-pouched-nena.ngrok-free.dev</code> を新しいngrok URLに置き換えます。</li>\n<li><code>src/tealium/TealiumTracker.tsx</code> の134行目でも同じ更新を行います。</li>\n</ul>\n</li>\n<li>サーバーを再起動します：\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-sh\" data-lang=\"sh\"><span style=\"display:flex;\"><span><span style=\"color:#75715e\"># 現在のサーバーを終了します（Ctrl+C）</span>\n</span></span><span style=\"display:flex;\"><span>cd server\n</span></span><span style=\"display:flex;\"><span>pnpm start\n</span></span></code></pre></div></li>\n<li>新しいURLでフロントエンドを再ビルドします：\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-sh\" data-lang=\"sh\"><span style=\"display:flex;\"><span>cd ..\n</span></span><span style=\"display:flex;\"><span>pnpm run build\n</span></span></code></pre></div></li>\n</ol>\n<p>次のアクセスポイントに注意してください：</p>\n<ul>\n<li>ローカルMCPサーバー：<a href=\"http://localhost:8000/mcp\">http://localhost:8000/mcp</a></li>\n<li>ヘルスチェック：<a href=\"http://localhost:8000/health\">http://localhost:8000/health</a></li>\n<li>APIエンドポイント：<a href=\"http://localhost:8000/api/tealium/track\">http://localhost:8000/api/tealium/track</a></li>\n<li>公開ngrok URL：ngrok URL + <code>/mcp</code></li>\n<li>公開API：ngrok URL + <code>/api/tealium/track</code></li>\n</ul>\n<h3 id=\"chatgptでアプリを追加\">ChatGPTでアプリを追加</h3>\n<ol>\n<li><strong>ChatGPT &gt; 構成 &gt; アプリとコネクタ</strong>に移動します。</li>\n<li><strong>詳細構成</strong>の下で<strong>開発者モード</strong>を有効にします。</li>\n<li><strong>MCPサーバーフィールド</strong>に<strong>ngrok URL</strong>を貼り付けます。</li>\n</ol>\n<h3 id=\"tealiumアプリの起動\">Tealiumアプリの起動</h3>\n<ol>\n<li>プロンプトが表示されたら、<code>tealium-tracker</code> ツールを使用します。</li>\n<li>Tealiumアカウント、プロファイル、環境を入力します。</li>\n<li>Tealium Universalタグ (<code>utag.js</code>) がロードされ、ウェブアプリでイベントを追跡します。</li>\n</ol>\n<p class=\"tip\"><i class=\"fa fa-info-circle\"></i>サードパーティのライブラリがブロックされている場合は、CSPでそのリソースを許可してください。</p>\n<h3 id=\"サーバーサイドイベント追跡\"><strong>サーバーサイドイベント追跡</strong></h3>\n<p>サーバーサイドの追跡をオンにすると、クライアントサイドの呼び出しが <code>/api/tealium/track</code> に送信され、Tealium Collect NPMモジュールを使用して追跡リクエストが行われます。</p>\n<figure><a class=\"slb\" href=\"/images/guides/tealium-chatgpt-tracker-app.png\"><img src=\"https://docs.tealium.com/images/guides/tealium-chatgpt-tracker-app.png\"/>\n    </a>\n</figure>\n<p><a href=\"/ja/server-side/trace/about/\">Tealium Trace</a>で結果を検証します。</p>\n<figure><a class=\"slb\" href=\"/images/guides/tealium-chatgpt-trace.png\"><img src=\"https://docs.tealium.com/images/guides/tealium-chatgpt-trace.png\"/>\n    </a>\n</figure>"
        }  

    , 
        {
            "weight": "0",
            "url": "https://docs.tealium.com/ja/server-side-connectors/google-vertex-ai-connector/",
            "title": "Google Vertex AI セットアップガイド",
            "body": "<p>AIコネクタの動作概要とAIコネクタまたはTealium機能を使用するタイミングに関するガイダンスについては、<a href=\"/ja/guides/ai-connectors-and-functions/\">AIコネクタとTealium機能</a>を参照してください。</p>\n<h2 id=\"動作方法\">動作方法</h2>\n<p>このコネクタは、カスタムプロンプトとマップされたTealiumデータを使用してGoogle Vertex AIモデルを呼び出し、その後、リアルタイムエンリッチメントのためにJSONイベントとしてTealium Collectにレスポンスを送信します。</p>\n<p class=\"note\"><i class=\"fa fa-exclamation-triangle\"></i>Google Vertex AIコネクタは、高頻度のイベントではなく、ターゲットを絞った高価値のインタラクションに使用すべきです。過度な使用は、Google Vertex AIアカウントでのレート制限やAPIコストの増加につながり、受信Tealiumイベントの量を増加させる可能性があります。</p>\n<h3 id=\"プロンプト\">プロンプト</h3>\n<p>プロンプトは、モデルにコンテキストデータを送信し、特定の質問を行い、期待されるレスポンスを定義します。</p>\n<p><strong>コンテキストデータ</strong><br>\nモデルは、リクエストを評価するためにコンテキストデータを必要とします。コネクタアクションを構成してイベントデータまたは訪問データを使用し、このデータオブジェクトをプロンプトで参照します：</p>\n<ul>\n<li>イベントデータ: <code>{{event_payload}}</code></li>\n<li>訪問データ: <code>{{visitor_profile}}</code></li>\n</ul>\n<p>例えば、プロンプトの最初の行にこれを含めます：</p>\n<pre tabindex=\"0\"><code class=\"language-wrap\" data-lang=\"wrap\">顧客イベントを説明するJSONオブジェクトを受け取ります：\n{{event_payload}}\n</code></pre><p><strong>質問</strong><br>\nモデルにコンテキストデータを評価させ、値を生成するように依頼する必要があります。1つ以上の特定の値を求め、何を求めているのかを明確にしてください。</p>\n<p>例えば、このプロンプトは3つの値のうちの1つを求めます：</p>\n<pre tabindex=\"0\"><code class=\"language-wrap\" data-lang=\"wrap\">提供された製品レビューイベントに基づいて、顧客の感情を「不満足」、「中立」、または「満足」として分類します。\n</code></pre><p>さらに、モデルが特定のJSON形式で応答するように指示する必要があります。これにより、有効なイベントとしてアカウントに送信できます。</p>\n<p>例えば、このプロンプトの部分は正確なJSON形式を指定し、Tealium変数を中括弧を使用して参照します：</p>\n<pre tabindex=\"0\"><code class=\"language-wrap\" data-lang=\"wrap\">次の構造で単一のJSONオブジェクトを1行でのみ返します：\n{\n  &#34;tealium_account&#34;: &#34;{{tealium_account}}&#34;,\n  &#34;tealium_profile&#34;: &#34;{{tealium_profile}}&#34;,\n  &#34;tealium_visitor_id&#34;: &#34;{{tealium_visitor_id}}&#34;,\n  &#34;tealium_event&#34;:  &#34;vertexai_response&#34;,\n  &#34;vertexai_review_sentiment&#34;: &#34;&lt;customer review sentiment&gt;&#34;\n}\n</code></pre><p class=\"tip\"><i class=\"fa fa-info-circle\"></i><code>tealium_event</code>にこのコネクタに固有の値を構成し、このプロンプトに特有のレスポンス属性の名前を付けます。これにより、これらのイベントに一致するイベントフィードやルールを簡単に作成できます。</p>\n<h3 id=\"レスポンスイベント\">レスポンスイベント</h3>\n<p>このコネクタは、Google Vertex AIモデルからのレスポンスを解析します。それが有効なJSONオブジェクトで必要なTealiumパラメータを含んでいる場合、コネクタはそれを受信イベントとしてアカウントに送り返します。</p>\n<p>これらのイベントをキャプチャするには、Google Vertex AIレスポンスによって生成されたイベントに一致するエンリッチメントルールまたはイベントフィードを作成します。例えば、このルールは感情イベントをキャプチャします：</p>\n<div class=\"mv3 pv2 ph4 ba br2 b--light-gray\">\n  <div class=\"boolean-logic-container\">\n      <div class=\"condition-group\">\n        <span class=\"input\">tealium_event</span>\n        <span class=\"operator\">EQUALS</span>\n        <span class=\"filter\">vertexai_response</span>\n      </div>\n      <div class=\"fw8 mv2\">AND</div>\n      <div class=\"condition-group\">\n        <span class=\"input\">vertexai_review_sentiment</span>\n        <span class=\"operator\">IS POPULATED</span>\n        \n      </div>\n  </div>\n</div>\n<h3 id=\"例イベントトリガー\">例：イベントトリガー</h3>\n<p>この例では、顧客が製品レビューを提出したばかりで、プロンプトはモデルに感情を評価するよう依頼します。</p>\n<p><strong>例のプロンプト</strong>：</p>\n<pre tabindex=\"0\"><code class=\"language-wrap\" data-lang=\"wrap\">顧客の製品レビューを説明するJSONオブジェクトを受け取ります：\n{{event_payload}}\n\n提供された製品レビューイベントに基づいて、顧客の感情を「不満足」、「中立」、または「満足」として分類します。\n\n次の構造で単一のJSONオブジェクトを1行でのみ返します：\n{\n  &#34;tealium_account&#34;: &#34;{{tealium_account}}&#34;,\n  &#34;tealium_profile&#34;: &#34;{{tealium_profile}}&#34;,\n  &#34;tealium_visitor_id&#34;: &#34;{{tealium_visitor_id}}&#34;,\n  &#34;tealium_event&#34;:  &#34;vertexai_response&#34;,\n  &#34;vertexai_review_sentiment&#34;: &#34;&lt;customer review sentiment&gt;&#34;\n}\n</code></pre><p><strong>例のレスポンスイベント</strong>：</p>\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-json\" data-lang=\"json\"><span style=\"display:flex;\"><span>{\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;tealium_account&#34;</span>: <span style=\"color:#e6db74\">&#34;acme&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;tealium_profile&#34;</span>: <span style=\"color:#e6db74\">&#34;main&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;tealium_visitor_id&#34;</span>: <span style=\"color:#e6db74\">&#34;383...05d&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;tealium_event&#34;</span>: <span style=\"color:#e6db74\">&#34;vertexai_response&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;vertexai_review_sentiment&#34;</span>: <span style=\"color:#e6db74\">&#34;satisfied&#34;</span>\n</span></span><span style=\"display:flex;\"><span>}\n</span></span></code></pre></div><h3 id=\"例オーディエンストリガー\">例：オーディエンストリガー</h3>\n<p>この例では、顧客が「頻繁なブラウザ、購入なし」というオーディエンスに参加し、プロンプトはモデルに顧客の意図を評価するよう依頼します。</p>\n<p><strong>例のプロンプト</strong>：</p>\n<pre tabindex=\"0\"><code class=\"language-wrap\" data-lang=\"wrap\">小売り訪問を説明するJSONオブジェクトを受け取ります：\n{{visitor_profile}}\n\n提供された顧客データに基づいて、彼らの可能性のある意図を「お買い得品を探す」、「製品比較」、「後で調査」、または「興味なし」として分類します。データが不足している場合は、最善の推測を行ってください。\n\n次の構造で単一のJSONオブジェクトを1行でのみ返します：\n{\n  &#34;tealium_account&#34;: &#34;{{tealium_account}}&#34;,\n  &#34;tealium_profile&#34;: &#34;{{tealium_profile}}&#34;,\n  &#34;tealium_visitor_id&#34;: &#34;{{tealium_visitor_id}}&#34;,\n  &#34;tealium_event&#34;:  &#34;vertexai_response&#34;,\n  &#34;vertexai_intent&#34;: &#34;&lt;customer intent&gt;&#34;\n}\n</code></pre><p><strong>例のレスポンスイベント</strong>：</p>\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-json\" data-lang=\"json\"><span style=\"display:flex;\"><span>{\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;tealium_account&#34;</span>: <span style=\"color:#e6db74\">&#34;acme&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;tealium_profile&#34;</span>: <span style=\"color:#e6db74\">&#34;main&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;tealium_visitor_id&#34;</span>: <span style=\"color:#e6db74\">&#34;383...05d&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;tealium_event&#34;</span>: <span style=\"color:#e6db74\">&#34;vertexai_response&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;vertexai_intent&#34;</span>: <span style=\"color:#e6db74\">&#34;bargain hunting&#34;</span>\n</span></span><span style=\"display:flex;\"><span>}\n</span></span></code></pre></div><h2 id=\"テスト\">テスト</h2>\n<p>本番環境でGoogle Vertex AIコネクタを有効にする前に、コネクタマッピングで<strong>デバッグモード</strong>を有効にし、トレースを使用して構成とプロンプトの動作を検証します。デバッグモードでは、コネクタはVertex AIリクエストを実行しますが、レスポンスイベントをアカウントに送信せずに結果をログに記録します。トレースツールでリクエストとレスポンスをリアルタイムで検査し、生成された出力を確認し、トリガー条件と属性マッピングが正しく機能していることを確認します。これにより、本番コストを発生させたり、ライブデータに影響を与える前にエラーをキャッチし、プロンプトを最適化するのに役立ちます。</p>\n<h2 id=\"使用とコストの考慮事項\">使用とコストの考慮事項</h2>\n<p>Google Vertex AIコネクタを有効にする前に、Google Cloudのクォータと制限を確認してください。コネクタは、イベントとオーディエンストリガーに応じて多くのリクエストを生成する可能性があり、予期しない使用や超過コストが発生する可能性があります。</p>\n<p>詳細については、<a href=\"https://docs.cloud.google.com/vertex-ai/docs/quotas\">Google: Vertex AIのクォータと制限</a>を参照してください。</p>\n<p><strong>主な考慮事項</strong></p>\n<ul>\n<li><strong>使用層とレート制限</strong><br>\nGoogle Vertex AIは、アカウント層に基づいてレート制限を適用します（分あたりのリクエスト数と分あたりのトークン数）。高頻度のイベントや大規模なオーディエンスは、これらの制限にすぐに達し、スロットリングやリクエストの失敗を引き起こす可能性があります。</li>\n<li><strong>価格とトークンの消費</strong><br>\nGoogle Vertex AIは、モデルによって処理される入力トークンと出力トークンの数に基づいて課金します。長いプロンプト、大きなペイロード、高容量モデルは、リクエストごとのコストを増加させます。使用する予定の特定のモデルの価格を確認してください。</li>\n<li><strong>月間支出と予算管理</strong><br>\n予定外の支出を防ぐために、Google Cloudアカウントで使用制限またはアラートを構成します。制限がない場合、自動化されたワークフローは莫大なコストを蓄積する可能性があります。</li>\n<li><strong>トリガーボリューム</strong>\nページビューなどの高頻度で低価値のイベントにコネクタを接続することは避けてください。意味のある顧客アクションを表し、管理可能な頻度で発生するイベントやオーディエンスを使用してください。</li>\n</ul>\n<h2 id=\"ベストプラクティス\">ベストプラクティス</h2>\n<p>このコネクターから最大の価値を得るために、効果的なソリューションを構築するための以下のガイドラインに従ってください：</p>\n<ul>\n<li><strong>高価値トリガー</strong>：豊富なコンテキストまたは意味のある顧客入力を含むイベントフィードまたはオーディエンストリガーを選択してください。このコネクターを高ボリュームのユースケースでトリガーすると、Google Cloudアカウントで追加費用が発生するか、リクエストが失敗する可能性があります。</li>\n<li><strong>具体的に</strong>：モデルが評価すべき内容と期待する値について詳細を含めてください。期待する正確な値をリストアップしてください。</li>\n<li><strong>JSON形式</strong>：Tealiumイベントとして送信できる有効なJSONレスポンステンプレートを含めてください。</li>\n<li><strong>レスポンス値</strong>：キャプチャするレスポンス値を参照してください。例えば、プロンプトが購買意向を評価するように求める場合、イベントJSONでその値が表示される場所で<code>&lt;customer purchase intent&gt;</code>を参照してください。</li>\n<li><strong>Tealiumデータ</strong>：二重中括弧を使用してTealiumデータとマップされたパラメータを参照してください。例えば、<code>tealium_account</code>のマップされた値を参照するには、プロンプトで<code>{{tealium_account}}</code>と記述します。</li>\n</ul>\n<h2 id=\"api情報\">API情報</h2>\n<p>このコネクターは以下のベンダーAPIを使用します：</p>\n<ul>\n<li>API名：Vertex API</li>\n<li>APIバージョン：v1</li>\n<li>APIエンドポイント：<code>https://aiplatform.googleapis.com/v1</code></li>\n<li>ドキュメント：<a href=\"https://docs.cloud.google.com/vertex-ai/generative-ai/docs/reference/rest/v1/projects.locations.endpoints/generateContent\">Google API</a></li>\n</ul>\n<h2 id=\"構成\">構成</h2>\n<p>コネクターマーケットプレイスにアクセスし、新しいコネクターを追加します。コネクターを追加する一般的な手順については、<a href=\"/ja/server-side/connectors/about/\">コネクターについて</a>を参照してください。</p>\n<p>コネクターを追加した後、以下の構成を構成します：</p>\n<ul>\n<li><strong>Google Cloud PlatformプロジェクトID</strong>：（必須）Vertex AIが有効になっているGoogle CloudプロジェクトID。</li>\n<li><strong>プライベートキーJSONファイル</strong>：（必須）サービスアカウント用に生成されたJSONキーの内容を貼り付けます。プロジェクトでサービスアカウントにVertex AIユーザーロール（<code>roles/aiplatform.user</code>）を付与します。このロールにより、コネクターは利用可能なモデルをリストアップし、選択したモデルをVertex AI Generative APIを通じて呼び出すことができます。</li>\n<li><strong>場所</strong>：モデルが実行されるVertex AIの場所を選択します。GoogleパブリッシャーのGeminiモデルの場合は<strong>global</strong>を使用します。データ居住性が必要な場合や、Vertexリソースが地域にある場合は、地域の場所を選択してください。</li>\n</ul>\n<h2 id=\"アクション\">アクション</h2>\n<table>\n<thead>\n<tr>\n<th>アクション名</th>\n<th style=\"text-align:center\">AudienceStream</th>\n<th style=\"text-align:center\">EventStream</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Vertex AIへのプロンプト送信</td>\n<td style=\"text-align:center\">✓</td>\n<td style=\"text-align:center\">✓</td>\n</tr>\n</tbody>\n</table>\n<p>アクションの名前を入力し、アクションタイプを選択します。</p>\n<p>次のセクションでは、各アクションのパラメータとオプションの構成方法について説明します。</p>\n<h3 id=\"vertex-aiへのプロンプト送信\">Vertex AIへのプロンプト送信</h3>\n<p>このアクションは、カスタムプロンプトとマップされたTealiumデータを使用してVertex AIモデルを呼び出します。モデルが有効なJSONイベントオブジェクトで応答する場合、このイベントはアカウントに送り返され、リアルタイムエンリッチメントで生成された値をキャプチャすることができます。</p>\n<h4 id=\"パラメータ\">パラメータ</h4>\n<table>\n<thead>\n<tr>\n<th>パラメータ</th>\n<th>説明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>モデル</td>\n<td><ul><li>このプロンプトに使用するVertexモデルを選択します。</li><li>リストには、テキストまたはJSONスタイルのレスポンスに適したGoogleのGemini生成モデルが表示されます。</li><li>チームがプライベートまたはファインチューニングされたVertex AIモデルを使用している場合は、そのモデルリソース名を手動で入力できます（例：<code>projects/{{PROJECT}}/locations/{{REGION}}/models/{{MODEL_ID}}</code>）。</li><li>構造化出力（JSON）に最適化されており、パフォーマンスとコスト要件をサポートするモデルの使用をお勧めします。</li></ul></td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"プロンプトパラメータ\">プロンプトパラメータ</h4>\n<table>\n<thead>\n<tr>\n<th>パラメータ</th>\n<th>説明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>イベントペイロード追加</td>\n<td>(イベントアクション用に利用可能) このボックスをチェックすると、プロンプトテンプレートで変数<code>{{event_payload}}</code>としてイベントペイロードを含めることができます。</td>\n</tr>\n<tr>\n<td>訪問プロファイル追加</td>\n<td>(オーディエンスアクション用に利用可能) このボックスをチェックすると、プロンプトテンプレートで変数<code>{{visitor_profile}}</code>として訪問プロファイルを含めることができます。</td>\n</tr>\n<tr>\n<td>現在の訪問追加</td>\n<td>(オーディエンスアクション用に利用可能) このボックスをチェックすると、変数<code>{{visitor_profile}}</code>内で現在の訪問を含めることができます。</td>\n</tr>\n<tr>\n<td>プロンプト</td>\n<td><ul><li>選択したVertex AIモデルに送信されるプロンプトを入力します。以下のガイドラインに従って、一貫性のある機械可読の出力を確保してください：</li><li>マップされたパラメータを参照するには、二重中括弧を使用します。例：<code>{{tealium_account}}</code>, <code>{{visitor_id}}</code>, <code>{{event_value}}</code>。</li><li>訪問アクションを使用する場合は、<strong>訪問プロファイル追加</strong>チェックボックスを有効にした後、<code>{{visitor_profile}}</code>を使用してプロンプトに訪問プロファイルを含めます。</li><li>あいまいな表現を避け、プロンプトは決定論的であるべきです。そのため、出力を確実に解析できます。</li><li>レスポンスで期待するJSONフィールドと構造を定義してください。</li><li>モデルに<code>tealium_account</code>, <code>tealium_profile</code>, <code>tealium_visitor_id</code>をレスポンスに含めるように明示的に指示してください。これにより、コネクターはレスポンスを正しく解析し、Collectエンドポイントに転送することができます。</li><li>リクエストに<code>response_mime_type</code>: <code>application/json</code>を含めることで、モデルがJSONを返すように強制します。</li><li>このコネクターに関する詳細情報と例については、Tealiumのドキュメントを参照してください。</li></ul></td>\n</tr>\n<tr>\n<td>デバッグモード</td>\n<td>デバッグモードが有効になっている場合、コネクターはTealium Collectに送信することなく、生のVertex AIレスポンスを受け入れます。完全な処理を有効にする前に、トレースを使用してレスポンス形式を検証してください。</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"高度なモデル構成\">高度なモデル構成</h4>\n<table>\n<thead>\n<tr>\n<th>パラメータ</th>\n<th>説明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>temperature</code></td>\n<td>ランダム性と創造性を制御します。低い値はより鋭い分布曲線をもたらし、予測可能で集中的な回答が得られますが、高い値はより平坦な分布曲線と多様で創造的な回答が得られます。許可される値は<code>0</code>から<code>2</code>です。</td>\n</tr>\n<tr>\n<td><code>maxOutputTokens</code></td>\n<td>レスポンスで生成するトークンの最大数です。</td>\n</tr>\n<tr>\n<td><code>topP</code></td>\n<td>核サンプリングの閾値を指定します。低い<code>topP</code>値はより安全で集中的ですが、高い<code>topP</code>値はより多様で創造的です。許可される値は<code>0</code>から<code>1</code>です。例えば、<code>topP</code>が<code>0.9</code>に構成されている場合、累積確率が90%に達するトークンのみが考慮され、低確率の末尾トークンは除外されます。</td>\n</tr>\n<tr>\n<td><code>topK</code></td>\n<td>トップkサンプリングの閾値を指定します。低い<code>topK</code>値はより決定論的で多様性が少なく、高い<code>topK</code>値はより多様ですが、場合によっては一貫性が低くなる可能性があります。例えば、<code>topK</code>が<code>40</code>に構成されている場合、次のトークンは（確率的に、温度を使用して）最も高い確率のトークン40個のみから選択され、それ以外は無視されます。</td>\n</tr>\n</tbody>\n</table>\n"
        }  

    , 
        {
            "weight": "0",
            "url": "https://docs.tealium.com/ja/server-side-connectors/google-vertex-commerce-connector/",
            "title": "Google Vertex AI Search for Commerce コネクタ構成ガイド",
            "body": "<h2 id=\"api情報\">API情報</h2>\n<p>このコネクタは以下のベンダーAPIを使用します：</p>\n<ul>\n<li>API名：Google API</li>\n<li>APIバージョン：v2</li>\n<li>APIエンドポイント：<code>https://retail.googleapis.com</code></li>\n<li>ドキュメント：<a href=\"https://cloud.google.com/solutions/vertex-ai-search-commerce\">Vertex AI Search for commerce</a></li>\n</ul>\n<h2 id=\"構成\">構成</h2>\n<p>コネクタマーケットプレイスにアクセスし、新しいコネクタを追加します。コネクタの追加方法については、<a href=\"/ja/server-side/connectors/about/\">コネクタについて</a>を参照してください。</p>\n<p>コネクタを追加した後、以下の構成を行います：</p>\n<ul>\n<li><strong>Google Cloud PlatformプロジェクトID</strong>：（必須）あなたのGoogle CloudプロジェクトID。プロジェクトはVertex Search AIを有効にしている必要があります。</li>\n<li><strong>プライベートキーJSONファイル</strong>：（必須）サービスアカウント用に生成されたJSONキーを貼り付けます。サービスアカウントは<code>retail.userEvents.import</code>へのアクセスが必要です。GoogleはRetail Editorロールの使用を推奨します。</li>\n</ul>\n<h2 id=\"アクション\">アクション</h2>\n<table>\n<thead>\n<tr>\n<th>アクション名</th>\n<th style=\"text-align:center\">AudienceStream</th>\n<th style=\"text-align:center\">EventStream</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>ユーザーイベントの書き込み</td>\n<td style=\"text-align:center\">✗</td>\n<td style=\"text-align:center\">✓</td>\n</tr>\n</tbody>\n</table>\n<p>アクションの名前を入力し、アクションタイプを選択します。</p>\n<p>以下のセクションでは、各アクションのパラメータとオプションの構成方法について説明します。</p>\n<h3 id=\"ユーザーイベントの書き込み\">ユーザーイベントの書き込み</h3>\n<h4 id=\"パラメータ\">パラメータ</h4>\n<table>\n<thead>\n<tr>\n<th>パラメータ</th>\n<th>説明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>カタログ</td>\n<td>Vertex AI Search for Commerceのカタログを選択し、ユーザーイベントが記録されます。</td>\n</tr>\n<tr>\n<td>イベントタイプ</td>\n<td>Vertex AI Search for Commerceに送信するユーザーイベントのタイプを選択します。これにより、イベントの解釈方法とペイロードに必要なフィールドが決まります。<ul><li><code>add-to-cart</code></li><li><code>remove-from-cart</code></li><li><code>category-page-view</code></li><li><code>detail-page-view</code></li><li><code>home-page-view</code></li><li><code>purchase-complete</code></li><li><code>search</code></li><li><code>shopping-cart-page-view</code></li></ul></td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"イベントデータ\">イベントデータ</h4>\n<table>\n<thead>\n<tr>\n<th>パラメータ</th>\n<th>説明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>属性</td>\n<td>推薦モデルに含める追加のユーザーイベント機能をマッピングします</td>\n</tr>\n<tr>\n<td>テンプレート変数</td>\n<td><ul><li>(オプション) テンプレートにデータ入力としてテンプレート変数を提供します。詳細については、<a href=\"/ja/server-side/connectors/templates/template-variables/\">コネクターテンプレート変数</a>を参照してください。</li><li>ドット表記を使用してネストされたテンプレート変数に名前を付けます。例：<code>items.name</code></li><li>ネストされたテンプレート変数は通常、データレイヤーリスト属性から構築されます。</li></ul></td>\n</tr>\n<tr>\n<td>テンプレート</td>\n<td><ul><li>(オプション) URL、URLパラメータ、ヘッダー、またはボディデータで参照されるテンプレートを提供します。詳細については、<a href=\"/ja/server-side/connectors/templates/about/\">コネクタテンプレートについて</a>を参照してください。</li><li>テンプレートは、サポートされるフィールドに名前で二重中括弧を使用して注入されます。例：<code>{{SomeTemplateName}}</code>。</li><li>OAuthを使用する場合、テンプレート変数<code>{{webhook_access_token}}</code>は認証リクエストによって返されるトークンを指します。</li></ul></td>\n</tr>\n</tbody>\n</table>\n"
        }  

    , 
        {
            "weight": "0",
            "url": "https://docs.tealium.com/ja/server-side-connectors/openai-connector/",
            "title": "OpenAIコネクタ構成ガイド",
            "body": "<p>AIコネクタの動作概要とAIコネクタまたはTealium機能を使用するタイミングに関するガイダンスについては、<a href=\"/ja/guides/ai-connectors-and-functions/\">AIコネクタとTealium機能</a>を参照してください。</p>\n<h2 id=\"動作方法\">動作方法</h2>\n<p>このコネクタは、カスタムプロンプトとマップされたTealiumデータを使用してOpenAIモデルを呼び出し、その後、レスポンスをJSONイベントとしてTealium Collectに送信し、リアルタイムでエンリッチメントします。</p>\n<p class=\"note\"><i class=\"fa fa-exclamation-triangle\"></i>OpenAIコネクタは、高頻度のイベントではなく、ターゲットを絞った高価値のインタラクションに使用すべきです。過度な使用は、OpenAIアカウントのレート制限やAPIコストの増加につながり、受信Tealiumイベントの量を増加させる可能性があります。</p>\n<h3 id=\"プロンプト\">プロンプト</h3>\n<p>プロンプトは、モデルにコンテキストデータを送信し、特定の質問をし、期待されるレスポンスを定義します。</p>\n<p><strong>コンテキストデータ</strong><br>\nモデルは、リクエストを評価するためにコンテキストデータを必要とします。コネクタアクションを構成してイベントデータまたは訪問データを使用し、このデータオブジェクトをプロンプトで参照します：</p>\n<ul>\n<li>イベントデータ: <code>{{event_payload}}</code></li>\n<li>訪問データ: <code>{{visitor_profile}}</code></li>\n</ul>\n<p>例えば、プロンプトの最初の行にこれを含めます：</p>\n<pre tabindex=\"0\"><code class=\"language-wrap\" data-lang=\"wrap\">顧客イベントを説明するJSONオブジェクトを受け取ります：\n{{event_payload}}\n</code></pre><p><strong>質問</strong><br>\nモデルにコンテキストデータを評価させ、値を生成するように依頼する必要があります。1つ以上の特定の値を求め、何を求めているのかを明確にしてください。</p>\n<p>例えば、このプロンプトは3つの値のうちの1つを求めます：</p>\n<pre tabindex=\"0\"><code class=\"language-wrap\" data-lang=\"wrap\">提供された製品レビューイベントに基づいて、顧客の感情を「不満足」、「中立」、または「満足」として分類します。\n</code></pre><p>さらに、モデルが特定のJSON形式で応答するよう指示する必要があります。これにより、有効なイベントとしてアカウントに送信できます。</p>\n<p>例えば、このプロンプトの部分は正確なJSON形式を指定し、Tealium変数を中括弧を使用して参照します：</p>\n<pre tabindex=\"0\"><code class=\"language-wrap\" data-lang=\"wrap\">次の構造を持つ単一のJSONオブジェクトを1行でのみ返します：\n{\n  &#34;tealium_account&#34;: &#34;{{tealium_account}}&#34;,\n  &#34;tealium_profile&#34;: &#34;{{tealium_profile}}&#34;,\n  &#34;tealium_visitor_id&#34;: &#34;{{tealium_visitor_id}}&#34;,\n  &#34;tealium_event&#34;:  &#34;openai_response&#34;,\n  &#34;openai_review_sentiment&#34;: &#34;&lt;customer review sentiment&gt;&#34;\n}\n</code></pre><p class=\"tip\"><i class=\"fa fa-info-circle\"></i><code>tealium_event</code>にこのコネクタに固有の値を構成し、このプロンプトに特有のレスポンス属性の名前を付けます。これにより、これらのイベントに一致するイベントフィードやルールを簡単に作成できます。</p>\n<h3 id=\"レスポンスイベント\">レスポンスイベント</h3>\n<p>このコネクタはOpenAIモデルからのレスポンスを解析します。それが必要なTealiumパラメータを持つ有効なJSONオブジェクトである場合、コネクタはそれを受信イベントとしてアカウントに送り返します。</p>\n<p>これらのイベントをキャプチャするには、OpenAIレスポンスによって生成されたイベントに一致するエンリッチメントルールまたはイベントフィードを作成します。例えば、このルールは感情イベントをキャプチャします：</p>\n<div class=\"mv3 pv2 ph4 ba br2 b--light-gray\">\n  <div class=\"boolean-logic-container\">\n      <div class=\"condition-group\">\n        <span class=\"input\">tealium_event</span>\n        <span class=\"operator\">EQUALS</span>\n        <span class=\"filter\">openai_response</span>\n      </div>\n      <div class=\"fw8 mv2\">AND</div>\n      <div class=\"condition-group\">\n        <span class=\"input\">openai_review_sentiment</span>\n        <span class=\"operator\">IS POPULATED</span>\n        \n      </div>\n  </div>\n</div>\n<h3 id=\"例イベントトリガー\">例：イベントトリガー</h3>\n<p>この例では、顧客が製品レビューを提出したばかりで、プロンプトはモデルに感情を評価するよう依頼します。</p>\n<p><strong>例のプロンプト</strong>：</p>\n<pre tabindex=\"0\"><code class=\"language-wrap\" data-lang=\"wrap\">顧客の製品レビューを説明するJSONオブジェクトを受け取ります：\n{{event_payload}}\n\n提供された製品レビューイベントに基づいて、顧客の感情を「不満足」、「中立」、または「満足」として分類します。\n\n次の構造を持つ単一のJSONオブジェクトを1行でのみ返します：\n{\n  &#34;tealium_account&#34;: &#34;{{tealium_account}}&#34;,\n  &#34;tealium_profile&#34;: &#34;{{tealium_profile}}&#34;,\n  &#34;tealium_visitor_id&#34;: &#34;{{tealium_visitor_id}}&#34;,\n  &#34;tealium_event&#34;:  &#34;openai_response&#34;,\n  &#34;openai_review_sentiment&#34;: &#34;&lt;customer review sentiment&gt;&#34;\n}\n</code></pre><p><strong>例のレスポンスイベント</strong>：</p>\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-json\" data-lang=\"json\"><span style=\"display:flex;\"><span>{\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;tealium_account&#34;</span>: <span style=\"color:#e6db74\">&#34;acme&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;tealium_profile&#34;</span>: <span style=\"color:#e6db74\">&#34;main&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;tealium_visitor_id&#34;</span>: <span style=\"color:#e6db74\">&#34;383...05d&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;tealium_event&#34;</span>: <span style=\"color:#e6db74\">&#34;openai_response&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;openai_review_sentiment&#34;</span>: <span style=\"color:#e6db74\">&#34;satisfied&#34;</span>\n</span></span><span style=\"display:flex;\"><span>}\n</span></span></code></pre></div><h3 id=\"例オーディエンストリガー\">例：オーディエンストリガー</h3>\n<p>この例では、顧客が「頻繁なブラウザ、購入なし」というオーディエンスに参加し、プロンプトはモデルに顧客の意図を評価するよう依頼します。</p>\n<p><strong>例のプロンプト</strong>：</p>\n<pre tabindex=\"0\"><code class=\"language-wrap\" data-lang=\"wrap\">小売り訪問を説明するJSONオブジェクトを受け取ります：\n{{visitor_profile}}\n\n提供された顧客データに基づいて、彼らの可能性のある意図を「掘り出し物を探す」、「製品比較」、「後で調査する」、または「興味なし」として分類します。データが欠落している場合は、最善の努力で推測してください。\n\n次の構造を持つ単一のJSONオブジェクトを1行でのみ返します：\n{\n  &#34;tealium_account&#34;: &#34;{{tealium_account}}&#34;,\n  &#34;tealium_profile&#34;: &#34;{{tealium_profile}}&#34;,\n  &#34;tealium_visitor_id&#34;: &#34;{{tealium_visitor_id}}&#34;,\n  &#34;tealium_event&#34;:  &#34;openai_response&#34;,\n  &#34;openai_intent&#34;: &#34;&lt;customer intent&gt;&#34;\n}\n</code></pre><p><strong>例のレスポンスイベント</strong>：</p>\n<div class=\"highlight\"><pre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;\"><code class=\"language-json\" data-lang=\"json\"><span style=\"display:flex;\"><span>{\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;tealium_account&#34;</span>: <span style=\"color:#e6db74\">&#34;acme&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;tealium_profile&#34;</span>: <span style=\"color:#e6db74\">&#34;main&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;tealium_visitor_id&#34;</span>: <span style=\"color:#e6db74\">&#34;383...05d&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;tealium_event&#34;</span>: <span style=\"color:#e6db74\">&#34;openai_response&#34;</span>,\n</span></span><span style=\"display:flex;\"><span>  <span style=\"color:#f92672\">&#34;openai_intent&#34;</span>: <span style=\"color:#e6db74\">&#34;bargain hunting&#34;</span>\n</span></span><span style=\"display:flex;\"><span>}\n</span></span></code></pre></div><h2 id=\"テスト\">テスト</h2>\n<p>本番環境でOpenAIコネクタを有効にする前に、コネクタマッピングで<strong>デバッグモード</strong>を有効にし、トレースを使用して構成とプロンプトの動作をテストします。デバッグモードでは、コネクタはOpenAIリクエストを実行しますが、レスポンスイベントをアカウントに送信せずに結果をログに記録します。トレースツールでリクエストとレスポンスをリアルタイムで検査し、生成された出力を確認し、トリガー条件と属性マッピングが正しく機能していることを確認します。これにより、本番コストを発生させる前やライブデータに影響を与える前に、エラーをキャッチし、プロンプトを最適化するのに役立ちます。</p>\n<h2 id=\"使用とコストの考慮事項\">使用とコストの考慮事項</h2>\n<p>OpenAIコネクタを有効にする前に、OpenAIアカウントの制限、使用層、および価格モデルを確認してください。イベントとオーディエンストリガーに応じて、コネクタは多くのリクエストを生成する可能性があり、予期しない使用や超過コストが発生する可能性があります。</p>\n<p>詳細については、<a href=\"https://developers.openai.com/api/docs/guides/rate-limits\">OpenAI Developers: Rate limits</a>を参照してください。</p>\n<p><strong>主な考慮事項</strong></p>\n<ul>\n<li><strong>使用層とレート制限</strong><br>\nOpenAIは、アカウント層に基づいてレート制限を適用します（分あたりのリクエスト数とトークン数）。高頻度のイベントや大規模なオーディエンスは、これらの制限にすぐに達し、スロットリングやリクエストの失敗を引き起こす可能性があります。</li>\n<li><strong>価格とトークンの消費</strong><br>\nOpenAIは、モデルによって処理される入力トークンと出力トークンの数に基づいて料金を請求します。長いプロンプト、大きなペイロード、高容量モデルは、リクエストごとのコストを増加させます。使用する予定の特定のモデルの価格を確認してください。</li>\n<li><strong>月間支出と予算管理</strong><br>\n予定外の支出を防ぐために、OpenAIアカウントで使用上限またはアラートを構成します。制限が設けられていない場合、自動化されたワークフローは莫大なコストを蓄積する可能性があります。</li>\n<li><strong>トリガーボリューム</strong><br>\nページビューなどの高ボリュームで低価値のイベントにコネクタを接続することは避けてください。意味のある顧客アクションを表すイベントやオーディエンスを使用し、管理可能な頻度で発生するものを使用してください。</li>\n</ul>\n<h2 id=\"ベストプラクティス\">ベストプラクティス</h2>\n<p>このコネクターから最大の価値を得るために、効果的なソリューションを構築するための以下のガイドラインに従ってください：</p>\n<ul>\n<li><strong>高価値トリガー</strong>：豊富なコンテキストまたは意味のある顧客入力を含むイベントフィードまたはオーディエンストリガーを選択してください。このコネクターを高ボリュームのユースケースでトリガーすると、OpenAIアカウントで追加費用が発生するか、リクエストが失敗する可能性があります。</li>\n<li><strong>具体的に</strong>：モデルが評価すべき内容と期待する値についての詳細を含めてください。期待する正確な値をリストアップしてください。</li>\n<li><strong>JSON形式</strong>：Tealiumイベントとして送信できる有効なJSONレスポンステンプレートを含めてください。</li>\n<li><strong>レスポンス値</strong>：キャプチャするレスポンス値を参照してください。例えば、プロンプトで購買意向を評価するように依頼する場合、イベントJSON内でその値が表示される場所で <code>&lt;customer purchase intent&gt;</code> を参照してください。</li>\n<li><strong>Tealiumデータ</strong>：二重中括弧を使用してTealiumデータとマップされたパラメータを参照してください。例えば、<code>tealium_account</code> のマップされた値を参照するには、プロンプトに <code>{{tealium_account}}</code> と記述してください。</li>\n</ul>\n<h2 id=\"api情報\">API情報</h2>\n<p>このコネクターは以下のベンダーAPIを使用します：</p>\n<ul>\n<li>API名：OpenAI API</li>\n<li>APIバージョン：v1</li>\n<li>APIエンドポイント：<code>https://api.openai.com/v1</code></li>\n<li>ドキュメント：<a href=\"https://platform.openai.com/docs/api-reference\">OpenAI API</a></li>\n</ul>\n<h2 id=\"構成\">構成</h2>\n<p>コネクターマーケットプレイスにアクセスして新しいコネクターを追加します。コネクターを追加する一般的な手順については、<a href=\"/ja/server-side/connectors/about/\">コネクターについて</a>を参照してください。</p>\n<p>コネクターを追加した後、以下の構成を構成します：</p>\n<ul>\n<li><strong>APIキー</strong>：このコネクターがOpenAI APIにリクエストを認証するために使用するOpenAI APIキー。キーはレスポンスの作成（モデル推論）を許可する<strong>All</strong>または<strong>Restricted</strong>の権限を持っていなければなりません。<strong>Read Only</strong>の権限では使用できません。詳細については、<a href=\"https://help.openai.com/en/articles/8867743-assign-api-key-permissions\">OpenAI: APIキーの権限を割り当てる</a>を参照してください。</li>\n</ul>\n<h2 id=\"アクション\">アクション</h2>\n<table>\n<thead>\n<tr>\n<th>アクション名</th>\n<th style=\"text-align:center\">AudienceStream</th>\n<th style=\"text-align:center\">EventStream</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>OpenAIへのプロンプト送信</td>\n<td style=\"text-align:center\">✓</td>\n<td style=\"text-align:center\">✓</td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"openaiへのプロンプト送信\">OpenAIへのプロンプト送信</h3>\n<p>このアクションは、カスタムプロンプトとマップされたTealiumデータを使用してOpenAIモデルを呼び出します。モデルが有効なJSONイベントオブジェクトで応答する場合、このイベントはあなたのアカウントに送り返され、リアルタイムエンリッチメントで生成された値をキャプチャすることができます。</p>\n<h4 id=\"パラメータ\">パラメータ</h4>\n<table>\n<thead>\n<tr>\n<th><strong>パラメータ</strong></th>\n<th><strong>説明</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>モデル</td>\n<td>このプロンプトに使用するOpenAIモデルを選択してください。例えば <strong>gpt-4.1-mini</strong> や <strong>gpt-4.1</strong> です。<br>パフォーマンスとコスト要件をサポートする構造化出力（JSON）に最適化されたモデルの使用をお勧めします。詳細については、<a href=\"https://developers.openai.com/api/docs/guides/production-best-practices\">OpenAI Developers: Production best practices</a>を参照してください。</td>\n</tr>\n<tr>\n<td>イベントペイロードの追加</td>\n<td>(イベントアクション用に利用可能) このチェックボックスを有効にした後、プロンプトテンプレートで変数 <code>{{event_payload}}</code> を使用してイベントペイロードを含めるためにこのボックスをチェックしてください。</td>\n</tr>\n<tr>\n<td>訪問プロファイルの追加</td>\n<td>(オーディエンスアクション用に利用可能) 変数 <code>{{visitor_profile}}</code> を使用してプロンプトテンプレートで訪問プロファイルを含めるためにこのボックスをチェックしてください。</td>\n</tr>\n<tr>\n<td>現在の訪問の追加</td>\n<td>(オーディエンスアクション用に利用可能) 変数 <code>{{visitor_profile}}</code> 内で現在の訪問を含めるためにこのボックスをチェックしてください。</td>\n</tr>\n<tr>\n<td>プロンプト</td>\n<td>選択したOpenAIモデルに送信するプロンプトを入力してください。一貫性のある機械可読出力を確保するためのガイドラインに従ってください：<br><br>マップされたパラメータを参照するために<strong>二重中括弧</strong> (<code>{{ }}</code>) を使用してください。例えば：<code>{{tealium_account}}</code>, <code>{{tealium_visitor_id}}</code>, <code>{{visitor_profile}}</code>。<br><br><code>{{event_payload}}</code> を使用して、<strong>イベントペイロードの追加</strong> チェックボックスを最初に有効にした後、プロンプトにイベントペイロードを含めてください。<br><br>あいまいな表現を避けてください。プロンプトは決定論的であるべきですので、出力を確実に解析できます。<br><br>TealiumイベントJSONオブジェクトを有効に定義し、レスポンスに <code>tealium_account</code>, <code>tealium_profile</code>, <code>tealium_visitor_id</code> および出力変数を含めるようにモデルに指示してください。このイベントJSONをコネクタがTealium Collectエンドポイントに転送できるようにします。<br><br>コネクタはプロンプトに自動的に指示を含めて、モデルがJSONを返すように強制します。<br><br>例のプロンプトについては、<a href=\"#how-it-works\">仕組み</a>を参照してください。</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"高度なモデル構成\">高度なモデル構成</h4>\n<table>\n<thead>\n<tr>\n<th><strong>パラメータ</strong></th>\n<th><strong>説明</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>temperature</code></td>\n<td>ランダム性と創造性を制御します。</td>\n</tr>\n<tr>\n<td><code>max_output_tokens</code></td>\n<td>モデルが生成できるトークンの最大数です。</td>\n</tr>\n<tr>\n<td><code>max_tool_calls</code></td>\n<td>レスポンスで処理できる組み込みツールの総呼び出し数の最大値です。</td>\n</tr>\n<tr>\n<td><code>top_p</code></td>\n<td>トップp確率質量からのみサンプリングすることで多様性を制御します。</td>\n</tr>\n<tr>\n<td><code>parallel_tool_calls</code></td>\n<td>モデルがツール呼び出しを並行して実行するかどうか。デフォルトは <code>true</code> です。</td>\n</tr>\n<tr>\n<td><code>prompt_cache_key</code></td>\n<td>類似のリクエストに対するレスポンスをキャッシュするためにOpenAIが使用するキーです。</td>\n</tr>\n<tr>\n<td><code>service_tier</code></td>\n<td>リクエストの処理に使用される処理タイプを指定します。</td>\n</tr>\n<tr>\n<td><code>tool_choice</code></td>\n<td>モデルがレスポンスを生成する際に使用するツールまたはツールを選択する方法です。</td>\n</tr>\n<tr>\n<td>デバッグモード</td>\n<td>デバッグモードが有効になっている場合、コネクタはTealium Collectに送信する前に生のOpenAIレスポンスを受け入れます。完全な処理を有効にする前にレスポンス形式を検証するためにトレースを使用します。</td>\n</tr>\n</tbody>\n</table>\n"
        }  

    , 
        {
            "weight": "0",
            "url": "https://docs.tealium.com/ja/server-side-connectors/openai-events-connector/",
            "title": "OpenAIイベントコネクタ構成ガイド",
            "body": "<h2 id=\"api情報\">API情報</h2>\n<p>このコネクタは以下のベンダーAPIを使用します：</p>\n<ul>\n<li>API名：OpenAIイベントAPI</li>\n<li>APIバージョン：v1</li>\n<li>APIエンドポイント：<code>https://bzr.openai.com</code></li>\n</ul>\n<h2 id=\"構成\">構成</h2>\n<p>コネクタマーケットプレイスにアクセスし、新しいコネクタを追加します。コネクタを追加する一般的な手順については、<a href=\"/ja/server-side/connectors/about/\">コネクタについて</a>を参照してください。</p>\n<p>コネクタを追加した後、以下の構成を構成します：</p>\n<ul>\n<li><strong>OpenAIイベントAPIキー</strong>：必須。OpenAIイベントAPIへのリクエストを認証するために使用されるBearerトークンです。このキーはAuthorizationヘッダーにBearerトークンとして送信されます。OpenAIアカウントチームがこの値を提供します。</li>\n<li><strong>ピクセルID</strong>：必須。あなたのOpenAIピクセルID（<code>pid</code>）。この値はAPIエンドポイントにクエリパラメータとして追加されます。<strong>OpenAI広告 &gt; 構成 &gt; コンバージョン</strong>でピクセルIDを見つけます。ライブイベントがレポートにカウントされる前に、ピクセルに対して送信する予定の各コンバージョンイベント（例：<code>page_viewed</code>、<code>items_added</code>、<code>order_created</code>）を登録する必要があります。</li>\n<li><strong>デフォルトアクションソース</strong>：コンバージョンイベントのデフォルトソースを選択します。デフォルトは<strong>Web</strong>です。アクションソースパラメータを使用して、この構成をアクションごとに上書きできます。</li>\n<li><strong>基本URLの上書き</strong>：デフォルトは<code>https://bzr.openai.com</code>です。OpenAIがサンドボックスまたはステージング環境用に指示した場合のみ上書きします。</li>\n</ul>\n<h2 id=\"コネクタアクション\">コネクタアクション</h2>\n<table>\n<thead>\n<tr>\n<th>アクション名</th>\n<th style=\"text-align:center\">AudienceStream</th>\n<th style=\"text-align:center\">EventStream</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>イベント送信（リアルタイム）</td>\n<td style=\"text-align:center\">✓</td>\n<td style=\"text-align:center\">✓</td>\n</tr>\n<tr>\n<td>イベント送信（バッチ処理）</td>\n<td style=\"text-align:center\">✓</td>\n<td style=\"text-align:center\">✓</td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"イベント送信リアルタイム\">イベント送信（リアルタイム）</h3>\n<h4 id=\"パラメータ\">パラメータ</h4>\n<table>\n<thead>\n<tr>\n<th>パラメータ</th>\n<th>説明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>イベントタイプ</td>\n<td>必須。OpenAIに送信するイベントのタイプを選択します。<br>サポートされるイベントタイプ：<strong>予約確定</strong>、<strong>チェックアウト開始</strong>、<strong>コンテンツ閲覧</strong>、<strong>カスタム</strong>、<strong>アイテム追加</strong>、<strong>リード作成</strong>、<strong>注文作成</strong>、<strong>ページ閲覧</strong>、<strong>登録完了</strong>、<strong>サブスクリプション作成</strong>、<strong>トライアル開始</strong>。</td>\n</tr>\n<tr>\n<td>カスタムイベント名</td>\n<td>イベントタイプが<strong>カスタム</strong>の場合に必須。イベントにカスタム名を提供します。<br>他のイベントタイプではこの値は無視されます。</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"イベントデータ\">イベントデータ</h4>\n<p>Tealiumの属性をOpenAIのトップレベルイベントフィールドにマッピングします。</p>\n<table>\n<thead>\n<tr>\n<th>パラメータ</th>\n<th>説明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>イベントID</td>\n<td>必須。イベントの一意の識別子で、重複排除に使用されます。</td>\n</tr>\n<tr>\n<td>タイムスタンプ</td>\n<td>必須。イベントのタイムスタンプ（ミリ秒単位）。過去7日以内または未来10分以内である必要があります。</td>\n</tr>\n<tr>\n<td>OPPRef</td>\n<td>OpenAIのプライバシー保護識別子。</td>\n</tr>\n<tr>\n<td>ソースURL</td>\n<td>アクションソースが<code>web</code>の場合に必須。イベントが発生したページのURL。</td>\n</tr>\n<tr>\n<td>アクションソース</td>\n<td>コンバージョンイベントのソース。サポートされる値：<code>web</code>、<code>mobile_app</code>、<code>offline</code>、<code>physical_store</code>、<code>phone_call</code>、<code>email</code>、<code>other</code>。</td>\n</tr>\n<tr>\n<td>オプトアウト</td>\n<td>イベントをパーソナライゼーションからオプトアウトとしてフラグを立てる場合は<code>true</code>に構成します。</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"ユーザーデータ\">ユーザーデータ</h4>\n<p>帰属精度を向上させるために適用可能なユーザー識別子をマッピングします。PII値を自分で事前にハッシュするか、コネクタにハッシュさせることができます。ハッシュ可能なフィールドは、コネクタが正規化してハッシュするための2つの列として表示されます：<strong>（SHA256ハッシュを適用）</strong> は生の値用、<strong>（既にSHA256ハッシュ済み）</strong> は事前にハッシュされた値用です。</p>\n<table>\n<thead>\n<tr>\n<th>パラメータ</th>\n<th>説明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>メールアドレス（SHA256ハッシュを適用）</td>\n<td>小文字のプレーンテキストのメールアドレスを提供し、コネクタがOpenAIが期待する形式でこの値をハッシュします。空またはnullの値は無視されます。</td>\n</tr>\n<tr>\n<td>メールアドレス（既にSHA256ハッシュ済み）</td>\n<td>SHA256ハッシュされたメールアドレスを提供します。</td>\n</tr>\n<tr>\n<td>電話番号（SHA256ハッシュを適用）</td>\n<td>小文字のプレーンテキストの電話番号を提供し、コネクタがOpenAIが期待する形式でこの値をハッシュします。空またはnullの値は無視されます。</td>\n</tr>\n<tr>\n<td>電話番号（既にSHA256ハッシュ済み）</td>\n<td>SHA256ハッシュされた電話番号を提供します。</td>\n</tr>\n<tr>\n<td>外部ID（SHA256ハッシュを適用）</td>\n<td>プレーンテキストの外部ID（例：ロイヤリティカードIDやその他の識別子）を提供し、コネクタがOpenAIが期待する形式でこの値をハッシュします。</td>\n</tr>\n<tr>\n<td>外部ID（既にSHA256ハッシュ済み）</td>\n<td>SHA256ハッシュされた外部IDを提供します。</td>\n</tr>\n<tr>\n<td>国（SHA256ハッシュを適用）</td>\n<td>イベントに関連する国を提供し、コネクタがOpenAIが期待する形式でこの値をハッシュします。</td>\n</tr>\n<tr>\n<td>国（既にSHA256ハッシュ済み）</td>\n<td>SHA256ハッシュされた国の値を提供します。</td>\n</tr>\n<tr>\n<td>市（SHA256ハッシュを適用）</td>\n<td>小文字の変換に関連する市を提供し、コネクタがOpenAIが期待する形式でこの値をハッシュします。</td>\n</tr>\n<tr>\n<td>市（既にSHA256ハッシュ済み）</td>\n<td>SHA256ハッシュされた市の値を提供します。</td>\n</tr>\n<tr>\n<td>郵便番号（SHA256ハッシュを適用）</td>\n<td>小文字の郵便番号または郵便番号を提供し、コネクタがOpenAIが期待する形式でこの値をハッシュします。</td>\n</tr>\n<tr>\n<td>郵便番号（既にSHA256ハッシュ済み）</td>\n<td>SHA256ハッシュされた郵便番号または郵便番号を提供します。</td>\n</tr>\n<tr>\n<td>外部ID（生）</td>\n<td>ロイヤリティカードIDやその他の識別子などの一意のID。ハッシュせずに送信されます。</td>\n</tr>\n<tr>\n<td>IPアドレス</td>\n<td>デバイスのIPアドレス。</td>\n</tr>\n<tr>\n<td>ユーザーエージェント</td>\n<td>ユーザーのウェブブラウザのユーザーエージェント文字列。</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"eコマース\">Eコマース</h4>\n<p>顧客アクションイベント（<strong>予約確定</strong>、<strong>リード作成</strong>、<strong>登録完了</strong>）では、注文概要フィールドのみが受け入れられます。OpenAIは他のすべてのeコマースフィールドをアウトバウンドペイロードから削除します。</p>\n<table>\n<thead>\n<tr>\n<th>パラメータ</th>\n<th>説明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>金額</td>\n<td>小単位（例：セント）での整数。提供される場合、通貨が必要です。</td>\n</tr>\n<tr>\n<td>通貨</td>\n<td>ISO 4217形式の通貨コード（例：<code>USD</code>）。</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"自動マッピング無効化\">自動マッピング無効化</h4>\n<p>チェックすると、このアクションのデフォルトのTealiumからOpenAIへの自動マッピング（タイムスタンプ、ソースURL、IPアドレス、ユーザーエージェント、小売拡張属性<code>_csubtotal</code>、<code>_ccurrency</code>、<code>_csku</code>、<code>_cprodname</code>、<code>_ccat</code>、<code>_cquan</code>、<code>_cprice</code>）が無効になります。明示的なフィールドマッピングが常に優先されます。チェックを外すと、空白を埋めます。</p>\n<h4 id=\"デバッグモード\">デバッグモード</h4>\n<p>有効にすると、コネクタは<code>validate_only: true</code>でイベントを送信し、OpenAIがペイロードを検証してイベントを永続化せずにエラーを返します。トラブルシューティングやドライランに使用します。本番トラフィックでは無効にしてください。</p>\n<h4 id=\"ピクセルidの上書き\">ピクセルIDの上書き</h4>\n<p>オプション。このアクションのコネクタレベルのピクセルIDを上書きします。提供された場合、コネクタはコネクタ構成で構成されたピクセルIDの代わりにこの値を使用します。</p>\n<h4 id=\"apiキーオーバーライド\">APIキーオーバーライド</h4>\n<p>オプション。このアクションのコネクタレベルのAPIキーを上書きします。提供された場合、コネクタはコネクタ構成で構成されたAPIキーの代わりにこの値を使用します。</p>\n<h3 id=\"イベント送信バッチ処理\">イベント送信（バッチ処理）</h3>\n<h4 id=\"バッチ制限\">バッチ制限</h4>\n<p>このアクションは、ベンダーへの大量データ転送をサポートするためにバッチリクエストを使用します。並列処理により、イベントがベンダーに順不同で到達する可能性があります。順序が重要な場合は、イベントにシーケンス値を追加します。詳細については、<a href=\"/ja/server-side/connectors/batched-actions/\">バッチアクション</a>を参照してください。次のいずれかの閾値に達するか、プロファイルが公開されるまでリクエストがキューに入れられます：</p>\n<ul>\n<li>最大リクエスト数：1,000</li>\n<li>最古のリクエストからの最大時間：5分</li>\n<li>リクエストの最大サイズ：1 MB</li>\n</ul>\n<p>このアクションは、**イベント送信（リアルタイム）**アクションと同じパラメータとマッピングオプションを使用します。詳細については、<a href=\"#send-event-real-time\">イベント送信（リアルタイム）</a>を参照してください。</p>\n"
        }  

    , 
        {
            "weight": "0",
            "url": "https://docs.tealium.com/ja/server-side-connectors/anthropic-connector/",
            "title": "アンスロピックコネクタ構成ガイド",
            "body": "<p class=\"tip\"><i class=\"fa fa-info-circle\"></i>AIコネクタの動作方法やプロンプトの構造についての概要は、<a href=\"/ja/guides/ai-connectors-and-functions/\">AIコネクタ</a>のガイドをご覧ください。</p>\n<h2 id=\"動作方法\">動作方法</h2>\n<p>このコネクタは、カスタムプロンプトとマップされたTealiumデータを使用してアンスロピックモデルを呼び出し、JSONイベントとしてレスポンスをTealium Collectに送信してリアルタイムでエンリッチメントします。</p>\n<p class=\"note\"><i class=\"fa fa-exclamation-triangle\"></i>このコネクタは、高価値の対象となるインタラクションに使用すべきであり、高ボリュームのイベントには使用すべきではありません。過度の使用はレート制限やAPIコストの増加につながり、Tealiumへのイベントボリュームを増加させる可能性があります。</p>\n<h2 id=\"使用とコストの考慮事項\">使用とコストの考慮事項</h2>\n<p>このコネクタをアクティブにする前に、アカウントの制限、使用層、および価格モデルを確認してください。このコネクタは、イベントとオーディエンスのトリガーに応じて高いリクエストボリュームを生成する可能性があり、予期しない使用や超過コストが発生する可能性があります。</p>\n<p>詳細については、<a href=\"https://platform.claude.com/docs/en/api/rate-limits\">Claude API Docs: Rate limits</a>を参照してください。</p>\n<h2 id=\"api情報\">API情報</h2>\n<p>このコネクタは以下のベンダーAPIを使用します：</p>\n<ul>\n<li>API名：アンスロピックAPI</li>\n<li>APIバージョン：v1</li>\n<li>APIエンドポイント：<code>https://api.anthropic.com/v1</code></li>\n<li>ドキュメント：<a href=\"https://platform.claude.com/docs/en/home\">アンスロピックAPI</a></li>\n</ul>\n<h2 id=\"構成\">構成</h2>\n<p>コネクタマーケットプレイスに移動し、新しいコネクタを追加します。コネクタの追加方法については、<a href=\"/ja/server-side/connectors/about/\">コネクタについて</a>を参照してください。</p>\n<p>コネクタを追加した後、次の構成を構成します：</p>\n<ul>\n<li><strong>アンスロピックAPIキー</strong>：このコネクタからアンスロピックAPIへのリクエストを認証するためのアンスロピックAPIキー。APIキーはアンスロピックアカウント構成で作成および管理します。</li>\n</ul>\n<h2 id=\"アクション\">アクション</h2>\n<table>\n<thead>\n<tr>\n<th>アクション名</th>\n<th style=\"text-align:center\">AudienceStream</th>\n<th style=\"text-align:center\">EventStream</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>アンスロピックへのプロンプト送信</td>\n<td style=\"text-align:center\">✓</td>\n<td style=\"text-align:center\">✓</td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"アンスロピックへのプロンプト送信\">アンスロピックへのプロンプト送信</h3>\n<p class=\"tip\"><i class=\"fa fa-info-circle\"></i>AIコネクタの動作方法やプロンプトの構造についての概要は、<a href=\"/ja/guides/ai-connectors-and-functions/\">AIコネクタ</a>のガイドをご覧ください。</p>\n<h4 id=\"マッピング\">マッピング</h4>\n<table>\n<thead>\n<tr>\n<th><strong>パラメータ</strong></th>\n<th><strong>説明</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>モデル</td>\n<td>このプロンプトに使用するアンスロピックモデルを選択します。パフォーマンスとコスト要件に合わせてモデルを選択してください。</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"tealiumコンテキスト\">Tealiumコンテキスト</h4>\n<p>コネクタは、AIモデルを呼び出す際および構造化されたレスポンスを返す際に重要なTealium属性を自動的に含めます。</p>\n<p>以下の属性はAIリクエストに自動的に追加され、構造化された出力JSONに含まれます：<code>tealium_account</code>, <code>tealium_profile</code>, <code>tealium_visitor_id</code>.</p>\n<p>これらの値は現在のイベントから取得され、プロンプトで参照する必要はありません。マッピングを使用してこれらの値を上書きすることができます。</p>\n<table>\n<thead>\n<tr>\n<th><strong>パラメータ</strong></th>\n<th><strong>説明</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>tealium_event</code></td>\n<td>(必須) AIレスポンスに含める<code>tealium_event</code>の値を入力します。</td>\n</tr>\n<tr>\n<td><code>tealium_datasource</code></td>\n<td>(オプション) このコネクタからのレスポンスイベントに関連付けられたデータソースキー。</td>\n</tr>\n<tr>\n<td>プロンプトパラメータ</td>\n<td>Tealium属性をプロンプトテンプレートで使用されるプレースホルダー名にマッピングします。たとえば、<code>Lifetime Value</code>を<code>lifetime_val</code>にマッピングし、プロンプトテンプレートで<code>{{lifetime_val}}</code>を参照します。</td>\n</tr>\n<tr>\n<td>イベントペイロードを含む</td>\n<td>(イベントアクションで利用可能) このボックスをチェックすると、プロンプトテンプレートで変数<code>{{event_payload}}</code>としてイベントペイロードを使用できます。</td>\n</tr>\n<tr>\n<td>訪問プロファイルを含む</td>\n<td>(オーディエンスアクションで利用可能) 有効にすると、プロンプトに完全な訪問プロファイルが<code>{{visitor_profile}}</code>として提供されます。</td>\n</tr>\n<tr>\n<td>現在の訪問を含む</td>\n<td>(オーディエンスアクションで利用可能) 有効にすると、現在の訪問属性が<code>{{visitor_profile}}</code>オブジェクトに属性名で追加されます。</td>\n</tr>\n<tr>\n<td>プロンプト</td>\n<td>選択したアンスロピックモデルに送信するプロンプトを入力します。以下のガイドラインを使用して、一貫性のある機械可読の出力を確実にします：<br>マッピングされたパラメータには二重の中括弧を使用します。たとえば：<code>{{product_id}}</code>, <code>{{event_value}}</code>。<br>オーディエンスコネクタアクションの場合、<code>Include visitor profile</code>を有効にした後に<code>{{visitor_profile}}</code>を参照します。<br>イベントコネクタアクションの場合、<code>Include current event payload</code>を有効にした後に<code>{{event_payload}}</code>を参照します。<br>JSONフォーマット指示（例：<code>Return only JSON</code>）を含めないでください。コネクタは自動的にJSON構造を強制します。</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"高度なモデル構成\">高度なモデル構成</h4>\n<table>\n<thead>\n<tr>\n<th><strong>パラメータ</strong></th>\n<th><strong>説明</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>temperature</code></td>\n<td>ランダム性と創造性を制御します（低いほど決定論的）。</td>\n</tr>\n<tr>\n<td><code>max_tokens</code></td>\n<td>モデルが生成できるトークンの最大数。値が提供されていない場合、コネクタはデフォルトを512に構成します。</td>\n</tr>\n<tr>\n<td><code>top_p</code></td>\n<td>トップp確率質量からのみサンプリングすることで多様性を制御します。</td>\n</tr>\n</tbody>\n</table>\n<h4 id=\"構造化出力jsonスキーマ\">構造化出力（JSONスキーマ）</h4>\n<p>AIレスポンスに含める属性を定義します。これらのマッピングは、<code>output_config</code>を使用してAnthropicにスキーマを送信し、レスポンスJSONがスキーマに一致することを確実にします。</p>\n<p class=\"note\"><i class=\"fa fa-exclamation-triangle\"></i>プロンプトにJSONフォーマット指示を追加しないでください。これらのマッピングから導かれるスキーマは自動的に構造を強制します。</p>\n<table>\n<thead>\n<tr>\n<th><strong>パラメータ</strong></th>\n<th><strong>説明</strong></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>属性名</td>\n<td>AIレスポンスイベントに含める属性名。エンリッチメントのために一致するイベント属性を作成する必要があります。</td>\n</tr>\n<tr>\n<td>必須/オプション</td>\n<td>レスポンスイベントでの属性が必須かオプションかを決定します。</td>\n</tr>\n<tr>\n<td>データタイプ</td>\n<td>フィールドのデータタイプ（文字列、数値、整数、またはブール）。</td>\n</tr>\n<tr>\n<td>デバッグモード</td>\n<td>有効にすると、コネクタはTealium Collectにレスポンスを送信しません。Traceを使用してAnthropicの生のレスポンスを検査し、完全な処理を有効にする前に有効なJSONであることを確認します。</td>\n</tr>\n</tbody>\n</table>\n"
        }  

    ]
}
