0: Всем привет, меня зовут Зайцева Алёна и я руковожу службой эйай в яндекс лавке. Я отвечаю во первых, за ai в клиентском продукте это все, что видят наши юзеры, например ассистент лавка эйай, с которым можно общаться как текстом, так и голосом генеративный контент.
1: Карточки товара и многое другое. Во вторых, я отвечаю за ai для оптимизации команд и бизнес процессов. Это множество совершенно разноплановых внутренних агентов, которые позволяют автоматизировать некоторую рутину или конкретные задачки, что в итоге приводит к тому,
2: Что мы намного быстрее прототипируем, разрабатываем, тестируем, внедряем различные проекты и в третьих, я отвечаю за инфраструктуру для разработки всех этих агентов и сегодня я рада приветствовать вас на старте интенсива по ai агентам. Давайте немного расскажу.
3: Про него команда спикеров курса включает в себя руководителей и инженеров из разных кусочков яндекса это лавка, Алиса и умное устройство, поисковой портал, и cloud за последние годы индустрия прошла путь от простого Промина эмок до многоагентных систем.
4: И мы прошли этот путь вместе с ней за это время мы внедряли разные новые фреймворки, протоколы и подходы, отказывались от решений, которые не выдерживали проверку продакшеном и придумывали собственные архитектуры, и обменивались опытом друг с другом, и этим опытом очень хочется поделиться в рамках.
5: Данного интенсива. Сегодня агенты это уже не просто какая-то игрушка из лаборатории. Это то, что реальные компании внедряют в повседневную рутину. И мы хотим, чтобы по итогам курса вы могли не только быстро запрототипировать своего личного ассистента, но и знали, как довести его до
6: Продакшена и масштабировать. Наш интенсив будет состоять из 5 дней и завершится контрольным заданием. Чтобы достичь нашей цели. Мы в 1 день рассмотрим вообще, зачем нужны агенты и из каких кусочков они состоят. И дальше подробно бу
7: Погружаться в каждый отдельный блок так, сегодня же мы погрузимся в мозг агента, это ella и рассмотрим, что такое инструменты и mcp во 2 день мы углубимся в 2 ключевых слоя, без которых агент быстро превращается в игрушку.
8: Это память и гардрейл. То есть некоторые инструменты, которые нам позволяют обезопасить агента, чтобы он вёл себя более предсказуемо. В 3 день мы соберём из разобранных кусочков общий пайплайн. Мы рассмотрим агентский воркфлоу и рассмотрим
9: Как взаимодействуют агенты внутри мультиагентной системы и дополнительно коснёмся и мультимодальных систем. 4 день поговорим про то, что обычно болит больнее всего. Как понять, что стало лучше, как вообще наш агент работает и как не дать ему умереть, где
10: В продакшене, потому что у нас поехали данные, то есть поговорим про eval агентов и, наконец, 5 день мы соберём все изученное в 1 большой блок, разберёмся, как вообще нужно прототипировать ассистентов и доводить их до продакшена и.
11: Как, какие особенности у агентов в продакшене, где нам нужны абзера ити инструменты? Как следить будем за качеством и как будем их масштабировать? Что нас ждёт сегодня? Сначала мы погрузимся в самих агентов, рассмотрим, в каких сценариях они могут применяться за
12: Тем пройдёмся по эволюции взаимодействия человека и ллм. И, наконец, дадим формальное определение агента, а дальше углубимся в мозг агента в эллэе, дадим формальное определение уже ллм. Разберёмся, что такое веса и что такое загадочное некст токен предикш.
13: Дальше изучим то, как лмки обычно обучаются, и сделаем из этого выводы, с чем они справляются. Хорошо, а с чем не очень. И в конце нас ждёт практика. Мы посмотрим, как использовать ллм можно у себя в ноутбуке, а затем построим простейшего агента. Итак, давайте начинать.
14: С погружением в агентов. Для начала рассмотрим вообще, где агенты применяются сейчас. На самом деле, практически везде. Во первых, это персональные ассистенты и инструменты для работы со знаниями, то есть системы, которые нам помогают искать информацию, автоматизировать задачи и поддерживать
15: Принятие сложных решений. Во вторых, это агенты исполнители, которые уже могут не просто отвечать, но и выполнять за вас какие-то действия в браузерах. Например, там заполнять формочки, выполнять цепочки действий в интерфейсах и отдельный класс здесь это инструменты для написания кода, ко
16: Которые помогают буквально за вас разрабатывать какие-то приложения. Также агенты активно применяются в бизнес процессах, в поддержке клиентов и автоматизации операционных задач. И это сейчас действительно очень развивающаяся отрасль. Например, недавно у
17: Прикиньте, спросили, сколько у вас работает сотрудников, и он сказал, что больше 60000, причём из них там около 40000 это люди и около 25000 это ii ассистенты. Интересно, что ii агентов он уже рассматривает как полноценных сотрудников, и, наконец, агенты применяются.
18: Интерактивных средах, например, в видеоиграх энписи персонажей уже пробуют делать с помощью агентов, чтобы они подстраивались под поведение в реальном времени.
19: И чтобы понять, как мы пришли в эту точку, где агенты уже умеют так много, полезно сделать шаг назад и посмотреть, как в целом развивалось наше взаимодействие с эллман. Это поможет нам сформировать интуицию о том, что такое современный агент. В таблице показаны основные паттерны от самых простых.
20: Более сложным и то, какие новые возможности появлялись на каждом этапе, начиналось все с простого prompting, когда мы могли просто в модель занести какой-то текст и ждать от неё ответа, и выхлоп модели никак не влиял на дальнейший ход исполнения программы на следующем шаге у нас появился роутинг.
21: Когда ллм начинает участвовать в принятии решения, например, она может выбрать, какую из заранее заданных ветвей выбрать в исполнении тут уже поведение нашего ассистента становится частично детерминированным, потому что моделька может выбрать 1 из 2 возможных путей на след.
22: Этапе появился тул коллинг, когда элэм уже могла выбрать не только путь, но и конкретную функцию, которую нужно вызвать, и в том числе аргумент, с которым её нужно вызвать. Это позволило нам связывать модель с внешними апи сервисами и инструментами на следующем шаг.
23: Мы уже получаем многошагового агента, когда он выбирает не просто отдельную функцию её аргументы, а может планировать свои действия, выполнять их в цепочке, рефлексировать и так далее. И, наконец, вершина эволюции, когда мы пришли уже к мультиагентным системам, когда
24: Несколько агентных процессов смогли координироваться между собой, совещаться, тоже раскидывать задачки друг на друга и так далее. Если посмотреть на эту эволюцию целиком, то видно, что на каждом этапе модель получает все больше контроля над процессом от генерации текста к принятию реше.
25: И затем уже к планированию и координации. И именно это постепенное увеличение автономности и приводит нас к современному понятию агента, но прежде чем его дать, хочется сделать оговорку, что на самом деле индустрия там новая и какого-то чёткого единого определения нет.
26: В индустрии и исследованиях крупных компаний есть несколько же разных формулировок, и они заметно отличаются, и вот, например, даже внутри open иай нет единой канонической версии так, например, в презентации open i. Agents s дикей агент определяется как ияй приложение.
27: Который состоит из модели инструкций, инструментов и среды выполнения, то есть рантайма, который управляет жизненным циклом агента одновременно с этим другое популярное определение предложила Лилия венг, это вице президент по исследованиям и безопасности open ai в своём посте.
28: Agents. Она определяет агента как комбинацию эллэ памяти, навыков, навыков планирования и использования инструментов, и если сравнить эти 2 определения, то можно заметить, что каждый, каждое из них делает акцент на разных аспектах, да.
29: В обоих есть упоминание моделей инструментов, но в 1 ничего не сказано про планирование и память, а во 2 про промты и планирование и фокус на ллм, как на мозгах агента. Хотя на самом деле там могут использоваться и другие модельки. В этом курсе мы будем использовать наиболее общее рабочее. Определён
30: Которое объединяет все эти компоненты. Итак, мы будем считать, что агент это рантайм, система, внутри которой у нас есть модель, промты, инструменты, память, механизмы защиты и механизмы планирования. Конечно, все эти кусочки
31: Могут быть опциональные и начинать стоит с простенького агента, который может состоять просто из модели, например, и инструментов. В этой лекции я только верхнеуровневой расскажу, зачем нужны каждый из этих компонентов. А в ходе курса мы уже будем подробно погружаться в каждый из них. Итак, в центре у нас
32: Находится аяй модель. Это можно сказать, что мозг агента, но сама по себе модель может только генерировать текст и отвечать на какие-то вопросы. Поэтому, собственно, нужны все эти обвязки вокруг неё. Следующий слой это промты. Сюда входит системный промт, это какие-то глобальные инструкции.
33: Которые задают роль агента, его цели, ограничения, стиль, как он должен принимать какие-то решения. Дальше сообщение пользователя. Это буквально текущая задача, которую должен выполнить ассистент. И, в третьих, это сообщение самого ассистента. Это могут быть
34: Его предыдущие ответы, результаты вызова Тулов и так далее. Слева у нас находятся инструменты. Это какие-то внешние функции и апишки, которые позволяют агенту взаимодействовать с внешней средой, искать информацию, работать с календарём и многое другое. Наверху находится память
35: И, как правило, у агента есть 3 вида памяти. Это краткосрочная, например, текущий диалог или промежуточные результаты его действий. Долгосрочная память. Здесь уже может храниться информация между сессиями знания пользователя, какие-то исторические, выполненные за
36: Задачи знания по предметную область и так далее. И, наконец, контекстная память это информация, которая необходима агенту конкретно. В данный момент она может собираться из различных кусочков дальше отдельным облачком здесь вынесены гардрейл, они в облачке, потому что на самом деле они пронизываю
37: Каждый компонент системы это различные инструменты, которые нам позволяют защитить агента от prompt, инжекшен и других попыток взлома и сделать его поведение более детерминированным, и, наконец, справа у нас находятся инструменты планирования.
38: Они позволяют агенту не просто реагировать на запрос, а строить последовательность действий и исполнять их и все это объединяется потрясающий серый квадратик в runtime, который управляет жизненным циклом агента, когда нужно вызвать модель, когда нужно вызвать инструменты и так далее.
39: И вот, глядя на картинку на предыдущем слайде, возникает ощущение, что нам это что-то напоминает, и этот момент классно подметил Андрей карпатый, сооснователь опен ияй в своём видео интродакшн тулач лэнгвич мотелс, он предлагает думать об ллм не как о чат боте, а как о новой.
40: Версия операционной системы в этой аналогии сама ллм это ядро операционной системы, она оркестрирует инструменты, память, внешние ресурсы и процессы для решения задачи. Внешние базы знаний это аналог диска. То есть модель может доставать оттуда информацию через ретривел или браузинг, когда ей это не
41: Необходимо контекстное окно модели в данном случае можно сравнить с оперативной памятью. То есть это какая-то ограниченная рабочая область, где модель думает и она постоянно решает, какую информацию туда стоит погрузить, а какую уже и, наконец, инструменты и специализированные модели.
42: Можно выбросить?
43: Необходимо контекстное окно модели в данном случае можно сравнить с оперативной памятью. То есть это какая-то ограниченная рабочая область, где модель думает и она постоянно решает, какую информацию туда стоит погрузить, а какую уже можно выбросить. И, наконец, инструменты и специализированные модели.
44: Это как приложение и ллм вызывает их по необходимости, это на самом деле работает даже там на уровне экосистемы, то есть у нас есть какие-то закрытые пропритарный модели как windows и macos и есть быстрорастущая опенсорс, экосистема, аналог линукс, наконец.
45: Мы готовы погрузиться в основную часть агента в его мозг, который в большинстве случаев представляется Эллэй. Мы сегодня коснёмся только того, что нам пригодится для разработки агентов. А более подробно вы можете углубиться в мир gpt.
46: И других на интенсиве gpt вик ссылочка здесь, внизу с точки зрения агентов ллм, это наиболее распространённый мозг агента. Формальное определение ллм может быть записано так это нейросетевая модель, обученная на больших корпусах текстовых данных.
47: Которая применяется для предсказания следующего. Определение длинное, сложное. Мы его сейчас обязательно подробно разберём, но сначала давайте опустимся там на уровень физический. И с этой точки зрения, элэм, это на самом
48: Токена в контексте предыдущих деле 2 файла. 1 файл.
49: Которая применяется для предсказания следующего токена в контексте предыдущих. Определение длинное, сложное. Мы его сейчас обязательно подробно разберём, но сначала давайте опустимся там на уровень физический. И с этой точки зрения, элэм, это на самом деле 2 файла, 1 файл.
50: Это файл параметров, это огромный файл с весами нейросетки в современных моделях, это десятки и сотни гигабайт, a2 файл это код выполнения относительно небольшой набор программного кода, который описывает архитектуру сети и принцип её инференса. И когда мы запуска
51: Такая модель. На самом деле, этот код просто применяет математические операции к входным данным и весам, чтобы предсказать следующий токен. То есть физически лм, это никакой не интеллект, не понимание, а просто огромная таблица с и код, который умеет правильно их применят.
52: На основе поданных на вход весами.
53: Такая модель. На самом деле, этот код просто применяет математические операции к входным данным и весам, чтобы предсказать следующий токен на основе поданных на вход. То есть физически лм. Это никакой не интеллект, не понимание, а просто огромная таблица с весами и код, который умеет правильно их применят.
54: Давайте погружаться в нейросетевая модель корпусах текстовых всех.
55: Определение ллм и начнём с 1 части. Что такое там обученная на больших данных веса модели. Это, по сути, сжатое представление обучающих данных, которые были
56: Давайте погружаться в определение ллм и начнём с 1 части, что такое там нейросетевая модель, обученная на больших корпусах текстовых данных веса модели. Это, по сути, сжатое представление всех обучающих данных, которые были
57: Ей переданы чем больше параметров у модели, тем проще на самом деле это все сжать. Ну вплоть до того, что оставить представление как есть, но тем сложнее будет модель инферить с той точки зрения, что, во первых, нужно будет уметь хранить этот огромный файл с весами. А во вторых, придётся ждать, когда по
58: Читаются все эти математические операции, поэтому задача при обучении это подобрать такую архитектуру, такой набор обучающих данных и так провести обучение, чтобы в как можно меньшем количестве параметров закодировать как можно большие знания о мире. Теперь перейдём ко 2 части определении.
59: Что такое там next токен, предикшн для простоты начнём есть, представим, что поступает предложение. Нужно предсказать, какое данном случае мы там предсказываем, что 90
60: Сначала с next word prediction, то модели на вход кэт сет, он э и нам слово будет дальше в.
61: Что такое там next токен, предикшн для простоты начнём сначала с next word prediction, то есть представим, что модели на вход поступает предложение кэт сет, он, э, и нам нужно предсказать, какое слово будет дальше. В данном случае мы там предсказываем, что 90
62: 7% вероятности, что это слово будет мэтт, и задача во время обучения подобрать веса модели так, чтобы если они провзаимодействовали с входными токенами, то на выходе мы ожидали там действительно наиболее вероятное, следующее слово.
63: Откуда в этом всем берутся токены, веса, модели это числа, и чтобы мы могли как-то обработать входные наши данные, их тоже нужно представить в виде чисел давайте подумаем, как вот можно закодировать, например, предложение i was reading and интерестин.
64: Book и Нью-Йорк, там 1 очевидное решение. Давайте закодируем их буквально посимвольно, то есть каждую букву назначим ей отдельную цифру и попытаемся так переписать предложение. Ну да, получилось, но здесь есть много проблем. Во первых последовательность получается очень длинно.
65: И из за это будет нам замедлять и обучение модели, и потом её инференс. Во вторых, модель видит только отдельные символы и никак не улавливает саму структуру слов. То есть такое кодирование, оно как бы бессмысленно с точки зрения языка. И да, нам становится сложнее захватывать смысл на уровне слов или даже целых фраз.
66: Тогда следующий там наивный подход. Давайте закодируем. По словам каждое отдельное слово мы берём, назначаем ему новую цифру, кодируем. Так, да, последовательность стала вроде как короче, но здесь у нас возникают новые проблемы. Во первых, у нас языки содержат сотни слов в английском.
67: Это 600000, и тогда у нас словарь сам по себе будет огромным, и хранить его вместе с весами модели. Это очень тяжело. Во вторых, у нас будут появляться какие-то новые слова или редко встречающиеся, и под них нужно подбирать какое-то новое число, которое модел
68: Ещё не видела в обучении, и у нас все ещё нет связи между, например, однокорёнными словами. Если нам в следующем предложении придёт слово рид, мы ему назначим цифру 10, и нам ничего не скажет, что цифры 3 и 10 как-то связаны, хотя у них на самом деле одинаковый корень. И здесь.
69: Приходит компромиссное решение. То есть у нас была проблема в том, что буквы это слишком маленькие единицы языка, слова слишком большие. Вот пришло решение в виде токенизации. Токеном называют минимальную единицу текста, с которой работает языковая модель. Он может быть фрагментом 1 слова.
70: Или даже состоять из 2 слов, то есть в данном случае, например, мы слово reading разбили на 2 токена рит и inc. Потому что когда мы в следующий раз встретим слово рид, мы уже поймём, что вот оно как-то было связано с тем, что мы видели до этого, а например слово Нью-Йорк, точнее токен Нью-Йорк.
71: Состоит из 2 слов Ровно потому, что оно часто встречается именно в такой комбинации, и это можно выделять как отдельную сущность. И таким образом у нас уменьшается размер словаря. Это уже не сотни тысяч слов. Модель лучше умеет обобщать и находить взаимосвязи между различными токенами.
72: И на самом деле существуют, помимо обычных токенов, ещё служебные или специальные токены. Это какие-то зарезервированные токены в языковых моделях, которые выполняют заранее заданные функции. Они не соответствуют обычному тексту, а используются именно для управления поведением модели. Да, у
73: Каждых моделей, они разные, но их можно поделить на некоторые классы. Мы сегодня рассмотрим только те, которые нам важны. С точки зрения агентов. У нас есть, например, токены окончания генерации авторегрессионных моделях. Это еос токены. Как правило, они буквально говорят, что все предложение до
74: Это можно отдавать пользователю. Дальше. Есть специальные токены, которые обозначают Роли пользователь, ассистент или системный промт. Это нам позволяет сделать так, что model видит множество таких токенов, после которых следуют непосредственно промты во время своего обучении.
75: И потом, на инференсе, когда мы применяем это в реальных системах, у неё меньше шансов закалютин ровать, и она лучше следует как бы этой структуре. И, наконец, у нас есть управляющие токены или модификаторы промта, например, транслейт самурайс или перепиши там формальном
76: Стиле, они вот появляются Ровно из того, что очень часто у ассистентов просят там просто переведи мне вот этот кусочек текста или суммаризировать же, если модель это много раз видела именно с таким фиксированным токеном во время обучения, то и потом при реальном использовании в жизни она справится с этой Зада.
77: Получше. И теперь мы готовы вернуться к тому самому. Next, токен, предикшн, как мы теперь знаем, что такое токены, и то есть на самом деле наша модель предсказывает следующий токен в контексте всех поданных ей на вход, при этом говорят, что модель является
78: Авторегрессионной, то есть выход модели с 1 этапа является входом для другого, чтобы мы не заканчивали просто генерацию на 1 токене, а завершали предложение до конца, пока модель не сгенерирует как раз end of sequence токен, и здесь нам полезно понять, что такое.
79: Контекстное окно это вот как раз длина, которая исчисляется в токенах того, что модель может в моменте учитывать и когда лимит достигается, более старые данные, которые были в этом промте или откидываются, или суммаризировать меньше места и так далее.
80: Что происходит внутри каждого отдельного шага генерации. У нас после токенизации входного текста модель вычисляет представление последовательности, которая содержит информацию о значении и позиции каждого токена во входе. Затем это представление подаётся в модель, которая выдаёт
81: Оценки в виде логитов, которые отражают вероятность каждого токена и словаря быть следующим в последовательности, и здесь используются параметры температуры, который управляет степенью случайности вывода низкая температура делает распределение вероятностей более острым и модель
82: Чаще выбирает наиболее вероятные токены, и текст получается более предсказуемым и строгим, а более высокая температура сглаживает это распределение, и у нас больше шансов выбрать какой-то токен, может быть, не самый вероятный, но 1 из и на основе этих оценок, которые мы выдали.
83: Или на предыдущем этапе существует несколько стратегий выбора следующего токена для продолжения текста. Самая простая стратегия это буквально выбирать токен с максимальной оценкой. Есть более стохастические методы. Например, top ка семплинг, когда у нас выбирается случайный токен и
84: Is ка наиболее вероятных и существуют более продвинутые методы декодирования. Это, например, бимсерч, который рассматривает сразу несколько возможных вариантов продолжения и до какого-то этапа пытается сгенерировать все их и потом уже оценивает вероятность целой последовательности токенов.
85: Давайте теперь поговорим про то, как обучается ллм. В общем случае это можно разделить на 3 шага. 1 шаг это претрейнинг. На этом шаге в нейросеть загружают просто большие массивы данных о мире, и мы показываем модели текста отовсюду, откуда только можем и главное,
86: Задача на этом этапе научиться предсказывать буквально. Вот следующий токен, следующий этап это фантюнинг, это метод адаптации готовой языковой модели к специфическим задачам компании или, возможно, какой-то новой предметной области. Модель учится уже на примерах. Запрос, ответ
87: И лучше подстраивается именно под то, как нужно на них отвечать, и, наконец, 3 этап это for learning например, на прошлом шаге мы научились не просто предсказывать следующий токен, но и отвечать на запросы, но на самом деле людям не всегда нужны какие-то точные ответы или.
88: Да, в такой формулировке. И при этом этих вопросов очень много. И у нас просто не хватит времени и денег, чтобы насобирать эти обучающие корпуса. Поэтому на этом этапе мы буквально пробуем обучить модельку на фидбэке или от живых людей, или обучив
89: Другую языковую модель, которая будет оценивать, как наша лм справляется с какими-то конкретными ответами, и мы будем обучаться тогда на фидбэк от вот этой реворд модели. Итак, давайте подсоберём, что хочется унести из этого рассказа. 1, что модельки у нас работают с токенами, то есть они не знают,
90: Что такое слова, предложения или смыслы? Они работают только с последовательностями токенов и пытаются предсказать наиболее вероятные из них, почему это важно на практике первых нам это пригодится при расчёте биллингов за использование модели и при проектировании контекст.
91: Напрямую во.
92: Что такое слова? Предложения или смыслы? Напрямую они работают только с последовательностями токенов и пытаются предсказать наиболее вероятные из них, почему это важно на практике. Во первых, нам это пригодится при расчёте биллингов за использование модели и при проектировании контекст.
93: Окон, потому что их длина как раз вычисляется в количестве токенов, а не символов или слов. Во вторых, это важно для понимания того, насколько важно соблюдать правильную структуру промта и передавать моделям контекст именно так, как они его ожидают, потому что если
94: Они в обучающей слова систем идёт систем промт, а мы его пытаемся записать просто так, где тому, что моделька будет плохо реагировать. 2, что мы обсудили, это специфику обучения.
95: Выборке 1000000 раз видели, что после то сбоку, то не стоит удивляться, что мо
96: Они в обучающей выборке 1000000 раз видели, что после слова систем идёт систем промт, а мы его пытаемся записать просто так, где-то сбоку то не стоит удивляться тому, что моделька будет плохо реагировать. 2, что мы обсудили, это специфику обучения, что мо,
97: Обучаются на каких-то больших объёмах данных предсказывать следующий токен. Мы из этого знаем, за что отвечает такой параметр, как температура. И теперь можно понять, откуда возникают галлюцинации. Галлюцинациями называют уверенную генерацию.
98: Правдоподобной, но неверной или вымышленной информации. Они как раз возникают, потому что это статистические модели, она не проверяет факты, она просто в голове себе представляет, какой следующий токен наиболее вероятный и уверенно генерирует дальше последовательность токенов. Поэтому здесь
99: Очень важный пункт жирным только то, что не автоматизируется. Например, в системном функция вернула тру то
100: Который специально выделен. Давайте автоматизировать все, что автоматизируется, и изировать. Промте писать, что если какая-то мы делаем, а, а если
101: Очень важный пункт, который специально выделен жирным. Давайте автоматизировать все, что автоматизируется, и изировать только то, что не автоматизируется. Например, в системном промте писать, что если какая-то функция вернула тру, то мы делаем. А, а если
102: Вернула фо, то мы делаем б это попытка нарваться на лишние галлюцинации. Ну и плюс потратить деньги на лишние инференс модели. Хотя это можно было написать просто программным кодом. И дальше в контексте того, как у нас обучаются модельки, можно сделать выводы с какими
103: Задачками они справляются хорошо, а с какими не очень. Сначала давайте рассмотрим сильные стороны. Это, во первых, задачи с высокой статистической структурой разные. Перефразирование, резюмирование, генерация связанного текста или кода, потому что это все это задачи на
104: Сказание вероятных последовательностей слов, на которых модели как раз обучались, во вторых, модельки хорошо умеют обрабатывать и генерировать стандартные для них структуры это какие-то рассуждения, такие как chain of thoughts, которые мы рассмотрим в следующих занятиях вызовы Тулов.
105: И обработка каких-то стандартных файлов и таблиц. Но с чем модели? Во первых, это точные, алгоритмические, символьные, например, там сколько букв, а в слове банана вот это в моделях не нужно
106: Справляются плохо. Задачи подсчёт букв цифр спрашивает.
107: И обработка каких-то стандартных файлов и таблиц. Но с чем модели справляются плохо? Во первых, это точные алгоритмические, символьные задачи. Например, там подсчёт букв цифр спрашивает, сколько букв, а в слове банана вот это в моделях не нужно.
108: Потому что они предсказывать следующий, а не смотреть там на предыдущий. И буквально 2 ограничение это актуальные знания. Если вы спросите у модели, там новости, за вчера, скорее всего, она не сможет ответить.
109: Учились токен уметь что-то считать.
110: Потому что они учились предсказывать следующий токен, а не смотреть там на предыдущий и буквально уметь что-то считать. 2 ограничение это актуальные знания. Если вы спросите у модели, там новости, за вчера, скорее всего, она не сможет ответить.
111: Если у неё нет никаких дополнительных инструментов, потому что её обучение было где-то год назад или там полгода назад, и все заложенные в неё базовые знания, они ограничены как раз этим периодом. 3, в чем модельки не очень хорошо справляются без дополнений.
112: Им это долгосрочное планирование и память, то есть запланировать последовательность там на 30 Шагов, нигде при этом не сохраняя её и не продумывая, по несколько раз даётся им довольно тяжело, но здесь небольшие спойлеры, большинство из этих ограничений.
113: Можно как раз решать с помощью Кубиков, которые мы дальше и рассмотрим. И теперь мы готовы перейти к практике, где мы уже сможем на реальных кейсах посмотреть как раз ограничения лмок и их сильные стороны. В этом ноутбуке хочется показать, как можно использовать лмки.
114: Рассмотрим как локальный инференс и на цпу, и на gpu, так и инференс через внешние апишки и также на примерах рассмотрим те ключевые выводы про лм, которые мы с вами сделали в лекции сначала мы настраиваем среду на самом деле.
115: Google club может работать и с цпу и гпу, я покажу оба варианта чтобы вам включить гпушку, нужно перейти в runtime и поменять рантайм тайп на гпушный, здесь мы устанавливаем нужные нам библиотеки и вот для того, чтобы установить библиотеку с под.
116: Gpu если она вам доступна, мы здесь добавим следующие флаги.
117: Переходим к 1 пункту как можно использовать лмки во первых их можно инферить локально когда вы буквально скачиваете модель с открытыми весами и инферить её на своём ноутбуке как на цпу так и на gpu и во вторых можно ходить во внешние api и.
118: Понятно, что везде есть какие-то плюсы и минусы. При локальном инференсе вы получаете там полную приватность данных, данные никуда не улетают, полностью, у вас логгируются и так далее. Но при этом приходится хостить модельки у себя, что иногда бывает дорого по железу и непосредственно по техпод.
119: Когда мы ходим через апишки, мы получаем доступ к огромным моделям, потому что они расположены на больших вычислительных кластерах, но при этом тогда нам необходимо платить за каждый отправленный туда токен и полученный с сервера. Ну и плюс мы теряем
120: Приватность данных, потому что они уже могут куда-то утекать. Начнём с локального инференса и с цпушки. Сначала вынесем какие-то общие параметры, которые мы будем использовать внутри всего ноутбука и напишем какой-то системный промт. Здесь я просто говорю, что
121: Ты мой персональный ассистент, и, пожалуйста, всегда обращайся ко мне, Алёна, и прошу выдать там 3 идеи, где агенты могут быть полезны. И вот здесь мы продемонстрируем, почему важны те самые специальные токены и почему важно подавать модель, данные именно так, как она ожи.
122: То есть здесь я формирую плейн промт, где буквально пытаюсь сказать, что смотри, вот этот кусочек, это системный промт, вот этот кусочек, мой промт. И дальше мы ждём от тебя ассистентский выхлоп, а здесь запишем в том формате, в котором принято передавать в эту конкретную модель.
123: В формате там месседжес, где роль отдельно выделена и она потом перекодируется. Итак, здесь мы скачиваем маленькую маленькую модельку с Хагин фейса и распечатываем, что все загрузилось успешно и дальше пишем обёртку.
124: Над этой моделью. Здесь мы проставляем флаг про энглу леерс 0. Что нам говорит о том, пожалуйста, инфери эту модельку только на цпу подгрузили её на цпу. И теперь давайте попробуем заинфлрмацию, которая буквально передаёт сообщение, которое мы
125: Ей передать и получаем из неё выхлоп. Напоминаю, что я там просила дать 3 идеи, где агенты могут быть полезны. И в 1 случае я её спрашивала с помощью плейн промта.
126: Где я буквально говорила системный промт, это мой промт и что-нибудь ответь. И что мы видим, что вот моделька начала отвечать, и потом решила догаллюцинировался, что-то ещё и попросил ассистентский выхлоп, и он что-то ещё по
127: Отвечал и что-то ещё и так далее. То есть зациклилась. Поэтому, пожалуйста, обращайте внимание на то, как конкретная модель ожидает данных, которые будут подаваться ей на вход, потому что вот, например, если мы передаём так как она ожидает, то она буквально отвечает то, что мы хо,
128: Там 3 области, в которых агент может быть полезен. Ну и дальше просто потому, что модельки любят генерировать много текста, она предлагает ещё более конкретные примеры, но это уже лучше, чем было в предыдущий раз. Но, как мы видим на цпу мы можем инферить.
129: Только супер супер лёгкие модельки. И вот это, например она даже забыла, что я её просила вообще то обращаться ко мне. Привет, Алёна. Теперь давайте перейдём к гпушке. Здесь мы уже скачиваем модельку побольше и проставляем параметр в обёртке над Эллэй н гпу леерс - 1. Здесь мы
130: Просим заиспользовать все слои, которые только можешь, перенеси их на gpu и теперь спрашиваем Ровно те же самые промты у гпушной модели и здесь она вот уже вспомнила, как надо ко мне обращаться, и там из за того, что она уже потяжелее и посильнее смогла ответить в обоих случаях, что?
131: Нужно, но здесь смотрим, что она решила продолжить ещё дальше hello, Алёна, сказать теперь давайте перейдём к инференс через внешние апишки. В данном случае я буду показывать, как мы инфери опен ийное апи, но можно там поизучать, как использовать и другие.
132: И внешние айпишки в других занятиях во первых, нам нужно будет здесь сгенерировать ключ, который мы будем использовать для авторизации в open ai и по которому будет билиться наши запросы, запросы и ответы, которые мы будем получать и дальше здесь, слева, нужно выбрать секрет.
133: Чтобы сложить туда этот ключ и дальше внутри файла, вы его можете потянуть уже вот так или там, если вам не нужно демонстрировать экран и вы не рискуете спалить этот токен, можете его подложить буквально сюда. Дальше. Мы, собственно, загружаем нужную нам библиотеку опен эйай.
134: Объявляем модельку, которую мы будем использовать в данном случае. Там gpt 5 нано, но можете использовать и более какие-то дешёвые. И собственно обёртка над elenco. Здесь мы просто входим в самого клиента с нашими параметрами, говорим вот такую модель будем использовать. И вот тебе сообщение.
135: На вход, на который мы ждём ответа. И вот я передаю тот же самый месседжи промт потрясающе нам моделька ответила из hello, Алёна, и перечислила 3 пункта, где ленки могут быть полезны, и дальше никуда не ушла. Теперь давайте перейдём ко 2 части, где мы посмотрим на те самые
136: И take Вейс, который мы рассмотрели в лекции, с чем хорошо справляются, с чем не очень и что для них специфично. Во первых, как мы говорили, модельки умеют галлюцинировать, то есть уверенно генерировать ненастоящую информацию тоже такая мини обёртка, которая будет просто красиво. Вы
137: Делать. И теперь давайте посмотрим, что я пытаюсь у неё спросить. Я говорю, что там ты мой ассистент по питону. Расскажи мне, пожалуйста, вот в open иай сдк, как использовать вот этот конкретный метод, спрашиваю, и она мне начинает очень уверенно отвечать там.
138: Как его найти вообще, как его использовать, как его установить, как его использовать в коде, какие там могут быть ограничения. Здесь есть 1 глобальная проблема, что этого метода на самом деле вообще не существует. То есть это буквально галлюцинация модели, где она пошла писать код, вроде как он очень похож на правду.
139: И она его продолжает там дописывать, с этим можно бороться. И там самый простой способ попросить в промте там, если ты не уверена, пожалуйста, не отвечай, что я, собственно, вот здесь вот и делаю там, если ты не знаешь, просто скажи, что не надо меня об этом спрашивать, ничего не придумывай.
140: Теперь спрашиваю Ровно тот же самый вопрос. И, к счастью, она говорит, да что я там вообще не знаю про такой метод. Отстаньте от меня. Теперь давайте перейдём к сильным сторонам. Эмок. Как мы говорили, их 1 там сильная сторона. Это что, они хорошо справляются с задачками на
141: И перефразирование здесь я её прошу, там у меня был какой-то текст, говорю, там суммаризировать для слайда, чтобы было по более там расписано, вот потрясающе справляется дальше генерация каких-то стандартных структур, потому что она опять же их много раз видела в обучающей выборке. Здесь я её прошу.
142: Неструктурированный выхлоп в виде json объекта, и да, он действительно корректный, там с какими-то сильными и слабыми сторонами элло и наконец, давайте рассмотрим то, с чем элэми справляются не очень хорошо, как мы говорили, там подсчёт символов, например.
143: Здесь я формирую строку из там заранее заданного числа символов и прошу буквально посчитать их и там сравниваю с каким-то идеальным результатом, который просто вычислить там через длину строки можно и, как мы видим, модель не смогла в предыдущих шагах, там и какой-то метод придумать, и
144: И что-то поссума изировать. И даже там запомнила, что ко мне надо обращаться Алёна, но с такой, казалось бы, простой задачей, как подсчёт символов в строке, она не справилась. Дальше какая-то точная арифметика. Здесь тоже не самое сложное выражение, 2 перемножения и потом какое-то деление, прошу её посчитать.
145: Результат, с чем она опять же, не справляется. Ну, там валим настоящее выражение с помощью встроенной функции. И 3, это знания, которые там случились за последние пару дней или буквально там, в последние секунды. Здесь я пытаюсь ей сообщить, что у теб
146: Там нету доступа в интернет. И расскажи мне, какая там цена биткоина прямо сейчас и моделька. В данном случае я её попросила не галлюцинировать, и поэтому она честно признается, что она не знает, но если мы будем уже подключать какие-то инструменты, которые ей позволят, ходит
147: Внешние базы знаний или там в интернет, то она бы это уже смогла сделать. И, наконец, модель плохо справляется с задачками цитирования. Например, здесь я её прошу выдать чётко 1 параграф гарри поттера, но при этом прошу там опять же, не
148: Без этого в данном случае она справляется плохо. То есть в 1 пункте она мне ответила, что, извините, там не могу точно пересказать его, но могу там посумени, ировать что-то или вспомнить, но во 2 случае я ей говорю, что вот книга начинается вот так, и у
149: Прошу из этой книги что-то поцитировать. То есть то, что у неё реально есть в доступе. И с этой задачей она справляется уже идеально. То есть так мы смогли на практике проверить то, что утверждалось в лекции, с чем модельки справляются хорошо, с чем не очень и какие у них особенности. Итак, давайте перейдём ко 2
150: Части нашей практики, где мы уже наконец построим нашего 1 агента, который будет использовать только элэму. И здесь я сначала расскажу, собственно, про агента, которого мы будем строить на самом деле сквозь весь курс. Для этого мы рассмотрим, что такое там тао бэнч, и рассмотрим конкретно.
151: Задачу на построение агента и затем уже непосредственно перейдём к его разработке и посмотрим на то, что может сделать агент, если у него есть только ллм и больше ничего. Итак, давайте сначала разберёмся, что такое тау бэнч. У нас появляется много агентов.
152: Последние годы, естественно, их всех нужно как-то оценивать. Многие изобретают какие-то откочен подходы, где просто пытаются его протыкать руками и там на глаз понять, насколько он хорошо работает. Ну понятно, что это никак не масштабируемое решение, поэтому стали создавать разные бенчмарки, которые
153: Нам позволят, в том числе оценить, как разные лмки справляются в агентских сценариях. И вот как раз 1 из таких бенчмарков является тау 2 бенчмарк. Он вышел там в 2 версиях. Здесь есть и ссылки на статьи, и ссылки на их реализации в гитхабе. Можете почитать.
154: Подробнее, если интересно, но если коротко, то в Таубин оценка агентов происходит так, что есть какие-то конкретные сценарии, где описывается там, что случилось у пользователей, что он пытается добиться от агента, описывается ожидаемое поведение агента, какие он
155: Инструменты должен выдать и как ответить пользователю или вообще никак не отвечать на такой запрос и так далее. И вот потом вышло ещё обновление тау 2 бэнч, где можно эмулировать не только поведение самого агента, как он будет отвечать на конкретный запрос с конкретной
156: Под капотом, но и поведение пользователя, то есть чтобы они могли общаться между собой. Итак, здесь мы скачиваем собственно репозиторий с тао 2 бичом. Можем перейти в директорию и установить там необходимые зависимости. Опять же, как в прошлый раз генерируем ключик для
157: Модели, которую мы будем использовать под капотом. В моём случае это open айная модель и подгружаем его в переменные среды. Также вы можете вызвать команду, которая позволит вам запустить симуляцию. И здесь вы сможете поработать в разных доменах и от лица пользователя, и от лица агента
158: То есть вы будете получать конкретное задание, что ты должен заставить его отменить твоё бронирование и играть роль пользователя. Давайте посмотрим на задачку, которую мы будем решать. Там есть несколько доменов, мы с вами займёмся агентом бронирований.
159: Или эйрлайн агентом, то есть агент, который отвечает там за полёты, бронирование и так далее. В самом задании. Мы сейчас посмотрим конкретно его политики и что он должен делать. А что не должен для этого мы переходим там, в внутри этого репозитория в папочку с нужной
160: И достаём вот его политику. И здесь написан, собственно, можно сказать, системный промт нашего агента. То есть в целом, какое сейчас число, ну, для него, чтобы он понимал, и там, какой у него тон оф войс, что такое пользователь, что такое Перелёт, как мы, рабо.
161: Работаем с бронированиями, как мы работаем там с изменением этих бронирований, их отменой, где нужно подтверждать у пользователя, а где нет. И можем посмотреть с вами на примеры заданий, которые лежат внутри этого бенчмарка. Вот выберем там самый 1 здесь, как мы видим,
162: Несколько блоков, то есть вот описан пользовательский сценарий. Здесь написано, что ты пытаешься сделать с агентом следующие задачки и вызвал его вообще. По такой-то причине. Мы знаем про тебя, как тебя зовут, и там твой user
163: Которые там, видимо, ты будешь сообщать агенту, чтобы он мог дальше найти твои бронирования. И также есть описание самой задачки в целом, что она конкретно проверяет и как мы её будем оценивать, что значит, что агент справился хорошо, какие инструменты он должен вызвать, а какие нет и можем
164: Посмотреть на конкретные задачки, которые мы могли бы задавать нашему агенту. Например, там ты хочешь отменить какое-то конкретное бронирование и добавлена специфика, с которой агенту предстоит справиться там. Или ты недавно разговаривал с
165: Саппортом. И тебе сказали, что агент сможет помочь отменить твоё бронирование. То есть какая-то может быть немного другая задачка и таких бенчмарков, на которых они будут замеряться, их очень много в данном репозитории. И как мы будем работать над
166: Этим агентом мы буквально его соберём по кусочкам. То есть мы с вами в лекции рассмотрели, из чего состоит в целом наш агент. Сегодня попробуем реализовать только то, что касается эллой части, а в последующих занятиях будем добавлять инструменты, память, гардрейл и потом все это, собственно, попробуем оценить. Итак,
167: Сегодня начинаем разработку с самого простого агента. Я немного сократила системный прот, потому что большинство из того, что написано прямо сейчас в нём, то, что мы просматривали выше, нашему агенту не нужно, потому что он ни с базой данных не сможет поработать, ни сходить. Какие-то внешние апишки. Здесь я прост.
168: Там ты, ассистент, не галлюцинирую. Пожалуйста, ничего лишнего не дёргай. Можешь просто отвечать на мои вопросы. Разрабатывать нашего агента мы будем в экосистеме, лэнг, что нам понадобится сегодня? Это 2 части ленчей и Ланграф.
169: Это, собственно, 1 фреймворк в данной экосистеме для разработки агентов он капсулирует в себе разные обёртки над промтами, цепочками исполнения инструментами, агентами, памятью и так далее. А Ланграф это его расшире.
170: Которое нам позволяет реализовывать агентов, у которых состояние будет постепенно изменяться, проходя через различные узлы нашего графа. Также в этой системе есть ещё length флоу. Это инструмент, который позволяет визуально
171: Собирать агентов даже без кода и lange smith это инструмент, который позволяет дебажить и отлаживать наших агентов и многое другое. Устанавливаем нужные библиотеки и переходим собственно к написанию агентов. Сначала сделаем обёртку на
172: Тоже здесь импортируем нужный нам класс чат опен ай, который как раз является обёрткой для open айных моделей. То есть он знает, в каком формате нужно передавать разные промты и как парсить их выхлопы. Дальше импортируем обёртки над сообще.
173: Это системное сообщение сообщение пользователя, сообщение ассистента. Ну и собственно базовое сообщение, от которого они все наследуются. Теперь давайте чуть углубимся в то, как работает Ланграф. То есть вместо самого обычного пайплайна там, где у нас просто от пользователя прилетела
174: Просто мы его бросили в лм, получили выхлоп и отдали обратно пользователю. Здесь вводится несколько абстракций. Мы создаём агента как некоторый граф, в котором состояние будет перетекать между узлами графа. Что это даёт так разрабатывать продакшн новых агенто.
175: На самом деле намного проще, потому что у тебя есть какие-то абстрактные объекты, про которые ты знаешь, в какой момент, что и как именно должно было поменяться и при переходе из какого состояния, в какое мы ожидаем выполнения следующих действий. Итак, нам нужно определить состояние, которое у нас будет перетекать.
176: Между вершинами графа. Собственно, это мы и делаем. В данном случае в состоянии. Мы хотим хранить пока только сообщения, которыми обменивался пользователь и ассистент. Теперь обсудим узлы, через которые это состояние должно перетекать. Узел в данном случае должен получить текущий
177: Состояние агента, потом выполнить нужные ему операции и отдать собственно изменённое состояние. В нашем случае мы объявляем Эллэй узел, который берет текущее состояние, в котором должно лежать сообщение пользователя. Дальше.
178: Ходит в ll эмку и дописывает ответ элэми в состоянии агента. И давайте перейдём уже к разработке самого агента. То есть мы формируем его как граф, в котором вершинки это некоторые функции ребра.
179: Определяют транзакции между этими вершинками и передают между ними состояние агента, которое должно меняться. В нашем случае у нас будет самый простой агент, у которого будет просто start, потом элэна Нода и конец. Но на самом деле, естественно, дальше мы будем его расширять.
180: Инструменты, память и так далее. Объявляем наш граф, создаём его с каким-то начальным состоянием, указывая, собственно, какой класс в нём будет храниться. Дальше задаём стартовый узел. В нашем случае это энная Нода и она же будет конечной
181: Дальше мы компилим наш граф в некоторое приложение, которое уже непосредственно можно будет запускать и исполнять. И получаем самый простой графф. Теперь давайте проверим, что у нас получилось. Просто делаем обёртку, которая будет красиво принтить выхлоп модели и задаём 2 вопроса, с которыми в целом наша
182: Без чего-то дополнительного сможет справиться и с чем он не сможет в данном случае, с чем он сможет справиться, как мы ожидаем это, спросить про политику, где нужны там конкретные подтверждения от пользователя при исполнении некоторых действий. И да,
183: Агент там может нам порассказывать 2, тоже попросить объяснить какие-то ограничения по багажу при перелётах тоже потрясающе справился. И задачки, где агент уже не может сработать, это, например, попросить отменить конкретную
184: Резервацию, но не сможет он так сделать просто потому что он может только генерировать какой-то текст. И здесь там вопрос тоже, какую компенсацию конкретный пользователь сможет получить по данному бронированию с перелётом из 1 города в другой опять же.
185: Из за того, что у агента нету никакого доступа, изучить, что это вообще за бронирование, в данном случае он нам ответить не сможет, но все это мы будем решать в последующих уроках, прикручивая к lm инструменты, память, инструменты защиты и так далее, на этом мы заканчиваем нашу 1.
186: Лекцию, где мы с вами подробно рассмотрели из каких компонент состоит агент, детально углубились в то, как работают эми. Собрали простейшего агента в следующем занятии, которое стартует совсем скоро мы изучим, что такое инструменты и msp, и непосредственно интегрируем их в наш
187: Агента.