00:00:00(ритмичная музыка)
00:00:02— Всем привет, меня зовут Мальте, я технический директор Vercel.
00:00:16Спасибо, что присоединились к нам сегодня.
00:00:18В начале января мы дали всем сотрудникам нашей компании поручение:
00:00:21придумайте, как многократно увеличить свою производительность.
00:00:24И то, что в итоге создали люди, продолжает нас поражать.
00:00:27Почти каждая команда создала агента для решения сложных задач,
00:00:30и большинство из них — это Slack-боты, доступные каждому.
00:00:34Но мы столкнулись с проблемой.
00:00:35Все выполняли одну и ту же рутинную работу
00:00:38снова и снова.
00:00:40Кто-то создавал агента,
00:00:41затем нужно было разбираться в сложностях Slack,
00:00:43а это труднее, чем кажется.
00:00:45Нужно понимать треды и реакции,
00:00:47как бот сопоставляет сообщения, как управлять состоянием.
00:00:50Затем кто-нибудь спрашивал:
00:00:51«Слушай, а можешь подключить этого агента к GitHub?»
00:00:53И весь процесс начинался заново
00:00:55уже с API GitHub.
00:00:56Логика та же, но код платформы другой.
00:00:59Мы быстро поняли, что API чатов
00:01:01кажутся похожими на поверхности,
00:01:03но совершенно разные внутри.
00:01:05Slack поддерживает нативную потоковую передачу.
00:01:06Вы можете транслировать токены прямо в сообщение
00:01:09по мере их генерации LLM.
00:01:10В Discord приходится делать: пост, правка, пост, правка.
00:01:14В GitHub потоковой передачи вообще нет.
00:01:16В Slack есть модальные окна, в Discord — нет.
00:01:18Microsoft Teams дает реакции только для чтения.
00:01:21Это не просто причуды, это фундаментальные различия
00:01:23в работе каждой платформы.
00:01:26Так что даже для одного простого агента
00:01:28вам приходится писать огромное количество логики,
00:01:31просто чтобы он работал в разных инструментах.
00:01:33Это сущий кошмар.
00:01:34И это проблема не только Vercel.
00:01:36Каждой компании придется придумать,
00:01:38как внедрить своих агентов туда,
00:01:40где уже происходит основная работа.
00:01:42Это чаты, код-ревью, трекеры задач и многое другое.
00:01:45AI SDK решает похожую задачу для поставщиков моделей.
00:01:48Вы пишете код один раз, и он берет на себя
00:01:50все различия в API,
00:01:51вызываете ли вы GPT, Claude или Gemini.
00:01:54Chat SDK делает то же самое для интерактивных агентов.
00:01:58Это единый API для взаимодействия агентов на разных платформах,
00:02:01таких как Slack, GitHub, Linear, Discord, Telegram,
00:02:04WhatsApp и других.
00:02:06Вы создаете агента, а Chat SDK доставляет его пользователям
00:02:09в те приложения, которыми они уже пользуются.
00:02:11Фернандо последние несколько недель
00:02:15создавал фоновых агентов v0,
00:02:16и он расскажет вам, почему Chat SDK
00:02:18стал критически важной частью этого стека.
00:02:21(ритмичная музыка)
00:02:24(ритмичная музыка продолжается)
00:02:28Когда я начал создавать фоновых агентов v0,
00:02:34моей целью было дать возможность тегать v0 в Slack,
00:02:36чтобы открывать пул-реквесты.
00:02:38Мне нужен был универсальный агент для кодинга,
00:02:40который может работать в фоновом режиме,
00:02:42в любой кодовой базе и на любом языке.
00:02:45Я приступил к разработке
00:02:47и отправил первую версию Slack-приложения v0
00:02:49своим друзьям.
00:02:51И первое, что они спросили:
00:02:53«А можно использовать это в задачах Linear?»
00:02:56И: «Можно ли тегнуть его в комментарии к PR на GitHub?»
00:02:58Это напомнило мне мой первый выпуск мобильного приложения,
00:03:02когда люди начали спрашивать, можно ли использовать его в вебе.
00:03:05Стало ясно, что v0 должен работать везде.
00:03:09Ожидания изменились.
00:03:11Так что мне пришлось выбирать.
00:03:14Будем ли мы создавать агентов v0 отдельно для каждой платформы?
00:03:18Или мы можем написать один раз с единым API
00:03:22для всех платформ сразу?
00:03:24Своего рода React Native для чат-агентов?
00:03:27Что ж, оказалось, что я потратил годы
00:03:30на создание кроссплатформенных приложений на React Native.
00:03:34Эта проблема мне хорошо знакома.
00:03:36И вот тут на помощь пришел Chat SDK.
00:03:39С Chat SDK
00:03:40я могу сосредоточиться на создании фоновых агентов v0
00:03:43и тратить меньше времени
00:03:45на изучение уникальных API каждой платформы.
00:03:48Так как же это устроено внутри?
00:03:50Мэтт покажет вам подробности.
00:03:53(ритмичная музыка)
00:03:55— Всем привет.
00:04:11Как и Фернандо, начнем со Slack.
00:04:14Я упоминаю своего бота,
00:04:16и получаю очень простой ответ «Hello World».
00:04:21Знаю, это меняет правила игры.
00:04:23И если вы посмотрите на код,
00:04:24то увидите, как легко мне было создать этого бота.
00:04:28Все, что мне нужно было сделать — это создать новый экземпляр чата,
00:04:32добавить слушатель упоминаний («on mention»)
00:04:35и отправить «Hello World» обратно в тред.
00:04:38Вот и все.
00:04:39Но мы не хотим, чтобы разработчики делали просто текстовых ботов.
00:04:43Нам нужны богатые нативные возможности,
00:04:45использующие все преимущества каждой платформы.
00:04:48А разработчики обожают JSX.
00:04:51Поэтому мы добавили поддержку JSX в Chat SDK.
00:04:55Теперь вы строите интерфейс из компонентов, как вы привыкли.
00:04:58Давайте добавим две кнопки.
00:04:59Смотрите, вот здесь,
00:05:03я собираюсь заменить наше сообщение «Hello World»
00:05:05на карточку с кнопкой «Продолжить»
00:05:10и кнопкой «Отмена».
00:05:11Мы также добавим слушатель действий,
00:05:14который будет выводить полное имя пользователя
00:05:17и текст «нажал продолжить» при клике.
00:05:19Возвращаемся в Slack, я снова тегаю своего бота.
00:05:24И, как и ожидалось, мы получаем именно то, что создали.
00:05:29Компоненты рендерятся нативно.
00:05:32Я жму «Продолжить», и бот мгновенно обрабатывает действие.
00:05:36А вот теперь начинается самое интересное.
00:05:41Что если я хочу точно такой же функционал в Discord?
00:05:45Я просто добавляю адаптер Discord.
00:05:47И всё.
00:05:48Теперь, если я вернусь в свой канал Discord,
00:05:55упомяну бота —
00:05:57тот же самый интерфейс нативно отобразится в Discord.
00:06:02Ноль правок в коде для поддержки целой новой платформы.
00:06:07Это круто.
00:06:08Но давайте поговорим об агентах.
00:06:10Вот простой агент, которого я собрал с помощью AI SDK.
00:06:14Агентам нужна потоковая передача.
00:06:17С Chat SDK реализовать стриминг тривиально.
00:06:20Я создаю поток и отправляю его в тред.
00:06:23Вот и все.
00:06:24Мне не пришлось выяснять, как Slack работает с потоками
00:06:27или как Discord обрабатывает частичные обновления.
00:06:30Я использовал один API.
00:06:32И в Slack, если я упомяну бота,
00:06:35мы увидим, как он нативно транслирует ответ.
00:06:40Но зачем на этом останавливаться?
00:06:42Что если я хочу писать агенту напрямую
00:06:45в WhatsApp или Telegram?
00:06:49С Chat SDK это легко.
00:06:52Я добавляю слушатель прямых сообщений и нужный адаптер.
00:06:56Теперь любой, кто напишет агенту в ЛС, получит тот же опыт.
00:07:02Если я открою WhatsApp Web и напишу:
00:07:06«Привет, как дела?» —
00:07:08мы увидим, что агент отвечает на наше прямое сообщение,
00:07:12используя ту же логику, что мы прописали.
00:07:14Раз уж мы создали агента,
00:07:16почему бы не открыть пул-реквест?
00:07:18Но перед этим,
00:07:20что если тот же агент, с которым я общался в WhatsApp,
00:07:24сможет проверить мой код?
00:07:25Все, что нужно — это адаптер GitHub.
00:07:28Я захожу сюда, добавляю адаптер GitHub,
00:07:32и мой агент уже на новой платформе.
00:07:35Если я открою GitHub и посмотрю на этот пул-реквест,
00:07:39я смогу упомянуть агента в комментариях,
00:07:42и он ответит через тот же слушатель сообщений,
00:07:45который мы создали ранее.
00:07:46Slack, Discord, WhatsApp, Telegram, GitHub.
00:07:51Только представьте, насколько разные у них API.
00:07:56Но с одним файлом и парой строк кода
00:07:59мы внедрили нашего агента во все эти сервисы.
00:08:01С Chat SDK вы один раз создаете агентский функционал
00:08:06и развертываете его везде через единый API.
00:08:09Заходите на chat-sdk.dev, чтобы изучить документацию и шаблоны.
00:08:14Спасибо за внимание.
00:08:15Жду не дождусь увидеть ваши проекты.
00:08:17(ритмичная музыка)