Transcript
00:00:00[БЕЗ ЗВУКА]
00:00:30.
00:00:53>> Всем привет, добро пожаловать на очередную сессию сообщества Purcell.
00:00:57Меня зовут Джейкоб Пэрис, сегодня я буду вашим ведущим.
00:01:00Мы проводим эти встречи, чтобы рассказать о классных проектах сообщества,
00:01:03клиентов и всех, кто создает крутые вещи на Purcell.
00:01:08Мы транслируем этот эфир вживую на LinkedIn,
00:01:10но если вы хотите пообщаться в чате, переходите на [community.com/live](https://community.com/live),
00:01:15и вы увидите эту трансляцию в самом верху страницы.
00:01:18В конце у нас останется время на вопросы и ответы,
00:01:21так что не стесняйтесь писать свои вопросы в чат по ходу эфира.
00:01:25Хочу представить нашего гостя.
00:01:27С нами Шейн Смит из Saltbox Management.
00:01:30>> Привет.
00:01:32>> Привет, Шейн! Как дела сегодня?
00:01:35>> Отлично, а у тебя как?
00:01:37>> Тоже очень хорошо.
00:01:38Да, итак, ты подготовил для нас демо?
00:01:42>> Да, я подготовил материал для разбора,
00:01:46немного контекста, а в конце будет живая демонстрация.
00:01:48>> Супер, я могу помочь тебе вывести экран, если ты готов начать.
00:01:53>> Звучит отлично.
00:01:57Хорошо, пока всё загружается, я начну с краткой предыстории.
00:02:04Как сказал Джейкоб, меня зовут Шейн Смит, я CTO в Saltbox Management.
00:02:09Saltbox — это сервисная компания.
00:02:12Большую часть времени мы занимаемся внедрением
00:02:16технологий Salesforce для наших клиентов.
00:02:18И последние пару лет мы разрабатывали собственный продукт.
00:02:24Сейчас мы подошли к этапу, когда начинаем
00:02:28разворачивать его для клиентов и выходить на более широкий рынок.
00:02:31Сегодня я расскажу, как мы это сделали, в частности с помощью Vercel,
00:02:37и некоторых технологий, которые предоставляет нам Vercel.
00:02:41Как вы видите на экране,
00:02:42мы также поговорим об AI Gateway.
00:02:44Переходя к сути проблемы,
00:02:49у нас есть пул клиентов, использующих Salesforce.
00:02:54И в сегодняшнем мире агентов эти пользователи хотят
00:02:58взаимодействовать с Salesforce на естественном языке.
00:03:02Первый кейс и проблема, которую мы пытаемся решить,
00:03:06касается бизнес-пользователей.
00:03:07Они хотят общаться со своей экосистемой продуктов Salesforce простым языком
00:03:10и гораздо быстрее получать ответы на свои вопросы.
00:03:16Второй кейс — мы пытаемся помочь разработчикам, тем,
00:03:20кто настраивает и создаёт кастомизации внутри Salesforce,
00:03:23то есть в основном нам самим.
00:03:25С этого и начался наш путь: мы хотели упростить
00:03:28процесс разработки для Salesforce с помощью агентов.
00:03:31Вот две проблемы, которые мы стремились решить для себя
00:03:34и для наших пользователей.
00:03:35И если говорить о контексте, сделать это на самом деле довольно сложно.
00:03:41Собственно, поэтому люди и нанимают такие сервисные фирмы, как наша.
00:03:45Потому что понять контекст Salesforce, понять компанию,
00:03:49контекст проекта, который они пытаются реализовать, и превратить это
00:03:54в масштабируемый рабочий код по лучшим практикам — задача не из легких.
00:03:58Вы не можете просто зайти в любую LLM
00:04:01и спросить что-то о Salesforce. Вы получите какой-то ответ,
00:04:05но он вряд ли будет готов для продакшена.
00:04:07Именно этой цели мы и пытались достичь.
00:04:12Мы шли по этому пути с относительно небольшой командой продукта,
00:04:16создавая довольно амбициозный инструмент.
00:04:19Поэтому мы хотели сфокусироваться на самом продукте, а не на инфраструктуре.
00:04:24Нам нужно было, чтобы инфраструктура просто работала и давала нужные возможности.
00:04:28В этом и заключался наш вызов и ставка: мы верили, что сможем построить
00:04:33эту масштабируемую платформу на базе инфраструктуры Vercel.
00:04:40Сейчас я немного расскажу о том, как именно мы это реализовали.
00:04:44В нашей архитектуре высокого уровня можно выделить три основных слоя.
00:04:48На самом верхнем уровне у нас находится приложение Next.js,
00:04:53которое отвечает за интерфейс пользователя.
00:04:56Оно обладает всеми возможностями стриминга UI,
00:05:02которые вы ожидаете увидеть у современного ИИ-агента.
00:05:04На втором уровне у нас находятся edge-функции и серверная часть.
00:05:09Мы используем AI SDK, в частности шестую версию,
00:05:16для управления агентом, его циклами решений и встроенным инструментарием.
00:05:21Если вы еще не знакомы с этим SDK и только погружаетесь в мир агентов,
00:05:25я настоятельно рекомендую его попробовать.
00:05:28Он дает возможность подключать любые LLM на рынке.
00:05:34Он работает независимо от конкретной модели и предоставляет
00:05:37необходимый каркас для построения агентного цикла
00:05:40и наделения его действительно мощными инструментами.
00:05:43И третий слой — это сам ИИ, то есть подключение к нужной модели.
00:05:51На самом старте мы долго думали,
00:05:56какую модель правильнее всего выбрать.
00:06:00И наш вердикт таков: не существует одной универсальной модели,
00:06:04которая подходила бы для абсолютно любой ситуации.
00:06:06Поэтому мы спроектировали систему гибкой, чтобы мы могли подключать
00:06:10и использовать подходящую модель под конкретную задачу по мере их выхода,
00:06:14не внося при этом масштабных изменений в архитектуру.
00:06:20Для этого мы выбрали AI Gateway,
00:06:23и я подробнее расскажу о нем чуть позже.
00:06:25Также у нас есть бэкенд-сервисы,
00:06:30которые вы видите внизу и которые поддерживают всю инфраструктуру.
00:06:35Давайте немного детальнее разберем AI Gateway.
00:06:38Слева вы видите псевдокод того, как это выглядит.
00:06:43По сути, у вас есть одна строчка кода, которая говорит:
00:06:46"Я подключаюсь к шлюзу".
00:06:49И как только вы это сделали, через шлюз
00:06:51вы можете использовать абсолютно любую модель.
00:06:55Во многих случаях мы используем Opus 3.5, но где-то берем Sonnet,
00:07:00модели GPT, а в некоторых ситуациях — Groq.
00:07:04И это одна из главных фишек AI Gateway —
00:07:08вы можете использовать любую модель, вы не привязаны к вендору,
00:07:10у вас есть полная свобода выбора.
00:07:12Благодаря этому мы смогли реализовать
00:07:18интуитивную маршрутизацию запросов по уровню сложности и типу задач.
00:07:22У нас есть классификатор, который определяет,
00:07:27насколько сложный вопрос задает пользователь.
00:07:29Это простое приветствие, требующее базового ответа,
00:07:32или же сложный запрос, например, запрос на проектирование
00:07:37целого процесса автоматизации?
00:07:38В зависимости от этого мы направляем запрос на разные модели.
00:07:40Это позволяет нам обеспечивать быстрый отклик,
00:07:44подбирать оптимальный уровень сложности модели
00:07:49и выдавать пользователю максимально точный ответ.
00:07:50Если говорить о пользовательском опыте работы с агентом,
00:07:59то сейчас пользователи обычно ожидают две вещи.
00:08:04Во-первых, это потоковый ответ (streaming),
00:08:07чтобы видеть генерацию в реальном времени.
00:08:09Но что делать, когда перед вами действительно
00:08:14сложная задача, которая может занять минуты, десятки минут или часы?
00:08:20С точки зрения продукта мы начали именно со стриминга.
00:08:23И это как раз то, в чем AI SDK силен в первую очередь.
00:08:28Слева вы видите пример опросника
00:08:31для генерации пользовательских историй по итогам встречи.
00:08:33Это был один из первых наших кейсов при создании этого инструмента —
00:08:37собрать контекст и превратить его в задачи для разработчиков.
00:08:41Но когда мы перешли к более сложным задачам — например, развернуть
00:08:45B2B-магазин в Salesforce или спроектировать Experience Cloud сайт с кастомными страницами,
00:08:51это занимает гораздо больше времени, чем можно удержать в обычном стриме браузера.
00:08:56Поэтому по мере освоения платформы Vercel
00:08:59мы создали единый бесшовный интерфейс для пользователя,
00:09:05который умеет как стримить ответы, так и запускать фоновые процессы
00:09:09в зависимости от сложности задачи.
00:09:11И всё это поддерживается инфраструктурой Vercel,
00:09:14как самой платформой, так и дополнительными возможностями
00:09:19вроде изолированных песочниц, о которых я расскажу далее.
00:09:24С точки зрения инструментов, это, пожалуй, суперсила
00:09:28того же AI SDK — он дает готовую структуру для кастомного расширения.
00:09:34Мы начинали всего с пары инструментов, а со временем добавили
00:09:39множество других, которые позволяют агенту буквально
00:09:44руками взаимодействовать с пользователем и средой Salesforce.
00:09:48Как вы видите, у нас есть генерация документов, поиск,
00:09:52создание задач, интеграции и, главное, интеграция с Salesforce,
00:09:57которая позволяет анализировать окружение, проверять его, делать запросы
00:10:01и производить деплой непосредственно в среду.
00:10:05Это действительно оживляет агента, выводя его за рамки простого чата с LLM.
00:10:10Итак, мы говорим: «У агента появились руки».
00:10:16Как это работает на практике?
00:10:18В экосистеме Vercel это одна
00:10:22из новейших функций, которую они сейчас внедряют — концепция песочниц (sandbox).
00:10:27Если вы знакомы с Salesforce,
00:10:30то знаете, что разработчики и технические специалисты
00:10:34часто используют Salesforce CLI для взаимодействия с системой.
00:10:39Это позволяет им через терминал управлять Salesforce,
00:10:43создавать тестовые среды, разворачивать B2B-магазины и делать деплой.
00:10:49Это очень удобно для работы.
00:10:51Но в обычном веб-браузере это сложно реализовать, верно?
00:10:55Вам приходится постоянно заново авторизовываться на сайтах,
00:10:59что затрудняет работу с Salesforce.
00:11:01Поэтому мы задействовали функцию Vercel Sandbox,
00:11:06где мы позволяем пользователю пройти аутентификацию в своей среде.
00:11:10Затем мы создаем изолированную песочницу с доступом к файловой системе,
00:11:16что дает нам возможность загружать создаваемый код или файлы
00:11:20прямо в эту песочницу, а затем с помощью
00:11:26Salesforce CLI отправлять эти файлы в саму систему Salesforce.
00:11:30Возможно, это специфический кейс для Salesforce
00:11:35с его концепциями scratch-оргов и песочниц, но я думаю,
00:11:40что по мере развития всей агентной кодинг-экосистемы,
00:11:43идея использования таких песочниц станет абсолютно критичной,
00:11:49потому что она дает агентам и LLM
00:11:55привычную файловую структуру, на которой они обучались.
00:11:58Это дает огромную гибкость в том,
00:12:01что именно вы можете делать.
00:12:06И подводя итог по основным технологическим столпам,
00:12:10инструмент v0 стал огромным прорывом для нашей команды.
00:12:17Мы используем его в двух направлениях.
00:12:18Со стороны продукта — для создания нашей платформы Saltbox One.
00:12:23И со стороны услуг — когда мы настраиваем решения для клиентов на Salesforce.
00:12:27И мы связали эти две стороны вместе.
00:12:31Когда вы работаете в Saltbox One, у вас есть весь контекст вашей задачи,
00:12:35вся информация о Salesforce, и вы можете
00:12:41собрать эти данные о вашей организации и передать их
00:12:45напрямую в v0 в качестве контекста благодаря тесной интеграции.
00:12:51И это позволяет v0 помогать вам генерировать код.
00:12:54Это работает не только для React: при правильном контексте
00:12:58он может создавать Apex-классы, LWC-компоненты и логику процессов.
00:13:01Нам удалось объединить эти возможности
00:13:05в очень удобную и бесшовную интеграцию.
00:13:09Если бы нам нужно было поделиться опытом с другими командами,
00:13:14я бы выделил четыре главных вывода.
00:13:17Первое: используйте API-шлюз. Хватит спорить о моделях,
00:13:21выбирайте подходящую модель под конкретную задачу и инструмент.
00:13:25Это дает огромную гибкость и новые возможности.
00:13:28Второе: стриминг — это только начало.
00:13:31С него стартует большинство приложений
00:13:35в агентной сфере, особенно стартапы.
00:13:38Но в реальности вам необходимы возможности долгоиграющих фоновых процессов.
00:13:42Именно туда нужно стремиться.
00:13:45Третье — это песочницы, о которых я только что говорил.
00:13:48Придайте агентам авторитетности, дав им доступ к CLI,
00:13:52и это наделит их настоящими суперсилами.
00:13:55И последний шаг — найти правильную платформу.
00:13:57Для нас это было создание решения на Vercel,
00:14:01что позволяет нам не отвлекаться на инфраструктуру.
00:14:04Это дает возможность сосредоточиться на функциях
00:14:07и возможностях, которые мы пытаемся масштабировать в Saltbox One.
00:14:12Итак, теперь я перейду к демонстрации
00:14:19и покажу интерактивное взаимодействие с Salesforce.
00:14:24Расскажу немного о генерации историй
00:14:26и покажу агента в действии.
00:14:29Подождите секунду, пока я переключу экран.
00:14:34Отлично.
00:14:38Итак, переходим в Saltbox One, это одна из наших демо-организаций.
00:14:44Слева вы видите то, что мы называем
00:14:48нашими проектами, и они задают разный контекст.
00:14:51А в центре находится панель нового диалога.
00:14:56Здесь мы можем сфокусировать внимание.
00:14:58При прокрутке вниз видны все наши различные проекты.
00:15:01Это позволяет загрузить правильный контекст в беседу.
00:15:05Внизу расположены наши инструменты,
00:15:08куда передаются все наши интеграции.
00:15:12А чуть ниже у нас есть возможность добавлять контекст.
00:15:16Мы можем прикрепить встречу, пользовательскую историю, артефакт,
00:15:20организацию Salesforce или что-то конкретное внутри нее.
00:15:23Благодаря этому получается очень содержательный диалог.
00:15:27Пожалуй, я начну с более сложного примера.
00:15:33И пока он выполняется, мы переключимся на другой,
00:15:37который я запустил заранее, чтобы мы могли его обсудить.
00:15:40В этом примере мы хотим создать экранный поток в Salesforce,
00:15:45который позволит вводить комментарии к обращению и выводить экран подтверждения.
00:15:51Требование не самое сложное, но нужно знать, как устроен поток,
00:15:56как его настроить, где найти
00:15:58и как его отладить.
00:16:00Мы поручим агенту заняться этим,
00:16:03а сами пока обсудим другие сценарии.
00:16:06И перед тем как переключиться, посмотрите: агент извлекает файлы контекста.
00:16:09В этом и заключается секрет Saltbox One — у нас много информации
00:16:13о Salesforce, о том, как с ней работать,
00:16:16и готовых сценариев для ее правильной настройки.
00:16:19Как видите, он очень быстро вернулся с ответом:
00:16:23«Хорошие новости, я проверил вашу систему.
00:16:25Сейчас для комментариев к обращениям нет автоматизаций, так что путь свободен».
00:16:29Теперь он задает мне пару уточняющих вопросов.
00:16:32Я отвечу «да, можно использовать организацию по умолчанию»,
00:16:37и пока он составляет план, я перейду
00:16:41к другому диалогу.
00:16:44Это одна из самых популярных функций
00:16:47в наших проектах для клиентов — возможность обработать встречу.
00:16:52В данном случае у меня есть демо-бренд Halston.
00:16:56Я записал встречу, где обсуждались новые требования
00:17:00по расширению возможностей Salesforce.
00:17:03И я спрашиваю агента о нашей организации, желая получить решение
00:17:07на основе того, что уже настроено, и с использованием
00:17:11стандартного функционала Salesforce.
00:17:16На первый взгляд, запрос довольно простой,
00:17:18но на самом деле он сложный, так как требует
00:17:21знания деталей вашей среды. Нужно понимать, что настроено
00:17:26по умолчанию, а что кастомизировано, чтобы принять верное решение.
00:17:30Мы задали этот вопрос, и вот результат:
00:17:33«Вот требования к встрече, которые удалось выделить из обсуждения».
00:17:37А также: «Вот что у вас настроено на сегодняшний день».
00:17:41Показана модель данных, составлена отличная диаграмма Mermaid,
00:17:43чтобы мы могли наглядно во всем убедиться.
00:17:46И далее агент переходит к рекомендациям.
00:17:48Вот как S1 подошел бы к задаче, разбив ее на этапы.
00:17:52Первый этап — модель данных, подписки на видимость витрины,
00:17:57а затем предлагаются рекомендации и ключевые вопросы.
00:18:02Я могу вести с ним активный диалог.
00:18:06Я отправил ему ответы на эти вопросы,
00:18:07и в итоге получил отлично структурированный документ,
00:18:12где требования детально расписаны по этапам.
00:18:16Я могу использовать его для написания кода,
00:18:19создания пользовательских историй или любых других требований.
00:18:22В этом и есть сила Saltbox One — мы строили ее
00:18:27с точки зрения оказания услуг.
00:18:31Мы знаем, как внедрять Salesforce.
00:18:33Мы знаем лучшие практики.
00:18:35Мы знаем, как подступиться к задаче.
00:18:37И весь этот опыт заложен в агентский контекст,
00:18:38который мы предоставили Saltbox One.
00:18:43Вернемся к нашему первому диалогу.
00:18:44Мы согласились использовать организацию по умолчанию.
00:18:49Агент проанализировал весь упомянутый контекст
00:18:52и нашел наилучший способ решения задачи.
00:18:55Мы видим, что он создал для нас удобную карточку для проверки.
00:18:57Эта карточка — наш способ контроля над действиями агента.
00:19:02Мы хотим, чтобы агент составил этот план,
00:19:07но не хотим, чтобы он выполнял его бесконтрольно.
00:19:11Нам по-прежнему нужно участие человека.
00:19:13Поэтому мы создали этот компонент, где видно,
00:19:15что именно и как будет развернуто.
00:19:19И вы можете просто нажать «Одобрить и выполнить».
00:19:22Конечно, это демо, так что сейчас оно может не сработать.
00:19:25Но в реальной ситуации вы можете запустить деплой.
00:19:29Вы можете нажать «Повторить» после того, как обсудите
00:19:33и решите проблему вместе с агентом.
00:19:37А если проект уже развернут, вы можете откатиться
00:19:38к предыдущей версии, если новая вам не понравилась.
00:19:43И перед тем как показать еще один живой пример,
00:19:44я разберу последний кейс — быстрый аудит архитектуры вашей организации.
00:19:50Нас очень часто просят помочь
00:19:55разобраться в архитектуре или оценить накопившийся технический долг.
00:20:00Как нам подготовиться к внедрению
00:20:03этих агентских решений в среде Salesforce?
00:20:04Это простые вопросы, но они требуют глубокого анализа.
00:20:09Вы можете задать такой вопрос,
00:20:10и агент проанализирует ваши лицензии, подготовит ключевые выводы
00:20:15и покажет, как выглядит ваша модель объектов по сделкам.
00:20:18И, как всегда, в своих ответах
00:20:22мы будем подсвечивать моменты, требующие вашего внимания.
00:20:27В данном случае мы видим документацию,
00:20:30где указаны недокументированные поля во всех наших объектах.
00:20:34Кажется, у нас много кастомных полей. Есть рекомендации по подходу к работе
00:20:38и следующие шаги, в которые мы можем углубиться.
00:20:40Я могу сказать, что хочу заняться именно этим,
00:20:45и агент начнет сужать фокус непосредственно
00:20:48на процессах B2B-коммерции и их взаимосвязях.
00:20:53Он будет делать запросы к средам,
00:20:57изучать всю окружающую экосистему,
00:21:02а затем сформирует обобщенный ответ,
00:21:05и вы сможете продолжить этот диалог.
00:21:07Пока этот агент выполняется,
00:21:10я покажу еще один пример.
00:21:12Если мы откроем новый диалог, я могу
00:21:16прикрепить страницу из Confluence, которая стала
00:21:21результатом одного из наших прошлых обсуждений.
00:21:27Там содержится подробное описание того, как именно будет выглядеть решение.
00:21:32И я могу быстро попросить создать пользовательские истории
00:21:35для первого этапа из этого документа.
00:21:39И здесь уникально то, что агент объединяет не только
00:21:43контекст этого документа, но и вашего проекта, среды Salesforce,
00:21:46наших лучших практик и всей экосистемы Salesforce,
00:21:50чтобы решить, как лучше всего разбить первый этап
00:21:55на понятные пользовательские истории с формулировкой «Как пользователь, я хочу...»
00:21:59и несколькими пунктами критериев приемки.
00:22:03Это дает отличную отправную точку для создания историй.
00:22:08И как только эти истории сгенерированы, вы можете углубиться
00:22:14в детали в процессе дальнейшего общения с агентом,
00:22:18если захотите их доработать.
00:22:22Пока этот процесс запущен,
00:22:24я вернусь к предыдущему диалогу, где мы только что закончили аудит.
00:22:28Мы выполнили несколько запросов и собрали схему аудита B2B.
00:22:32Вы видите, что мы получили довольно хорошую оценку происходящего,
00:22:36а также рекомендации по техническому долгу
00:22:40и по тому, на чем нам стоит расставить приоритеты.
00:22:45Так что вы начинаете понимать, как все это связывается воедино.
00:22:48Я возвращаюсь к своему примеру...
00:22:51Кажется, у меня завис экран, секунду.
00:22:55Вот.
00:23:00Вы видите, что в последнем примере мы сформировали пользовательские истории.
00:23:11Они отображаются слева, а детали по ним — справа.
00:23:14И это дает нам возможность интегрировать их в Asana или Jira,
00:23:18обеспечивая полный цикл разработки.
00:23:22Это был краткий обзор Saltbox One, того, как мы используем экосистему Vercel,
00:23:24возможности песочницы, шлюза
00:23:27и v0, чтобы собрать подобное приложение
00:23:32и действительно сосредоточиться на функциях для наших клиентов,
00:23:39а не на стоящей за ними инфраструктуре.
00:23:44На этом у меня все. Джейкоб, есть ли какие-то вопросы, которые мы хотим обсудить?
00:23:49>> Да, да, спасибо за отличную демонстрацию.
00:23:53У меня появилось несколько вопросов.
00:23:56Во-первых, мне интересно, как работают права доступа агентов.
00:24:02Есть ли у S1 собственные права? Например, когда вы настраиваете приложение,
00:24:06получает ли оно определенный доступ к Salesforce, Confluence и так далее?
00:24:08Или все зависит от человека, который задает вопросы?
00:24:12Ведь это довольно сложная задача, когда у вас есть
00:24:16все эти корпоративные интеграции через SSO.
00:24:20Мне просто любопытно, к какому решению вы в итоге пришли.
00:24:23>> Да, мы долго размышляли над этим вопросом,
00:24:26и в итоге остановились на правах доступа на основе пользователя.
00:24:29Когда пользователь заходит, он может авторизоваться под своей учетной записью.
00:24:32Поэтому любое действие в Salesforce или других приложениях выполняется
00:24:36от имени конкретного пользователя с использованием его OAuth
00:24:40или API-ключа, в зависимости от поддерживаемой платформы.
00:24:45Это дает нам уверенность в том, что действие совершил именно данный пользователь.
00:24:50Но на некоторых платформах, таких как Salesforce,
00:24:53у нас есть дополнительный уровень защиты.
00:24:57Каждый раз, когда вы подключаете инстанс Salesforce,
00:25:03подключение создается в режиме «только для чтения».
00:25:06И затем вы можете переключить его на разрешение записи.
00:25:09Но даже после этого вы всегда будете видеть экран подтверждения
00:25:12для любых изменений, которые планируется внести в вашу среду Salesforce.
00:25:15>> Отлично. То есть на стороне Salesforce для возможности аудита
00:25:19все совершенные действия инициируются кликом пользователя.
00:25:23Когда планировалось действие записи, появлялось всплывающее подтверждение.
00:25:26Пользователь должен был явно нажать «принять и продолжить», чтобы запустить агента.
00:25:31>> Именно так.
00:25:37>> И в Salesforce это отобразится как действие, выполненное пользователем.
00:25:39>> Именно.
00:25:44>> Хорошо, отлично.
00:25:44Мне также интересно, как сам агент использует песочницы?
00:25:49Есть ли у вас определенные вызовы инструментов, которые неявно запускают
00:25:50песочницу как деталь внутренней реализации?
00:25:51Или у агента есть специальные инструменты песочницы, и он знает,
00:25:57что для определенных задач нужна песочница, где у него есть доступ к CLI, API и так далее?
00:26:02Интересно, как вы это настроили.
00:26:06>> Да, у нас есть два основных инструмента, которые используют официальную
00:26:11песочницу Vercel Sandbox. О другой песочнице я расскажу чуть позже.
00:26:16Первый сценарий использования: когда вы создаете временную организацию (scratch org),
00:26:19мы всегда запускаем песочницу Vercel и разворачиваем организацию с помощью SF CLI.
00:26:25Второй сценарий — когда вы взаимодействуете с Salesforce для проверки
00:26:28Первый сценарий — когда вы запускаете временную среду scratch org,
00:26:33проводить деплойменты и другие операции, используя CLI, а Vercel Sandbox позволяет
00:26:37нам легко все это установить и работать с существующими песочницами.
00:26:43Итак, эти два процесса используют официальный Vercel Sandbox, но у нас также есть
00:26:48песочница поменьше, работающая в оперативной памяти, которая создается для каждого диалога
00:26:51на каждом шаге работы агента. Мы используем ее, чтобы собрать все файлы воедино
00:26:54и дать агенту возможность понять, что именно находится в этой in-memory песочнице.
00:26:58Так что у нас есть две разные версии этого инструмента.
00:27:04>> Хорошо, а накладываете ли вы какие-то
00:27:08сетевые ограничения на песочницу, чтобы лимитировать ее доступ?
00:27:14Как вообще выглядит профиль безопасности в данном случае?
00:27:20>> На стороне Vercel Sandbox?
00:27:25>> Да, именно.
00:27:26>> Да, песочницы Vercel запускаются практически пустыми.
00:27:32Мы загружаем туда только нужные файлы и даем доступ исключительно к ним.
00:27:36То есть там нет всей нашей кодовой базы. Например, сначала система
00:27:40берет то, что было подготовлено на этапе планирования.
00:27:42Если взять пример с потоком данных, который я показывал, она берет эти файлы,
00:27:43создает необходимую директорию, которую ожидает Salesforce при выполнении
00:27:47Мы загружаем туда только нужные файлы и даем доступ только к ним.
00:27:52То есть там нет нашей кодовой базы, процесс скорее устроен так, что
00:27:56сначала собирается и подготавливается план действий.
00:28:02Если взять пример с флоу, который я показывал, система берет эти файлы,
00:28:05создает нужную директорию, которую ожидает Salesforce
00:28:10при развертывании, помещает туда файлы,
00:28:13и уже оттуда запускает деплой.
00:28:14Так что доступ там действительно ограничен — только то, что мы даем в конкретный момент.
00:28:20>> У нас есть вопрос с YouTube: какая у вас модель монетизации?
00:28:25Как вы рассчитываете стоимость?
00:28:28Она зависит от использования, от количества мест или как в Soapbox?
00:28:32>> Да, отличный вопрос.
00:28:33Сейчас мы как раз на этапе финализации тарифов, поскольку начинаем
00:28:38открывать доступ клиентам и ищем оптимальный вариант.
00:28:41На данный момент мы остановились на оплате за пользователя (за место)
00:28:48с определенными лимитами внутри каждого тарифа на количество диалогов,
00:28:53объем данных и количество взаимодействий.
00:28:55Так что начинаем мы именно с этого.
00:28:59Но, как все уже знают по опыту в этой экосистеме,
00:29:02все меняется очень часто и быстро, когда речь заходит об инструментах на базе токенов.
00:29:07Поэтому пока мы отталкиваемся от модели с оплатой за пользовательские места.
00:29:11>> Да, согласен, очень сложно найти идеальную модель, которая бы масштабировалась
00:29:16и под нужды клиентов, и под рост бизнеса, и при этом покрывала собственные расходы.
00:29:20Понимаю вас.
00:29:23Посмотрим, тут есть еще один вопрос.
00:29:24Как вы решаете, какие запросы направлять в ту или иную модель?
00:29:29Например, определенные задачи вы отправляли в Opus,
00:29:31а другие — в Sonnet.
00:29:33Как вы определяете это разделение?
00:29:35Используете ли вы систему автоматической оценки на основе данных или тестируете вручную,
00:29:41чтобы понять, для каких классов задач Sonnet вполне достаточно?
00:29:45Какой у вас подход?
00:29:46>> Да, ответ на этот вопрос постоянно дорабатывается.
00:29:52На текущий момент на входе у нас стоит детерминированный классификатор,
00:29:57который помогает понять степень сложности вопроса пользователя.
00:30:03Используются ли там такие слова, как "спланировать"?
00:30:04Или, например, "исследовать"?
00:30:07Такие проверки работают мгновенно и ничего не стоят, верно?
00:30:12Их можно выполнить очень быстро.
00:30:15Поэтому сначала мы применяем регулярные выражения или детерминированный подход.
00:30:20Если совпадений нет, мы подключаем классификатор на базе LLM и говорим:
00:30:27хорошо, если запрос превышает определенный лимит по словам и так далее,
00:30:32давайте передадим его нейросети, чтобы она классифицировала сложность.
00:30:38Эта модель работает очень быстро, классификация занимает около 300 миллисекунд.
00:30:42И затем она помогает перенаправить запрос в нужную модель: Opus, Sonnet или другую.
00:30:47Также у нас предусмотрен резервный вариант.
00:30:49Если задача оказывается слишком сложной, или пользователь задает один и тот же вопрос,
00:30:54или срабатывают другие внутренние правила, система временно переключается
00:30:59на самую мощную модель, чтобы пользователь гарантированно получил качественный ответ.
00:31:06>> Понятно. И для этого первичного классификатора маршрутизации вы сейчас используете Haiku?
00:31:11>> Да, для базовой сортировки — именно ее.
00:31:13>> Здорово, здово.
00:31:15Отлично. Вы также являетесь участником программы амбассадоров v0.
00:31:20Как это вам помогло? Вы бы порекомендовали участие в ней?
00:31:23Принесла ли эта программа пользу при создании вашего продукта?
00:31:28>> Да, безусловно.
00:31:30Я очень рекомендую ее всем слушателям, кто хочет быть ближе к сообществу.
00:31:36Я уже провел несколько мероприятий для ребят из разных регионов.
00:31:41Например, месяц или два назад я ездил в Мексику, чтобы провести очную
00:31:48встречу и детально разобрать v0 вместе с местными разработчиками.
00:31:51Лично мне программа амбассадоров v0 дает очень много,
00:31:56потому что у меня есть прямой контакт с командой продукта
00:31:59и с другими разработчиками, которые так же увлечены этим направлением, как и я.
00:32:03Так что возможность обмениваться идеями друг с другом очень ценна.
00:32:08>> Класс. Раз у вас есть прямой доступ к создателям продукта,
00:32:13вы наверняка отправляете им много отзывов.
00:32:16Может, хотите озвучить какое-то пожелание прямо сейчас публично,
00:32:22чтобы немного их подразнить и подтолкнуть к действиям?
00:32:25>> Пожалуй, буду вежлив. Думаю, главное — и мы уже обсуждали это —
00:32:30это добавлять в v0 больше возможностей,
00:32:34к которым разработчики привыкли в своих локальных IDE-средах.
00:32:41Знаете, за последние пару месяцев в v0 появились функции песочницы,
00:32:45возможность запустить и получить полноценное рабочее окружение,
00:32:49и это огромный шаг в правильном направлении.
00:32:51Думаю, если мы продолжим двигаться по этому пути, все станет еще круче.
00:32:55Так что мой призыв — развивать это направление дальше.
00:33:00>> Потрясающе. Да, это был долгий и непрерывный процесс.
00:33:02Раньше это была совсем простенькая IDE в браузере,
00:33:06а теперь это полноценная интеграция с VS Code и редактором Monaco.
00:33:10С каждым месяцем инструмент становится все лучше.
00:33:14>> Совершенно верно.
00:33:15>> Что ж, думаю, на этом вопросы у нас закончились.
00:33:18Хочу поблагодарить вас за то, что пришли и показали такое классное демо.
00:33:24Где зрители могут найти вас, чтобы пообщаться или узнать больше о Soapbox?
00:33:32>> Активнее всего я веду LinkedIn.
00:33:34Так что добавляйтесь в контакты и пишите сообщения.
00:33:37Укажите, что смотрели этот эфир,
00:33:39чтобы я понял, кто вы. Буду рад пообщаться и ответить на любые вопросы.
00:33:44>> Отлично. Мы обязательно добавим ссылку на ваш LinkedIn в чат.
00:33:48Еще раз огромное спасибо, что пришли к нам.
00:33:52>> Спасибо вам.
00:33:55>> И спасибо всем зрителям, что были с нами.
00:33:59Скоро у нас состоится еще одна встреча сообщества...
00:34:05Сейчас сверюсь с календарем.
00:34:10Надо было проверить это заранее.
00:34:15А, она запланирована на четверг, но в календарь ее пока не внесли.
00:34:20Так что заглядывайте к нам через пару дней,
00:34:22у нас будет новый интересный эфир.
00:34:24А пока — увидимся в сообществе.
00:34:27Всем отличного дня!