/** * @module teams-ai */ /** * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. */ import { TurnContext } from 'botbuilder-core'; import { Plan } from '../planners'; import { TurnState } from '../TurnState'; /** * A moderator is responsible for reviewing and approving AI prompts and plans. * @template TState Type of the applications turn state. */ export interface Moderator { /** * Reviews an incoming utterance and generated prompt before it's sent to the planner. * @remarks * The moderator can review the incoming utterance for things like prompt injection attacks * or the leakage of sensitive information. The moderator can also review the generated prompt * to ensure it's appropriate for the current conversation. * * To approve a prompt, simply return undefined. Returning a new plan bypasses the planner and * redirects to a new set of actions. Typically the moderator will return a new plan with a * single DO command that calls `AI.FlaggedInputActionName` to flag the input for review. * * The moderator can pass any entities that make sense to the redirected action. * @param context Context for the current turn of conversation. * @param state Application state for the current turn of conversation. * @returns An undefined value to approve the prompt or a new plan to redirect to if not approved. */ reviewInput(context: TurnContext, state: TState): Promise; /** * Reviews a plan generated by the planner before its executed. * @remarks * The moderator can review the plan to ensure it's appropriate for the current conversation. * * To approve a plan simply return the plan that was passed in. A new plan can be returned to * redirect to a new set of actions. Typically the moderator will return a new plan with a * single DO command that calls `AI.FlaggedOutputActionName` to flag the output for review. * * The moderator can pass any entities that make sense to the redirected action. * @param context Context for the current turn of conversation. * @param state Application state for the current turn of conversation. * @param plan Plan generated by the planner. * @returns The plan to execute. Either the current plan passed in for review or a new plan. */ reviewOutput(context: TurnContext, state: TState, plan: Plan): Promise; } //# sourceMappingURL=Moderator.d.ts.map