Genie エージェントのトラブルシューティング

Genie エージェントを作成して維持する際の一般的な問題を解決します。ビジネス用語の誤解、テーブルまたは列の使用の誤り、特定の値に関するエラーのフィルター処理、長い会話でのトークン制限の切り捨てなどです。 以下の各セクションでは、症状、原因、および修正について説明します。

Note

Genie Agents は、以前は Genie Spaces として知られていました。

これらの問題の多くで、修正プログラムの最も速いパスは Genie Code です。 Genie Code に問題を説明し、コンテキストの変更を確認して受け入れることを提案します。 1 つの正しくない応答を診断するには、「 Genie Code を使用して応答をデバッグする」を参照してください。 ベンチマークエラーをまとめて確認するには、「 Genie Code を使用したベンチマーク実行の分析」を参照してください。

業務用語の誤った解釈

ほとんどの企業や分野では、業務固有の出来事について伝えるために特有の略語や表現が使われます。 たとえば、「年」が常に会計年度を指す場合があり、その会計年度は 1 月ではなく 2 月または 3 月に始まることがあります。 Genie がこれらの質問に自然かつ正確に答えられるよう、業務用語を Genie が理解できる単語や概念に明示的にマッピングする指示を含めます。 「 手順を指定する」を参照してください

誤ったテーブルまたは列の使用

Genie が誤ったテーブルからデータを取得しようとしたり、誤った列に対して分析を実行しようとしたりする場合は、次のいずれかの方法でデータを調整できます。

  • 明確で正確な説明を提供する: テーブルと関連するメタデータを調べて、そこで使用される用語が、送信された質問のユーザーの用語と一致することを確認します。 そうでない場合は、説明を改善するか、テーブルで使用されている用語を質問で使用されている用語にマッピングする指示を追加します。
  • クエリの例を追加する: Genie が特定の質問に応答する方法を学習できるよう、サンプル SQL クエリを提供します。 「 手順を指定する」を参照してください
  • エージェントからテーブルまたは列を削除する: 一部のテーブルには、重複する列や概念が含まれる場合があり、Genie が応答で使用するデータを把握するのが困難になる場合があります。 可能であれば、不要なまたは重複するテーブルや列を削除します。 基になるデータ オブジェクトを変更せずに Genie Agent UI から列を非表示にするには、「 関連する列を非表示または表示する」を参照してください。

エラーのフィルタリング

生成されたクエリには、多くの場合、特定の値に基づいて結果をフィルター処理する WHERE 句が含まれます。 Genie がデータ値を表示できない場合、間違った値をフィルター処理するように WHERE 句を設定する可能性があります。 たとえば、テーブルで "CA" などの省略形が使用されている場合に、"California" という名前と一致しようとする場合があります。

このような状況では、関連する列で Example 値値ディクショナリ が有効になっていることを確認します。 関連するテーブルに新しいデータが追加されている場合は、値を更新します。 プロンプト照合の概要を参照してください。

不適切な結合操作

Unity カタログで外部キー参照が定義されていない場合、エージェントは異なるテーブルを結合する方法を知らない可能性があります。

次の 1 つ以上の解決策を試してください。

  • 可能であれば、Unity Catalog で外部キー参照を定義します。 CONSTRAINT の条項を参照してください。
  • テーブルの外部キー リレーションシップが Unity カタログで指定されていない場合は、Genie エージェントのナレッジ ストアで結合リレーションシップを定義します。 この戦略は、自己結合などのより複雑な結合シナリオや、基になるテーブルを変更するための十分なアクセス許可がない場合に役立ちます。 「 結合リレーションシップの定義」を参照してください。
  • 標準的な方法でテーブルを結合するクエリの例を提供します。

これらのいずれも問題が解決しない場合は、テーブルをビューに事前に結合し、代わりにエージェントの入力として使用します。

列コメントが外部テーブルから同期されない

Azure Databricks では、外部テーブルへの書き込みのメタデータ、データ、またはセマンティクスは管理されません。 ソース テーブルによっては、Azure Databricks からコメントにアクセスできない場合があります。 コメントを使用できるようにするには、Azure Databricks で次のいずれかの操作を行うことをお勧めします。

  • Genie エージェント UI で列メタデータを編集します。 編集したメタデータは、それが記述された Genie Agent にのみ適用されます。 列メタデータの編集を参照してください。
  • フェデレーション テーブルの上に具体化されたビューを作成します。 マテリアライズド ビューのコメントは、マネージド テーブルの場合と同様に追加および編集できます。 このビューは、複数の Genie エージェントで再利用できます。 外部テーブルから具体化されたビューへのデータの読み込みの詳細については、「具体化されたビュー を使用して外部テーブルからデータを読み込む」を参照してください。 具体化されたビューの操作の詳細については、「 具体化されたビュー」を参照してください。

メトリック計算の問題

メトリックの計算とロールアップの方法は、任意に複雑になり、エージェントが理解していない多くのビジネスの詳細が含まれる場合があります。 これは、誤ったレポートにつながる可能性があります。

次の 1 つ以上の解決策を試してください。

  • ナレッジ ストアでメトリックを SQL 式として定義します。 SQL 式は、Genie が一貫して適用できるメジャー、フィルター、およびディメンションに対して、再利用可能で正確な定義を提供します。 「SQL 式の定義」を参照してください。
  • メトリックがベース テーブルから集計される場合は、それぞれのロールアップ値を計算する SQL クエリの例を提供します。
  • メトリックが事前に計算され、集計テーブルに格納されている場合は、その旨をテーブルのコメントで説明します。 そのテーブルのメトリックがさらにロールアップできる場合は、各メトリックに対して有効な集計方法を明記します。
  • 生成しようとしている SQL が非常に複雑な場合は、エージェントのメトリックを既に集計したビューを作成してみてください。

正確ではない時間ベースの計算

Genie は、追加のガイダンスを明示的に提供しない限り、データに表されているタイムゾーンまたは分析を実行する必要があるタイムゾーンを常に推測できるとは限りません。

元のソースのタイムゾーン、変換関数、およびターゲット タイムゾーンを詳しく説明する明示的な命令を含めます。 次の例は、一般的な手順を変更してタイムゾーン変換の信頼性を高める方法を示しています。

  • 時間を常に特定のタイムゾーンに変換する: この例では、ソースのタイムスタンプが UTC で、America/Los_Angeles タイムゾーンでの結果が必要であると仮定します。 次の手順を追加し、 <timezone-column> を適切な列名に置き換えます。
    • テーブルのタイムゾーンは UTC です。
    • 次の関数を使用してすべてのタイムゾーンを変換します: convert_timezone('UTC', 'America/Los_Angeles', <timezone-column>).
  • UTC 以外の日時形式を UTC に変換する: ワークスペースの既定のタイムゾーンが UTC されているが、ロサンゼルスのユーザーが特定のレコードセットについて 今日 参照する必要がある場合は、エージェントの一般的な手順に次を追加します。
    • 現在参照するには、date(convert_timezone('UTC', 'America/Los_Angeles', current_timestamp()))を使用します。

詳細と構文についてはconvert_timezone関数を参照してください。

命令の無視

コメントでテーブルと列について説明し、一般的な手順を提供した場合でも、エージェントがテーブルと列を正しく使用していない可能性があります。

次の 1 つ以上の方法を試してください。

  • テーブルを正しく使用するクエリの例を提供します。 クエリの例は、エージェントにデータの使用方法を教えるのに特に効果的です。
  • Genie エージェントで無関係な列を非表示にします。 関連する列を非表示または表示するを参照してください。
  • データの表示を簡単にするビューをテーブルから作成します。
  • 手順を確認し、無関係なテーブルや手順を削除してエージェントに集中してみてください。
  • 新しいチャットを開始してみます。 以前の対話は、特定のチャットでの Genie の応答に影響を与える可能性がありますが、新しいチャットを開始すると、新しい手順をテストするための空白の開始点が提供されます。

パフォーマンスの問題

Genie が非常に長いクエリやテキスト応答を生成する必要がある場合、応答に長い時間がかかったり、思考フェーズでタイムアウトになったりすることがあります。

パフォーマンスを改善するには、次の 1 つ以上の方法を試してください。

  • クエリ履歴を確認して、実行速度が遅いクエリを特定します。 Genie エージェントの構成を変更するのではなく、生成された SQL クエリを最適化することで、多くのパフォーマンスの問題を解決できます。 SQL ウェアハウスのクエリ履歴のクエリ実行時間とクエリ プランを確認して、ボトルネックと最適化の機会を特定します。
  • 信頼できるアセットまたはビューを使用して、複雑なクエリをカプセル化します。 「信頼された資産」を参照してください。
  • 可能な限り、SQL クエリの例の長さを短くします。
  • Genie がの応答が遅いまたは正常に応答できなくなってきた場合は、新しいチャットを開始します。

ミッション クリティカルな質問に対する信頼性の低い回答

ユーザーの質問が予想される特定の質問に対し、信頼されたアセットを使用して検証済みの回答を用意します。 「信頼された資産」を参照してください。

トークン数の上限に関する警告

トークンは、Genie が言語の処理と理解に使用するテキストの基本的な単位です。 Genie エージェントのテキスト命令とメタデータはトークンに変換されます。 エージェントがトークンの制限に近づくと、警告が表示されます。 Genie では、コンテキスト フィルタリングを使用して、質問に最も関連すると見なされるトークンに優先順位を付けます。 警告が表示されても応答は生成されますが、重要なコンテキストがフィルターで除外されると品質が低下する可能性があります。トークンの制限を超えると、Genie エージェントでメッセージを送受信できなくなります。

トークン数を減らすには、次のプラクティスを検討してください。

  • 不要な列を削減する: テーブル内の不要な列は、トークン使用量を大幅に増加させる可能性があります。 可能であれば、ビューを作成して、生テーブルから冗長フィールドまたは必須でないフィールドを除外します。 Genie エージェントで不要な列を非表示にすることもできます。 関連する列を非表示または表示するを参照してください。
  • 列の説明を効率化する: 列の説明は重要ですが、列名で既に伝わっている情報を繰り返さないようにします。 たとえば、 account_nameという名前の列がある場合、"アカウントの名前" のような説明は冗長になり、省略できます。
  • Genie エージェントで列メタデータを編集する: 列メタデータの編集 を参照して、列メタデータで説明を編集し、シノニムを指定する方法について説明します。
  • SQL クエリの例を排除する: さまざまな種類の質問に対応するためにさまざまな SQL クエリの例を含めますが、重複する例や冗長な例は削除します。
  • 指示を簡略化する: 指示が明確で簡潔であることを確認します。 不要な語句を避ける

アカウントの Geo 間処理が無効

Genie は、Azure Databricks によって管理される指定サービスです。 指定サービスは、Databricks Geo を使用してデータの保存場所を管理します。 一部のリージョンのワークスペースと同じ Geo でデータを処理することはできません。 ワークスペースがこれらのリージョンのいずれかに存在する場合は、アカウント管理者がGeo 間処理 を有効にする必要があります。

最後のエージェント作成者がワークスペースから削除される

Genieエージェントは、作成者が最近設定した際に埋め込まれた計算認証情報を使ってSQLウェアハウスにアクセスします。 その作成者がワークスペースから削除されると、埋め込まれた資格情報は無効になり、エージェントを使用しているすべてのユーザーに対してクエリが失敗します。

エージェントを復元するには、Genie エージェントに対する CAN EDIT 権限を持つ別のユーザーに、エージェントの SQL ウェアハウスを再構成させます。 倉庫の選択を保存すると、削除された作成者の代わりに編集ユーザーのコンピューティング資格情報が埋め込まれます。 「 設定の構成」を参照してください。