Обзор функций приложения

Функции AppFunctions позволяют вашему Android-приложению совместно использовать определенные элементы функциональности, которые система, а также различные агенты и помощники искусственного интеллекта могут обнаруживать и вызывать. Определяя эти функции, вы позволяете своему приложению предоставлять сервисы, данные и действия операционной системе Android, позволяя пользователям выполнять задачи с помощью агентов ИИ и взаимодействия на системном уровне.

AppFunctions служат мобильным аналогом инструментов в рамках протокола Model Context Protocol (MCP) . В то время как MCP традиционно стандартизирует способы подключения агентов к серверным инструментам, AppFunctions предоставляют тот же механизм для приложений Android. Это позволяет вам предоставлять доступ к возможностям вашего приложения в виде оркестрируемых «инструментов», которые авторизованные приложения (вызывающие стороны) могут обнаруживать и выполнять для удовлетворения намерений пользователя. Вызывающие стороны должны иметь разрешение EXECUTE_APP_FUNCTIONS для обнаружения и выполнения AppFunctions и могут включать агентов, приложения и ИИ-помощников, таких как Gemini.

AppFunctions работает на устройствах под управлением Android 16 и выше.

Примеры вариантов использования

AppFunctions предоставляют мощный механизм для автоматизации задач и оптимизации взаимодействия с пользователем. Раскрывая возможности вашего приложения, вы позволяете пользователям достигать сложных целей, используя естественный язык, часто обходя необходимость пошаговой ручной навигации по пользовательскому интерфейсу.

Следующие сценарии иллюстрируют, как AppFunctions можно использовать для управления пользовательским опытом в различных категориях приложений:

  • Управление задачами и повышение производительности
    • Запрос пользователя : " Напомните мне забрать мою посылку на работе сегодня в 17:00 ".
    • Действие AppFunction : Вызывающая сторона определяет соответствующее приложение для управления задачами и вызывает функцию для создания задачи, автоматически заполняя поля заголовка, времени и местоположения на основе запроса пользователя.
  • СМИ и развлечения
    • Запрос пользователя : " Создать новый плейлист с лучшими джазовыми альбомами этого года ".
    • Действие AppFunction : Вызывающая сторона выполняет функцию создания плейлиста в музыкальном приложении, передавая контекст, например, "лучшие джазовые альбомы 2026 года", в качестве запроса для немедленной генерации и запуска контента.
  • Межприкладные рабочие процессы
    • Запрос пользователя : " Найти рецепт лапши в электронном письме Лизы и добавить ингредиенты в свой список покупок ".
    • Действие AppFunction : Этот запрос использует функции из нескольких приложений. Сначала вызывающая сторона использует функцию поиска в почтовом приложении для получения содержимого. Затем она извлекает соответствующие ингредиенты и вызывает функцию приложения для составления списка покупок, чтобы заполнить список пользователя.
  • Календарь и расписание
    • Запрос пользователя : " Добавить вечеринку по случаю дня рождения мамы в мой календарь на следующий понедельник в 18:00 ".
    • Действие AppFunction : Утвержденное агентское приложение вызывает функцию «создать событие» приложения календаря, анализируя соответствующий контекст, например, «следующий понедельник» и «18:00», чтобы создать запись без необходимости вручную открывать календарь пользователем.

Как работают функции приложения

AppFunctions — это функция платформы Android 16 и сопутствующая библиотека Jetpack , которая позволяет приложениям предоставлять доступ к определенным функциям для абонентов, например, приложениям операторов, и выполнять их на устройстве.

Следующая диаграмма иллюстрирует типичный процесс обмена функциями приложений (AppFunctions) между приложениями и агентом, а затем их выполнения. Агенты, как правило, рассматривают как удаленные инструменты MCP на стороне сервера, так и локальные функции приложений при обработке запросов пользователей. Подробный процесс использования локальных функций приложений выглядит следующим образом:

  • Объявление AppFunction : Приложение для Android создано таким образом, чтобы предоставлять доступ к своим функциям AppFunction, таким как «Создать заметку» или «Отправить сообщение».
  • Генерация схемы : Библиотека AppFunctions Jetpack генерирует XML-файл схемы, в котором перечислены все объявленные функции AppFunctions в приложении. Этот файл используется операционной системой Android для индексации доступных функций AppFunctions.
  • Получение метаданных : Агент может получить метаданные AppFunction, отправив запрос.
  • Выбор и выполнение функции приложения : На основе подсказок пользователя агент выберет и выполнит соответствующую функцию приложения с соответствующими параметрами.
Диаграмма, показывающая типичный поток выполнения функций приложения (AppFunctions) от момента запуска приложения до выполнения агентом.
Рисунок 1 : Типичная схема предоставления и последующего выполнения AppFunctions агентом.

Библиотека AppFunctions Jetpack упрощает предоставление доступа к функциональности вашего приложения. С помощью обработчика аннотаций разработчики аннотируют функции, которые они хотят предоставить. Затем вызывающие стороны могут обнаруживать и вызывать эти индексированные функции, используя AppFunctionManager .

Перед вызовом функции необходимо убедиться, что устройство поддерживает функцию AppFunctions, попытавшись получить экземпляр AppFunctionManager . После подтверждения поддержки можно проверить, включена ли конкретная функция в целевом приложении, используя isAppFunctionEnabled(packageName, functionId) . Для запроса статуса функций в других пакетах требуется android.permission.EXECUTE_APP_FUNCTIONS permission .

Вашему приложению не требуется проверять, поддерживается ли функция AppFunction; это автоматически обрабатывается библиотекой Jetpack. Например, AppFunctionManager может проверить, поддерживается ли эта функция.

Вот пример AppFunctions для приложения для создания заметок с возможностями создания, редактирования и отображения списков заметок:

/**
 * A note app's [AppFunction]s.
 */
class NoteFunctions(
    private val noteRepository: NoteRepository
) {
    /**
     * Lists all available notes.
     *
     * @param appFunctionContext The context in which the AppFunction is executed.
     */
    @AppFunction(isDescribedByKDoc = true)
    suspend fun listNotes(appFunctionContext: AppFunctionContext): List<Note>? {
        return noteRepository.appNotes.ifEmpty { null }?.toList()
    }

    /**
     * Adds a new note to the app.
     *
     * @param appFunctionContext The context in which the AppFunction is executed.
     * @param title The title of the note.
     * @param content The note's content.
     */
    @AppFunction(isDescribedByKDoc = true)
    suspend fun createNote(
        appFunctionContext: AppFunctionContext,
        title: String,
        content: String
    ): Note {
        return noteRepository.createNote(title, content)
    }

    /**
     * Edits a single note.
     *
     * @param appFunctionContext The context in which the AppFunction is executed.
     * @param noteId The target note's ID.
     * @param title The note's title if it should be updated.
     * @param content The new content if it should be updated.
     */
    @AppFunction(isDescribedByKDoc = true)
    suspend fun editNote(
        appFunctionContext: AppFunctionContext,
        noteId: Int,
        title: String?,
        content: String?,
    ): Note? {
        return noteRepository.updateNote(noteId, title, content)
    }
}

/**
 * A note.
 */
@AppFunctionSerializable(isDescribedByKDoc = true)
data class Note(
    /** The note's identifier */
    val id: Int,
    /** The note's title */
    val title: String,
    /** The note's content */
    val content: String
)

Часто задаваемые вопросы

В следующем разделе рассматриваются часто задаваемые вопросы об AppFunctions.

В: Я разработчик приложений. Могу ли я внедрить AppFunctions уже сегодня?

A : Да, можно реализовать и протестировать AppFunctions в вашем приложении, следуя инструкциям, подробно описанным в предыдущих разделах.

В: Я реализовал AppFunctions в своем приложении. Почему мой системный агент не может получить к ним доступ?

A : Функции приложений (AppFunctions) — это экспериментальная функция. Для тщательной оценки качества общего взаимодействия на этом экспериментальном этапе доступ ко всему конвейеру обработки данных имеет лишь ограниченное количество приложений и системных агентов.

В: Я разрабатываю агента. Могу ли я получить доступ к функциям приложения, предоставляемым другими приложениями?

A : Ваш тестовый агент может получить доступ к AppFunctions в среде разработки. На этом экспериментальном этапе только ограниченное количество системных агентов может получить доступ к AppFunctions и выполнять их в производственной среде.

В: Какие системные агенты имеют доступ к AppFunctions?

A : Доступ ко всему конвейеру обработки данных имеет лишь ограниченное число системных агентов, в то время как функции приложений (AppFunctions) находятся в экспериментальном режиме.

В: Как подготовить мое приложение к общедоступной версии AppFunctions?

A : Подумайте, какие функции вашего приложения вы хотите предоставить для автоматизации с помощью агентов. Вы можете реализовать AppFunctions в своем приложении. Для этого выполните действия, описанные в предыдущих разделах этой страницы, и убедитесь, что они зарегистрированы на устройстве, вызвав команду adb shell cmd app_function list-app-functions .

В: Могу ли я получить ранний доступ к полному циклу разработки агентских приложений?

A : Мы проводим программу раннего доступа (EAP), чтобы подключить избранные приложения для тестирования полного цикла разработки, необходимого для запуска AppFunctions в продакшене на Android. Вы можете зарегистрировать свою заинтересованность в интеграции вашего приложения AppFunctions, заполнив эту форму регистрации EAP . Регистрация вашей заинтересованности НЕ гарантирует автоматическое получение доступа к полной интеграции. Мы отправим вам электронное письмо, если ваше приложение будет выбрано для участия в программе EAP, или сообщим, когда AppFunctions станет общедоступным.

В: Как я могу оставить отзыв о AppFunctions?

A : Вы можете оставить отзыв об API, создав заявку и зарегистрировав свой интерес в форме программы раннего доступа.