メインコンテンツまでスキップ

AIエージェントの保護

@secureAiAgent デコレータを使用して、特定のエージェントの保護を担当する関数を指定します。

Squid Client を使用して AI エージェントを作成し、チャットを有効にする際には、データの保護が非常に重要です。AI エージェントやそれとのチャットには機微な情報が含まれている可能性があるため、不正な使用や変更を防ぐために、アクセスや更新を制限することが不可欠です。

AI エージェントが public に設定されていない限り、デフォルトでアクセスは制限され、アクセス権限を明示的に設定するルールがなければ機能しません。(ぜひお試しください!)

Squid は、セキュリティルールを設定するために使用できる @secureAiAgent デコレータを提供します。これらのルールは、不正なユーザーがエージェントを更新したり、不正なチャットを行ったりするのを防ぎ、データの整合性を保護します。

ヒント

AIエージェントの保護を試みる前に、保護対象のエージェントの public 設定が OFF に切り替えられていること、そしてバックエンドの設定が完了していることを確認してください。これは、AIエージェントのセキュリティルールを設定するために必要です。

チャットの保護

チャットの権限を管理するには、@secureAiAgent デコレータを使用します。全てのユーザーにチャットを開放するには、以下をバックエンドに追加してください:

import { secureAiAgent, SquidService } from '@squidcloud/backend';

export class ExampleService extends SquidService {
@secureAiAgent('chat')
allowChat(): boolean {
return true;
}
}

認証されたユーザーのみにチャットを制限するには、Squid バックエンドの isAuthenticated() メソッドを使用します。このメソッドは、操作を試みるクライアントが認証されているかどうかを示す boolean 値を返します。

@secureAiAgent('chat')
allowChat(): boolean {
return this.isAuthenticated();
}

特定の AI エージェントを保護するには、@secureAiAgent デコレータのパラメータの末尾にエージェントの ID を追加してください:

@secureAiAgent('chat', 'AGENT_ID')

プロフィールの保護

クライアントに AI エージェントとチャットしてもらうことは望ましいかもしれませんが、彼らに命令やコンテキストを変更するような操作をさせることは、おそらく望ましくありません。代わりに、Squid Backend や Squid Console で AI エージェントを管理してください。

エージェントの変更を防ぐには、以下のセキュリティ関数を Squid Backend に追加できます:

@secureAiAgent('mutate')
allowMutations(): boolean {
return false;
}

特定の AI エージェントを保護するには、エージェントの ID をデコレータに追加してください:

@secureAiAgent('mutate', 'AGENT_ID')

場合によっては、クライアントからエージェントの管理を許可したいこともあります。例えば、各ユーザー向けに動的にエージェントを構築したい場合などです。その場合、以下の例のように AiChatbotMutationContext を使用して AI エージェントのセキュリティ関数をカスタマイズすることができます:

import { secureAiChatbot, SquidService, AiChatbotMutationContext } from '@squidcloud/backend';

@secureAiAgent('mutate')
async allowMutations(context: AiChatbotMutationContext): Promise<boolean> {
const userId = this.getUserAuth()?.userId;
if (context.profileId !== userId) return false;

if (context.resource === 'instruction') {
// ユーザーによる命令の変更は許可しません。
return false;
} else if (context.resource === 'context') {
// ユーザーによるコンテキストの挿入を許可します。
return context.type === 'insert';
} else if (context.resource === 'profile') {
// プロフィール ID が userId と一致する場合、ユーザーによるエージェントの登録を許可します。
return context.type === 'insert';
}
return false;
}