統一トレーステーブルで Genie Code と Genie One を監視する
ベータ版
Genie CodeとGenie Oneのトレースはベータ版です。これは統一トレーステーブルの一部でもあり、これもベータ版です。有効にするには、ワークスペースのGenieトレースを有効にするをご覧ください。
トレーステーブルの所有者およびそのテーブルへのアクセス権を与えられたユーザーは、Unity Gateway統合トレーステーブル内のすべてのGenie CodeおよびGenie OneターンをOpenTelemetryスパンとして表示できます。各ターンには、質問者、プロンプト、ユーザーから見える推論と応答、引用されたデータアセット、結果、実行時間が記録されます。また、Genieが実行したアクション(SQLの実行、ダッシュボードの作成または編集、MCPツールの呼び出しなど)と、その引数も記録されます。
トレースはユーザーが所有する Unity Catalog テーブルに格納されるため、Genie Code または Genie One にトレースの分析を依頼したり、SQL でトレースにクエリーを実行したりして、次のことができます。
- 間違った回答のトリアージ :ユーザーが報告したか、親指を下に評価したターンを見つけ、プロンプト、推論、アクション、およびレスポンスをエンドツーエンドで確認します。
- 品質の監視 :エラー、失敗したツール呼び出し、遅いターンを追跡します。
- 採用の追跡 : 製品、ワークスペース、チャンネルごとのアクティブユーザー数とターン数をカウントします。
- Genieの作成と変更の管理 :ダッシュボード、Genieエージェント、スキル、スケジュールされたタスクを作成、編集、公開、削除したユーザーを確認します。
- コンプライアンスレビューのサポート :ユーザー、時間範囲、またはキーワードについてプロンプトと応答を検索します。
要件
Genie トレースがエクスポートされる前に、以下のすべてが真である必要があります。要件が欠落している場合、Genie トレースは書き込まれません。
- お客様のアカウントでUnity Gatewayが有効になっています。
- アカウント管理者が、アカウントコンソールの プレビュー ページで Enhanced Unity Gateway ベータ機能をオンにしていること。アカウントレベルのプレビューを管理するを参照してください。
- メタストア管理者は、ワークスペースがアタッチされているメタストアの統合トレーステーブルをセットアップしました。「統合トレーステーブルの有効化」を参照してください。
- ワークスペース管理者が、ワークスペースに対して Genie Oneトレース プレビュー、 Genie Codeトレース プレビュー、またはその両方を有効にしています。ワークスペースのGenieトレースを有効にするを参照してください。
トレースをクエリーするには、トレーステーブルでSELECT、そのスキーマでUSE SCHEMA、そのカタログでUSE CATALOGが必要です。「Genieトレースを読み取ることができるユーザーを制御する」を参照してください。
ワークスペースのGenieトレースを有効にする
Genieトレーシングはdefaultでオフになっています。ワークスペース管理者は、ワークスペースごとに各製品のプレビューを個別にオンにします。 Genie One Tracing をオンにしてGenie Oneの会話をトレースし、 Genie Code Tracing をオンにしてGenie Codeの会話をトレースします。

- ワークスペース管理者として、ワークスペースの上部バーにあるユーザー名をクリックし、 [プレビュー] をクリックします。
- トレースする各製品のプレビューを見つけてオンにします。ワークスペースレベルのプレビューの管理を参照してください。
プレビューをオンにした後、ワークスペース内のその製品の新しいターンは統合トレーステーブルにエクスポートされます。それより前のターンはバックフィルされません。
製品のトレースの収集を停止するには、プレビューをオフにします。新しいターンのエクスポートが停止します。既に書き込まれたトレースは、保持ポリシーによって削除されるまでテーブルに残ります。
Genie のトレースには、ユーザープロンプト、Genie の応答、ツールの引数と結果の全文が含まれます。トレーステーブルの所有者と、テーブルへのアクセス権を付与されたユーザーは、通常はアクセスできない会話やデータも含め、このコンテンツを閲覧できます。メタストア管理者は、自分自身にアクセス権を付与できます。トレースには機密データが含まれる場合があるため、Genie のトレースを有効にする前に、トレーステーブルを閲覧できるユーザーを確認し、保持ポリシーを設定してください。Genie のトレースを閲覧できるユーザーを制御すると制限事項を参照してください。
テーブルでGenieトレースを探す
Genieトレースは、他のUnity Gatewayトラフィックと共通のトレーステーブルを共有します。それらを選択するには、service_nameを使用します。
製品 | フィルタ |
|---|---|
Genie One |
|
Genie Code |
|
Genieエージェントとの会話は含まれません。詳しくは「制限事項」をご覧ください。
Unity Gatewayの [トレース] tabでは、 [サービスタイプ] を [Genie] にフィルタリングして、Genie CodeおよびGenie Oneのトレースのみを表示することもできます。「UI でのトレースの表示」を参照してください。
Genieでトレースを分析
SQLを書かずにGenieトレースを分析するには、平易な言葉でGenie CodeまたはGenie Oneに質問してください。トレーステーブルページからGenie Codeでクエリーを記述する方法については、Genie Codeでクエリーを記述するを参照してください。
プロンプトの例:
- 「Genieトレースを調査し、先週Genie Codeで最も頻繁に失敗したツールを見つけます。」
- 「Genieのトレースを調査し、過去30日間にGenie Oneでダッシュボードを作成または編集したユーザーを一覧表示してください。」
- 「Genieトレースを調査し、ユーザーが昨日Genie Oneに尋ねた最も一般的な質問を要約してください。」
Genie がトレーステーブルを見つけられない場合は、<catalog>.<schema>.<table_name> などの名前を質問に含めてください。アクセス権を持つSELECTトレースのみを分析できます。Genie トレースを読み取ることができるユーザーの制御を参照してください。
代わりにSQLでトレースをクエリーするには、「サンプルのクエリー」を参照してください。
Genieトレースの内容
Genieの各ターンは1つのトレースであり、トレース内のすべての行に同じ trace_id があります。トレースには次の種類の行があります:
行タイプ |
| 学習内容 |
|---|---|---|
ルートスパン | Genie One: | プロンプト、レスポンス、結果、および継続時間を含む、ターン全体。 |
ツールスパン | Genie One: | そのターンでの1つのツール呼び出し。 |
承認または質問のスパン | Genie Oneのみ: | Genie One がツール呼び出しの承認や質問への回答をユーザーに要求した時点。Genie One スパンを参照してください。 |
モデル呼び出しスパン | Genie Codeのみ: | ターン内での1つのモデル呼び出しと、その所要時間。 |
トレースには、ユーザーが Genie チャットで見たものに加え、タイミングと結果のみが含まれます。これらには、システムプロンプト、隠された推論、またはコストは含まれません。Genie のコストを分析するには、Genie のコストの監視と理解を参照してください。
トレースに表示されないステップ
適切なアセットを見つけて推論するために、Genie はテーブルやダッシュボードの検索、アセットのメタデータの読み取り、Genie メモリの読み取りや更新などの内部検索および計画のステップもランします。これらのステップはワークスペース内で直接操作を行わないため、トレースには含まれず、その入力や結果も記録されません。トレースにないステップには、スパンとプレースホルダーがありません。Genieがユーザーに示したすべてのステップを確認するには、Genieで会話を開き、その推論を確認します。
どのツール呼び出しがエクスポートされるか
トレースには、ワークスペースでアクションを実行したり、別のサービスに作業を渡したりするツール呼び出しが含まれます。例えば:
- SQLまたはコードを実行します。
- ダッシュボード、ノートブック、Genieエージェント、スキル、スケジュールされたタスクなどの資産の作成、編集、公開、または削除。
- コンピュート、パイプライン、またはジョブの変更。
- Genie Agentや他のエージェントに質問したり、Webを検索したり、MCPツールを呼び出したりすること。
- ユーザーに質問や承認を求め、通知を送信すること。
トレースにどのツールが表示されるかを確認するには、「Genieが使用するツールの確認」のクエリーを使用します。トレースに含まれるツール呼び出しのセットは変更される場合があります。
すべてのスパンの属性
Unity Gatewayは、Genieスパンをテーブルに書き込む際に、これらの属性をすべてGenieスパンに追加します:
属性 | 説明 |
|---|---|
| ターンが実行されたワークスペースの ID。 |
| プロンプトを送信したユーザーのユーザー名( |
| プロンプトを送信したユーザーまたはService PrincipalのID。 |
名前にドットが含まれる属性( attributes:['enduser.id']など)を読み取るには、ブラケット構文を使用します。 attributes:`enduser.id` などのバックティック構文は、これらの属性に対して NULLを返します。
Genie Oneスパン
ルートスパンはinvoke_agent OneChatと名前が付けられています。これには次の属性があります:
属性 | 説明 |
|---|---|
|
|
| チャットのID。同じチャット内のすべてのターンで、この値が共有されます。 |
| この応答の ID。 |
| JSON文字列としてのユーザーのプロンプト。 |
| JSON 文字列としてのユーザーに見える推論と最終応答。 |
| レスポンスで言及されたデータアセット。 |
| 応答の最終ステータスです。 |
| ターンが失敗した場合にユーザーに表示されるエラーコード。 |
| プロンプトを送信したユーザーのID。 |
| アカウントID: |
| メタストアIDです。 |
| ユーザーが質問した場所( |
| スケジュールされたタスクがこれをTriggerした場合、このターンをランしたスケジュールされたタスクのID。 |
エクスポートされた各ツール呼び出しは、次の属性を持つ execute_tool <tool_name> という名前の子スパンです:
属性 | 説明 |
|---|---|
| 呼び出されるツールまたは MCP ツールの名前。 |
| ツールコールのID。 |
| JSONとしてツールに送信される引数。 |
| ツールによって返される結果。 |
ツール呼び出しが完了しなかった場合、ツールのスパンのステータスは STATUS_CODE_ERROR になります。
Genie Oneがユーザーにツール呼び出しの承認や質問への回答を求めた場合、トレースにはrequest_approval <tool_name>またはrequest_answers ask_user_questionsという名前の子スパンが含まれます。ユーザーが応答した後も続くターンは別個のトレースとなり、そのルートスパンはリクエストスパンにLinkします。
Genie Code スパン
ルートスパンの名前はinvoke_agent genieCodeAgentまたはinvoke_agent GenieCodeFullChatです。子スパンには、モデル呼び出し用のchatスパンと、エクスポートされたツール呼び出し用のtool.execute:<tool_name>スパンが含まれます。一般的な属性は次のとおりです。
属性 | 説明 |
|---|---|
| ルートスパン上のエージェント名。 |
| ルートスパン上の会話またはノートブックのID。ワークスペース内で一意です。 |
| JSON文字列としてのユーザーのプロンプト。 |
| 最終的な回答と表示される推論(JSON文字列)。 |
| ルートスパンでのターンの結果: |
| ツールスパンのツール名。 |
| ツールスパン上のツール呼び出しのID。 |
| ツールスパンのJSONとしてツールに送信された引数。 |
| ステータス、行数、アセットIDなど、ツールによって返された結果(ツールスパン上)。 |
| ツール呼び出しの結果( |
| コンテンツがスパンから除外されたときに設定します。 |
結果errorのターンにはステータスSTATUS_CODE_ERRORがあり、失敗したツール呼び出しにもステータスがあります。結果cancelledまたはabortedのターンと、ユーザーが拒否したツール呼び出しは、ステータスSTATUS_CODE_OKまたはSTATUS_CODE_UNSETを保持します。
完全なテーブルスキーマについては、「統一トレーステーブルスキーマのリファレンス」を参照してください。
Genieトレースを誰が読み取ることができるかを制御する
defaultでは、トレーステーブルの所有者とトレーステーブルをセットアップしたメタストア管理者のみがそのテーブルをクエリーできます。他のメタストア管理者は、自分自身または他の誰かにアクセス権を与えることができます。他のユーザーにアクセス権を与える場合(ワークスペース管理者やデータ所有者など)、USE CATALOG、USE SCHEMA、およびSELECTを付与してください。「権限とアクセス制御」を参照してください。
行フィルタがない場合、SELECTを持つユーザーは、メタストアに添付されたすべてのワークスペースからのGenieプロンプトおよび応答を含む、テーブル内のすべてのトレースを表示できます。Databricksでは、属性ベースのアクセス制御(ABAC)行フィルターポリシーを使用してアクセスを制限することを推奨しています。たとえば、各ワークスペースの管理者が自分のワークスペースのGenieトレースのみを表示できるように、attributes:workspace_idで行をフィルタリングできます。すべてのスパンにはworkspace_idがあるため、フィルターはターンのルートスパンとツールスパンを保持します。「権限とアクセス制御」を参照してください。
サンプルクエリー
<catalog>.<schema>.<table_name>をトレーステーブルパスに置き換えます。最適なパフォーマンスを得るには、timeフィルターを含めます。SQLまたはノートブックでのクエリーを参照してください。
これらのクエリーのほとんどは genie_turns ビューから読み取るため、先に ビューを作成 してください。product、requester、prompt などの列は、トレーステーブルではなく、ビューにのみ存在します。トレーステーブルを直接読み取るクエリーは、その旨が記述されています。
Genieターンのビューを作成する
このビューは、共通フィールドが抽出された状態で、Genieターンごとに1行を返します。channel、scheduled_task_id、および error_code 列はGenie Oneのみに適用され、run_outcomeはGenie Codeのみに適用されます。
ビューはトレーステーブルを所有者の権限で読み取るため、ビューに対する SELECT を付与したユーザーは、それが返すGenieトレースを読み取ることができます。それらのトレースの読み取りを許可されているユーザーにのみ、ビューに対する SELECT を許可します。
CREATE OR REPLACE VIEW <catalog>.<schema>.genie_turns AS
SELECT
trace_id,
time,
date,
CASE
WHEN service_name = 'genie-code-agent' THEN 'Genie Code'
ELSE 'Genie One'
END AS product,
attributes:['enduser.id']::string AS requester,
attributes:workspace_id::string AS workspace_id,
attributes:['gen_ai.conversation.id']::string AS conversation_id,
attributes:['gen_ai.input.messages']::string AS prompt,
attributes:['gen_ai.output.messages']::string AS response,
attributes:['databricks.genie.channel']::string AS channel,
attributes:['databricks.genie.scheduled_task_id']::string AS scheduled_task_id,
attributes:['databricks.genie.error_code']::string AS error_code,
attributes:['databricks.genie_code.run.outcome']::string AS run_outcome,
status.code AS status_code,
(end_time_unix_nano - start_time_unix_nano) / 1e6 AS duration_ms
FROM <catalog>.<schema>.<table_name>
WHERE (parent_span_id IS NULL OR parent_span_id = '')
AND service_name IN ('genie-code-agent', 'Genie One');
導入の追跡
過去30日間の各製品のターン数とアクティブユーザー数を日別にカウントします:
SELECT
date,
product,
COUNT(*) AS turns,
COUNT(DISTINCT requester) AS active_users
FROM <catalog>.<schema>.genie_turns
WHERE time >= current_timestamp() - INTERVAL 30 DAYS
GROUP BY date, product
ORDER BY date DESC, product;
ワークスペースとチャンネルごとのGenie Oneの使用状況の内訳:
SELECT
workspace_id,
channel,
COUNT(*) AS turns,
COUNT(DISTINCT requester) AS active_users
FROM <catalog>.<schema>.genie_turns
WHERE product = 'Genie One'
AND time >= current_timestamp() - INTERVAL 30 DAYS
GROUP BY workspace_id, channel
ORDER BY turns DESC;
報告された回答のトリアージ
キーワードに言及しているユーザーの最近のターンを検索する:
SELECT trace_id, time, product, conversation_id, prompt, response
FROM <catalog>.<schema>.genie_turns
WHERE requester = '<user_name>'
AND prompt ILIKE '%gross margin%'
AND time >= current_timestamp() - INTERVAL 7 DAYS
ORDER BY time DESC;
次に、エクスポートされた各ツール呼び出しとその引数および結果を含め、そのターンのすべてのスパンをリストします。このクエリーはトレーステーブルを直接読み取ります。
SELECT
name,
status.code AS status_code,
(end_time_unix_nano - start_time_unix_nano) / 1e6 AS duration_ms,
attributes:['gen_ai.tool.name']::string AS tool_name,
attributes:['gen_ai.tool.call.arguments']::string AS tool_arguments,
attributes:['gen_ai.tool.call.result']::string AS tool_result
FROM <catalog>.<schema>.<table_name>
WHERE trace_id = '<trace_id>'
ORDER BY start_time_unix_nano;
チャット全体を順番にリプレイするには、会話 ID でフィルターします。Genie Codeの会話IDはワークスペース内でのみ一意であるため、ワークスペースでもフィルターします:
SELECT time, prompt, response
FROM <catalog>.<schema>.genie_turns
WHERE conversation_id = '<conversation_id>'
AND workspace_id = '<workspace_id>'
ORDER BY time;
モニターのエラーとレイテンシー
過去7日間のエラーコードまたは結果別の失敗したターンのカウント:
SELECT
product,
COALESCE(error_code, run_outcome) AS failure_reason,
COUNT(*) AS failed_turns
FROM <catalog>.<schema>.genie_turns
WHERE status_code = 'STATUS_CODE_ERROR'
AND time >= current_timestamp() - INTERVAL 7 DAYS
GROUP BY product, failure_reason
ORDER BY failed_turns DESC;
製品および日単位でのレイテンシパーセンタイルのレポート:
SELECT
date,
product,
percentile_approx(duration_ms, 0.5) AS p50_ms,
percentile_approx(duration_ms, 0.95) AS p95_ms
FROM <catalog>.<schema>.genie_turns
WHERE time >= current_timestamp() - INTERVAL 14 DAYS
GROUP BY date, product
ORDER BY date DESC, product;
Genieが使用するツールを確認する
Genie CodeとGenie Oneが最も頻繁に呼び出したエクスポート済みツールを、その失敗率とともにランク付けします。このクエリーはトレーステーブルを直接読み取ります:
SELECT
CASE
WHEN service_name = 'genie-code-agent' THEN 'Genie Code'
ELSE 'Genie One'
END AS product,
attributes:['gen_ai.tool.name']::string AS tool_name,
COUNT(*) AS calls,
COUNT_IF(status.code = 'STATUS_CODE_ERROR') AS failed_calls,
ROUND(100 * COUNT_IF(status.code = 'STATUS_CODE_ERROR') / COUNT(*), 1) AS failure_pct
FROM <catalog>.<schema>.<table_name>
WHERE (
(service_name = 'Genie One' AND name LIKE 'execute_tool %')
OR (service_name = 'genie-code-agent' AND name LIKE 'tool.execute:%')
)
AND time >= current_timestamp() - INTERVAL 30 DAYS
GROUP BY product, tool_name
ORDER BY calls DESC;
Genie Oneが作成または変更したアセットを確認する
過去30日間にGenie Oneが作成、編集、公開、削除したダッシュボード、Genieエージェント、スキル、スケジュール済みタスク、および各変更を誰が要求したかをリストします。このクエリーはトレーステーブルを直接読み取ります。
SELECT
time,
attributes:['enduser.id']::string AS requester,
attributes:workspace_id::string AS workspace_id,
attributes:['gen_ai.tool.name']::string AS tool_name,
attributes:['gen_ai.tool.call.arguments']::string AS tool_arguments,
attributes:['gen_ai.tool.call.result']::string AS tool_result
FROM <catalog>.<schema>.<table_name>
WHERE service_name = 'Genie One'
AND name LIKE 'execute_tool %'
AND regexp_like(
attributes:['gen_ai.tool.name']::string,
'^(create|edit|publish|delete|update|remove)_'
)
AND time >= current_timestamp() - INTERVAL 30 DAYS
ORDER BY time DESC;
スケジュールされたタスクを確認する
Genie Oneターンをランしたスケジュール済みタスク、ターンの所有者、および失敗した頻度を一覧表示します:
SELECT
scheduled_task_id,
requester,
COUNT(*) AS runs,
COUNT_IF(status_code = 'STATUS_CODE_ERROR') AS failed_runs
FROM <catalog>.<schema>.genie_turns
WHERE scheduled_task_id IS NOT NULL
AND time >= current_timestamp() - INTERVAL 30 DAYS
GROUP BY scheduled_task_id, requester
ORDER BY runs DESC;
Good/Badフィードバックの確認
ユーザーがGenie CodeまたはGenie Oneの回答に高評価または低評価を付けると、その評価はトレーステーブルの横にある注釈テーブルに保存されます。注釈テーブルはトレーステーブルと同じカタログおよびスキーマにあり、名前も同じですが、_otel_spansの代わりに_otel_annotationsが使われています。例えば、トレーステーブルが main.ai_gateway.unity_gateway_otel_spans の場合、アノテーションテーブルは main.ai_gateway.unity_gateway_otel_annotations です。各評価にはname = 'user_feedback' valueがあり、高評価の場合はtrue false、低評価の場合は 、そしてターンのtarget_id と一致するtrace_id があります。
注釈テーブルは評価に対するすべての変更を記録するため、各 annotation_id には最新の行を使用してください。過去 30 日間にユーザーがサムダウンで評価したターンを一覧表示するには、以下をランします:
WITH feedback AS (
SELECT
target_id AS trace_id,
value::boolean AS thumbs_up,
annotation_change_type,
ROW_NUMBER() OVER (PARTITION BY annotation_id ORDER BY updated_at DESC) AS rn
FROM <catalog>.<schema>.<annotations_table_name>
WHERE name = 'user_feedback'
AND target_type = 'TRACE'
)
SELECT t.time, t.product, t.requester, t.prompt, t.response
FROM feedback f
JOIN <catalog>.<schema>.genie_turns t ON t.trace_id = f.trace_id
WHERE f.rn = 1
AND f.annotation_change_type <> 'delete'
AND NOT f.thumbs_up
AND t.time >= current_timestamp() - INTERVAL 30 DAYS
ORDER BY t.time DESC;
これらのターンのいずれかでGenieが何をしたかを確認するには、 レポートされた回答のトリアージでスパンクエリー付きの trace_idを使用します。
AI 関数を使用して質問を分類する
AI 関数を使用してプロンプトをトピック別にグループ化し、例えば最も一般的な質問タイプを見つけます:
SELECT
ai_classify(prompt, ARRAY('finance', 'sales', 'operations', 'hr', 'other')) AS topic,
COUNT(*) AS turns
FROM <catalog>.<schema>.genie_turns
WHERE product = 'Genie One'
AND time >= current_timestamp() - INTERVAL 7 DAYS
GROUP BY topic
ORDER BY turns DESC;
制限
- Genieトレースはベータ版です。トレースの配信はベストエフォートであるため、コンプライアンスのための記録システムとして監査Logsを使用してください。
- Genie Oneのトレースには、モデル呼び出しスパンは含まれません。
- Genie Agentとの会話はトレースされません。Genie OneまたはGenie CodeがGenie Agentに質問を送信する場合、トレースには
ask_genie_spaceまたはaskGenieSpaceのツール呼び出しが含まれますが、Genie Agentが回答するために実行したステップは含まれません。Genie Agentの使用状況を監視するには、「 監査Logsとアラートを使用した Genie Agent の使用状況の監視」を参照してください。 - 各Genie One属性は180 KiBに制限されています。これは、統合トレーステーブルの3 MiB属性制限よりも小さく、Genie Oneターンは最大128個のツールスパンをエクスポートします。ペイロードが切り詰められると、スパンには
databricks.trace.payload_truncated属性が設定されます。 - Genieの会話を削除しても、そのトレースは削除されません。トレースは、テーブルの保持ポリシーによってのみ削除されます。
- 統一トレーステーブルのすべての制限も適用されます。詳細は制限事項を参照してください。