Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом справочнике рассматриваются встроенные декораторы, доступные в TypeSpec для #REF!, упорядоченные по их основному варианту использования.
Примечание.
Эта ссылка на декоратор ориентирована конкретно на @microsoft/typespec-m365-copilot декораторы, но вы можете использовать все декораторы, определенные в TypeSpec, включая встроенные декораторы и декораторы OpenAPI.
| Декоратор | Target | Описание |
|---|---|---|
| @agent | Агент | Определите агент с именем, описанием и необязательным идентификатором. |
| @behaviorOverrides | Агент | Изменение параметров поведения оркестрации агента. |
| @conversationStarter | Агент | Определение начальных запросов диалога для пользователей. |
| @customExtension | Агент | Добавьте пользовательские пары "ключ-значение" для расширяемости. |
| @disclaimer | Агент | Отображение юридических или нормативных заявлений об отказе от ответственности для пользователей. |
| @instructions | Агент | Определите инструкции и рекомендации по поведению для агента. |
| @actions | Плагин | Определите метаданные действия, включая имена, описания и URL-адреса. |
| @authReferenceId | Плагин | Укажите идентификатор ссылки на проверку подлинности для доступа к API. |
| @capabilities | Плагин | Настройте такие функции, как подтверждения и форматирование ответов. |
| @карта | Плагин | Определение шаблонов адаптивных карточек для ответов функций. |
| @reasoning | Плагин | Предоставьте инструкции по аргументации функции. |
| @responding | Плагин | Определите инструкции по форматированию ответа для функций. |
Декораторы декларативных агентов
Эти декораторы используются при создании декларативных агентов для определения поведения агента, потока общения и взаимодействия с пользователем.
@agent
Указывает, что пространство имен представляет агент.
@agent(name: valueof string, description: valueof string, id?: valueof string)
Target
Namespace
Параметры
| Имя | Тип | Описание |
|---|---|---|
description |
valueof string |
Локализуемые. Описание декларативного агента. Он должен содержать по крайней мере один символ nonwhitespace и должен содержать не более 1000 символов. |
id |
valueof string |
Необязательный параметр. Уникальный идентификатор агента. |
name |
valueof string |
Локализуемые. Имя декларативного агента. Он должен содержать по крайней мере один символ nonwhitespace и должен содержать не более 100 символов. |
Примеры
// 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
Определите параметры, изменяющие поведение оркестрации агента.
@behaviorOverrides(behaviorOverrides: valueof BehaviorOverrides)
Target
Namespace
Параметры
| Имя | Тип | Описание |
|---|---|---|
behaviorOverrides |
valueof BehaviorOverrides | Определите параметры, изменяющие поведение оркестрации агента. |
Модели
BehaviorOverrides
Определение параметров, изменяющих поведение оркестрации агента
| Имя | Тип | Описание |
|---|---|---|
discourageModelKnowledge |
boolean |
Логическое значение, указывающее, не рекомендуется ли декларативному агенту использовать знания модели при создании ответов. |
disableSuggestions |
boolean |
Логическое значение, указывающее, отключена ли функция предложений. |
Примеры
// 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
Указывает, что пространство имен содержит начальный элемент диалога.
@conversationStarter(conversationStarter: valueof ConversationStarter)
Target
Namespace
Параметры
| Имя | Тип | Описание |
|---|---|---|
conversationStarter |
valueof ConversationStarter | Сведения о начале беседы. |
Модели
ConversationStarter
Объект конфигурации, определяющий начальную беседу для пользователей.
| Имя | Тип | Описание |
|---|---|---|
text |
string |
Локализуемые. Предложение, которое пользователь может использовать для получения требуемого результата от контроллера домена. Он должен содержать по крайней мере один символ nonwhitespace. |
title |
string |
Локализуемые. Уникальное название для начала беседы. Он должен содержать по крайней мере один символ nonwhitespace. |
Примеры
// 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
Указывает, что пространство имен содержит пользовательское расширение с парой "ключ-значение" для расширяемости.
@customExtension(key: valueof string, value: valueof unknown)
Target
Namespace
Параметры
| Имя | Тип | Описание |
|---|---|---|
key |
valueof string |
Ключ для настраиваемого расширения. |
value |
valueof unknown |
Значение настраиваемого расширения. Может быть любым допустимым значением TypeSpec. |
Примеры
// 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
Необязательный объект, содержащий сообщение об отказе от ответственности, которое, если оно предоставлено, отображается пользователям в начале беседы в соответствии с юридическими требованиями или требованиями к соответствию.
@disclaimer(disclaimer: valueof Disclaimer)
Target
Namespace
Параметры
| Имя | Тип | Описание |
|---|---|---|
disclaimer |
Valueof Отказ от ответственности | Сведения об отказе от ответственности, отображаемые пользователям. |
Модели
Заявление об отказе от ответственности
Сведения об отказе от ответственности, отображаемые пользователям.
| Имя | Тип | Описание |
|---|---|---|
text |
string |
Строка, содержащая сообщение об отказе от ответственности. Он должен содержать по крайней мере один символ nonwhitespace. Символы, превышающие 500, могут игнорироваться. |
Примеры
// 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
Определяет инструкции, определяющие поведение агента.
@instructions(instructions: valueof string)
Target
Namespace
Параметры
| Имя | Тип | Описание |
|---|---|---|
instructions |
valueof string |
Не локализуемо. Подробные инструкции или рекомендации о том, как должен вести себя декларативный агент, его функции и любые действия, которые следует избежать. Он должен содержать по крайней мере один символ nonwhitespace и должен содержать не более 8000 символов. |
Примеры
// 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
Эти декораторы используются при создании подключаемых модулей API для определения операций API, проверки подлинности и обработки ответов.
@actions
Определяет действие, которое может быть определено для объекта info в спецификации OpenAPI.
@actions(data: valueof ActionMetadata)
Target
Namespace
Параметры
| Имя | Тип | Описание |
|---|---|---|
data |
valueof ActionMetadata | Метаданные действия, включая доступные для чтения имена, описания и URL-адреса. |
Модели
ActionMetadata
Метаданные действия, включая доступные для чтения имена, описания и URL-адреса.
| Имя | Тип | Описание |
|---|---|---|
descriptionForHuman |
string |
Обязательно. Понятное описание подключаемого модуля. Символы, превышающие 100, могут игнорироваться. Это свойство локализуется. |
nameForHuman |
string |
Обязательно. Короткое, понятное для пользователя имя подключаемого модуля. Он должен содержать по крайней мере один символ nonwhitespace. Символы, превышающие 20, могут игнорироваться. Это свойство локализуется. |
contactEmail |
string |
Необязательный параметр. Адрес электронной почты контактного лица для обеспечения безопасности, модерации, поддержки и деактивации. |
descriptionForModel |
string |
Необязательный параметр. Описание подключаемого модуля, предоставленного модели. В этом описании должно быть описано, для чего предназначен подключаемый модуль и в каких обстоятельствах его функции актуальны. Символы после версии 2048 могут игнорироваться. Это свойство локализуется. |
legalInfoUrl |
string |
Необязательный параметр. Абсолютный URL-адрес, который находит документ, содержащий условия обслуживания для подключаемого модуля. Это свойство локализуется. |
logoUrl |
string |
Необязательный параметр. URL-адрес, используемый для получения логотипа, который может использоваться оркестратором. Реализации могут предоставлять альтернативные методы для предоставления логотипов, соответствующих их визуальным требованиям. Это свойство локализуется. |
privacyPolicyUrl |
string |
Необязательный параметр. Абсолютный URL-адрес, который находит документ, содержащий политику конфиденциальности для подключаемого модуля. Это свойство локализуется. |
Примеры
// 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
Определяет идентификатор ссылки на проверку подлинности для типа проверки подлинности.
@authReferenceId(value: valueof string)
Target
Model
Параметры
| Имя | Тип | Описание |
|---|---|---|
value |
valueof string |
Идентификатор ссылки на хранилище для типа проверки подлинности. |
Примеры
// 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
Поддержка объекта возможностей функции действия, определенного в объекте манифеста подключаемого модуля . Этот декоратор можно использовать для определения простых адаптивных карточек с небольшими определениями, такими как confirmation. Для более сложных адаптивных карточек можно использовать @card декоратор.
@capabilities(capabilities: valueof FunctionCapabilitiesMetadata)
Target
Operation
Параметры
| Имя | Тип | Описание |
|---|---|---|
capabilities |
valueof FunctionCapabilitiesMetadata | Содержит коллекцию данных, используемых для настройки необязательных возможностей оркестратора при вызове функции. |
Модели
FunctionCapabilitiesMetadata
Содержит коллекцию данных, используемых для настройки необязательных возможностей оркестратора при вызове функции.
| Имя | Тип | Описание |
|---|---|---|
confirmation |
Подтверждение | Необязательный параметр. Описывает диалоговое окно подтверждения, которое должно быть представлено пользователю перед вызовом функции. |
responseSemantics |
ResponseSemantics | Необязательный параметр. Описывает, как оркестратор может интерпретировать полезные данные ответа и предоставлять визуальную отрисовку. |
securityInfo |
SecurityInfo | Необязательный параметр. Содержит аттестации о поведении подключаемого модуля для оценки рисков вызова функции. Если это свойство пропущено, функция не может взаимодействовать с другими подключаемыми модулями или возможностями содержащего агента. |
Подтверждение
Описывает, как оркестратор запрашивает у пользователя подтверждение перед вызовом функции.
| Имя | Тип | Описание |
|---|---|---|
body |
string |
Необязательный параметр. Текст диалогового окна подтверждения. Это свойство локализуется. |
title |
string |
Необязательный параметр. Название диалогового окна подтверждения. Это свойство локализуется. |
type |
string |
Необязательный параметр. Указывает тип подтверждения. Возможные значения: None, AdaptiveCard. |
ResponseSemantics
Содержит сведения для определения семантики полезных данных ответа и включения отрисовки этой информации в богатом визуальном интерфейсе с помощью адаптивных карточек.
| Имя | Тип | Описание |
|---|---|---|
dataPath |
string |
Обязательно. Запрос JSONPath RFC9535, который определяет набор элементов из ответа функции для отображения с помощью шаблона, указанного в каждом элементе. |
oauthCardPath |
string |
Необязательный параметр. |
properties |
ResponseSemanticsProperties | Необязательный параметр. Позволяет сопоставлять запросы JSONPath с известными элементами данных. Каждый запрос JSONPath относительно результирующих значений. |
staticTemplate |
Record<unknown> |
Необязательный параметр. Объект JSON, соответствующий схеме адаптивной карточки и языку шаблонов. Этот экземпляр адаптивной карточки используется для отрисовки результата из ответа подключаемого модуля. Это значение используется, если шаблонSelector отсутствует или не удается разрешить адаптивный карта. |
ResponseSemanticsProperties
Позволяет сопоставлять запросы JSONPath с известными элементами данных. Каждый запрос JSONPath относительно результирующих значений.
| Имя | Тип | Описание |
|---|---|---|
informationProtectionLabel |
string |
Необязательный параметр. Индикатор конфиденциальности данных содержимого результата. |
subTitle |
string |
Необязательный параметр. Подзаголовок ссылки для результата. |
templateSelector |
string |
Необязательный параметр. Выражение JSONPath для экземпляра адаптивной карточки, используемого для отрисовки результата. |
title |
string |
Необязательный параметр. Заголовок ссылки на результат. |
thumbnailUrl |
string |
Необязательный параметр. URL-адрес эскиза для результата. |
url |
string |
Необязательный параметр. URL-адрес ссылки на результат. |
SecurityInfo
Содержит сведения об использовании для определения относительного риска вызова функции.
| Имя | Тип | Описание |
|---|---|---|
dataHandling |
string[] |
Обязательно. Массив строк, описывающих поведение функции по обработке данных. Допустимые значения: GetPublicData, GetPrivateData, DataTransform, DataExportи ResourceStateUpdate. |
Примеры
// 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
Определяет адаптивную карта ссылку для функции.
@card(cardPath: valueof CardMetadata)
Target
Operation
Параметры
| Имя | Тип | Описание |
|---|---|---|
cardPath |
valueof CardMetadata | Определяет адаптивную карта ссылку для функции. Упрощенная версия responseSemantics. |
Модели
CardMetadata
Упрощенные ответыСемантика ориентирована на адаптивный карта.
| Имя | Тип | Описание |
|---|---|---|
dataPath |
string |
Обязательно. Запрос JSONPath RFC9535, который определяет набор элементов из ответа функции для отображения с помощью шаблона, указанного в каждом элементе. |
file |
string |
Обязательно. Путь к шаблону адаптивного карта. Относительно каталога appPackage. |
properties |
CardResponseSemanticProperties | Необязательный параметр. Позволяет сопоставлять запросы JSONPath с известными элементами данных. Каждый запрос JSONPath относительно результирующих значений. |
CardResponseSemanticProperties
Позволяет сопоставлять запросы JSONPath с известными элементами данных для карта отрисовки. Каждый запрос JSONPath относительно результирующих значений.
| Имя | Тип | Описание |
|---|---|---|
informationProtectionLabel |
string |
Необязательный параметр. Индикатор конфиденциальности данных содержимого результата. |
subTitle |
string |
Необязательный параметр. Подзаголовок ссылки для результата. |
thumbnailUrl |
string |
Необязательный параметр. URL-адрес эскиза для результата. |
title |
string |
Необязательный параметр. Заголовок ссылки на результат. |
url |
string |
Необязательный параметр. URL-адрес ссылки на результат. |
Примеры
// 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
Определяет инструкции по логике функции в действии.
@reasoning(value: valueof string)
Target
Operation
Параметры
| Имя | Тип | Описание |
|---|---|---|
value |
valueof string |
Инструкции по рассуждениям для операции. |
Примеры
// 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
Определяет инструкции реагирования функции в действии.
@responding(value: valueof string)
Target
Operation
Параметры
| Имя | Тип | Описание |
|---|---|---|
value |
valueof string |
Инструкции по реагированию для операции. |
Примеры
// 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.
""")