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