Менеджер группы продуктов
Новая платформа Connected Apps Platform позволяет интегрировать сервисы вашего приложения напрямую в Gemini, режим ИИ в Поиске и систему искусственного интеллекта Android. На этом занятии мы расскажем, как начать работу с ними. На примерах кода и реальных кейсов мы рассмотрим жизненный цикл разработки: создание, тестирование и публикацию вашего первого подключенного приложения, которое поможет пользователям в их рабочих процессах на основе искусственного интеллекта.
К концу занятия вы научитесь:
destructiveHint, чтобы Gemini запрашивал явное подтверждение, когда действия изменяют или удаляют данные.Расшифровка
Всем привет.
Меня зовут Май, и я руководитель по продукту Connected Apps Platform в Gemini.
Позже вы также услышите Кейт, нашего инженера по связям с разработчиками.
Она сейчас поднимется.
Сегодня мы расскажем, как расширить возможности вашего приложения с помощью Gemini и Поиска – одних из самых популярных агентных продуктов Google.
Мы расскажем, почему подключенные приложения так полезны и удобны для пользователей.
И даже лучше, мы собираемся показать вам, что нужно для его создания.
Итак, начнем.
Многие из нас заметили, что в экосистеме приложений происходит что-то действительно масштабное.
То, как люди используют свои устройства, ищут ответы и решают задачи, не просто меняется.
Она фундаментально изменилась.
Люди больше не открывают браузеры и не нажимают на ссылки.
Они общаются напрямую с помощниками, такими как Gemini.
Они задают Gemini сложные вопросы, ищут ответы, используя мультимодальный поиск.
И они ожидают, что устройства Android будут не просто понимать, что они говорят, но и знать, что они хотят сделать.
Подумайте о некоторых из ваших собственных рабочих процессов, которые вы можете выполнять в любой день.
Допустим, вы попросили Gemini помочь вам придумать, как провести выходные с друзьями в определенном месте и в определенное время.
Современные модели могут обработать этот план за секунды.
Это потрясающе.
Организованность.
И что потом?
Она заканчивается.
Пользователь заходит в тупик и остается ни с чем, имея только план и ничего подтвержденного.
Модель знает, что делать, но у нее нет рук, чтобы это сделать.
Поэтому вам приходится копировать и вставлять информацию из чата с Gemini в другие приложения.
Иногда, если вы используете мобильное устройство, это становится очень неудобно.
Затем вам нужно запомнить всю информацию и ввести ее.
Этот когнитивный скачок и это трение полностью разрушают магию.
И что это значит для всех вас?
Это значит, что у вас есть спрос со стороны пользователей с ярко выраженным намерением, которые застряли в чате, вместо того чтобы привлекать в ваше приложение заинтересованных пользователей.
И именно поэтому подключенные приложения меняют правила игры, потому что они помогают нам встречать наших пользователей именно там, где они находятся.
И сейчас они проводят много времени, общаясь с такими помощниками, как Gemini.
Когда пользователь выражает реальное намерение совершить действие, это критически важный момент на его пути.
Они не просто просматривают контент.
У них есть конкретная задача, которую они хотят решить прямо сейчас.
Благодаря интеграции приложений с генеративными моделями помощники, такие как Gemini, могут не только отвечать на вопросы, но и выполнять задачи.
Когда пользователь просит составить список дел с приоритетами, хочет арендовать автомобиль для предстоящего путешествия или купить продукты для рецепта, который он только что нашел, ваше приложение не будет отображаться внизу страницы в виде статической ссылки.
Вы можете помочь им в этом и выполнить действие прямо сейчас.
И позвольте мне кое-что прояснить, потому что я знаю, что каждый разработчик и руководитель продукта думает об этом: подключенные приложения не предназначены для абстрагирования вашего приложения.
Ваш бренд, бизнес-логика, аутентифицированные отношения и пользовательский интерфейс принадлежат вам.
Подключенные приложения позволяют интегрировать ваши сервисы в API агентов, чтобы продукты Google на основе агентов могли легко направлять пользователей с ярко выраженным намерением прямо в ваш продукт.
Поэтому сегодня я с радостью объявляю о запуске Connected Apps Platform.
Раньше, чтобы охватить пользователей в разных продуктах Google, требовалось настраивать интеграцию с каждым из них.
Если вы хотите, чтобы действие или ярлык приложения Android работали, вам нужно их создать.
Ещё одна интеграция с Поиском.
Но мы хотим, чтобы вам было максимально удобно и интересно.
Поэтому мы стандартизировали процесс регистрации, чтобы вы могли запустить свое приложение в нескольких агентных продуктах Google через единую точку входа.
Теперь вы можете один раз создать функции приложения, используя стандартные декларативные схемы, и они сразу же станут доступны в двух наших ключевых продуктах – Gemini и Поиске.
Скоро появятся и другие продукты.
Давайте поговорим об этом охвате и о том, что он значит для вас.
Вам не нужно создавать несколько плагинов, управлять четырьмя разными консолями разработчика и поддерживать различные аутентифицированные рукопожатия, чтобы охватить пользователей Google на Android, в Gemini и Поиске.
На нашей единой платформе вы можете создать и зарегистрировать определения инструментов один раз.
Вы выбираете нужные продукты Google, а мы предоставляем вам единую кнопку запуска в новой Google Connected Console.
После публикации ваши функции станут доступны всем пользователям Gemini и Поиска.
Когда пользователи вводят запрос в Gemini на ноутбуке, ищут что-то в интернете или используют функции Ассистента на Android, они могут выбрать ваше приложение в самый подходящий момент и прямо там, где они находятся.
Поэтому мы будем открывать доступ к платформе поэтапно, начиная с предварительной версии.
Обещаю, что вся команда усердно работает над тем, чтобы как можно быстрее предоставить доступ к новым функциям как можно большему числу пользователей.
На этом этапе предварительной версии платформа доступна только разработчикам из США.
Чтобы получить доступ, заполните форму. Она есть в руководстве для разработчиков на сайте developers.google.com/connected-apps. Если вы разработчик Google Play, вы также можете найти ее на главной странице Google Play Console.
Следующий вопрос: насколько сложно создать такую модель?
Если у вас есть REST API или намерения Android, вы в хорошей стартовой позиции.
Мы опираемся на концепции, знакомые разработчикам.
Наша платформа интегрируется с протоколом контекста модели (MCP) через серверные и нативные MCP для Android.
Чтобы вам было ещё удобнее, мы запускаем в Gemini новую функцию – режим разработчика. Он уже доступен всем пользователям в США.
Это позволяет вам тестировать приложение в Gemini, получать отзывы в реальном времени о состояниях ошибок, задержках и ответах модели.
Скоро вы сможете генерировать собственные наборы для оценки, а также получать карточки с показателями качества и контрольные показатели.
Будет здорово!
Независимо от того, какой у вас уровень доступа к платформе, вы всегда можете протестировать приложение в режиме разработчика.
Уверен, что вы хотите узнать больше. Кейт выйдет на сцену сразу после меня и расскажет вам все подробности.
Но сначала я хочу поговорить о том, что становится все более важным, – о доверии пользователей.
Когда мы говорим о том, что агенты действуют от имени пользователя, первый вопрос, который часто возникает, – как сохранить контроль за пользователем.
Вот как мы смотрим на это в нескольких простых концепциях.
Во-первых, подтверждения зависят от уровня риска.
Мы не будем показывать всплывающее окно перед каждым вызовом инструмента.
Поиск информации, проверка меню, отслеживание заказа – все это должно быть простым.
Но если действие имеет реальные последствия, например редактирование общего файла, завершение бронирования или удаление чего-то, что пользователь не сможет легко вернуть, модель стремится попросить у пользователя явное согласие, прежде чем это произойдет.
Во-вторых, конфиденциальные данные показываются, а не скрываются.
Поэтому наши продукты разработаны так, чтобы проверять, какая личная информация может быть передана вашему приложению.
Если обнаруживается конфиденциальная информация, мы показываем пользователю, какие именно данные передаются, чтобы он мог решить, продолжать ли работу с вашим приложением.
В-третьих, когда мы спрашиваем, мы конкретны.
Мы не просто спрашиваем "Вы уверены?", а указываем, какое приложение запрашивает доступ и что именно оно хочет отправить или изменить.
Это поможет пользователю принять осознанное решение, а не просто нажать на кнопку.
А чтобы пользователям не приходилось постоянно подтверждать свои действия, мы даем им больше контроля над тем, как часто они видят запросы.
Например, в приложении Gemini пользователи могут выбирать для каждого приложения и даже для каждого действия, разрешать ли его всегда.
Поэтому мы просим вас честно указывать, какие инструменты вы использовали.
Отметьте, что доступно только для чтения, что изменяет данные, а что удаляет.
Эти сигналы помогают нашим продуктам решить, когда привлечь пользователя.
И снова Кейт покажет вам, как именно это сделать, всего за несколько минут.
Давайте вернемся к планированию поездки на выходные, о которой мы говорили.
Помните, как это было сложно и разрозненно?
У вас был отличный план для встречи с друзьями, но вы столкнулись с трудностями: вам пришлось копировать и вставлять информацию, переключаясь между приложениями.
Viator и Ticketmaster – два наших первых партнера, которые увидели реальную возможность обратиться к пользователям там, где они находятся.
Они решили сотрудничать с нами и убрать эту стену, позволив пользователю с ярко выраженным намерением перейти в приложение прямо из Gemini.
Благодаря подключенным приложениям, которые создали эти партнеры, весь процесс стал намного более плавным и беспроблемным.
Давайте посмотрим.
Пользователь подключает приложения и просит Gemini найти дневной гастротур на Viator и билеты на концерт на Ticketmaster для группы из четырех человек.
Gemini распознает запрос, обращается к Viator и Ticketmaster и передает им информацию о размере группы, датах и предпочтениях.
Не выходя из чата, оба приложения получают данные о доступности в реальном времени и отображают интерактивные элементы прямо в чате для пользователя.
Вместо того чтобы заходить в тупик и жонглировать кучей вкладок, Viator и Ticketmaster – это примеры партнеров, которые позволяют пользователям делать то, что им нужно, прямо по ходу дела: изучать остановки гастрономического тура, выбирать места на концерте и полностью беспрепятственно переходить от поиска к действию.
Итак, эра статичных панелей запуска приложений уходит в прошлое, уступая место интеллектуальным, проактивным и агентским возможностям.
Ваши пользователи уже обращаются за помощью к Поиску и Gemini.
Вместе мы можем помочь им выйти за рамки ответов и предоставить действительно мощный и волшебный опыт.
На этом у меня всё.
А теперь я передаю слово Кейт, которая расскажет, как создать подключенное приложение.
Поднимайтесь.
Всем привет.
Меня зовут Кейт, я инженер по связям с разработчиками. Я помогаю таким разработчикам, как вы, интегрировать свои продукты с Connected Apps Platform.
Я расскажу, как протестировать, создать и развернуть подключенное приложение.
Как ранее упомянула Май, есть два основных способа интеграции с Connected Apps Platform: через удаленный MCP-сервер с использованием протокола MCP или через Android MCP, когда вы можете создать удаленный MCP-сервер на устройстве с помощью библиотеки AppFunctions.
Рекомендуем использовать удаленные MCP-серверы, если вы хотите интегрировать платформы, например Android, iOS и веб-версию.
Некоторые разработчики также сообщили, что иногда предпочитают локальное выполнение, когда данные приложения доступны только на устройстве.
В таких случаях мы рекомендуем использовать Android MCP с библиотекой AppFunctions Jetpack.
Посмотрите выступление Дэна и Сары, в котором они подробно рассказывают, как интегрировать приложение с Connected Apps Platform с помощью AppFunctions и Android MCP.
Теперь давайте рассмотрим, как создать удаленный MCP-сервер.
Чтобы показать, как это работает на практике, мы создали официальное приложение AndroidDevSummit.
Давайте посмотрим, как это работает.
Давайте вернемся к демонстрации.
Например, вы можете спросить: "AndroidDevSummit, расскажи мне больше о сеансах XR".
Сейчас Gemini подключается к MCP-серверу, который мы создали для этого подключенного приложения.
Она находит нужный инструмент и использует его данные, чтобы составить понятный ответ.
Итак, он находит информацию о сеансах, связанных с XR, здесь для дня 1 и дня 2, и в конце он отображает наш собственный брендированный виджет для AndroidDevSummit с ботом Android.
Вы можете взаимодействовать с этим виджетом прямо в Gemini.
Вы можете посмотреть расписание, например, переключить местоположение или отфильтровать по дням.
Вы также можете фильтровать по разным темам, например, если я хочу искать сеансы, связанные с XR, а также просматривать подробности и докладчиков.
Ура!
Все это происходит в Gemini, вашем брендированном решении. Пользователям не нужно переключаться между приложениями или искать информацию в других источниках. Все доступно в одном месте, без необходимости выходить из приложения.
Давайте вернемся к слайдам.
Давайте посмотрим, как создать такое приложение.
Запустить MCP-сервер с помощью библиотеки FastMCP очень просто, но нужно следовать четырем важным рекомендациям.
Сначала нужно предоставить серверу явные инструкции.
from mcp.server.fastmcp import FastMCP
mcp = FastMCP(
name="ADS-MCP",
instructions=(
"A Model Context Protocol server providing event "
"overview, schedules, sessions, speakers, and "
"sandbox demos for the Android Developer Summit "
),
)При инициализации MCP-сервера всегда задавайте четкие инструкции, описывающие домен и возможности подключенных приложений.
Connected Apps Platform использует эти инструкции, чтобы определить, когда нужно делегировать задачу вашему серверу.
Кроме того, Google Connected Console, о которой я расскажу позже, также проверяет наличие этих инструкций.
Во-вторых, добавьте аннотации инструментов для безопасности и контроля.
@mcp.tool(
title="List Sessions",
annotations=ToolAnnotations(
readOnlyHint=True,
destructiveHint=False,
),
meta={ … },
)
def list_sessions( … )
…Для нашего сервера ADS у нас есть эти две аннотации.
Модели важно знать, когда инструмент работает в режиме только для чтения, а когда изменяет данные.
Поэтому, если у вас есть инструменты, которые редактируют или удаляют информацию о пользователях, всегда используйте destructiveHint, чтобы пометить их как инструменты, которые могут выполнять операции редактирования или удаления.
Таким образом платформа Connected Apps Platform узнает, что ей нужно показать пользователю сообщение с подтверждением, чтобы он мог выполнить это действие.
Вы также можете настроить инструменты в Google Connected Console. Я покажу, как это сделать, позже.
И в-третьих, строго типизированные схемы и семантические строки документации.
def list_sessions(
track: Optional[str] = None,
location: Optional[str] = None,
) -> List[Dict[str, Any]]:
"""Lists all sessions, optionally filtered by track
(e.g. 'Tools and performance', 'Apps Foundation',
'AI experiences', 'Android XR') or location
(e.g. 'MTV', 'Mountain View', 'London', 'LON').
"""
…Строки документации параметров считаются частью запроса.
В этом инструменте list_sessions мы явно документируем ожидаемые значения, такие как инструменты и производительность, или MTV по сравнению с Лондоном для местоположения.
Самым важным фактором точного вызова инструмента являются понятные и описательные схемы.
И последний – привязка метаданных ресурса пользовательского интерфейса.
@mcp.tool(
…
meta={
"ui": {
"resourceUri": "ui://ads-mcp/summit-app",
},
…
},
)
def list_sessions(…)
…Посмотрите на определение интерфейса в метаданных.
Эти метаданные – мост, который указывает Gemini связать выходные данные инструмента непосредственно с нашим пользовательским ресурсом пользовательского интерфейса.
Это подводит нас к отрисовке пользовательского интерфейса.
@mcp.resource(
"ui://ads-mcp/summit-app",
name="summit-app",
mime_type="text/html",
)
def get_summit_ui() -> ResourceResult:
"""Renders the interactive ADS 2026 dashboard."""
return ResourceResult([
ResourceContent(
_build_summit_ui_html(),
mime_type="text/html",
)
])Платформа Connected Apps Platform позволяет создавать многофункциональные пользовательские интерфейсы на MCP-сервере с помощью MCP Apps UI.
А если вам нужна полная гибкость для создания собственного интерфейса, отражающего бренд, как на Саммите для разработчиков Android, вы можете использовать ресурс MCP UI.
а Gemini – в защищенном изолированном окне iframe.
Затем я расскажу, как протестировать и развернуть подключенное приложение прямо с локального компьютера.
Да.
Давайте посмотрим, как можно разрабатывать и тестировать локально.
Во время разработки вы можете легко запустить сервер локально, используя первую команду.
./venv/bin/python server.py
npx @modelcontextprotocol/inspectorЗатем вы можете использовать MCP Inspector для отладки сервера, просмотра доступных инструментов и взаимодействия с пользовательским интерфейсом.
Это пример того, как выглядит MCP Inspector для Саммита для разработчиков Android.
Вы можете увидеть инструменты и интерфейс, а также протестировать их локально.
Затем вам нужно будет развернуть MCP-сервер на удаленной конечной точке, чтобы получить доступ и проверить его в режиме разработчика Gemini.
Вы можете разместить конечную точку MCP в любой инфраструктуре или у любого поставщика облачных сервисов.
Но если вы предпочитаете Google Cloud, то можете использовать его с Google Cloud CLI.
Просто используйте эту простую команду для развертывания, и ваше приложение будет доступно удаленно.
gcloud run deploy ads-mcp-serverСледующий шаг – проверить общедоступную конечную точку в режиме разработчика Gemini.
Давайте вернемся к демонстрации, и я покажу, как использовать режим разработчика на практике.
Режим разработчика легко найти. Просто перейдите в настройки и нажмите "Режим разработчика".
Затем выберите подключенное приложение, которое хотите протестировать.
Например, вы можете создать новый сервер, просто указав здесь его URL.
Я уже создал один для тестирования, он называется ADS MCP и содержит мою тестовую конечную точку.
И я просто хочу протестировать, как это работает с Gemini от начала до конца.
Давайте что-нибудь спросим.
"ADS MCP, расскажи мне больше о мероприятии".
Сейчас Gemini вызывает наш MCP-сервер. В режиме разработчика вы можете увидеть, какой инструмент вызывается.
Например, для запроса "Расскажи мне больше о мероприятии" была вызвана функция get_summit_info.
и успешный ответ.
и задержку.
Вы также можете посмотреть все сведения о запросах и ответах.
Например, в нашем ответе много информации.
Вы также можете немного увеличить масштаб и посмотреть, какая информация вам нужна, и убедиться, что все точно.
Вы также можете скопировать его, что очень удобно, если вы хотите поделиться им со своим коллегой.
Вы также можете экспортировать весь журнал событий и поделиться им.
Мне также нравится, что вы можете изучить другие доступные инструменты, поэтому здесь, в режиме разработчика, вы можете увидеть информацию о саммите, список сессий и другие инструменты.
Вы также можете изменить среду, чтобы смоделировать различные пользовательские контексты.
Например, вы можете изменить время суток, язык и другие настройки, а также настроить аутентификацию.
Это был режим разработчика.
И да, вы можете начать создавать свой MCP-сервер уже сегодня и протестировать его в режиме разработчика.
Она доступна всем пользователям.
Вернемся к слайдам.
Окей.
Итак, вы протестировали теги в режиме отладки, и все работает правильно. Что дальше?
Чтобы получить доступ к нашей платформе, вам нужно зарегистрироваться. Сначала заполните эту форму.
Она также доступна в нашей документации и в Google Connected Console.
Если заявка будет одобрена, вы получите доступ к Google Connected Console, где сможете подготовить приложение к выпуску рабочей версии.
В консоли подготовка приложения занимает всего несколько шагов.
Сначала создайте новое подключенное приложение и укажите его название.
Затем вам нужно выбрать возможности и категорию.
Например, в этом примере мы выбрали продуктивность и просто нажали «Создать».
Затем в разделе "О приложении" укажите общедоступные данные, такие как отображаемое название, значок, описание для пользователей, возможности и ограничения приложения, примеры запросов и т. д.
При настройке MCP-сервера вам нужно будет указать конечную точку.
Вам нужно подтвердить, что домен принадлежит вам, а также настроить учетные данные для инструментов синхронизации.
Помните, что Google Console делает снимок схемы MCP, поэтому при внесении изменений в схему вам нужно будет вернуться и повторно развернуть ее.
После этого вы сможете настроить доступность приложения.
Вы можете выбрать регионы, языки, платформы и другие параметры.
Затем нажмите "Опубликовать изменения" и отправьте их на проверку Gemini.
Затем вы также можете добавить тестовые аккаунты в разделе "Управление тестировщиками".
и сразу же протестировать ее в реальном времени с помощью тестовых аккаунтов на веб-сайте, мобильном устройстве или любых платформах, которые вы выбрали ранее, например в Gemini или Поиске, а затем отправить ее на окончательную проверку.
Когда приложение будет готово, вы сможете выпустить рабочую версию для пользователей по всему миру или в определенных регионах. Для этого достаточно нажать кнопку.
Вот и всё!
Мы с нетерпением ждем, когда вы начнете использовать Connected Apps Platform, чтобы сделать функции своего приложения доступными через удаленный сервер MCP или Android MCP.
Мы будем рады помочь вам создать эти потрясающие интеграции.
Просто следуйте инструкциям в этой документации и используйте примеры, доступные по этому штрихкоду.
Спасибо за внимание.
Желаем успехов!
from mcp.server.fastmcp import FastMCP
mcp = FastMCP(
name="ADS-MCP",
instructions=(
"A Model Context Protocol server providing event "
"overview, schedules, sessions, speakers, and "
"sandbox demos for the Android Developer Summit "
),
)@mcp.tool(
title="List Sessions",
annotations=ToolAnnotations(
readOnlyHint=True,
destructiveHint=False,
),
meta={ … },
)
def list_sessions( … )
…def list_sessions(
track: Optional[str] = None,
location: Optional[str] = None,
) -> List[Dict[str, Any]]:
"""Lists all sessions, optionally filtered by track
(e.g. 'Tools and performance', 'Apps Foundation',
'AI experiences', 'Android XR') or location
(e.g. 'MTV', 'Mountain View', 'London', 'LON').
"""
…@mcp.tool(
…
meta={
"ui": {
"resourceUri": "ui://ads-mcp/summit-app",
},
…
},
)
def list_sessions(…)
…@mcp.resource(
"ui://ads-mcp/summit-app",
name="summit-app",
mime_type="text/html",
)
def get_summit_ui() -> ResourceResult:
"""Renders the interactive ADS 2026 dashboard."""
return ResourceResult([
ResourceContent(
_build_summit_ui_html(),
mime_type="text/html",
)
])./venv/bin/python server.py
npx @modelcontextprotocol/inspectorgcloud run deploy ads-mcp-server