Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.
""")