Freigeben über


Decorators für TypeSpec für Microsoft 365 Copilot

In dieser Referenz werden die integrierten Decorators behandelt, die in TypeSpec für Microsoft 365 Copilot verfügbar sind, geordnet nach ihrem primären Anwendungsfall.

Hinweis

Diese Decorator-Referenz konzentriert sich speziell auf die @microsoft/typespec-m365-copilot Decorators, aber Sie können alle in TypeSpec definierten Decorators verwenden, einschließlich integrierter Decorators und OpenAPI-Decorators.

Dekorateur Ziel Beschreibung
@agent Agent Definieren Sie einen Agent mit Name, Beschreibung und optionaler ID.
@behaviorOverrides Agent Ändern sie die Einstellungen für das Verhalten der Agentorchestrierung.
@conversationStarter Agent Definieren Sie Konversationsstartaufforderungen für Benutzer.
@customExtension Agent Fügen Sie benutzerdefinierte Schlüssel-Wert-Paare zur Erweiterbarkeit hinzu.
@disclaimer Agent Anzeigen rechtlicher oder Compliance-Haftungsausschlüsse für Benutzer.
@instructions Agent Definieren Sie Verhaltensanweisungen und Richtlinien für den Agent.
@actions Plugin Definieren Sie Aktionsmetadaten, einschließlich Namen, Beschreibungen und URLs.
@authReferenceId Plugin Geben Sie die Authentifizierungsverweis-ID für den API-Zugriff an.
@capabilities Plugin Konfigurieren Sie Funktionen wie Bestätigungen und Antwortformatierung.
@Karte Plugin Definieren sie Vorlagen für adaptive Karten für Funktionsantworten.
@reasoning Plugin Geben Sie Anweisungen zur Begründung für den Funktionsaufruf an.
@responding Plugin Definieren Sie Anweisungen zur Antwortformatierung für Funktionen.

Deklarative Agent-Decorators

Diese Decorators werden beim Erstellen deklarativer Agents verwendet, um das Verhalten des Agents, den Konversationsfluss und die Benutzererfahrung zu definieren.

@agent

Gibt an, dass ein Namespace einen Agent darstellt.

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

Ziel

Namespace

Parameter

Name Typ Beschreibung
description Valueof string Lokalisierbare. Die Beschreibung des deklarativen Agents. Sie MUSS mindestens ein Zeichen ohne Leerzeichen enthalten und darf maximal 1.000 Zeichen umfassen.
id Valueof string Optional. Der eindeutige Bezeichner des Agents.
name Valueof string Lokalisierbare. Der Name des deklarativen Agents. Sie MUSS mindestens ein Zeichen ohne Leerzeichen enthalten und muss maximal 100 Zeichen umfassen.

Beispiele

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

Definieren Sie Einstellungen, die das Verhalten der Agentorchestrierung ändern.

@behaviorOverrides(behaviorOverrides: valueof BehaviorOverrides)

Ziel

Namespace

Parameter

Name Typ Beschreibung
behaviorOverrides valueof BehaviorOverrides Definieren Sie Einstellungen, die das Verhalten der Agentorchestrierung ändern.

Modelle

BehaviorOverrides

Definieren von Einstellungen, die das Verhalten der Agentorchestrierung ändern

Name Typ Beschreibung
discourageModelKnowledge boolean Ein boolescher Wert, der angibt, ob der deklarative Agent nicht von der Verwendung von Modellwissen beim Generieren von Antworten abgeraten werden soll.
disableSuggestions boolean Ein boolescher Wert, der angibt, ob das Feature "Vorschläge" deaktiviert ist.

Beispiele

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

Gibt an, dass ein Namespace einen Konversationsstarter enthält.

@conversationStarter(conversationStarter: valueof ConversationStarter)

Ziel

Namespace

Parameter

Name Typ Beschreibung
conversationStarter valueof ConversationStarter Die Informationen zum Unterhaltungsstart.

Modelle

ConversationStarter

Konfigurationsobjekt, das einen Unterhaltungsstarter für Benutzer definiert.

Name Typ Beschreibung
text string Lokalisierbare. Ein Vorschlag, den der Benutzer verwenden kann, um das gewünschte Ergebnis aus dem DC zu erhalten. Es MUSS mindestens ein Zeichen enthalten, das nicht weiß ist.
title string Lokalisierbare. Ein eindeutiger Titel für den Unterhaltungsstart. Es MUSS mindestens ein Zeichen enthalten, das nicht weiß ist.

Beispiele

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

Gibt an, dass ein Namespace eine benutzerdefinierte Erweiterung mit einem Schlüssel-Wert-Paar zur Erweiterbarkeit enthält.

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

Ziel

Namespace

Parameter

Name Typ Beschreibung
key Valueof string Der Schlüssel für die benutzerdefinierte Erweiterung.
value Valueof unknown Der Wert für die benutzerdefinierte Erweiterung. Kann ein beliebiger gültiger TypeSpec-Wert sein.

Beispiele

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

Ein optionales Objekt, das eine Haftungsausschlussmeldung enthält, die Benutzern zu Beginn einer Unterhaltung angezeigt wird, um gesetzliche oder Complianceanforderungen zu erfüllen.

@disclaimer(disclaimer: valueof Disclaimer)

Ziel

Namespace

Parameter

Name Typ Beschreibung
disclaimer valueof Haftungsausschluss Die Haftungsausschlussinformationen, die Benutzern angezeigt werden.

Modelle

Haftungsausschluss

Die Haftungsausschlussinformationen, die Benutzern angezeigt werden.

Name Typ Beschreibung
text string Eine Zeichenfolge, die die Haftungsausschlussmeldung enthält. Es MUSS mindestens ein Zeichen enthalten, das nicht weiß ist. Zeichen, die über 500 hinausgehen, können ignoriert werden.

Beispiele

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

Definiert die Anweisungen, die das Verhalten eines Agents definieren.

@instructions(instructions: valueof string)

Ziel

Namespace

Parameter

Name Typ Beschreibung
instructions Valueof string Nicht lokalisierbar. Die detaillierten Anweisungen oder Richtlinien zum Verhalten des deklarativen Agents, seiner Funktionen und zu vermeidenden Verhaltensweisen. Sie MUSS mindestens ein Zeichen ohne Leerzeichen enthalten und DARF maximal 8.000 Zeichen umfassen.

Beispiele

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

API-Plug-In-Decorators

Diese Decorators werden beim Erstellen von API-Plug-Ins verwendet, um API-Vorgänge, Authentifizierung und Antwortverarbeitung zu definieren.

@actions

Definiert die Aktion, die für ein Infoobjekt in einer OpenAPI-Spezifikation definiert werden kann.

@actions(data: valueof ActionMetadata)

Ziel

Namespace

Parameter

Name Typ Beschreibung
data valueof ActionMetadata Die Aktionsmetadaten, einschließlich lesbarer Namen, Beschreibungen und URLs.

Modelle

ActionMetadata

Die Aktionsmetadaten, einschließlich lesbarer Namen, Beschreibungen und URLs.

Name Typ Beschreibung
descriptionForHuman string Erforderlich. Eine lesbare Beschreibung des Plug-Ins. Zeichen, die über 100 hinausgehen, können ignoriert werden. Diese Eigenschaft kann lokalisiert werden.
nameForHuman string Erforderlich. Ein kurzer, für Menschen lesbarer Name für das Plug-In. Es MUSS mindestens ein Zeichen enthalten, das nicht weiß ist. Zeichen, die über 20 hinausgehen, können ignoriert werden. Diese Eigenschaft kann lokalisiert werden.
contactEmail string Optional. Eine E-Mail-Adresse eines Kontakts für Sicherheit/Moderation, Support und Deaktivierung.
descriptionForModel string Optional. Die Beschreibung für das Plug-In, das für das Modell bereitgestellt wird. Diese Beschreibung sollte beschreiben, wofür das Plug-In vorgesehen ist und unter welchen Umständen seine Funktionen relevant sind. Zeichen, die über 2048 hinausgehen, können ignoriert werden. Diese Eigenschaft kann lokalisiert werden.
legalInfoUrl string Optional. Eine absolute URL, die ein Dokument mit den Nutzungsbedingungen für das Plug-In sucht. Diese Eigenschaft kann lokalisiert werden.
logoUrl string Optional. Eine URL, die zum Abrufen eines Logos verwendet wird, das möglicherweise vom Orchestrator verwendet wird. Implementierungen KÖNNEN alternative Methoden bereitstellen, um Logos bereitzustellen, die ihren visuellen Anforderungen entsprechen. Diese Eigenschaft kann lokalisiert werden.
privacyPolicyUrl string Optional. Eine absolute URL, die ein Dokument mit der Datenschutzrichtlinie für das Plug-In sucht. Diese Eigenschaft kann lokalisiert werden.

Beispiele

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

Definiert die Authentifizierungsverweis-ID für den Authentifizierungstyp.

@authReferenceId(value: valueof string)

Ziel

Model

Parameter

Name Typ Beschreibung
value Valueof string Die Tresorverweis-ID für den Authentifizierungstyp.

Beispiele

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

Unterstützung des Funktionsobjekts einer Aktionsfunktion, wie im Manifestobjekt des API-Plug-Ins definiert. Sie können diesen Decorator verwenden, um einfache adaptive Karten mit kleinen Definitionen wie zu confirmationdefinieren. Für komplexere adaptive Karten können Sie den @card Decorator verwenden.

@capabilities(capabilities: valueof FunctionCapabilitiesMetadata)

Ziel

Operation

Parameter

Name Typ Beschreibung
capabilities valueof FunctionCapabilitiesMetadata Enthält eine Sammlung von Daten, die zum Konfigurieren optionaler Funktionen des Orchestrators beim Aufrufen der Funktion verwendet werden.

Modelle

FunctionCapabilitiesMetadata

Enthält eine Sammlung von Daten, die zum Konfigurieren optionaler Funktionen des Orchestrators beim Aufrufen der Funktion verwendet werden.

Name Typ Beschreibung
confirmation Bestätigung Optional. Beschreibt ein Bestätigungsdialogfeld, das dem Benutzer vor dem Aufrufen der Funktion angezeigt werden soll.
responseSemantics ResponseSemantics Optional. Beschreibt, wie der Orchestrator die Antwortnutzlast interpretieren und ein visuelles Rendering bereitstellen kann.
securityInfo SecurityInfo Optional. Enthält Nachweise über das Verhalten des Plug-Ins, um die Risiken des Aufrufs der Funktion zu bewerten. Wenn diese Eigenschaft nicht angegeben wird, kann die Funktion nicht mit anderen Plug-Ins oder Funktionen des enthaltenden Agents interagieren.
Bestätigung

Beschreibt, wie der Orchestrator den Benutzer vor dem Aufrufen einer Funktion zur Bestätigung auffordert.

Name Typ Beschreibung
body string Optional. Der Text des Bestätigungsdialogfelds. Diese Eigenschaft kann lokalisiert werden.
title string Optional. Der Titel des Bestätigungsdialogfelds. Diese Eigenschaft kann lokalisiert werden.
type string Optional. Gibt den Typ der Bestätigung an. Mögliche Werte sind: None, AdaptiveCard.
ResponseSemantics

Enthält Informationen, um die Semantik der Antwortnutzlast zu identifizieren und das Rendern dieser Informationen in einer umfassenden visuellen Umgebung mithilfe adaptiver Karten zu ermöglichen.

Name Typ Beschreibung
dataPath string Erforderlich. Eine JSONPath-RFC9535 Abfrage, die einen Satz von Elementen aus der Funktionsantwort identifiziert, die mithilfe der in den einzelnen Elementen angegebenen Vorlage gerendert werden sollen.
oauthCardPath string Optional.
properties ResponseSemanticsProperties Optional. Ermöglicht die Zuordnung von JSONPath-Abfragen zu bekannten Datenelementen. Jede JSONPath-Abfrage ist relativ zu einem Ergebniswert.
staticTemplate Record<unknown> Optional. Ein JSON-Objekt, das dem Schema und der Vorlagensprache für adaptive Karten entspricht. Diese adaptive Karte instance wird verwendet, um ein Ergebnis aus der Plug-In-Antwort zu rendern. Dieser Wert wird verwendet, wenn templateSelector nicht vorhanden ist oder nicht in eine adaptive Karte aufgelöst werden kann.
ResponseSemanticsProperties

Ermöglicht die Zuordnung von JSONPath-Abfragen zu bekannten Datenelementen. Jede JSONPath-Abfrage ist relativ zu einem Ergebniswert.

Name Typ Beschreibung
informationProtectionLabel string Optional. Datenempfindlichkeitsindikator des Ergebnisinhalts.
subTitle string Optional. Untertitel eines Zitats für das Ergebnis.
templateSelector string Optional. Ein JSONPath-Ausdruck für eine adaptive Karte instance zum Rendern des Ergebnisses verwendet werden.
title string Optional. Titel eines Zitats für das Ergebnis.
thumbnailUrl string Optional. URL eines Miniaturbilds für das Ergebnis.
url string Optional. URL eines Zitats für das Ergebnis.
SecurityInfo

Enthält Informationen, die verwendet werden, um das relative Risiko des Aufrufens der Funktion zu bestimmen.

Name Typ Beschreibung
dataHandling string[] Erforderlich. Ein Array von Zeichenfolgen, die das Datenverarbeitungsverhalten der Funktion beschreiben. Gültige Werte sind GetPublicData, GetPrivateData, DataTransform, DataExportund ResourceStateUpdate.

Beispiele

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

Definiert den adaptiven Karte-Verweis für eine Funktion.

@card(cardPath: valueof CardMetadata)

Ziel

Operation

Parameter

Name Typ Beschreibung
cardPath valueof CardMetadata Definiert den adaptiven Karte-Verweis für eine Funktion. Vereinfachte Version von responseSemantics.

Modelle

CardMetadata

Simplified responseSemantics konzentrierte sich auf die adaptive Karte.

Name Typ Beschreibung
dataPath string Erforderlich. Eine JSONPath-RFC9535 Abfrage, die einen Satz von Elementen aus der Funktionsantwort identifiziert, die mithilfe der in den einzelnen Elementen angegebenen Vorlage gerendert werden sollen.
file string Erforderlich. Pfad zur Vorlage für adaptive Karte. Relativ zum Verzeichnis appPackage.
properties CardResponseSemanticProperties Optional. Ermöglicht die Zuordnung von JSONPath-Abfragen zu bekannten Datenelementen. Jede JSONPath-Abfrage ist relativ zu einem Ergebniswert.
CardResponseSemanticProperties

Ermöglicht die Zuordnung von JSONPath-Abfragen zu bekannten Datenelementen für Karte Rendering. Jede JSONPath-Abfrage ist relativ zu einem Ergebniswert.

Name Typ Beschreibung
informationProtectionLabel string Optional. Datenempfindlichkeitsindikator des Ergebnisinhalts.
subTitle string Optional. Untertitel eines Zitats für das Ergebnis.
thumbnailUrl string Optional. URL eines Miniaturbilds für das Ergebnis.
title string Optional. Titel eines Zitats für das Ergebnis.
url string Optional. URL eines Zitats für das Ergebnis.

Beispiele

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

Definiert die Argumentationsanweisungen einer Funktion innerhalb einer Aktion.

@reasoning(value: valueof string)

Ziel

Operation

Parameter

Name Typ Beschreibung
value Valueof string Die Begründungsanweisungen für den Vorgang.

Beispiele

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

Definiert die Antwortanweisungen einer Funktion innerhalb einer Aktion.

@responding(value: valueof string)

Ziel

Operation

Parameter

Name Typ Beschreibung
value Valueof string Die Antwortanweisungen für den Vorgang.

Beispiele

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