Partager via


Décorateurs pour TypeSpec pour Microsoft 365 Copilot

Cette référence couvre les éléments décoratifs intégrés disponibles dans TypeSpec pour Microsoft 365 Copilot, organisés selon leur cas d’usage principal.

Remarque

Cette référence sur les éléments décoratifs se concentre spécifiquement sur les @microsoft/typespec-m365-copilot décorateurs, mais vous pouvez utiliser tous les éléments décoratifs définis dans TypeSpec, y compris les décorateurs intégrés et lesdécorateurs OpenAPI.

Décorateur Target Description
@agent Agent Définissez un agent avec un nom, une description et un ID facultatif.
@behaviorOverrides Agent Modifier les paramètres de comportement de l’orchestration de l’agent.
@conversationStarter Agent Définir des invites de démarrage de conversation pour les utilisateurs.
@customExtension Agent Ajoutez des paires clé-valeur personnalisées pour l’extensibilité.
@disclaimer Agent Afficher des exclusions de responsabilité légales ou de conformité aux utilisateurs.
@instructions Agent Définissez des instructions et des instructions comportementales pour l’agent.
@actions Plugin Définissez les métadonnées d’action, notamment les noms, les descriptions et les URL.
@authReferenceId Plugin Spécifiez l’ID de référence d’authentification pour l’accès à l’API.
@capabilities Plugin Configurez des fonctionnalités de fonction telles que les confirmations et la mise en forme des réponses.
@carte Plugin Définissez des modèles de carte adaptative pour les réponses de fonction.
@reasoning Plugin Fournissez des instructions de raisonnement pour l’appel de fonction.
@responding Plugin Définir des instructions de mise en forme de réponse pour les fonctions.

Décorateurs d’agents déclaratifs

Ces éléments décoratifs sont utilisés lors de la création d’agents déclaratifs pour définir le comportement de l’agent, le flux de conversation et l’expérience utilisateur.

@agent

Indique qu’un espace de noms représente un agent.

@agent(name: valueof string, description: valueof string, id?: valueof string)

Target

Namespace

Paramètres

Nom Type Description
description valueof string Localisables. Description de l’agent déclaratif. Il DOIT contenir au moins un caractère nonwhitespace et doit comporter 1 000 caractères ou moins.
id valueof string Facultatif. Identificateur unique de l’agent.
name valueof string Localisables. Nom de l’agent déclaratif. Il DOIT contenir au moins un caractère nonwhitespace et doit comporter 100 caractères ou moins.

Exemples

// Basic agent definition with simple name and description
@agent("IT Support Assistant", "An AI agent that helps with technical support and troubleshooting")
// Project management agent with more detailed description
@agent("Project Manager", "A helpful assistant for project management tasks and coordination")
// Agent with explicit ID for tracking and versioning
@agent("Data Analytics Helper", "An agent specialized in data analysis and reporting tasks", "data-analytics-v1")

@behaviorOverrides

Définissez les paramètres qui modifient le comportement de l’orchestration de l’agent.

@behaviorOverrides(behaviorOverrides: valueof BehaviorOverrides)

Target

Namespace

Paramètres

Nom Type Description
behaviorOverrides valueof BehaviorOverrides Définissez les paramètres qui modifient le comportement de l’orchestration de l’agent.

Modèles

BehaviorOverrides

Définir des paramètres qui modifient le comportement de l’orchestration de l’agent

Nom Type Description
discourageModelKnowledge boolean Valeur booléenne qui indique si l’agent déclaratif doit être découragé d’utiliser la connaissance du modèle lors de la génération de réponses.
disableSuggestions boolean Valeur booléenne qui indique si la fonctionnalité de suggestions est désactivée.

Exemples

// Conservative settings: discourage model knowledge but allow suggestions
@behaviorOverrides(#{
  discourageModelKnowledge: true,
  disableSuggestions: false
})
// Minimal interaction: disable suggestions to reduce prompting
@behaviorOverrides(#{
  disableSuggestions: true
})
// Default behavior: allow both model knowledge and suggestions
@behaviorOverrides(#{
  discourageModelKnowledge: false,
  disableSuggestions: false
})

@conversationStarter

Indique qu’un espace de noms contient un démarreur de conversation.

@conversationStarter(conversationStarter: valueof ConversationStarter)

Target

Namespace

Paramètres

Nom Type Description
conversationStarter valueof ConversationStarter Informations de démarrage de conversation.

Modèles

ConversationStarter

Objet de configuration qui définit un démarrage de conversation pour les utilisateurs.

Nom Type Description
text string Localisables. Suggestion que l’utilisateur peut utiliser pour obtenir le résultat souhaité à partir du contrôleur de domaine. Il DOIT contenir au moins un caractère nonwhitespace.
title string Localisables. Titre unique pour le démarrage de conversation. Il DOIT contenir au moins un caractère nonwhitespace.

Exemples

// Generic welcome prompt for new users
@conversationStarter(#{
  title: "Get Started",
  text: "How can I help you today?"
})
// Status check prompt for tracking ongoing work
@conversationStarter(#{
  title: "Check Status",
  text: "What's the status of my recent requests?"
})
// Issue reporting prompt for technical support scenarios
@conversationStarter(#{
  text: "I need to report a technical problem"
})

@customExtension

Indique qu’un espace de noms contient une extension personnalisée avec une paire clé-valeur pour l’extensibilité.

@customExtension(key: valueof string, value: valueof unknown)

Target

Namespace

Paramètres

Nom Type Description
key valueof string Clé de l’extension personnalisée.
value valueof unknown Valeur de l’extension personnalisée. Peut être n’importe quelle valeur TypeSpec valide.

Exemples

// Adding a custom feature flag to an agent
@customExtension("featureFlag", "experimentalMode")
// Adding custom metadata with a structured value
@customExtension("metadata", #{
  version: "1.0",
  environment: "production"
})
// Adding a custom configuration setting
@customExtension("customConfig", #{
  maxRetries: 3,
  timeout: 30000
})

@disclaimer

Objet facultatif contenant un message d’exclusion de responsabilité qui, s’il est fourni, est affiché aux utilisateurs au début d’une conversation pour répondre aux exigences légales ou de conformité.

@disclaimer(disclaimer: valueof Disclaimer)

Target

Namespace

Paramètres

Nom Type Description
disclaimer valueof Disclaimer Informations d’exclusion de responsabilité affichées aux utilisateurs.

Modèles

Clause d’exclusion de responsabilité

Informations d’exclusion de responsabilité affichées aux utilisateurs.

Nom Type Description
text string Chaîne qui contient le message d’exclusion de responsabilité. Il DOIT contenir au moins un caractère nonwhitespace. Les caractères au-delà de 500 PEUVENT être ignorés.

Exemples

// General disclaimer for informational agents
@disclaimer(#{
  text: "This agent provides general information only and should not be considered professional advice."
})
// Financial advice disclaimer with professional consultation reminder
@disclaimer(#{
  text: "All financial information provided is for educational purposes. Please consult with a qualified financial advisor before making investment decisions."
})
// Technical support disclaimer for critical systems
@disclaimer(#{
  text: "This technical support agent provides general guidance. For critical systems, please contact your IT department directly."
})

@instructions

Définit les instructions qui définissent le comportement d’un agent.

@instructions(instructions: valueof string)

Target

Namespace

Paramètres

Nom Type Description
instructions valueof string Non localisable. Instructions détaillées ou instructions sur le comportement de l’agent déclaratif, ses fonctions et tous les comportements à éviter. Il DOIT contenir au moins un caractère nonwhitespace et doit contenir au maximum 8 000 caractères.

Exemples

// Simple, concise instructions for positive interaction
@instructions("Always respond with a positive energy.")
// Detailed instructions for technical support with specific behaviors
@instructions("""
  You are a customer support agent specializing in technical troubleshooting.
  Always provide step-by-step solutions and ask clarifying questions when needed.
""")
// Comprehensive instructions with disclaimers and behavioral constraints
@instructions("""
  You are a financial advisor assistant. Provide general financial information
  but always remind users to consult with qualified professionals for specific advice.
  Never provide specific investment recommendations.
""")

Décorateurs de plug-in d’API

Ces éléments décoratifs sont utilisés lors de la création de plug-ins d’API pour définir les opérations d’API, l’authentification et la gestion des réponses.

@actions

Définit l’action qui peut être définie sur un objet d’informations dans une spécification OpenAPI.

@actions(data: valueof ActionMetadata)

Target

Namespace

Paramètres

Nom Type Description
data valueof ActionMetadata Métadonnées d’action, y compris les noms, les descriptions et les URL lisibles par l’utilisateur.

Modèles

ActionMetadata

Métadonnées d’action, y compris les noms, les descriptions et les URL lisibles par l’utilisateur.

Nom Type Description
descriptionForHuman string Obligatoire. Description lisible du plug-in. Les caractères au-delà de 100 PEUVENT être ignorés. Cette propriété est localisable.
nameForHuman string Obligatoire. Nom court et lisible par l’utilisateur pour le plug-in. Il DOIT contenir au moins un caractère nonwhitespace. Les caractères au-delà de 20 PEUVENT être ignorés. Cette propriété est localisable.
contactEmail string Facultatif. Adresse e-mail d’un contact pour la sécurité/modération, le support et la désactivation.
descriptionForModel string Facultatif. Description du plug-in fourni au modèle. Cette description doit décrire à quoi sert le plug-in et dans quelles circonstances ses fonctions sont pertinentes. Les caractères au-delà de 2048 PEUVENT être ignorés. Cette propriété est localisable.
legalInfoUrl string Facultatif. URL absolue qui localise un document contenant les conditions d’utilisation du plug-in. Cette propriété est localisable.
logoUrl string Facultatif. URL utilisée pour récupérer un logo qui PEUT être utilisé par l’orchestrateur. Les implémentations PEUVENT fournir d’autres méthodes pour fournir des logos qui répondent à leurs besoins visuels. Cette propriété est localisable.
privacyPolicyUrl string Facultatif. URL absolue qui localise un document contenant la politique de confidentialité du plug-in. Cette propriété est localisable.

Exemples

// Complete action metadata with all contact and legal information
@actions(#{
  nameForHuman: "Customer Support API",
  descriptionForModel: "Provides customer support ticket management",
  descriptionForHuman: "Manage and track customer support requests",
  privacyPolicyUrl: "https://company.com/privacy",
  legalInfoUrl: "https://company.com/legal",
  contactEmail: "support@company.com"
})
// Enhanced action metadata with branding and comprehensive descriptions
@actions(#{
  nameForHuman: "Project Management Suite",
  descriptionForModel: "Comprehensive project management tools",
  privacyPolicyUrl: "https://company.com/privacy",
  legalInfoUrl: "https://company.com/terms",
  contactEmail: "pm-support@company.com",
  logoUrl: "https://company.com/logo.png",
  descriptionForHuman: "A complete project management solution for teams"
})
// Minimal action metadata focusing on analytics functionality
@actions(#{
  nameForHuman: "Analytics Dashboard",
  descriptionForHuman: "Real-time analytics and reporting platform",
  descriptionForModel: "Generate reports and analyze business data"
})

@authReferenceId

Définit l’ID de référence d’authentification pour le type d’authentification.

@authReferenceId(value: valueof string)

Target

Model

Paramètres

Nom Type Description
value valueof string ID de référence du coffre pour le type d’authentification.

Exemples

// Reference to the Developer Portal OAuth client registration ID (https://dev.teams.cloud.microsoft/oauth-configuration)
@authReferenceId("NzFmOTg4YmYtODZmMS00MWFmLTkxYWItMmQ3Y2QwMTFkYjQ3IyM5NzQ5Njc3Yi04NDk2LTRlODYtOTdmZS1kNDUzODllZjUxYjM=")

// Reference to the Developer Portal API key registration ID (https://dev.teams.cloud.microsoft/api-key-registration)
@authReferenceId("5f701b3e-bf18-40fb-badd-9ad0b60b31c0")

@capabilities

Prend en charge l’objet de fonctionnalités d’une fonction d’action tel que défini dans l’objet manifeste du plug-in d’API . Vous pouvez utiliser cet élément décoratif pour définir des cartes adaptatives simples avec de petites définitions comme confirmation. Pour les cartes adaptatives plus complexes, vous pouvez utiliser l’élément @card décoratif.

@capabilities(capabilities: valueof FunctionCapabilitiesMetadata)

Target

Operation

Paramètres

Nom Type Description
capabilities valueof FunctionCapabilitiesMetadata Contient une collection de données utilisée pour configurer les fonctionnalités facultatives de l’orchestrateur lors de l’appel de la fonction .

Modèles

FunctionCapabilitiesMetadata

Contient une collection de données utilisée pour configurer les fonctionnalités facultatives de l’orchestrateur lors de l’appel de la fonction .

Nom Type Description
confirmation Confirmation Facultatif. Décrit une boîte de dialogue de confirmation qui DOIT être présentée à l’utilisateur avant d’appeler la fonction.
responseSemantics ResponseSemantics Facultatif. Décrit comment l’orchestrateur peut interpréter la charge utile de réponse et fournir un rendu visuel.
securityInfo SecurityInfo Facultatif. Contient des attestations sur le comportement du plug-in afin d’évaluer les risques liés à l’appel de la fonction. Si cette propriété est omise, la fonction ne peut pas interagir avec d’autres plug-ins ou fonctionnalités de l’agent conteneur.
Confirmation

Décrit comment l’orchestrateur demande à l’utilisateur de confirmer avant d’appeler une fonction.

Nom Type Description
body string Facultatif. Texte de la boîte de dialogue de confirmation. Cette propriété est localisable.
title string Facultatif. Titre de la boîte de dialogue de confirmation. Cette propriété est localisable.
type string Facultatif. Spécifie le type de confirmation. Les valeurs possibles sont : None, AdaptiveCard.
ResponseSemantics

Contient des informations permettant d’identifier la sémantique de la charge utile de réponse et d’activer le rendu de ces informations dans une expérience visuelle enrichie à l’aide de cartes adaptatives.

Nom Type Description
dataPath string Obligatoire. JsonPath RFC9535 requête qui identifie un ensemble d’éléments de la réponse de fonction à afficher à l’aide du modèle spécifié dans chaque élément.
oauthCardPath string Facultatif.
properties ResponseSemanticsProperties Facultatif. Autorise le mappage des requêtes JSONPath à des éléments de données connus. Chaque requête JSONPath est relative à une valeur de résultat.
staticTemplate Record<unknown> Facultatif. Objet JSON conforme au schéma de carte adaptative et au langage de création de modèles. Cette instance de carte adaptative est utilisée pour afficher un résultat à partir de la réponse du plug-in. Cette valeur est utilisée si le templateSelector n’est pas présent ou ne parvient pas à être résolu en carte adaptatif.
ResponseSemanticsProperties

Autorise le mappage des requêtes JSONPath à des éléments de données connus. Chaque requête JSONPath est relative à une valeur de résultat.

Nom Type Description
informationProtectionLabel string Facultatif. Indicateur de sensibilité des données du contenu du résultat.
subTitle string Facultatif. Sous-titre d’une citation pour le résultat.
templateSelector string Facultatif. Une expression JSONPath vers une carte adaptative instance à utiliser pour le rendu du résultat.
title string Facultatif. Titre d’une citation pour le résultat.
thumbnailUrl string Facultatif. URL d’une image miniature pour le résultat.
url string Facultatif. URL d’une citation pour le résultat.
SecurityInfo

Contient des informations utilisées pour déterminer le risque relatif d’appel de la fonction.

Nom Type Description
dataHandling string[] Obligatoire. Tableau de chaînes qui décrivent le comportement de gestion des données de la fonction. Les valeurs valides sont GetPublicData, GetPrivateData, DataExportDataTransform, et ResourceStateUpdate.

Exemples

// Simple confirmation dialog for destructive operations
@capabilities(#{
  confirmation: #{
    type: "AdaptiveCard",
    title: "Delete Ticket",
    body: "Are you sure you want to delete this support ticket? This action cannot be undone."
  }
})
// Comprehensive capabilities with confirmation and response formatting
@capabilities(#{
  confirmation: #{
    type: "modal",
    title: "Create Project",
    body: """
    Creating a new project with the following details:
      * **Title**: {{ function.parameters.name }}
      * **Description**: {{ function.parameters.description }}
      * **Team Lead**: {{ function.parameters.teamLead }}
    """
  },
  responseSemantics: #{
    dataPath: "$.projects",
    properties: #{
      title: "$.name",
      subTitle: "$.description",
      url: "$.projectUrl",
      thumbnailUrl: "$.teamLogo"
    },
    staticTemplate: #{file: "adaptiveCards/dish.json"}
  }
})

@card

Définit la référence carte adaptative pour une fonction.

@card(cardPath: valueof CardMetadata)

Target

Operation

Paramètres

Nom Type Description
cardPath valueof CardMetadata Définit la référence carte adaptative pour une fonction. Version simplifiée de responseSemantics.

Modèles

CardMetadata

ResponseSemantics simplifiés axés sur la carte adaptative.

Nom Type Description
dataPath string Obligatoire. JsonPath RFC9535 requête qui identifie un ensemble d’éléments de la réponse de fonction à afficher à l’aide du modèle spécifié dans chaque élément.
file string Obligatoire. Chemin d’accès au modèle de carte adaptatif. Par rapport au répertoire appPackage.
properties CardResponseSemanticProperties Facultatif. Autorise le mappage des requêtes JSONPath à des éléments de données connus. Chaque requête JSONPath est relative à une valeur de résultat.
CardResponseSemanticProperties

Permet de mapper des requêtes JSONPath à des éléments de données connus pour le rendu carte. Chaque requête JSONPath est relative à une valeur de résultat.

Nom Type Description
informationProtectionLabel string Facultatif. Indicateur de sensibilité des données du contenu du résultat.
subTitle string Facultatif. Sous-titre d’une citation pour le résultat.
thumbnailUrl string Facultatif. URL d’une image miniature pour le résultat.
title string Facultatif. Titre d’une citation pour le résultat.
url string Facultatif. URL d’une citation pour le résultat.

Exemples

// Basic card configuration with data binding
@card(#{
  dataPath: "$.tickets",
  file: "cards/ticketCard.json"
})
// Card with property mappings for citations and metadata
@card(#{
  dataPath: "$.projects",
  file: "cards/project.json",
  properties: #{
    title: "$.name",
    url: "$.projectUrl",
    subTitle: "$.description",
    thumbnailUrl: "$.teamLogo"
  }
})

@reasoning

Définit les instructions de raisonnement d’une fonction dans une action.

@reasoning(value: valueof string)

Target

Operation

Paramètres

Nom Type Description
value valueof string Instructions de raisonnement pour l’opération.

Exemples

// Prioritization logic for ticket search operations
@reasoning("""
  When searching for tickets, prioritize by severity level and creation date.
  Always include ticket ID and status in the response.
""")
// Role-based access control reasoning for project operations
@reasoning("""
  For project queries, consider the user's role and project permissions.
  Filter results based on team membership and access levels.
""")
// Data validation reasoning for analytics requests
@reasoning("""
  When processing analytics requests, validate date ranges and ensure
  the requested metrics are available for the specified time period.
""")

@responding

Définit les instructions de réponse d’une fonction dans une action.

@responding(value: valueof string)

Target

Operation

Paramètres

Nom Type Description
value valueof string Instructions de réponse pour l’opération.

Exemples

// Structured table format for support ticket responses
@responding("""
  Present support tickets in a clear table format with columns: ID, Title, Priority, Status, Created Date.
  Include summary statistics at the end showing total tickets by status.
""")
// Bullet point format for project information display
@responding("""
  Display project information using bullet points for easy reading.
  Always include project timeline and current phase information.
""")