Декораторы для TypeSpec для #REF!

В этом справочнике рассматриваются встроенные декораторы, доступные в 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.
""")