Compartir a través de


Decoradores para TypeSpec para Microsoft 365 Copilot

Esta referencia trata los decoradores integrados disponibles en TypeSpec para Microsoft 365 Copilot, organizados por su caso de uso principal.

Nota:

Esta referencia de decorador se centra específicamente en los @microsoft/typespec-m365-copilot decoradores, pero puede usar todos los decoradores definidos en TypeSpec, incluidos los decoradores integrados y los decoradores OpenAPI.

Decorador Target Description
@agent Agente Defina un agente con el nombre, la descripción y el identificador opcional.
@behaviorOverrides Agente Modifique la configuración del comportamiento de orquestación del agente.
@conversationStarter Agente Defina las solicitudes de inicio de conversación para los usuarios.
@customExtension Agente Agregue pares clave-valor personalizados para la extensibilidad.
@disclaimer Agente Mostrar declinaciones de responsabilidades legales o de cumplimiento a los usuarios.
@instructions Agente Defina instrucciones y directrices de comportamiento para el agente.
@actions Complemento Defina metadatos de acción, incluidos nombres, descripciones y direcciones URL.
@authReferenceId Complemento Especifique el identificador de referencia de autenticación para el acceso a la API.
@capabilities Complemento Configure funcionalidades de función como confirmaciones y formato de respuesta.
@card Complemento Defina plantillas de tarjeta adaptable para las respuestas de función.
@reasoning Complemento Proporcione instrucciones de razonamiento para la invocación de funciones.
@responding Complemento Defina instrucciones de formato de respuesta para las funciones.

Decoradores de agente declarativo

Estos decoradores se usan al compilar agentes declarativos para definir el comportamiento del agente, el flujo de conversación y la experiencia del usuario.

@agent

Indica que un espacio de nombres representa un agente.

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

Target

Namespace

Parameters

Nombre Tipo Description
description valueof string Localizable. Descripción del agente declarativo. DEBE contener al menos un carácter nowhitespace y DEBE tener 1000 caracteres o menos.
id valueof string Opcional. Identificador único del agente.
name valueof string Localizable. Nombre del agente declarativo. DEBE contener al menos un carácter nowhitespace y DEBE tener 100 caracteres o menos.

Ejemplos

// 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

Defina la configuración que modifique el comportamiento de la orquestación del agente.

@behaviorOverrides(behaviorOverrides: valueof BehaviorOverrides)

Target

Namespace

Parameters

Nombre Tipo Description
behaviorOverrides valueof BehaviorOverrides Defina la configuración que modifique el comportamiento de la orquestación del agente.

Modelos

BehaviorOverrides

Definición de la configuración que modifica el comportamiento de la orquestación del agente

Nombre Tipo Description
discourageModelKnowledge boolean Valor booleano que indica si se debe impedir que el agente declarativo use el conocimiento del modelo al generar respuestas.
disableSuggestions boolean Valor booleano que indica si la característica de sugerencias está deshabilitada.

Ejemplos

// 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

Indica que un espacio de nombres contiene un inicio de conversación.

@conversationStarter(conversationStarter: valueof ConversationStarter)

Target

Namespace

Parameters

Nombre Tipo Description
conversationStarter valueof ConversationStarter La información de inicio de la conversación.

Modelos

ConversationStarter

Objeto de configuración que define un inicio de conversación para los usuarios.

Nombre Tipo Description
text string Localizable. Sugerencia que el usuario puede usar para obtener el resultado deseado del controlador de dominio. DEBE contener al menos un carácter nowhitespace.
title string Localizable. Un título único para el inicio de la conversación. DEBE contener al menos un carácter nowhitespace.

Ejemplos

// 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

Indica que un espacio de nombres contiene una extensión personalizada con un par clave-valor para extensibilidad.

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

Target

Namespace

Parameters

Nombre Tipo Description
key valueof string Clave de la extensión personalizada.
value valueof unknown Valor de la extensión personalizada. Puede ser cualquier valor typespec válido.

Ejemplos

// 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

Objeto opcional que contiene un mensaje de declinación de responsabilidades que, si se proporciona, se muestra a los usuarios al principio de una conversación para satisfacer los requisitos legales o de cumplimiento.

@disclaimer(disclaimer: valueof Disclaimer)

Target

Namespace

Parameters

Nombre Tipo Description
disclaimer valueof Declinación de responsabilidades Información de declinación de responsabilidades que se muestra a los usuarios.

Modelos

Aviso de declinación de responsabilidades

Información de declinación de responsabilidades que se muestra a los usuarios.

Nombre Tipo Description
text string Cadena que contiene el mensaje de declinación de responsabilidades. DEBE contener al menos un carácter nowhitespace. Los caracteres posteriores a 500 PUEDEN omitirse.

Ejemplos

// 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

Define las instrucciones que definen el comportamiento de un agente.

@instructions(instructions: valueof string)

Target

Namespace

Parameters

Nombre Tipo Description
instructions valueof string No localizable. Instrucciones detalladas o instrucciones sobre cómo debe comportarse el agente declarativo, sus funciones y cualquier comportamiento que se evite. DEBE contener al menos un carácter nowhitespace y DEBE tener 8000 caracteres o menos.

Ejemplos

// 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.
""")

Decoradores de complementos de API

Estos decoradores se usan al compilar complementos de API para definir operaciones de API, autenticación y control de respuestas.

@actions

Define la acción que se puede definir en un objeto info en una especificación de OpenAPI.

@actions(data: valueof ActionMetadata)

Target

Namespace

Parameters

Nombre Tipo Description
data valueof ActionMetadata Metadatos de acción, incluidos nombres legibles, descripciones y direcciones URL.

Modelos

ActionMetadata

Metadatos de acción, incluidos nombres legibles, descripciones y direcciones URL.

Nombre Tipo Descripción
descriptionForHuman string Obligatorio. Descripción legible del complemento. Los caracteres posteriores a 100 PUEDEN omitirse. Esta propiedad es localizable.
nameForHuman string Obligatorio. Un nombre corto y legible para el complemento. DEBE contener al menos un carácter nowhitespace. Los caracteres posteriores a 20 PUEDEN omitirse. Esta propiedad es localizable.
contactEmail string Opcional. Dirección de correo electrónico de un contacto para seguridad/moderación, soporte técnico y desactivación.
descriptionForModel string Opcional. Descripción del complemento que se proporciona al modelo. Esta descripción debe describir para qué es el complemento y, en qué circunstancias, sus funciones son pertinentes. Los caracteres posteriores a 2048 PUEDEN omitirse. Esta propiedad es localizable.
legalInfoUrl string Opcional. Dirección URL absoluta que busca un documento que contiene los términos de servicio del complemento. Esta propiedad es localizable.
logoUrl string Opcional. Dirección URL usada para capturar un logotipo que puede usar el orquestador. Las implementaciones PUEDEN proporcionar métodos alternativos para proporcionar logotipos que cumplan sus requisitos visuales. Esta propiedad es localizable.
privacyPolicyUrl string Opcional. Dirección URL absoluta que busca un documento que contiene la directiva de privacidad del complemento. Esta propiedad es localizable.

Ejemplos

// 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

Define el identificador de referencia de autenticación para el tipo de autenticación.

@authReferenceId(value: valueof string)

Target

Model

Parameters

Nombre Tipo Description
value valueof string Identificador de referencia del almacén para el tipo de autenticación.

Ejemplos

// 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

Admite el objeto de funcionalidades de una función de acción tal como se define en el objeto de manifiesto del complemento de API . Puede usar este decorador para definir tarjetas adaptables sencillas con definiciones pequeñas como confirmation. Para tarjetas adaptables más complejas, puede usar el @card decorador.

@capabilities(capabilities: valueof FunctionCapabilitiesMetadata)

Target

Operation

Parameters

Nombre Tipo Description
capabilities valueof FunctionCapabilitiesMetadata Contiene una colección de datos que se usan para configurar funcionalidades opcionales del orquestador al invocar la función.

Modelos

Funcionalidades de funciónMetadata

Contiene una colección de datos que se usan para configurar funcionalidades opcionales del orquestador al invocar la función.

Nombre Tipo Description
confirmation Confirmación Opcional. Describe un cuadro de diálogo de confirmación que DEBE presentarse al usuario antes de invocar la función.
responseSemantics ResponseSemantics Opcional. Describe cómo el orquestador puede interpretar la carga de respuesta y proporcionar una representación visual.
securityInfo SecurityInfo Opcional. Contiene atestaciones sobre el comportamiento del complemento con el fin de evaluar los riesgos de llamar a la función. Si se omite esta propiedad, la función no puede interactuar con otros complementos o funcionalidades del agente contenedor.
Confirmación

Describe cómo el orquestador pide al usuario que confirme antes de llamar a una función.

Nombre Tipo Description
body string Opcional. Texto del cuadro de diálogo de confirmación. Esta propiedad es localizable.
title string Opcional. Título del cuadro de diálogo de confirmación. Esta propiedad es localizable.
type string Opcional. Especifica el tipo de confirmación. Los valores posibles son: None, AdaptiveCard.
ResponseSemantics

Contiene información para identificar la semántica de la carga de respuesta y habilitar la representación de esa información en una experiencia visual enriquecida mediante tarjetas adaptables.

Nombre Tipo Descripción
dataPath string Obligatorio. Una consulta JSONPath RFC9535 que identifica un conjunto de elementos de la respuesta de función que se va a representar mediante la plantilla especificada en cada elemento.
oauthCardPath string Opcional.
properties ResponseSemanticsProperties Opcional. Permite la asignación de consultas JSONPath a elementos de datos conocidos. Cada consulta JSONPath es relativa a un valor de resultado.
staticTemplate Record<unknown> Opcional. Objeto JSON que se ajusta al esquema de tarjeta adaptable y al lenguaje de plantillas. Esta instancia de tarjeta adaptable se usa para representar un resultado de la respuesta del complemento. Este valor se usa si templateSelector no está presente o no se resuelve en una tarjeta adaptable.
ResponseSemanticsProperties

Permite la asignación de consultas JSONPath a elementos de datos conocidos. Cada consulta JSONPath es relativa a un valor de resultado.

Nombre Tipo Description
informationProtectionLabel string Opcional. Indicador de confidencialidad de datos del contenido del resultado.
subTitle string Opcional. Subtítulo de una cita para el resultado.
templateSelector string Opcional. Expresión JSONPath en una instancia de tarjeta adaptable que se va a usar para representar el resultado.
title string Opcional. Título de una cita para el resultado.
thumbnailUrl string Opcional. Dirección URL de una imagen en miniatura para el resultado.
url string Opcional. Dirección URL de una cita para el resultado.
SecurityInfo

Contiene información que se usa para determinar el riesgo relativo de invocar la función.

Nombre Tipo Descripción
dataHandling string[] Obligatorio. Matriz de cadenas que describen el comportamiento de control de datos de la función. Los valores válidos son GetPublicData, GetPrivateData, DataTransform, DataExporty ResourceStateUpdate.

Ejemplos

// 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

Define la referencia de tarjeta adaptable para una función.

@card(cardPath: valueof CardMetadata)

Target

Operation

Parameters

Nombre Tipo Description
cardPath valueof CardMetadata Define la referencia de tarjeta adaptable para una función. Versión simplificada de responseSemantics.

Modelos

CardMetadata

Respuesta simplificadaSemantics centrados en la tarjeta adaptable.

Nombre Tipo Descripción
dataPath string Obligatorio. Una consulta JSONPath RFC9535 que identifica un conjunto de elementos de la respuesta de función que se va a representar mediante la plantilla especificada en cada elemento.
file string Obligatorio. Ruta de acceso a la plantilla de tarjeta adaptable. En relación con el directorio appPackage.
properties CardResponseSemanticProperties Opcional. Permite la asignación de consultas JSONPath a elementos de datos conocidos. Cada consulta JSONPath es relativa a un valor de resultado.
CardResponseSemanticProperties

Permite la asignación de consultas JSONPath a elementos de datos conocidos para la representación de tarjetas. Cada consulta JSONPath es relativa a un valor de resultado.

Nombre Tipo Description
informationProtectionLabel string Opcional. Indicador de confidencialidad de datos del contenido del resultado.
subTitle string Opcional. Subtítulo de una cita para el resultado.
thumbnailUrl string Opcional. Dirección URL de una imagen en miniatura para el resultado.
title string Opcional. Título de una cita para el resultado.
url string Opcional. Dirección URL de una cita para el resultado.

Ejemplos

// 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

Define las instrucciones de razonamiento de una función dentro de una acción.

@reasoning(value: valueof string)

Target

Operation

Parameters

Nombre Tipo Description
value valueof string Instrucciones de razonamiento para la operación.

Ejemplos

// 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

Define las instrucciones de respuesta de una función dentro de una acción.

@responding(value: valueof string)

Target

Operation

Parameters

Nombre Tipo Description
value valueof string Instrucciones de respuesta para la operación.

Ejemplos

// 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.
""")