失敗した自動推論ポリシーテストに対処する - Amazon Bedrock

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

失敗した自動推論ポリシーテストに対処する

自動推論ポリシーのテストが失敗した場合は、テスト結果で抽出されたロジックとルールを確認します。問題に応じて障害に対処する方法はいくつかあります。

注記

チュートリアルビデオ: 自動推論ポリシーの改良とトラブルシューティングのstep-by-stepのチュートリアルについては、次のチュートリアルを参照してください。

チュートリアルデモ 3 - 自動推論ポリシーの改良

注釈について

注釈は、テストが失敗したときにポリシーを修復するために適用する修正です。テストが期待した結果を返さない場合は、テスト条件を変更して再実行し、正常な変更を注釈として適用してポリシーを更新できます。

注釈を使用して以下を行います。

  • 誤ったルールを修正

  • 欠落している変数を追加する

  • 変数の説明の改善

  • 翻訳のあいまいさを解決する

例: ポリシー修復注釈

問題: 8 か月の在職期間を持つ従業員のポリシーで承認された休暇ですが、ソースドキュメントには 1 年以上かかります。

元のルール:

if is_full_time = true, then eligible_for_parental_leave = true

適用された注釈:

  1. years_of_service 変数を追加 (実際のタイプ)

  2. ルールを次のように更新しました。 if is_full_time = true and years_of_service >= 1.0, then eligible_for_parental_leave = true

  3. テストが 8 か月の従業員に対して INVALID を正しく返すようになりました

  • 失敗したテストの条件を更新し、再実行します。テストが期待どおりの検証結果を返す場合は、この注釈を適用してポリシーを更新できます。

  • 自動推論が自然言語をロジックに変換するときにポリシーの変数名または説明を区別できるように更新します。

  • 自動推論がソースドキュメントまたはソースドキュメントにエラーが含まれていると誤解したと思われる場合は、ポリシーのルールを更新します。

  • 変数とタイプを追加して、ポリシーのロジックを編集します。その後、新しい変数を使用するようにルールを更新できます。これは高度なユースケースであり、通常はお勧めしません。

  • より包括的な手順でポリシーを再作成します。手順には、Automated Reasoning がアプリケーションの使用方法に関連するロジックを抽出できるように、十分なコンテキストが含まれている必要があります。また、ソースドキュメントについて想定される質問と回答の例を含めることをお勧めします。

ガイダンスを提供できない場合

場合によっては、自動推論は、失敗したテストのガイダンスを提供できないことを示している可能性があります。これは通常、明確な分析を妨げる基本的なポリシー構造の問題がある場合に発生します。このような場合は、ポリシールールを調べて競合を探す必要があります。

ガイダンスを提供できない一般的なシナリオは次のとおりです。

  • 競合するルール: ポリシーには、論理的な不整合を作成する矛盾するルールが含まれています。例えば、あるルールでは、フルタイムの従業員が休暇の対象となると規定し、別のルールでは、1 年未満のサービスを持つフルタイムの従業員の処理方法を指定せずに、1 年未満のサービスを持つ従業員は対象外と規定する場合があります。

  • ルールカバレッジが不完全: ポリシーに、特定の条件の組み合わせがルールによって対処されないギャップがあるため、正しい結果を判断できません。

  • 循環依存関係: 論理ループを作成し、システムが最終的な結論に到達できないように相互に依存するルール。

  • 過度に複雑なルールインタラクション: 複数のルールが、特定のテストシナリオに対してあいまいまたは矛盾する結果を生み出すような方法でやり取りする場合。

これらの問題に対処するには:

  1. ポリシールールを体系的に確認する: ポリシー内の各ルールを確認し、他のユーザーと競合する可能性のあるルールを特定します。同じシナリオに適用されるが、異なる結果をもたらす可能性のあるルールを探します。

  2. ルールの完全性をチェックする: ドメインで発生する可能性のある条件のすべての可能な組み合わせがルールでカバーされていることを確認します。ルールが適用されないギャップを特定します。

  3. 複雑なやり取りを簡素化する: 相互接続されたルールが多数ある場合は、理解し検証しやすい、よりシンプルで焦点を絞ったルールに分割することを検討してください。

  4. エッジケースのテスト: ポリシーの境界条件とエッジケースを特にターゲットとする追加のテストを作成して、競合やギャップが存在する可能性がある場所を特定します。

  5. ポリシーの再編成を検討する: 競合が続く場合は、あいまいさを解決するために、より明確なルール階層または優先順位でポリシーを再編成する必要がある場合があります。

このような状況が発生した場合は、多くの場合、ポリシーのよりシンプルなバージョンから開始し、各ステップでテストしながら徐々に複雑さを追加して、競合が発生する場所を特定すると便利です。

次の例は、テストが失敗する一般的な理由とその対処方法を示しています。

自動推論がソースドキュメントを理解していない

一般的な原因

自動推論では、ソースドキュメントから必要な変数がすべて抽出されていないか、変数の説明が自然言語から正式なロジックへの適切な翻訳に十分明確でない可能性があります。

解決方法

  1. 定義画面の変数リストを確認して、質問と回答から事実に基づくクレームを抽出するために必要なすべての変数がポリシーに存在することを確認します。

  2. 必要な変数がない場合:

    1. 追加 を選択して新しい変数を作成します。

    2. 適切なタイプ (bool、int、real、enum) を選択します。

    3. 明確で包括的な変数の説明を記述します。

  3. 変数が存在するが、質問と回答の検証中に正しく割り当てられなかった場合は、Automated Reasoning が自然言語をより適切に翻訳できるように説明を改善してください。例:

    元の説明 (制限が多すぎます): 「週に 20 時間以上勤務する従業員」。

    説明の改善: 「週に 20 時間以上勤務している従業員はフルタイムと見なされます。ユーザーが「フルタイム」または勤務時間について言及する場合は true、「パートタイム」または勤務時間短縮について言及する場合は false に設定します。

自動推論ポリシーのルールが間違っている

一般的な原因

自動推論によってソースドキュメントが誤って解釈されたり、ソースドキュメントにエラーや不整合が含まれている可能性があります。

解決方法

  1. 検証出力で誤ったルールが引用符で囲まれている場合は、ルールを編集します。これは、テストが期待VALIDしたとおりに に戻ったために最初に気付くでしょうINVALID

  2. ルールで変数を参照する場合は、ポリシーの定義セクションで指定されている完全な変数名を使用します。たとえば、 と入力しますis_full_time。入力 Q&A が特定のルールと一致することが予想される場合は、まず入力 Q&A の変数が正しいことを確認します。その場合は、新しいルールを追加する必要があります。

  3. ルールリストの右上にある追加ボタンを使用して、新しいルールを入力します。自然言語を使用してルールを指定します。制約を最初に指定し、変数をフルネームで参照します。たとえば、正社員だけが休暇を取ることを許可するルールの場合、テキストは「従業員 の場合is_full_time、休暇、有給 (LoAP)」のようになります。

自動推論ポリシーが返す TRANSLATION_AMBIGUOUS

一般的な原因

ポリシーが を返した場合TRANSLATION_AMBIGUOUS、Automated Reasoning が自然言語を正式なロジックに変換する際にあいまいさを検出したことを示します。これは、システムが自然言語の概念をポリシーの正式なロジック変数とルールにマッピングする方法を決定できない場合に発生します。

翻訳のあいまいさは、いくつかの根本的な原因から発生する可能性があります。

  • 重複する変数定義: ポリシー内の複数の変数が自然言語で記述されているのと同じ概念を合理的に表すことができる場合、システムは使用する変数を判断できません。たとえば、 変数employee_tenure_yearsyears_of_service変数の両方に同様の説明がある場合、ユーザーが「誰かが会社で働いていた期間」について質問したときに、どの変数を使用するかを判断するのに苦労することがあります。これにより、翻訳プロセスがあいまいになり、結果に一貫性がなくなる可能性があります。

  • 不完全な変数の説明: ユーザーが日常言語の概念を参照する方法に関する十分な詳細が不足しているため、ユーザー入力を正しい正式なロジック表現にマッピングすることが困難になる変数の説明。

  • あいまいな自然言語入力: 曖昧な、矛盾する、または解釈可能なステートメントを含むユーザープロンプトまたはモデルレスポンスで、正式なロジックに明確に変換できないもの。

  • コンテキスト情報がない: 自然言語がドメインに存在するが、ポリシーの変数スキーマで適切に表現されていない概念を参照している場合。

  • 矛盾する用語: ソースドキュメント、変数の説明、ユーザーとのやり取りで異なる用語を使用して同じ概念を参照すると、翻訳中に混乱が生じます。

これらの原因を理解することは、テストに関する問題をデバッグし、ポリシーに加える変更を決定するのに役立ちます。場合によっては、特定のユースケースで厳密な精度と実用的な使いやすさのバランスを取るために、ポリシーの信頼レベル設定を調整する必要がある場合があります。

解決方法

根本的な問題に応じて、これを修正する方法がいくつかあります。

  • 変数の説明が類似しすぎている: 2 つの変数の名前や説明が類似している場合、翻訳プロセスでそれらから一貫して選択されない可能性があります。たとえば、 変数is_full_timefull_time_status変数の両方に同様の説明がある場合、システムは雇用ステータスに関する自然言語を正しい変数に一貫してマッピングしない可能性があります。変数の説明を確認して、それぞれの目的とコンテキストが明確に区別されるようにします。重複する概念を 1 つの変数に統合すること、または各変数を使用するタイミングを正確に指定する明確で重複しない説明で各変数に明確な目的を持たせることを検討してください。

  • 変数コンテキストが不十分: 変数の説明が、ユーザーがドメイン内の概念を参照する方法を十分に説明していない可能性があります。適切なレベルのコンテキストで変数の説明を更新します。

  • 値のフォーマットに一貫性がない: システムが値 (数値や日付など) のフォーマット方法がわからない場合、翻訳があいまいになる可能性があります。変数の説明を更新して、予想される形式を明確にします。

  • あいまいな入力: 入力テキストにあいまいなステートメントが含まれている場合は、より正確に修正します。

次のいずれかのプロンプトを使用して、翻訳のあいまいさの問題を修正できます。

ソースなしのあいまいさ
You are an expert in revising answers to questions based on logical disagreements found in the answers. Given a domain, a question, an original answer, and logical ambiguities suggested from scearios, your task is to revise the original answer to address and resolve the logical ambiguities identified above. The revised answer should remove any ambiguities, such that one can clearly judge whether each scenario is consistent or inconsistent with the answer. The revised answer should have approximately the same length as the original answer. Avoid extending the answer with your own background knowledge. Below is an example. DOMAIN: DiscountPolicy QUESTION: I want to buy tickets for next Thursday. How many people are needed to qualify for your group discount? ORIGINAL ANSWER: You need at least 10 people to get the group discount. LOGICAL AMBIGUITIES FOUND: disagree_scenario1: ['(= group_size 12)', '(= advanced_booking false)', '(= group_discount true)'] (Analysis: The scenario says the group size is 12, there is no advanced booking and group discount is true. Is this consistent with the answer? Well, the original answer does not mention advanced booking. Maybe the answer assumed advanced booking from the question "I want to buy tickets for next Thursday", but that's debatable. The revised answer should make it clear.) REVISED ANSWER: You need at least 10 people and need to book in advance to get the group discount. (Note: Scenarios are illustrative cases highlighting potential ambiguities. Do not overfit in your revised answer. In the example above, you should use the original "You need at least 10 people..." rather than the scenario-specific "If you have 12 people...") Now complete the following task and return the revised answer. (Just return the answer. Do not return any analysis or notes) DOMAIN: {domain} QUESTION: {question} ORIGINAL ANSWER: {original_answer} LOGICAL AMBIGUITIES FOUND: It is unclear if the following scenarios are valid or not according to the answer. {disagreement_text} REVISED ANSWER:
ソースとのあいまいさ
You are an expert in revising answers to questions based on logical disagreements found in the answers. Given a domain, a question, an original answer, a piece of policy source text, and logical ambiguities suggested from scearios, your task is to revise the original answer to address and resolve the logical ambiguities identified above. The revised answer should remove any ambiguities, such that one can clearly judge whether each scenario is consistent or inconsistent with the answer. The revised answer should have approximately the same length as the original answer. Avoid extending the answer with your own background knowledge. The revised answer should be consistent with the actual policy from the source text. Below is an example. DOMAIN: DiscountPolicy QUESTION: I want to buy tickets for next Thursday. How many people are needed to qualify for your group discount? ORIGINAL ANSWER: You need at least 10 people to get the group discount. POLICY SOURCE TEXT: ... We offer discounts to students, seniors, and large groups. Students must present a valid ID ... A group of ten or more people are qualified for a group discount. Group discount tickets must be booked in advance. Each group ticket is 20% off the regular ticket price ... LOGICAL AMBIGUITIES FOUND: disagree_scenario1: ['(= group_size 12)', '(= advanced_booking false)', '(= group_discount true)'] (Analysis: The scenario says the group size is 12, there is no advanced booking and group discount is true. Is this consistent with the answer? Well, the original answer does not mention advanced booking. Maybe the answer assumed advanced booking from the question "I want to buy tickets for next Thursday", but that's debatable. The revised answer should make it clear.) REVISED ANSWER: You need at least 10 people and need to book in advance to get the group discount. (Note: Scenarios are illustrative cases highlighting potential ambiguities. Do not overfit in your revised answer. In the example above, you should use the original "You need at least 10 people..." rather than the scenario-specific "If you have 12 people...") Now complete the following task and return the revised answer. (Just return the answer. Do not return any analysis or notes) DOMAIN: {domain} QUESTION: {question} ORIGINAL ANSWER: {original_answer} POLICY SOURCE TEXT: {policy_source_text} LOGICAL DISAGREEMENTS FOUND: It is unclear if the following scenarios are valid or not according to the answer. {disagreement_text} REVISED ANSWER: