ガードレール
AI agentの応答に制約を定義し、コンテンツポリシーを適用し、データ漏洩を防止し、プロフェッショナルなコミュニケーション基準を維持します。
Guardrails を使用する理由
AI agent は幅広い知識にアクセスでき、多様な応答を生成できます。制約がない場合、次のような可能性があります。
- Social Security number やメールアドレスなどの機密性の高いユーザーデータを開示する
- 想定されたスコープ外の質問に回答する
- プロフェッショナルではない、または不快な言葉を使用する
Guardrails を使用すると境界を定義できるため、agent はトピックに沿った、プロフェッショナルでポリシーに準拠した状態を維持できます。単一のフラグでプリセットを有効にすることも、独自のカスタムポリシーを作成することもできます。
- TypeScript
- Python
await this.squid.ai().agent('support-agent').updateGuardrails({
disablePii: true, // Blocks personally identifiable information
professionalTone: true, // Enforces formal language
});
await self.squid.ai().agent('support-agent').update_guardrails({
'disablePii': True, # Blocks personally identifiable information
'professionalTone': True, # Enforces formal language
})
概要
Guardrails は、最優先度で AI agent の system prompt に注入される設定可能な制約です。Guardrail が有効な場合、agent はそれに応じて応答をフィルタリングするための具体的な指示を受け取ります。
Guardrail には次の 2 種類があります。
- プリセット Guardrails - オンまたはオフに切り替えられる 4 つの組み込みポリシー
- カスタム Guardrails - プリセットでカバーされないポリシー用の自由形式テキストの指示
Guardrails は次の 3 つの方法で設定できます。
| 方法 | 最適な用途 |
|---|---|
| Squid Console (Agent Studio) | 迅速なセットアップと開発者以外のユーザー向け |
| Backend SDK | アプリケーションコードからのプログラムによる制御 |
| REST API | 外部システムまたは自動化パイプライン |
Guardrails の仕組み
agent がメッセージを処理する際、有効な Guardrails は、基盤となる LLM に送信される system prompt 内の高優先度の指示として埋め込まれます。agent はこれらの指示を最優先で扱い、ユーザーに返す前に、すべての有効な Guardrail ポリシーに準拠するよう応答をフィルタリングします。
コアコンセプト
プリセット Guardrails
| Guardrail | キー | 機能 |
|---|---|---|
| 不適切表現フィルター | disableProfanity | 不適切な表現、下品な言葉、不快な用語をフィルタリングします。敬意を払い中立的な言葉遣いを徹底します。 |
| PII 保護 | disablePii | SSN、銀行口座番号、住所、氏名、生年月日、メールアドレス、電話番号、パスポート/運転免許証番号、クレジットカード番号などの personally identifiable information の出力を防止します。 |
| トピック制限 | offTopicAnswers | agent が定義されたスコープ内の質問にのみ回答するよう制限します。agent はスコープ外の質問を丁寧に辞退します。 |
| プロフェッショナルなトーン | professionalTone | 明確かつ正確な言葉を用い、スラングやくだけた表現を避けながら、プロフェッショナルで礼儀正しく中立的なトーンを維持します。 |
各プリセットは boolean フラグです。有効にするには true、無効にするには false を設定します。
disablePii は agent が書き出す内容を制御します。この設定は、回答に個人情報を含めないようモデルに指示しますが、ユーザーの prompt 自体は引き続きモデルに送信されます。モデルが prompt を見る前に受信した prompt を拒否するには、prompt privacy を使用してください。両方を同時に有効にできます。
カスタム Guardrails
カスタム Guardrails には、追加ポリシーを説明する自由形式のテキストを指定します。プリセットでカバーされないドメイン固有のルールに使用します。例:
- 「事実に関する主張を行う際は、常に出典を引用する」
- 「競合他社の製品について議論しない」
- 「スペイン語でのみ応答する」
マージ動作
updateGuardrails メソッドは、既存の設定を置き換えるのではなく、新しい設定をマージします。agent にすでに disablePii: true が設定されている状態で updateGuardrails({ professionalTone: true }) を呼び出すと、両方の Guardrail が有効なままになります。Guardrail を無効にするには、明示的に false を設定します。
Studio で Guardrails を設定する
Squid Console から agent の Guardrails を設定するには、次の手順に従います。
- 左側のサイドバーで Agent Studio タブに移動します
- 設定する agent を選択します
- Settings タブをクリックします
- Agent Guardrails セクションまでスクロールします
- 4 つのプリセット Guardrail のいずれかをオンまたはオフに切り替えます
- (任意)テキストフィールドにカスタム Guardrail ポリシーを入力します
Backend SDK で Guardrails を設定する
プリセット Guardrails を更新する
updateGuardrails を使用して、プリセット Guardrails を有効または無効にします。設定は既存の値とマージされます。
- TypeScript
- Python
// Enable PII protection and professional tone
await this.squid.ai().agent('AGENT_ID').updateGuardrails({
disablePii: true,
professionalTone: true,
});
# Enable PII protection and professional tone
await self.squid.ai().agent('AGENT_ID').update_guardrails({
'disablePii': True,
'professionalTone': True,
})
4 つのプリセットを一度にすべて有効にするには、次のようにします。
- TypeScript
- Python
await this.squid.ai().agent('AGENT_ID').updateGuardrails({
disableProfanity: true,
professionalTone: true,
disablePii: true,
offTopicAnswers: true,
});
await self.squid.ai().agent('AGENT_ID').update_guardrails({
'disableProfanity': True,
'professionalTone': True,
'disablePii': True,
'offTopicAnswers': True,
})
他の Guardrail を維持したまま特定の Guardrail を無効にするには、次のようにします。
- TypeScript
- Python
// Disable profanity filter; other guardrails remain unchanged
await this.squid.ai().agent('AGENT_ID').updateGuardrails({
disableProfanity: false,
});
# Disable profanity filter; other guardrails remain unchanged
await self.squid.ai().agent('AGENT_ID').update_guardrails({
'disableProfanity': False,
})
カスタム Guardrail を追加する
updateCustomGuardrails を使用して、カスタム Guardrail ポリシーを設定します。
- TypeScript
- Python
await this.squid.ai().agent('AGENT_ID')
.updateCustomGuardrails('Always cite sources when making factual claims.');
await self.squid.ai().agent('AGENT_ID').update_custom_guardrails(
'Always cite sources when making factual claims.'
)
このメソッドを再度呼び出すと、以前のカスタム Guardrail テキストは置き換えられます。
カスタム Guardrail を削除する
deleteCustomGuardrail を使用して、カスタム Guardrail ポリシーを削除します。
- TypeScript
- Python
await this.squid.ai().agent('AGENT_ID').deleteCustomGuardrail();
await self.squid.ai().agent('AGENT_ID').delete_custom_guardrails()
これはカスタム Guardrail のみを削除します。プリセット Guardrails には影響しません。
REST API で Guardrails を設定する
すべての API endpoint は、Squid Cloud アプリケーションの base URL を使用します。API URL の構築方法について詳しくは、API documentation を参照してください。
プリセット Guardrails を更新する
POST request を送信して、プリセット Guardrails を更新します。設定は、SDK の updateGuardrails と同様に、agent の既存の Guardrails とマージされます。
POST /squid-api/v1/ai/agent/updateGuardrails
{
"agentId": "your-agent-id",
"guardrails": {
"disablePii": true,
"professionalTone": true,
"offTopicAnswers": true,
"disableProfanity": true
}
}
カスタム Guardrail を更新する
POST /squid-api/v1/ai/agent/updateCustomGuardrails
{
"agentId": "your-agent-id",
"customGuardrail": "Always cite sources when making factual claims."
}
カスタム Guardrail を削除する
POST /squid-api/v1/ai/agent/deleteCustomGuardrails
{
"agentId": "your-agent-id"
}
エラー処理
一般的なエラー
| エラー | 原因 | 解決策 |
|---|---|---|
| Agent not found | 指定された agentId が存在しない | Squid Console で agent ID を確認する |
| Unauthorized | API key が無効または存在しない | 有効な app API key を使用していることを確認する |
| Cannot perform this operation on the built-in agent | 組み込み agent の Guardrails を変更しようとした | 組み込み agent を変更する代わりにカスタム agent を作成する |
動作に関する注意事項
updateCustomGuardrailsは、指定されたカスタム Guardrail 文字列が空の場合、変更を行わずに返ります。agent が存在しない場合は、"Agent not found" エラーをスローします。deleteCustomGuardrailは、agent が存在しない場合でもエラーなく返ります。この呼び出しは冪等です。カスタム Guardrail が設定されていない状態で削除しても、エラーなく成功します。- プリセット Guardrail の値は単純な boolean であり、コンテンツ検証は不要です。
ベストプラクティス
- カスタムルールを作成する前にプリセットから始めましょう。 4 つの組み込み Guardrail は、最も一般的なコンプライアンス要件をカバーします。カスタム Guardrail は、ドメイン固有のポリシーに対してのみ追加してください。
- カスタム Guardrails では具体的に記述しましょう。 「安全にする」のような曖昧な指示よりも、「内部の価格算定式を公開しない」のような明示的なルールのほうが効果的です。
- 階層的な保護のために Guardrails を組み合わせましょう。
disablePiiを、ドメインにおける追加のデータ処理ルールを指定するカスタム Guardrail と併用してください。 - Guardrail の動作をテストしましょう。 Guardrails を有効にした後は、各ポリシーを発動させるよう設計した prompt で agent をテストし、制約が期待どおりに機能していることを確認してください。
- マージのセマンティクスを忘れないでください。
updateGuardrailsを呼び出すと、既存の設定とマージされます。Guardrail を無効にするには、明示的にfalseを設定する必要があります。