Transcription
Всем добрый день, кто уже не первый раз пришёл меня слушать. Вот.
Во, класс. Спасибо большое. Я вас всех очень люблю. И те, кто первый раз прошёл, тоже очень люблю.
Очень короткая справка про то, кто мы. Мы компания BРNoft. Делаем под заказ всё и вся техподдержку, IT-сопровождение. Ну и вообще, короче говоря, мы просто галера. Вот.
Я уже здесь с этой сцены рассказывал доклад про то, что у меня за бизнес, чем я занимаюсь. И сегодня я больше про свой бизнес рассказывать не буду. И расскажу вам про И агентов.
А для начала вопрос такой риторический. Кто такой егент? Я когда про вообще эту тему начал как-то узнавать, ну, когда уже хайп произошёл про Чат GPT там и прочую эту историю, ну, что люди делают каких-то и агентов, а если делают люди, то делают и компании. Если делают компании, то можем делать мы. Если можем делать мы, то мы можем на этом зарабатывать. Вот. То есть у меня цепочка примерно такая в голове выстраивается. Всё приходит именно к этому.
И вопрос, что такое агент? Я когда начал читать, я понял, что это что-то вроде этого. Кто смотрел фильм Жизненный человек? О, о'кей. Да, я все все прекрасно понимают, что речь идёт про Джарвиса. Вот мы вспоминаем фильм Железный человек. Я поминаю, вспоминаю это 2008 год. Я в восьмом классе, и у меня как раз через полгода карьера моя разработчика начиналась. И я такой: "Блин, капец". Он разговаривает со своим агентом, он говорит обычную там, ну, связанную, но как бы не не команду чёткие даёт, а просто свободно разговаривает. И его его этот Джарвис понимает, как-то конвертирует эту информацию в задачу, эту задачу выполняет. То есть у меня это на мой четырнадцатилетний мозг это произвело какое-то недимое впечатление. Я понял, что я когда-нибудь хочу до этого добраться.
У меня была масса попыток потом в универе на первом, втором курсе попытаться что-то такое сделать. Я тогда ещё, а, как это, использовал хитрый способ общения с Google Спичем, который транскрибировал моё голосовое сообщение. Потом просто из слов пытался выявить контекст, что я запрашиваю. И получается, ну, я остановился только на том, что я научился ставить музыку на паузу и включать музыку обратно. И на этом, как бы, история моего реагента в 2012 году закончилась.
Давайте мы теперь, э, перейдём к докладу. А я сейчас сначала расскажу не про иагента, а про И. Кто знает, как работает искусственный интеллект, поднимите руки. Это очень грустно, потому что я думал, что я буду сам умным. Но хорошо, что вы здесь тоже есть.
Но если мы будем сильно упрощать, да, под капотом, там куча математики, куча разных сложных вычислений, но под капотом это что-то вроде, э, дорисовывания линии. То есть мы, если, грубо говоря, если я возьму, нарисую какую-нибудь линию, то я могу попросить вас её дорисовать, имея в виду то, что я имел в виду, когда её рисовал, и вы её будете дальше продолжать. То есть это, если мы очень сильно упрощаем.
Но если мы переводим наш обычный житейский формат, это что-то, что на вход получает любой контент. Да, у меня здесь картинка, но неважно, это может быть картинка, это может быть текст, это может быть аудио, неважно, что-то приходит внутрь какой-то системы, ну, в нашем случае искусственного интеллекта, и на выходе после того, как мы получили контент, мы выдаём другой контент. То есть это мы, если мы говорим про там всякие чат GPT и прочее, мы на вход получаем текст, на выход получаем текст. Ну, иногда бывает бывает бывает и картинка. То есть мы, ну, по сути, дописываем контент. Сейчас я попытаюсь вспомнить, что у меня на этой картинке. А, да.
И взаимодействие с искусственным интеллектом у нас происходит вот, ну, в формате диалога. Я ему чего-то сказал, он посмотрел у себя то, как раньше, когда его обучали, как на мой вопрос все другие там отвечали, он это у себя в голову впитал, как-то перерыл и понял, что, скорее всего, надо ответить что-то из этого. Дальше я ему отвечаю следующий вопрос. Он получает всю историю нашу нашей переписке, плюс последний мой вопрос и предполагает, как, скорее всего, надо продолжить этот разговор. Ну, то есть это, я думаю, ни для кого не новость, как это работает с точки зрения юзера. Вот.
Ну, подытожим, типа, это что-то, что продолжать контент. Давайте мы теперь вот эту вот зачёркнутую линию уберём и поговорим про то, что такое и агентство.
То есть, если мы возвращаемся, вот я проводил пример про линию, да, если там седьмой-восьмой класс алгебры, вот, ну, там какой-то какой-то график строится. И вот, кстати, хороший вопрос, видно, а там же есть, да, ещё другие экраны. То есть вы видите здесь, что написано.
Мы можем нашему искусственному интеллекту, как мы его можем придить, вы агенты, мы можем ему сказать то, что чувак, я тебе буду чего-то говорить, ты это чего-то конвертируй как-то в задачу и это вот это сконвертированную как-то задачу передавая мне в формате Джейсона. То есть я ему говорю: "Ну, создай задачу". И его простая задача, э, как с это с этой задачей создать Jсоon, в котором будет содержаться указание создать таск польм тайтлом равный ABC. То есть, по сути, это вот уже и есть и агент. Это что-то, что может из моего контента, из моего текста выявлять задачи, которые я хочу, чтобы он он мне сделал.
Я ему отправляю какой-то запрос, он у себя под капотом этот запрос как-то интерпретирует, понимает, достаточно ли ему информации для того, чтобы выполнить эту задачу. То есть, если мы говорим: "Вот, напиши доклад по истории", он: "О'кей, а о чём? Почему вообще? Ну, чего чего ты хочешь, чтобы я ну рассмотрел? Ему этой информации недостаточно, он у меня это дознаёт. То есть в формате диалога это происходит".
После чего, как я, ну, после того, как я ему отвечаю на его вопрос, он, допустим, спрашивает: "По какому периоду истории?" Я говорю там, допустим, ну, XIX век, расскажи им просто вот краткий доклад, что происходило там, не знаю, в европейской части нашей страны. Вот он, допустим, такой контент будет рассказывать, всё, он как-то у себя уже из акромов эту информацию вытаскивает. То есть механика примерно такая, то есть формат диалога. Мы мы изначально искусственному интеллекту оговариваем, что именно он в целом может нам сделать полезного, потом начинаем с ним общаться, и он на основании этого полезного, ой, на основании нашего общения выявляет, есть ли у него достаточно информации для того, чтобы сделать это полезное. и всё под капотом вот в виде вот этих тех функций, которые, ну, пытаются как-то под капотом продолжаться в виде какого-то контента, который максимально подходит по то, чего от него ожидает.
И если мы возвращаемся к этой картинке, к где мы общаемся с нашим и агентом, у нас появляется тут третий участник. Если мы говорим там про обычный и мы открываем интерфейс chatча GPT, например, и с ним общаемся, а тут представляем, что мы открываем интерфейс chatчат GPT и рядом ещё открываем нашу программу. И мы как бы, ну, мы глазами и руками понимаем, что сейчас GPT сказал нам: "Ражми в программе такую-то кнопку". Мы тут выступаем в роли как раз-таки непосредственно этого агрегатора и агента, который будет выполнять те команды, которые говорит ему делать искусственный интеллект. Ну, я для упрощения на графике рисую то, что и агент как бы сам обращается к этой системе, вызывает те или иные методы и потом уже отчитывается пользователь о выполнено работе то, что вот смотри, какой я молодец, я всё это сделал. Ну, и мы дальше уже можем с ним общаться.
Подведём небольшие итоги этого маленького раздела. Чем отличается агент от обычного искусственного интеллекта? С каждым запросом, когда я обращаюсь к этому искусственному интеллекту, который мы хотим, чтобы был как и агент, я ему говорю вместе со своим текстом я говорю ещё возможные вещи и полезные действия, которые я как как компьютер, как сервер могу сделать. То есть я могу там создать задачу, добавить пользователя, могу собрать отчёт. Дальше мы по контексту, если и агент понимает, что у него достаточно информации для того, чтобы задачу выполнить, он её выполняет. Если делать нечего, то он генерит подходящий ответ, который максимально подходит для того, чтобы мои запросы удовлетворить. Опять же, в случае с примером, с историей, он говорит: "А по какому периоду надо или каких ты хочешь ключевые лица задействовать?" То есть он вступает в диалог и пытается как-то информацию выяснить.
Можно вести один диалог, то есть в чём вот удобство и агентов. Можно вести один диалог, которым можно несколько действий сделать. Например, мы можем создать пользователя Васю, а потом попросить этому пользователю отправить какое-то письмо. То есть прямо вот в формате диалога: "Создай юзера". Он говори: "О'кей, создал Васю, теперь отправь ему письмо". Он смотрит на всю историю переписки, понимает, что он создавал во время этого нашего диалога пользователя с именем Вася. Вот его айтишник, и он этому пользуется. Этим айтишником отправляет какое-нибудь письмо. Ну, это так вот пример того, что может происходить. Или же там извлечение логов, исходя из контекста. Это можно, допустим, попросить его в локе сходить там в графане, посмотреть, как что произошло, и как-то этот отчёт сереализовать и и для удобно понимаемого формата нам предоставить.
Подходим теперь непосредственно к реализации и агентов. Как их можно сделать? Вот, допустим, мы попробуем указывать формат. Мы можем отправить такой запрос. Мы пишем ему то, что отвечай, Jсон и ничего иначего. Вот тут я прямо довольно чётко ему говорю то, что пожалуйста, я жду от тебя только Jсоon и никогда ничего не отвечай. И, к сожалению, у всех и под капотом есть такая проблема, как галлюцинации или же слишком большое желание угодить пользователю, и он ещё может добавить пару водных слов. И в ответ приходит вот такой текст, который, к сожалению, распарсить мы, ну, конечно, можно, то есть на это добить и как бы, ну, искать первую открывающую скобку и искать последнюю между ними посмотреть как Jсон. Ну, это, в общем, то, как функционировали первые агенты там в двадцать третьем году, когда я наблюдал там, что Open source выкидывали, там была история такая, что там в цикле кидался запрос в этот Open AI в тяж до тех пор, пока он не кинет полидный Джесон в ответ. То есть мы, ну, надеялись то, что он это сделает. И знаете, оно в целом работало, то есть люди были довольны.
Следующий этап - это прямо прогресс. Мы можем начать его запугивать, можем говорить, типа, дружище, мы очень хотим, чтобы ты дал Джесон. Если ты на не дашь мне джесон, я больше с тобой разговаривать не буду. Ты будешь уволен. Проче, там, ну, некоторые ещё пишут капсом, типа, Джинсон, Джинсон, вот только Джинсон там, типа, прямо вот вообще уже горит. Я буквально вчера такой пром списал в другом проекте. Вот. Но там был и там я был вынужден, типа, там по-другому не работало. После капс он начал слушать. И он вот даёт вот пример такое, типа, блин, я испугался, давай, пожалуйста, вот тебе вот твой джон, только пожалуйста, ничего не делает. То есть, ну, тяжело это, знаете, поскольку, ну, я занимаюсь бизнесом, да, хоть я внутри базовый разработчик, я обожаю разработку, но я всё равно на всё смотрю через призму денег. Можно ли за это взять деньги? Вот в целом, если никогда это не упадёт, то можно. Но глобально, как бы, на конвейер это ставить нельзя. То есть мы не можем клиенту декларировать то, что, дружище, вот твой и агент, пользуйся, наслаждайся, всё хорошо. То есть поэтому этот вариант подходит только для каких-нибудь там своих локальных там проектов, поиграться, поразбираться, как это работает.
Выходит следующее нововведение, по-моему, году двадцать третьем или двадца четвёртом это вышло. Двадцать третьем всё-таки структурированный вывод. То есть теперь стало можно отправить запрос не просто в виде текста, а отправить прямо ему указание, то, что мы хотим такой формат. То есть мы вот прямо виде схему, указываем то, что вот такое-то, такие-то поля, имя, возраст и город, где, допустим, он живёт. И в ответ из нашего запроса будет приходить такой Jon. И вот кто торопился. Вот. И в целом, как бы, оно уже, знаете ли, гораздо лучше, надёжнее работает. Когда штука появилась, мы начали подрубать в разных проектах в формате экспериментов. Ну и в целом практически всегда она выдавала нормально. Иногда были такие истории, то что мы, когда вскармливали большой огромный там пром какой-нибудь документ и говорим типа вывез документ какую-то информацию, он бывало просто выдавал артефакты на уровне Джейсона. То есть сам Джейсон получался невалидный, потому что у него просто крыша ехала, и он ну он же как как бы каждый символ он генерит, ну думает, что какой символ будет бо будет более уместный именно здесь в данный момент. Иногда у него бывают там сбои, он где-то кавычку не закроет, кавычку не откроет. То есть тут ну уже в формате экспериментов эта ситуация вся докручивается, доводится до норма до нормального состояния. И в некоторых случаях, к сожалению, прийти к стабильно работающему варианту нельзя.
И следующий вариант, который появился ещё чуть позже - это tool calling или function calling. Он сейчас доступен у всех облачных провайдеров GPT систем. Мы пользуемся либо чат GPT, либо гигачатом. То есть в целом мы из облачно больше никакие не интегрируем. А учитывая то, что мы работаем на территории РФ и у нас компании из РФ и особенно там из госсектора, им, к сожалению, или к счастью ничего кроме гигачата нельзя, либо уже запускать что-нибудь локально своё. И вот и там, и там это доступно. только там чуть отличается опишка там, ну, чуть по-другому могут поля называться, по-другому структуры данных. Но суть такая же.
Что у нас происходит здесь, на этом примере? Мы пишем э сообщение и говорим: "Построй график функции sin x". И рядом с этим сообщением мы ему говорим то, что из серии: "Дружище, если вдруг ты из контекста нашего диалога, из того, что я тебя прошу, если вдруг ты где-то уловишь мысль того, что я хочу от тебя получить график математической функции, то, пожалуйста, скажи мне об этом. то, что вот, э, usзер захотел график математической функции, то есть и учти то, что там вот такие поля, вот в эту в поле Expression пиши графи текстово присроения функции. И вот практически во всех случаях, если мы говорим про GPT, ну, этот Open AI, про гигачат, даже самая-самая простая модель, тут это будет работать максимально надёжно. То есть он практически никогда не выдаст вам артефакт, он выдаст вам реально это указание построить график функции Sin X. То есть вот такие простые ситуации, где надо из какого-нибудь там одно-двухсрочного сообщения выявить задачу, чего я хотел бы, чтобы, ну, можно было гарантированно сделать, исходя из контекста. Тут это уже работает.
В чём плюсы именно функшн коллинга перед э структурированным выводом, который здесь был? Если мы вернёмся сюда, можно увидеть то, что тут уже как-то не получается диалог вести. Эта штука офигенно работает в тех ситуациях, когда у нас очень утилитарная маленькая программа. Допустим, у нас бот, который транскрибирует голосовое сообщение, а потом у него задача из этого сообщения извлечь задачи и больше ничего. То есть всё, вот ему больше ничего не надо. В таком случае, да, мы можем сделать отдельно вот такой вот запрос, который только извлекает задачи. И это будет работать гораздо надёжнее, чем function calling, потому что тогда у этого у GPT под капотом не будет пространства для творчества. Он будет только заниматься тем, что будет искать задачи, которые можно извлечь. Больше ничего.
А тут уже другая ситуация. Мы можем вевести диалог и можем сказать нашему иагенту, что мы в целом можем много чего делать с той информацией, которую он нам даст. Мы можем пойти в базу, забрать логи, мы можем, не знаю, сходить в другую опишку, дёрнуть её и передать тебе информацию. Это для обработки. Мы можем ка какой-нибудь в базу сходить и забрать какую-нибудь сущность имен для того, для для дальнейшей обработки. То есть в целом мы можем каждый раз мы можем много чего делать и с каждым запросом эту информацию передаём. И в итоге как бы, ну, стандартом в индустрии стала работать через function calling. То есть мы в итоге каждый раз скажем сообщение шлём, что именно мы можем сделать. И он это из контекста понимает и отдаёт. Структурированые выводы, они отлично работают в тех случаях, когда у нас просто вот надо, ну, жёстко конкретно одну какую-то задачу решить.
Пройдёмся, перед тем, как я буду рассказывать уже непосредственно про саму технику, пройдёмся про некоторые заблуждения про етов. Это то, с чем я столкнулся, когда я в это погружался. Особенно я, когда в начале этого года появилась такая тема, как MCP сервера. Я начал вот ещё глубже погружаться, и, ну, у меня возникали в голове разные заблуждения, и особенно они, к сожалению, возникали за всяких вот этих вот блогеров, которые, ну, э, делают какую-нибудь красивую превью на Ютубе, типа, сделай своего личного помощника за 5 минут там, типа, и буде всё будет работать. И возникают некоторые заблуждения, которые они как бы искажают картинку от того, что есть на самом деле.
Вот первое первое заблуждение то, что и агент делает всё сам. То есть вот мы, ну, предполагаем или я предполагал то, что вот будет такая ситуация, то, что есть я есть мой мой компьютер, и я в этот компьютер даю какую-нибудь команду текстовую, неважно, что-то что-то прошу его сделать. Он передаёт дальше эту информацию непосредственно в большую языковую модель, там чат GPT или это гигачат, неважно, и языковая модель сама куда-то обращается. То есть опять же, если вы включите любые ролики про MCP сервера и агентов, там будет будет выглядеть то, что, ну, там какой-нибудь блогер будет классно рассказывать про то, как Клод или как это Гемени сама куда-то ходит. Мы указали MCP сервера, и она сама куда-то под капотом ходит. То есть у меня возникло просто какой-то дисбаланс в голове, потому что как это, ну, если лмка - это что-то, что живёт само в себе, мы на вход ему текст дали, он на вход, на выход текст отдал, а тут она куда-то будет обращаться, куда-то ходить. То есть тут у меня, ну, немножко ситуация искажалась в голове.
А выглядит архитектура примерно следующим образом. То есть опять же есть я я хочу создать пользователю Васю. Я говорю: "Создай мне пользователя Васю". Эта информация переходит в ЛНМ вместе с указанием того, что для создания пользователя Васи нам нужно его имя и нужен его год рождения. Эламка под капотом смотрит этот текст, понимает то, что о'кей, имя у меня есть, человек хочет создать юзера, но у меня не хватает возраста. И она текстом пишет, типа, о'кей, я понял, что можешь создать пользователю Васю, пожалуйста, скажи, какой у него будет год рождения. Я пишу девяносто четвёртый год рождения. Это дальше уже вся история переписки. То, что я просил пользователя Васю создать. Она его меня вот допроси, ну, решила дознать типа, что какой какой год рождения. Я отправляю ещё раз информацию, у него четвёртый год. И тут уже ЛМК понимает: "О'кей, у меня есть имя, у меня есть возраст, можно создавать команду". и она уже передаёт компу моему, ну или там сервер, неважно, что угодно, то есть ээ команду на сохранение. То есть получается, комп стоит между мной и лэмкой, и он интерпретирует ответ, ой, вернее, смотрит на ответлэмки. Если там есть чего-то для него сделать, он эту информацию сохраняет там в базу куда кладёт и уже дальше в лмку кидает. То, что, дружище, вот я создал, пожалуйста, отчитайся нашему кожаному хозяину то, что мы создали ему пользователя, чтобы он нас там сегодня не удалил. Ну и дальше Ломка пишет, типа Вася был создан. То есть вот примерно так. Ээ, когда когда я это понял, у меня в голове этот миф развенчался.
Следующее заблуждение, то, что агент - это просто лмка с крутым промтом. Э, например, мы можем, о, кляксикая-то. Ладно, мы опять же возвращаемся к этому прекрасному человечку, который решил сделать себе и агента, который умеет делать ему чай. И вот он может это сделать в виде промта, то, что он пишет: "Сделай мне чай". А вместе с этим сообщением, как вот я до этого сам самым первый пример показывал, может говорить: "Типa если я сказал тебе сделай чай, то делай чай. Если я тебе не сказал делай чай, то не делай чай". То есть вы можете это текстом передавать, ну и в итоге как бы предполагать то, что такой запрос в ЛМК интерпретируется как команда на то, что он будет делать чай. В целом, как бы это мы делаем шаг назад к тому примеру, где я показывал эти прекрасные джейсоны, которые, ну, и агент как-то по-своему пытается интерпретировать. То есть это не так, это не просто промт, это уже другой механизм именно вызова запросов к GPT системам. Оно недоступно в веб-версиях, то есть мы не можем чат GPT веб зайти и попросить его там делать какие-то работы с нашей баз данных. То есть это надо сторонне стороннея система подключаться либо кпишке, либо использовать интерфейс, который уже у себя под капотом имеет интеграцию с MCP-серверами.
Следующий момент. LM сама решает, когда и как вызывать инструменты. Опять же, вот мы смотрим, у нас может быть область задача такая, типа, э сделать чай, написать отчёт, составить документ или заварить чайник. Мы отправляем команду сделай чай, и она на своей стороне уже выявляет, то есть она делает предположение о том, что нужно сделать чай. То есть она сама, опять же, я сейчас повторяю примерно то же самое, что я и говорил, но я как бы развенчиваю эти мифы и заблуждения. Лмка сама вообще ничего не знает. Если мы ей отправим сделай чай без этой команды, она скорее всего будет рассказывать про то, что означает фразе делай чай. Она это про чай был изобретён там в каком-нибуд там третьем году, треть веке до нашей эры там т-д-д и будет рассказывать про это, но никак не будет делать чай.
Следующее. ЛМ помнит контекст как база данных. Если мы вот в контексте с задачки по созданию юзера Васю мы напишем нашему лгенту апишку, то есть не через интерфейс, а вопишку напишем: "Создай пользователю Васю". Он говорит: "Какого года рождения?" И если мы забудем такую маленькую неприятную мелочь, то, что внутри и в самого нет никакой ни памяти, ничего, он ничего вообще не знает и не помнит. Для него мой каждый приход - это, ну, как это стираемо, как это, как люди в чёрном. То есть каждый раз после только я ухожу, я ему пшикаю этими стреляю аппаратом из людей в чёрном. У него стирается память, и он ничего не знает. Мне надо каждый раз к нему приходить и рассказывать то, что я до этого приходил к тебе, просил тебя создать пользо сереващ, ты спросил какого года рождения. Вот девяно четвёртый года рождения. Если я просто скажу девяносто четвёртого года, он скажет, типа ты вообще о чём кто такой и вообще причём зде четвёртый год.
И финальное заблуждение то, что ту колин - это что-то вроде плагинов GPT. В какой-то момент Openi выпустил классную инструмент GPT, где можно настроить, ну, как бы преднастроить себе этого своего помощника GPTшного, в котором заранее будет зашитый промт. мы можем сказать ему какую-то информацию собрать, но это не совсем не то же самое, что и агент - это просто получается вот та самая эта иишка с заранее догазованным большим промтом. Вот.
И последнее, ну, заблуждение, хотя это не заблуждение, просто уже плавный переход к следующей теме, как раз-таки про MCP сервера. Ну, то, что MCP сера делают умнее, это заблуждение идёт как раз-таки из от разных айтишных блогеров, которые, ну, предполагают то, что мы добавим MCP наш и он сразу станет умнее, сразу поможет нам захватывать мир, поможет нам работать, ничего не делая, короче, ну, это вот, к сожалению, пока словил такой массовый эффект, но сейчас вроде бы уже тема подуспокоилась. Такой активный хайп на эту тему был где-то в июне, в июле этого года. Сейчас уже все примерно понимают, что чудо не случилось.
Что такое MCP? Если мы это расшифровываем, как это модуal context протокол, то есть это возможность как-то стандартизировать то, что происходит у нас именно в контексте формирования запросов этих тулколингов к и и это к и системе и сделать возможность это делать расширяемым на весь мир, чтобы можно можно было open source MCP сервера писать и можно было дальше уже через них проводить интеграцию. То есть мы можем сделать какой-нибудь MCP-сервер, который подходит, допустим, для продажника. Например, он будет э-э ходить в базу и таскать информацию о том, когда сделки были.
по сколько сделок было сегодня закрыто. Мы можем сделать для прожект-менеджера, который будет отдельный MCP, который будет ходить, допустим, в GitHub и смотреть, есть ли открытые на сегодня пулреквесты, и эту информацию дальше и агенту ВЛM систему передавать. Или мы можем сделать отдельные MCP пещеры, которые будут отправлять напоминание о празднике, например. Ну, просто вот он будет ставить в календарь какие-то задачи, и это будет проходить проходить в виде интеграции с телеграмом или календарём. То есть всё то, что я вот до этого вам рассказывал про лколинг, это всё вот можно на на базе того, что я сказал, можно построить вот такие вот такие вот системы без проблем.
Но есть такая классная штука, как стандартизация, особенно в мире обычного бэкэнда. Нам это очень знакомо. Пожалуйста, поднимите руки, кто знает, что это за интерфейс. Отлично. Вас очень много. Коротко поясню. Это свагер - это способ описывать то, как мы можем обращаться к нашему бэкэнду. Да, мы можем сказать то, что вот есть метод пост для добавления животного. Для того, чтобы его добавить, нам нужно передать такие-то параметры, такие-то поля и и можно сделать ещё получение животного. И после его получения нам придёт такая-то информация. То есть мы можем описать, как мы можем встучаться в наш бэкэнд и как этот бэкэнд может на на на эти стуки отвечать.
И если мы возвращаем, рисуем эту картинку снова, я её буду рисовать быстрее, у нас вот здесь уже вместо системы какой-то сторонней, у нас здесь уже выступает в роли провайдера действий в реальном мире. Это непосредственно MCP-сервер. То есть перед каждым запуском, перед каждым обращением в ЛМ- систему наша система, а перед каждым обращением к Лэмки наша система спрашивает у MCP сервера, который к не в неё добавлен. То есть просто как сторонний внешний сервис спрашивает: "Слушай, дружище, дружище, а чего ты вообще умеешь делать? Какие вещи ты умеешь делать? И скажи, пожалуйста, какие параметры и, ну, и данные тебе нужны для того, чтобы эту функцию выполнять." MCP отвечает нашей системе, и система уже дальше конвертирует это непосредственно в тулколинг, который уже передаётся внутрь ЛМки. То есть вот я вот то, что я рассказывал там половину докладам, оно стандартизируется как раз-таки с помощью MCP, то есть больше он ничего, никакой магии не делает.
Дальше механика примерно точно так же работает. Если вдруг от Лэмки приходят указание вызвать чего-то в MCP-сервере, то ноутбук, ну система обращается к этому MCP-серверу, говорит, типа, вот всё, ЛМК сказала, типа она предположила, что кожаный хозяин хочет, чтобы мы вызвали именно это. Пожалуйста, сделай, не подводи это. Нас сейчас с тобой уволят. Ну и всё, мы это выполняем. MCP MCP серы даёт ответ. В ЛМКУ пишется то, что всё о'кей, всё было сделано. ЛДМКА отвечает, э, пользователю то, что да, всё хорошо, мы всё сделали. То есть MCP - это просто попытка достаточно успешная, я бы сказал, стандартизация. То есть там больше нет никакой магии, никакого вообще волшебства, ничего оно мне не делает. Это просто способ описывать возможные команды, которые может выполнять наша система по после обработки LM команды от пользователя в виде такого формата.
Допустим, вот на тайпскрипте код, как сделать простой сервер. Мы описываем то, что есть такой-то инструмент create user, у него такое-то название. Вот есть параметры, которые нам нужны. Причём, а если мы говорим про обычный рэкэнд, в целом разработчики небольшие фанаты и описывают нормальную документацию к своему бэкэнду. Это, ну, я не думаю, не думаю, что много таких людей, которые это любят делать. А тут как бы ситуация получается другое. Нам нужно описывать это максимально детально, чтобы нам потом не надо было работать. Чем детальнее мы это пишем здесь, вся эта информация переходит потом в запрос к Лэмке, тем больше шанс то, что мка поймёт это как надо. То есть вот тут тут получается уже прямо реально хочется писать документацию, потому что потом будет придётся меньше работать. Ну и тут уже обработчик в целом. Вот как вот если кто те, кто знаком с тайпскриптом, ну и вообще с любым с любым языком, на котором пишутся обычные рест-сервера. Вот то же самое. Мы описываем путь, мы описываем какие параметры, мы описываем обработчик сам. То есть, да, только это можно всё масштабировать, там можно выстраивать архитектуру, но, в принципе, всё выглядит примерно так.
И мы в итоге можем делать целые огромные системы. Можно делать MCP-сервера по по разным областям ответственности. То есть это может быть MCP сервер, которые работают с отчётностью, которые работают с логами, которые работают с юзерами. И всё это ещё сверху агрегирует в один другой большой MCP. То есть есть уже, э, всякие онсорсные пакеты, которые эти MCP агрегаторы, которые на вход получают все MCP сервера, которые нужно собрать поедино, и он их уже агрегирует, и дальше можно уже к нему подключаться сверку нашей и и нашим иагентам. Правда, есть другая проблема, как я говорил, то, что нам надо с каждым запросом будет ссылать все возможные вещи, которые мы можем сделать. Мы приходим к такой ситуации, то, что мы раздуваем очень сильный контекст. То есть, допустим, а, сделай чай и ещё там тысячи разных вариантов, что он может сделать. То есть у нас получается, казалось бы, всего лишь два слова, а токенов пойдёт так, как будто мы ему там в войну мир отправили. То есть такая проблема есть. И в целом как бы в неё довольно быстро упираемся, когда приходится, тогда приходится делать разные оптимизации. Приходится придумывать отдельный MCP-сервер, который входной, то есть он как этот, как швейцар, он открывает дверь, пытается понять, о чём вообще хотят спросить, понимает то, что тут вот касается отчётов. Дальше он повторяет этот запрос уже с MCP сервером отчёта. То есть тут уже этот инкастылляции можно просто придумать кучу. То есть тут уже кто бы что горазд, я разному насмотрелся в гитхабе. То есть в целом, ну, можно весело провести время.
Как общается система SCP серверами? Вот берём наш продукт, в котором уже, допустим, сейчас есть всё вот уже, ну, какая-нибудь система управления проектами или внутренняя система учёта, неважно. Вот прекрасный королевский продукт, который решает какие-то реальные задачи пользователей. И мы хотим его сделать чуточку умнее. Опять же, хотя спойлер моё честное пока пока сугубо личное мнение, на момент сейчас мне история с е агентами кажется больше классным пиар-ходом, чем что-то полезное. Но я разработчик, для меня лучший интерфейс - это просто терминал, где можно писать команды. Поэтому, ну, для меня как бы несложно будет кнопку мышки нажать там или клавиатуру нажать. Но выглядит классно. Клиенту рассказываешь то, что то, что он делал там мышкой в два клика за 2 секунды, он сможет делать голосом, но за полторы минуты он говорит: "Классно, всё, берём, пожалуйста, вы получите наши деньги". То есть это в целом, ну, хозяин барит, как я говорил, я больше про бизнес, чем про разработку, хотя разработку очень люблю.
Ну, и в итоге у нас получается, мы добавляем где-нибудь лэмку. Причём это может быть что угодно. Это может быть Гачат, может быть чат GPT, можете сами оламу или VLM запустить. Короче, тут проблем нет. Главное, чтобы было что-то, что умеет интерпретировать команды в виде истории сообщений и что умеет делать обработку вызова инструментов. То есть и соответствующие модели. И дальше уже с этим MCP-сервером можно общаться через STDIN. То есть он просто будет запускать прямо, как это подпроцесс, в него передавать через прям, ну, это CDIN команды и в ответ в ответ получа в ответ получать ответ выполнения этой команды. В целом классная штука. Это локально что-то запускаем или какой-нибудь маленький проект. Но оно не очень масштабируемое. Может быть HTTP, можно, конечно же, вебсокеты, можно JRPC, вот до целом можно что угодно там, не знаю, можно хоть сделать систему почтовых голубей, то, что будет там печататься JON, приклеиваться голуби, голубь будет лететь к MCP- серверу, там это будет как-то партиться, разбираться. Короче, тут можно строить любую систему. Вы не обязаны делать это на базе чего-то готового.
Если мы говорим про STDin, то есть вот куски кода, я потом в конце, там будет ссылка на на GitHC репозитории, статью с техническим прямо вот очень большим разжёвыванием детальным того, как это работает, как этим пользуется именно технически. Но выглядит примерно так. Мы регистрируем свой сервер. В этом сервере описываем вот, как я писал недавно, показывал до этого инструменты. И дальше уже на другой стороне вот в сервисе мы подключаем SCD клиентрафр, то есть вот просто клиентская штука. И указываем в каком у нас JS файле сбилжен нас сервер, наш сервер. Всё, оно автоматом выдёргиваги все инструменты и дальше уже может непосредственно эти инструменты передавать запросы. То есть вот функция конвертации. Вот тут мы получили инструменты, тут мы их конвертировали под формат, по-моему, этого GPT от OpenI. И дальше уже, когда получили, а, отправи отправили запрос, мы передаём эти инструменты и уже непосредственно их интерпретируем, передаём дальше в MCP сервер для вызова.
И вот выглядит примерно так. А я тут даже намеренно сделал опечатку. Ну, вернее, как я сделаю не намеренно, но когда я его уже презу делаю, я понял, что мне лень переделать этот скрин. Вот, поэтому можно сказать, что я сделаю намеренно. То есть я увидел эту опечатку уже, когда сюда вставлял скрин. Он понимает то, что хоть я и написал слово созда, вот он понял, что я хочу создать юзера и сформировал такую вот команду, создать create user с такими-то параметрами. И дальше он в тексте, в терминале, это вот в том проекте, который на гитхабе лежит, на котором я вам определюсь, он пишет то, что вот пользорва успешно создан, вот такие-то были вызваны инструменты. И там дальше уже можно это всё развивать, разгонять. То есть мы клиентам берём за основу этот проект, дальше клиентам уже эти MCP сервера и как-то эти и агенты расширяем.
Что нам даёт MCP? Тут список будет очень большой, разношёрстный. Вот. И нам даёт вообще MCP очень многое, потому что с его появлением мы можем быть спокойны за то, что в целом как-то появится стандартизация того, как мы будем общаться внутри наших систем с LM подсистемами. То есть мы можем выдухнуть, как в своё время пришёл Openпии, и всё-таки стало как-то, ну, не знаю, дурным тоном не документировать нормально свою опишку, особенно когда есть куча инструментов, которые делают автоматически из кода генерации ну вер которые делают автоматически на базе партинга вашего кода. Так, и здесь становится уже глупо не делать взаимодействие C не через MCP-сервер, просто потому что на базе MCP можно много чего готового взять, склепать, собрать и подключить. И оно будет работать уже в продакшене прямо здесь и сейчас.
Что нужно для стартов? Вот если вы захотите сделать своего и агента, который будет работать, например, в Телеграме. То есть нам нужно что-то, что просто может впитывать переписку и дальше эту переписку передавать в нашу E-систему. Ну, в моём примере я сделал вот этот черновик на работку, где можно через терминал общаться либо через Telegram. Дальше мы интегрируем с OPNI или гигачатом. СПНА есть небольшие сложности в формате в виде того, что его нельзя оплатить нашими российскими картами и белорусскими тоже. Но как бы я тут тут я думаю, ну не не провить доклад, способ наплатить найдёте. А посмотреть пару примеров заглушек, вот, и уже можете запускать это на тайпскрипте. На на тайпскрипте и архитектура.
Так, а у нас что по времени, Кать? А то я что-то расскажу нормально у меня ещё есть. Ну минут семь есть ещё. Я сейчас пропущу длинный слайд, потому что семь - это не 10, которые мне потребуется. Вот. А, ну я просто не буду ещё раз рассказывать, то, что я уже рассказывал в формате архитектуры, это архитектура архитектуры того решения, которое я в Гиткабе с вами поделюсь. Ну, как бы тут всё примерно то же самое. Просто я описываю, где что именно выполняется, что именно работает.
Поговорим про примеры. То есть я не соврал, когда сказал то, что для меня, как для разработчика и для того, кто получает деньги за разработку и агентов, пока это выглядит как что-то очень классно, здорово, но бесполезно. То есть это, ну, если в целом, если кому-то кто-то сможет сделать что-то полезное, да, и этим реально пользоваться и приносить этим реальную пользу, блин, я буду только этому рад. Но пока ещё не дошло до того, чтобы я прямо увидел что-то реально классное, что можно было бы сделать руками, а я вот захочу в формате текста или в формате голоса сделать. Но в целом можно управление пользователями делать. Я пробовал делать анализ локи, локи логов при инцидентах. В целом это прикольная штука, но тут несколько про непосредственно и агента, как больше просто про сам Ии. Вот применение ИИ уже масса. Вот я, ну, имейте в виду то, что я прие агента пока не понимаю, да, где можно классно что-то поль сделать, а с е я понимаю. И вот тут, ну, я пробовал в формате эксперимента написать небольшой скрипт, который получает на вход э логи именно, ну, он подключается к локе, где куда сваливаются всякие ошибки. Ну, сваливаются ошибки на наших бкэнд-сервисах. Он их может проанализировать и выдать информацию, что именно упало. То есть это может быть полезны в случа случаи, когда надо быстренько понять хотя бы в чём дело, а нет времени идти там на дашборды, смотреть влоги. Просто надо хотя бы где-то в телеге или где-нибудь увидеть информацию, что скорее всего сломалось.
Первичный ревю. Мр тоже классно именно на предмет того, что можно его пос попросить его посмотреть в Гитлабе, эмрку, найти какие-нибудь опасные вещи, где-то не оптимальный код. То есть он какой-то свои комментарии, текстовые даст. Ну, управление музыкой это в скобочках эксперимента. Это, хотя это уже неправильно, это уже та же самая Алиса. То есть вот Алиса по сути под капотом у себя реализует те механизмы и агенты, про которые я вам рассказывал. Я, конечно, не разработчик в Алисе, но работает примерно так же. Мы пробовали это делать интеграцию этого агента в контроль дубайского таксопарка. То есть таксопарк работает в Дубаях, он обрабатывает заказы, у него машина там как-то ездит, все там разные агрегаторы, и ему нужно выявлять те ситуации, когда, допустим, водитель как-то странно, вот он принял заказ из пункта А в пункт Б, потом заказ отменил, но почему-то из пункта Б в пункт C он потом тоже заказ принял. То есть тут как бы выглядит так, как будто он решил просто за наличные договорить с водителем. И вот такие вещи обычно мониторятся глазами, но мы пробовали такие вещи мониторить и агентом. И в целом как бы базовое базовое какое-то ревью этой этой картины можно сделать уже с помощью этого иагента. Ну и там всякие механизмы, серия анализа финансовой отчётности, соцеление счетов и документов. Вот счетами классная штука. Опять же, я когда бухгалтерам показывал, вот смотрите, мы можем в формате переписки в Telegramботом типа пока сделать какой-нибуд счёт, который можно будет доправить клиентам. Но они показали: "Классно, здорово". Мы этим пользоваться не будем. Все привыкли пользоваться там или другими решениями, которые у них уже в процессах поставлены.
Как его запустить? Сейчас я вот говорил про Open AI, говорил про Gigчат. Давайте я такую краткую сводку проведу, как мы можем свои и решения, и в том числе и агенты запускать прямо здесь. Сейчас первый вариант - это по пишке интегрироваться. Это опять же open на гигачат. Это будет точно быстро. Ну нам не надо будет никакую ни инфру настраивать, ничего. Надо будет только деньги деньги потратить на это. И на этом всё. Ну и ещё опасно, если мы говорим про какие-то чувствительные данные, если мы не хотим, чтобы данные куда-то утекали, этот вариант отпадает.
Следующий вариант - это локально запускать. То есть мы можем, как вот в нашем случае мы сделали, у нас вот есть в офисе холодильник. За этим холодильником стоит серверная. Вот. И там у нас есть серваки, которые запускают у себя под под капотом разные видеокарты. И мы под капотом там запускаем полаama VLM с работами тулколинга. Есть минус, это работает медленно. То есть если мы делаем пересчёт денег в скорость, это очень медленно. То есть мы там потратим 1.1-120 руб. на сервак, который будет работать, ну, достаточно грустно. То есть он решать будет большинство задач очень очень хорошо и здорово. Но если мы говорим про какие-то реально сложные модели, про реально сложные задачи, там, к сожалению, он нас будет сильно подводить, но зато это бесплатно и безопасно.
И следующий вариант - это аренда ВПэски с видеокарты на борту. Это один минус, это очень дорого, да, есть, конечно, такой субъективный минус, то, что может быть не очень безопасно, но тут уже насколько мы доверяем провайдеру, с которым мы будем, котором будем всё это разворачивать, да? То есть ГПУ сервер уровня там 3060 - это довольно-таки слабая видеокарта, которая будет вам максимум транскрибацию хорошо выдавать или какие-то тестовы игровые модели. Это будет стоить от 20.000 руб. в месяц. Это я говорю про Россию. Если мы говорим там про ранпо, там, конечно, сильно дешевле, но тут мы уже сталкиваемся с другой проблемой, то, что мы всё-таки находимся на территории Российской Федерации, мы не можем, как бы по-честному, в реальных проектах с ними работать.
И в итоге у нас получается такой логотип автомобильной компании не очень известный, вот на базе которого можно показать, а как мы живём при попытке запустить свои и решения. У нас есть быстро, безопасно, это, к сожалению, дорого. Ещё есть бесплатно. И если мы идём по пути безопасно и бесплатно, это будет медленно. 100%. Вот. А если мы идём безопасно, бесплатно и быстро, то это будет довольно-таки грустно. То есть он будет, ну, это только в формате поиграться, какие-то чисто базовые вещи позапускать.
Какие нужны ресурсы, да? Вот, ээ, допустим, мы решили запускать локально, мы пошли по этому пути, мы это самый тяжёлый больной путь, но он к счастью, ну, нам подходит больше всего, поскольку нам, клиентам, ну, не вариант продавать какие-то там эфимерные облачные интеграции. Нам надо, чтобы клиент мог у себя поставить сервер, потом этот сервер, видеокарту запустить. Поэтому нам приходится ровно те же самые действия повторять у себя в офисе. Что можем сделать? Допустим, у вас есть сейчас какой-нибудь ноутбук. Что грустно? Грустно, я согласен. Допустим, ну, ну, допустим, вот, э, не дай бог оказалась ситуация, что у вас нет денег, да? То есть и и да, да, если если вы, ну, э, в этой ситуации грустной оказались, просто найдите деньги для начала. Вот. Но пока вы ищете деньги, вы можете, ну, как бы жить с 8 гигами это оперативной памя видеокарты. Это довольно простые видеокарты. Это вот простые маленькие модельки типа гугловской гемы 4 млрд параметрами или вау, вот настолько видите, это плохо, что аж трясётся экран. Либо deep к сьмиллирдными параметрами. Так делать не надо. То есть это только в формате поиграться, запустить, посмотреть то, чтобы сказать: "Мама, смотри, я уже эксперт по по искусственному интеллекту". Но не более того.
Переходим в следующий шаг - это 16 ГБ видеопамяти. Тут, казалось бы, всего лишь там на восьмьгов больше, но тут уже можно гораздо более приятные вещи запускать. Это вот у нас в парке есть такие видеокарты, это RTX 3060 и её аналоги плюс-минус по мощностям. Тут уже можно очень быстро запускать гемо 4, то есть она будет работать на той же скорости, на которой там чат GPT интерфейс работает там на обычных моделях, на небольших. Вот можно медленно запустить гему 27B через уламу, можно GPT OS запустить, тоже будет довольно-таки медленно работать, либо псик. То есть в целом, если не упарываться по скорости, можно уже даже какие-то реально и агенты запускать, которые могут какую-то пользу приносить, но всё равно это всё ещё больновато.
Ну и следующая уже лига обычных гражданских видеокарт - это там 32 ГБ, это всякие RTX 3090, 5090 там и, ну, если мы говорим про 3090, 24 Гб оперативной памяти, это вариант, на котором остановились мы. Это просто великолепно. То есть, ну, для того, чтобы запускать какие-то решения, а, околобазовые. То есть, мы не можем запустить какого-то е агента, который может впитать в себя там войну и мир, и потом уже по ней как-то, ну, осмысленные тики зачержать. У него просто артефакты начинаются, он начинает выдавать какую-то лютую дичь. Но в целом там процентов 80 кейсов, с которыми к нам приходят клиенты, мы можем на этих решениях реализовать. Вот наша видеокарта 3090. Вот я её не придаю, не продаю, если что, ни в коем случае. Если искать её там на вторичке на Авито, это ты55. Их хорошенечко-хорошенько поюзали перед этим майнеры. То есть прямо по ним видно то, что, пожалуйста, убейте меня, типа, вот. А ты её вставляешь в сервер, и она потом бедная ещё тебе не не расети считает. То есть это, ну, оно работает отлично. То есть для обычного рядового пользователя там, а айтишника, кому надо разобраться в этой теме, позапускать какие-то реальные решения. 3090 прямо моя рекомендация. У него 24 Гб видеопамяти. И вот все вот эти модели, которые на экране через Олама, они в четыре раза квантованные, но они запускаются и в целом решают задачи, решают проблемы и нас очень сильно устраивают.
Подходим уже к концу. полезные ссылки. Вот я говорил про то, что в плане MCP есть куча куча уже готовых openсоourсных решений. Вот офигенные Gitc репозитории. Я зачитался, когда смотрел, что уже сообщество сделало в контексте MCP серверов. То есть там просто вот, ну вот палец устаёт так вот, как это, знаете, вот рилсы листают там полтора-2 часа вечером. Также можно листать MCB сервера, интеграция с календарями, интеграция с какими-то оффлайн вещами, интеграция с браузерами. То есть всё уже готово. И по сути для того, чтобы сделать своего агента, мы берём вот то мои наработки, которые я там сейчас в следующем слайде покажу, и утрубаем готовыми CP сервер. И в целом уже всё, уже можно реально делать интересные вещи в формате поиграться или в формате даже продать клиенту на на этом что-то заработать, но как бы успех, если у вас получится, буду за вас только рад.
Моя статья на Хабре и, собственно, там я ссылаюсь непосредственно на вот этот вот стартовые наборы, как это технически всё работает. То есть я вам сейчас больше прошёл по теоретической сводке, а тут это как это нативное продолжение контента, который вы сегодня услышали, если вам это было интересно. Тут уже техническая сводка, как именно это всё запускается, ссылка на GitHub репозиторий и детальное пояснение, как это всё работает и как это можно расширять. На этом у меня всё. Был очень рад, благодарен ваше за ваше внимание. Вот мои каналы Telegram, YouTube. Буду рад вашим подпискам и отвечу на ваши вопросы.
>> Всё классно, но временно вопросов у нас не осталось.
>> Да, ну тогда я не отвечу на ваши вопросы. Что же поделать?
>> Ну ты на автопатезе пойдёшь.
>> Ну пока не знаю, но я ещё на фам этапе выступаю. Ну ладно, хорошо. Так, друзья, а тогда благодарим Антона за то, что он ещё раз приехал.