0: Добрый вечер.
1: Сегодня у нас открытый урок по примеру курса java developer эдвансед.
2: Сегодня поговорим про chain в джаве, про такие отёки, как че он g и применение их в кваркусе, и в spring уте.
3: Напишите, пожалуйста, плюс в чате, если меня слышно и видно, я вижу, что, в принципе, все здороваются. Ага, плюсики есть.
4: Отлично. Спасибо.
5: Давайте познакомимся, меня зовут Валерий, я java developer, в разработке где-то примерно с 2010 года начинал с джавы 1 и 6, сейчас 20.
6: 1, в принципе, использую спринг с 2019 года и экспертиза в основном у меня в системах электронного документооборота с этого начинал, потом переключился на электронную коммерцию и
7: Сейчас в основном занимаюсь построением етл процессов, переброски данных. Ну и все, что связано с этим, контакты мои также указаны. Буду рад, если появятся какие-то вопросы.
8: Постараюсь на них ответить, если напишите на почту или в telegram в общем, буду рад чем-то помочь.
9: Про правила вебинара.
10: Значит, просьба проявлять участие активное, задавать вопросы в чате. Я, в общем то, вопросы вижу в чате, могу ответить не сразу в процессе того, как буду рассказывать.
11: Тему будут, буду прерываться на блоки определённые и, соответственно, читать сообщения. Плюс также в процессе буду поглядывать чат и отвечать на ваши вопросы, если они
12: Текст сразу появится. Я вас не вижу и не слышу. Могу, соответственно, только читать чат и как бы вот разговаривать с вами живу голосом также ведётся за
13: Вебинара и сама запись придёт к вам на почту, а также, по идее, её выкладывают на различных видеоресурсах.
14: Ну, давайте познакомимся, я рассказал о себе. Расскажите, пожалуйста, тоже о себе немного. В принципе, есть ли у вас опыт работы в it и с какой вообще основной целью пришли на
15: Сегодняшний открытый урок напишите, пожалуйста, в чат.
16: Буду проглядывать, возможно задержка какая-то по во времени будет, да, то есть пока вы пишите, поэтому я немного подожду.
17: Так, да, пошли сообщения. Ага. Так, заинтересовала повестка на данный момент работаю в бигтех. Да, отлично. В принципе, да.
18: Работа с элом чейном достаточно интересная тема. Опыта нет. Интересен ллм. Отлично. Думаю, тоже интересно. Для вас будет опыт джавы 4 плюс.
19: С интересом посмотреть правилам супер.
20: 13 лет плюс интересный фо джей. Отлично. Я надеюсь, что тоже что-то интересное для себя. Узнаете.
21: Так, 5 плюс разработчик с опытом использую чейн фо джей и сравнить с тем, что у меня
22: Отлично. Возможно, даже тоже подскажите что-то интересное, потому что тема такая, она развивающаяся. Все ещё так. Есть опыт в агентах бигтех. Интересно взглянуть несколько насколько сильно?
23: Отличается от курса Борисова про агента. Курс Борисова я не видел. Про агенты, в принципе, сразу. Тут, наверное, стоит предупредить, что у нас
24: Будет вебинар более такой обзорный про возможности работы с элом, да, потому что, ну, в принципе, тема большая, и как-то все там в отведённое время не получится, как
25: Рассказать, да, все в таком полном режиме. Поэтому мы просто проведём такую обзорную обзорный вебинар на тему того, как можно использовать м. С джавой.
26: Какие основные возможности посмотрим на концепции? Ну, сейчас, в принципе, все про это тоже расскажу, но не глубоко. И, в принципе, данная тема, она не рассматривается на нашем курсе java developer.
27: Advance эта тема больше как и вообще в принципе этот вебинар больше как такой пример.
28: Проведение уроков уже на курсе.
29: Так, ну отлично. Коллеги, кто, кто имеет опыт, вы тогда подсказывайте, тоже будет здорово, если поделитесь какой-то информацией. Отлично.
30: Данный вебинар проводит компания otus, поэтому сейчас немного расскажу про отус отус это онлайн школа, которая создаёт авторские онлайн курсы для
31: It специалистов она создаёт эти курсы для разных уровней, от junior до Лидов в принципе, каждый на своём уровне может подобрать для себя необходимый курс.
32: А также разрабатывает программы на основе запросов от it компаний, например, на повышение квалификации и так далее, то есть здесь в принципе есть запрос можно прийти.
33: Отус и попросить разработать курс для вашей компании, также у otus есть образовательная лицензия.
34: У отус есть образовательная лицензия. Немаловажный такой момент. В принципе, по окончанию программы он выдаётся, и в нём написано, что у вас квалификация и повысилась, и случилась.
35: Профессиональная переподготовка также в отусе есть множество направлений курсов наш курс java developer адвансет, он относится к категории программирования.
36: Ну, вообще, в принципе, больше 130 курсов есть на разные тематики в области it. В принципе, основные категории указаны на данном слайде.
37: Так, сейчас прервусь на вопросы появился вопрос добрый день, можно ли будет получить презентацию в pdf насчёт pdf? Не знаю, думаю, пришлют.
38: Вам на почту. Ну, коллеги, администраторы, я думаю, помогут с ответом на этот вопрос. Ну, по идее, вся необходимая информация будет отправлена на почту.
39: Итак.
40: Unchain. Значит, сегодняшний маршрут вебинара будет построен таким образом, что сперва мы проговорим в принципе, про че, про основные концепции, как он появился и вообще в принципе,
41: Зачем и откуда пошёл. Да, далее поговорим про библиотеки энкейн фуджей. Это уже лэнген на джаве для джавы точнее.
42: И далее на практике рассмотрим основные способы взаимодействия с лм через библиотеку фо джей плюс spring boot, плюс кваркус, далее будет информация тоже про кур.
43: И в конце просто порефлексирую про услышанное.
44: Значит, цели сегодняшнего вебинара к концу занятия вы сможете в принципе рассказать, что такое чейн, для чего он нужен, для чего это нужно? Для того, чтобы, в принципе понимать основные концепции взаимодействия с лм.
45: Кажется, что достаточно сложно будет ориентироваться в том, что происходит далее. Сможете использовать уже библиотеку. В принципе, в своих проектах. Это требуется для того, чтобы взаимодействовать с
46: С помощью джавы и в принципе сможете создать там простого агента на джаве. В принципе, таким образом вы расширите опыт разработки автономных приложений там в сфере
47: Для чего это все нужно? В принципе, для того, чтобы создавать автономные системы, пользоваться как бы новыми технологиями в разработке.
48: Давайте поговорим про концепцию в принципе, блокчейна, но для этого стоит как бы определить некоторые некоторые термины, да, про большую языковую модель вообще, в принципе, что это такое, то есть
49: А ленгвич модул это большая языковая модель, это тип модели искусственного интеллекта, который обучался на огромных
50: Данных на больших текстовых данных и который может понимать и генерировать какой-то человекоподобный текст. То есть, по сути, это некая модель, которая умеет предсказывать следующие слова и, таким образом, взаимодей.
51: С клиентом через, ну, различные интерфейсы, это такое общее понятие, да, там, про лмм. Ну, мы тут, в принципе, все специалисты не в лме, да, все так.
52: Собрались как java, разработчики, поэтому я не очень буду на этом заострять внимание, и мы просто как бы проговорим именно о на концептуальном уровне, для чего в принципе применяются л. Ламы применяются для генерации, те.
53: Для генерации какого-то контента, аудио, видео, картинки.
54: В принципе, они делают проще взаимодействие с клиентом. Например, вопросно ответная система или с помощью м можно создавать каких-то виртуальных помощников, которые помогают тоже в работе.
55: Также, например, сокращение длины текста до резюме так называемая суммаризация достаточно часто используется с применением, когда нужно сократить какой-то большой текст, вытащить оттуда.
56: Определённые смыслы, также какое-то создавать интерактивные обучающие программы и хорошо справляются именно с составлением различных планов. Также, например, помогать со здоровьем, когда вам нужно интерпре,
57: Фиксировать анализы, она, в принципе это сможет сделать тоже вопрос к качеству, это у каждой разные и по разному могут трактовать разные вещи, поэтому тоже с этим стоит аккуратным быть и для чего ещё можно prime.
58: Менять для перевода текстов на различных языках достаточно хорошо справляется. Ну и в принципе можно совершать какой-то расширенный интеллектуальный поиск, ещё какой-то информации. Также лмка поможет в
59: В принципе, на рынке достаточно много уже разновидностей языковых моделей, например, это gpt от openai, крок от x, джеминай от.
60: Google клод отан тропик квинн, по моему, это Алибаба GigaChat это уже российские модели от Сбера и яндекс gpt, соответственно, от яндекса на самом деле.
61: Достаточно много есть ещё lana, но она как бы немного другого вида, поэтому здесь я не стал её приводить в пример.
62: Для того, чтобы взаимодействовать с моделькой, нам как клиентам, как разработчикам.
63: Различные ленки выставляют пипиай для взаимодействия. В данном случае мы будем использовать пример опен иай.
64: Для того, чтобы смотреть, в принципе, как работает, как можно работать с модельками.
65: Здесь представлены такие базовые запросы к Эмке посредством эмпиай, что здесь мы видим, здесь мы видим 2 курла, они немного отличаются в 1 курле, мы видим
66: Что задаётся некий авторизационный параметр, в котором указан апикей для подключения к Эмке?
67: И, соответственно, в теле запроса задаётся модель, которая будет использована и какой-то текст. Ну то есть, например, это мы пишем в какую-то модельку, какой-то вопрос, запрос, что-то сделать.
68: Запрос все тоже самое, только в теле ещё присутствует какая-то инструкция, например, да, разговаривай как pirate, можно попросить лмку задать какую-то характеристику, и она в этой, точнее, не характеристику, стилистику, и она в этой стилистик.
69: Допустим, вам будет отвечать как вариант, то есть open eye предоставляет некие определённые контракты для и pi, для взаимодействия с эллом также здесь пример 2 есть, точнее, 3.
70: Уже когда мы задаём какую-то несколько ролей, точнее 1 роль developer, да, и просим её там говорить как пират и roll юзера, когда уже мы начинаем общаться. 100 есть, задаём 2
71: Роли дополнительное это тоже как такой пример для вызова api open air, например.
72: Основная как бы ресурсная такая история это токены при работе с языковыми моделями, большими языковыми моделями. Что такое токен?
73: Токены это, по сути, какая-то такая минимальная единица текста, которая может проходить через слои, через разные слои в архитектуре токена. То есть, может быть какое-то слово, часть слова или даже вообще в принципе отдельный
74: Символ в зависимости от того, какую, в общем, модель и метод токенизации используется в языковой модели.
75: Вот здесь, в принципе, на картинке изображено там некое приложение и вот цветом отмечены часть слов. По сути, этими блоками цветовыми мы делим наше
76: Ложение на количество как раз-таки токенов.
77: И вот эти вот токены, это, по сути, является основная единица измерения для того, чтобы выставлять, наверное, какие-то тарифы по использованию пая от
78: Больших языковых моделей, то есть в принципе, если вы захотите как-то более серьёзно работать с различными эйпиаями, внешними от моделек, да, вам потребуется все-таки оплачивать эти токены и
79: Соответственно, уже применять в работе после оплаты количество токенов будет измеряться исходя из того, какое количество текста вы будете передавать на вход модели и она будет на выходе выдавать.
80: Соответственно, эти токены будут уменьшаться обычно на тарифном плане, исходя из этой информации, как бы появились даже такие профессии, как пром, инжиниринг, который, в принципе,
81: Работают и для того, чтобы модель качественно выдавала какие-то результаты, задавая им правильные пронты, да, правильный текст, а также экономила ресурсы потребления, то есть этих
82: В принципе, этим занимаются пронто инженеры.
83: Какая есть вообще, в принципе, проблема с эллом, да, если мы пользуемся просто как
84: Ей, как обычной языковой модели, 1 момент это ограничение знаний, то есть, м. По сути, ничего не знает о внешнем мире и не знает там никакой личной информации о той,
85: О том клиенте, который с ней общается. То есть, если вы хотите, чтобы лмка узнала про это, про вас или что-то про внешний мир, в неё нужно, это как бы, ну, ей эту информацию нужно передать. Почему так?
86: Происходит потому, что лмка обучается на большом объёме данных, который там зафиксирован, может быть на определённое время.
87: Ну и, соответственно, она там может выдавать результаты только на тех данных, которые были зафиксированы в это время.
88: И также 2 проблема это пассивность, как бы лмка сама ничего не начнёт делать, пока вы не дадите ей какой-то, не зададите какой-то вопрос или
89: Вообще, в принципе не сделаете не какой-то запрос, то есть без какого-то запроса она не начнёт ничего делать.
90: Ну и с этой точки зрения как бы достаточно сложно создавать автономные приложения.
91: Потому что, по сути это только чат, да, то есть мы просто пишем какой-то, пишем какой-то вопрос, получаем ответ и дальше начинаем разговаривать здесь как бы с точки зрения автономности вообще.
92: Нет ничего и поэтому было придумано такое понятие как ai воркфлоу и в принципе такие приложения, которые делают некий вор воркфлоу на основе ая.
93: Что это такое? В принципе, это некая последовательность действий.
94: Которую выполняет с помощью больших языковых моделей. В качестве примера можно здесь привести такой кейс, когда какое-то наше приложение
95: Анализирует почтовый ящик, видит в нём получение нового письма и просит и, соответственно, просит языковую модель суммаризировать текст письма.
96: И прислать, например, вот этот короткий текст, рованный в
97: Ну, к нам в telegram, например, или, я не знаю, в какой-то любой мессенджер необязательно telegram.
98: В принципе, то это такая, как бы понятно. Такой пример, да, чтобы было понятно, да, как это работает. Но на самом деле существуют достаточно большие цепочки, когда выполняется 1 или другое действие на основе
99: Но вся проблема в том, что это все равно какая-то заданная последовательность действий именно человеком. То есть здесь лмка, она, в принципе только делает только то, что ей ска.
100: Да, человек и заложил какую-то логику. И также здесь вскрывается такая проблема, что при каком-то специфическом тексте без понимания внешнего мира или каких-то персональных данных.
101: Клиенте том же самом лмка может давать некорректные результаты, то есть некорректную, например, суммаризация.
102: Вот это тоже как бы такая определённая проблема.
103: И по итогу были придуманы и агенты, которые в принципе призваны вот эти вот проблемы, связанные с workflow и m исправить, то есть что такое ии агент.
104: И агент это некое программное обеспечение, которое работает автономно, оно может собирать различные данные и выполнять различные задачи с использованием этих данных. Автономно, без участия человека вообще. То есть она
105: Должна сама принимать решение о том, что нужно сделать с той или иной информацией, которая ей была предоставлена.
106: То есть на примере того же самого письма, когда наше приложение получает письмо, например, можно отдать агенту, который также суммаризировать письма. А далее нам нужно определить как бы хорошо.
107: Текст письма или нет. Здесь можно добавить какого-то другого агента, который будет, будет, допустим, критиковать какой-то результат 1 агента и таким образом они начинают между собой общаться и делать выводы при
108: Принимать решение о том, что делать дальше. Например, после критики делать какую-то валидацию на ошибки и так далее. Здесь можно придумывать бесконечно, но итог всего этого то что
109: То агент самостоятельно должен принимать решение о действиях. Это его основная отличительная способность. То есть, если кратко, да, воркфлоу это некие систе.
110: Тема, в которых большие языковые модели координируются посредством определённого путя, ну, как бы определённому пути. То есть определённая цепочка действий выстраивается аген.
111: Это система, в которой языковая модель динамически управляет собственными процессами и вызывает различные инструменты, сохраняя контроль над процессом.
112: Это основная отличительная способность. И вот для того, чтобы организовывать вот такие вот сложные механизмы, появились на рынке различные фреймворки. Вот 1, наверное, из первых появился фреймворк чейн. Изначально он
113: Был сделан для python. Разработчиков вообще, в принципе, в мире mma, наверное, python достаточно находится очень далеко от всех остальных Языков программирования достаточно много, модулей различных уже написано и
114: Вот. Ну, в общем то, они первые, как бы, да, зашли на этот рынок. Окей. Соответственно, это некая платформа с открытым исходным кодом для разработки приложений на основе там больших языковых моделей. Основная задача, как у всех воров, это созда,
115: Бывает сложные приложения и отличительная особенность этого фреймворка, что он использует большую языковую модель и предоставляет как бы достаточно удобный интерфейс для работы.
116: Языковых моделей и в принципе помогает строить многоступенчатые рабочие процессы, вот как раз-таки выстраивать различные цепочки взаимодействия агентов.
117: Основные модули Лена, да, у него на самом деле там гораздо больше модулей, но вот в принципе, основные, которые стоит как бы, да, там понимать и изучать представлены здесь, то есть
118: 1 это модели, то есть модели, это в принципе тот инструмент, который служит для связи с самой большой языковой моделью. То есть если вы общаетесь
119: С помощью open си через api от openai там скорее всего рест, соответственно, внутри модели будет находиться некий тп. Клиент, который будет общаться с
120: Вызывать ипиай по аресту. Именно далее пронты. По сути, это
121: Способ ввода информации для большой языковой модели, для того, чтобы, ну она как бы нам генерировала какие-то результаты, также есть цепи чейны, это как раз-таки последовательность действий.
122: Агента при, в принципе, в ходе работы.
123: Так, и, соответственно, есть инструменты Тулы так называемые, с помощью которых можно вызывать какие-то, ну, отличные от
124: Функции, методы и так далее. Ну то есть, не знаю, к примеру, можно привести какой-то внешний ресурс, там, поиск в гугле или или что-то ещё. То есть, ну, тоже можно придумать все, что угодно, ну, как бы все, что
125: Угодно. Это может быть там различным инструментом, вплоть до того, чтобы там вызвать какую-то, я не знаю, программу у вас на компьютере соответственно, есть такой модуль, как память. По сути, это некий контекст при работе.
126: При общении с лмкой, то есть, по сути, в память складываются все запросы в лмку текстовые именно, и они, соответственно, хранятся в ней. И также индексы и
127: Thrill но это уже больше относится к rock системам индексы здесь имеется ввиду это векторное представление слов, на основе которого выполняется
128: Извлечение каких-то данных, ну основанных на векторах. То есть, например, там есть такое понятие, как поиск там, ближайших соседей, да, например, вам нужно построить какой-то
129: Поисковую систему, используя именно семантический поиск. Вот для этого можно использовать как раз-таки представление слов в индекс, в вектора по этим
130: Там будут строиться индексы и далее уже с помощью этих векторов искать какие-то похожие смысло по смыслу другие слова. Ну, например, там
131: Не знаю, там как бы, найди там похожий ресторан на такой-то, такой-то, и он как бы там может вывести, там, 10 20 там похожих ресторанов, например, вот для этого.
132: То есть для вообще, в принципе, да, то есть тут что стоит подвести, подвести такой итог, что для создания какого-то автономного программного обеспечения нам требуется вообще, в принципе, фреймворки, потому чт,
133: Напрямую, с api работать ну, достаточно сложно и, как всегда, есть обёртки для обёрток, которые упрощают жизнь разработчикам.
134: Как бы основной поинт. Так давайте я сейчас перейду к вопросам, я видел в процессе, что
135: Что задавались вопросы так, а где 2 урока в официальном telegram канале ничего нет, только заявлено о 70% готовности курса и промо ролик с канал дочки Жени.
136: А, ну это я понял, это, по всей видимости, было обсуждение насчёт курса Борисова. Интересно, я не слышал, да, что у него курс есть. Тоже интересно посмотреть, что он говорит. Так вот, по токену оплата в данном примере.
137: Ну, смотрите, мы будем вообще использовать демо версию от чейна для работы с open пиай. Она бесплатная, вот, но также будет использована
138: Ещё наша языковая модель GigaChat от Сбера, там я уже буду использовать как бы, ну, личный аккаунт и, соответственно, использовать личные свои токены для этого. То есть, ну,
139: По сути да, у меня там потоке новая оплата так Сергей легчён это обёртка над open api ну по сути да, по сути ну это фреймворк, по сути это некий фреймвор.
140: С помощью которого можно общаться с api open open eye.
141: На самом деле там не только есть модель open и i, там достаточно много других существует, и по сути это все тоже обёртка, но у чена, допустим, это только 1 из модулей, это обёртка для
142: Она того же самого.
143: Так, мемери Ван мэм, так, спринг эйай и chain это взаимодополняющие история, или 2 разных фреймворка spring a i и chain это 2 разных фреймворка, я хотел добавить.
144: Ещё спринг ай в данный вебинар, но показалось, что мы не успеем просто его уже рассмотреть, но вообще это 2 разных, 2 разных. Там есть функционал для работы с пени. Поленая штука, есть функции.
145: Канал есть функционал и в спринте вообще, в принципе, сейчас все современные библиотеки, они добавляют работу с да не проще локально поднять модельку вида 7.
146: Были 32 Кантерова. Локально, бесплатно в неё обращаться. Да, конечно, можно, но она будет не такая быстрая и будет отжирать ресурсы. Ну и все-таки мы, наверное, говорим о продакшене, если у вас есть какой-то там
147: Железо и так далее да, конечно ну там я не знаю gp очень хорошие, да, можно поднять лмки, но скорее всего их ещё придётся дообучить каким-то образом, чтобы они делали то, что вы именно хотите здесь тоже есть.
148: Определённые проблемы.
149: Так, ок. Вопросов ага, ещё есть вопрос так и показался менее гибким. На нём нет поддержки яндекс gpt и работать с обменниками яндекс там не получится.
150: Применении спринг ней. Так, ну смотрите так, сперва про spring i по поводу работы с яндекс, gpt и другими вообще моделями. Смотрите, эчен, допустим, он тоже
151: Ну точнее даже так for j именно реализация, именно вот для джавы напрямую тоже не получится работать с тем же самым гига чатом для этого потребовалось написать.
152: Как бы свои модельки. Ну, имеется ввиду модели на уровне кода. Вот. Или сейчас ещё тоже очень многие делают такие штуки, как делают прокси, допустим,
153: Он поддерживает только формат open иая да api api именно вот можно создать некий прокси нарису в интернете они есть, я в принципе покажу их.
154: Этот прокси будет проксировать запрос, например, в какую-то российскую модель, но при этом контракт будет от open вот таким образом можно построить взаимодействие, там будут и эмбединги, и в принципе общение.
155: Так, в 2 словах расскажите. Разница и область применения спринг. А и че? Ну, смотрите, область применения плюс - 1 и та же. Просто это разные фреймворки, спринг.
156: Глубоко как бы не погружался. Вот. Поэтому каких-то таких серьёзных отличий я не могу сказать. Единственное отличие в том, что это разный способ.
157: Ну, как бы, при использование кода того же самого, да, то есть, там разные способы в аннотациях и так далее. Дополнительные, видимо, плюшки есть у, и, но базово.
158: Базово они делают одно и то же. То есть есть наверняка нюансы, но базово это 1 и тоже фреймворк для работы с элом, в котором есть узы, есть имбединги, есть и сервисы, но о которых мы там дальше чуть поговорим.
159: Что такое эмбеддинги? Эмбеддинги? Это векторное представление текста, по сути, цифры, слово, представленное в цифры. Ну, условно говоря, если вот так вот просто так, кол.
160: Коллеги, давайте идём дальше, потому что материала ещё много. И у нас ещё есть практика. Так, чейн фо джей, разработка чейн фо джей началась в 2023 году, когда вообще, в принципе,
161: Вот этот вот появился ажиотаж вокруг чат gpt. Ребята заметили, что нет никаких аналогов на джаве, то есть на питоне там на скрипте уже появилось, а на джаве ничего нет, ну и естественно,
162: Ребята подорвались и быстренько написали этот изначально он был основан на концепциях именно легчена построения неких цепочек взаимодействия друг за другом, но
163: Постепенно эта концепция, она сейчас уже отходит, я так понимаю, в легасе и появляется новая концепция, уже связанная с и сервисами.
164: Соответственно g. Это открытый фреймворк, то есть в принципе в него можно контрибьютить, спокойно вступать в сообщество, ну и работать с ним также наши коллеги, например, из Сбера выпустили.
165: Для модельки гига чат свою модель имеется ввиду подключение к гига чату, да, через неё фо джей, который можно, в принципе также подключать, как и open.
166: Сейчас, секундочку, я покажу, как она выглядит.
167: Так, в принципе, вот этот репозиторий с этими моделями, с использованием этих моделей. Да, да, вот он, в общем то, я продублирую.
168: Это в в чат, чтобы вы могли, если что, перейти и использовать. Это просто 1 из способов удобных, когда, ну, можно, как бы, не придумывать вокруг какие-то обходные пути.
169: Развёртывание прокси и так далее. Напрямую подключаться тоже с открытым исходным кодом тоже можно поконтрибьютить. Возможны ошибки, безусловно, потому что только вот начали это разрабатывать.
170: Вообще, в принципе, какая основная задача у при интеграции, да, там, ну, вообще, в принципе, у фреймворков это упрощение интеграции с элом в приложениях java.
171: С помощью чего вообще, в принципе достигается эта цель, да и for j нам предоставляет некий унифицированный api для разных моделек, то есть мы
172: Избегаем необходимость изучения конкретного контракта как конкретного api, то есть это все будет инкапсулировано уже в джи.
173: В настоящее время же поддерживает 15 популярных провайдеров больших языковых моделей и 20 хранилищ векторных изображений, то есть векторные изображения это или не изображения вообще в принцип.
174: Вектора эмбеддинги, так называемые их, можно хранить тоже в неких хранилищах, в базах данных и, соответственно, обращаться в эти базы данных в векторном формате.
175: Также и предоставляет большой набор инструментов, который там тоже набирался сообществом с 2023 года.
176: Соответственно, джи доработал их, превратив в готовый к использованию пакет. Это понятно, и этот набор инструментов включает в себя инструменты разных уровней, то есть есть низкоуровневая шаблонизация запросов.
177: И управление памятью, а есть высокоуровневые тоже шаблоны. И написание агентов для таких систем, как ак, ну, тоже достаточно такое широкое, конечно, понятии.
178: Ну, достаточно много инструментов сейчас у forge тоже развиваются, и, соответственно, как они также достигают этой цели, то, что они дают нам примеры по этой ссылочке, можно перейти в примеры, где
179: Положено. Давайте я также в чат скину и, соответственно, тоже более как-то подробно посмотреть на эти примеры. Ну и, соответственно, фуджей также предоставляет интеграции с
180: Фреймворками, например, спрингбут, кваркус, хелидон и микроавт. Мы с вами также посмотрим в конце, на практике, как это сделано в кваркусе и в спрингбуте.
181: На слайде сейчас представлены основные фичи у jay, да, у него сейчас вот больше 15 моделей, здесь по ссылочке можно перейти также в документации найти какие модели подде.
182: Ну то есть здесь вот open ияй и много, много, много других.
183: Там тропик и так далее. 20 хранилищ, да, которые поддерживаются именно эмбеддингов. То есть здесь есть и кликхаус, ну, вообще, в принципе, все кликхаус к
184: Grand редис и так далее. Ну, тоже достаточно большой список, ну, естественно, имени.
185: Также здесь куча моделей. И вот недавно добавилось, кстати, буквально на днях то, что появились уже модели для работы, для, для работы, по генерации картинок.
186: Это я прям сегодня добавил, потому что вот раньше этот раздел был ещё на доработке, насколько я помню, когда я готовил презентацию, и вот сейчас вот она уже заполнилась и появились даже модельки для генерации, для
187: Обработки изображений и генерации картинок, ну не для обработки изображения, а именно для генерации картинок.
188: Ну и 2 скоринговые модели как раз-таки модели, с помощью которых можно искать ближайших соседей имеется ввиду, когда вам нужно отранжировать что-то. Вот.
189: На используя разные модели, то есть похожие какие-то, да, там слова поискать, он также предоставляется.
190: Также, соответственно, есть поддержка текстов изображения в качестве входных именно данных, да, то есть, если у нас вот 5 моделей по генерации картинок появилось недавно, да, это выходные данные, то входные данные уже
191: Изображения, именно изображения, они были добавлены достаточно давно. Также есть такое понятие, как и сервисы. Это верхнеуровневая абстракция по использованию для использования ипиай. Мы их
192: Смотрим промтей, естественно, соответственно, поддерживаются ееще персистентные, персистентное хранение текстовых запросов. То есть можно как в памяти, так и в какой-то
193: Базу их выгружать, соответственно, потоковые ответы от да, то есть когда в формате стриминга мы выводим какой-то результат, текст также есть Тулы и ещё их называют функциональные вызовы. Рак тоже
194: Аугмент генерейшн. Можно отклассифицировать текст, например, какого характера этот текст. Ну и посчитать токены это такие тоже базовые фичи, их достаточно много. No, естественно, у
195: Который на питоне их там гораздо больше, но в принципе и for g тоже не отстаёт, старается догонять по выпуску различных фичей.
196: For j строится на двухуровневой абстракции, где есть нижний уровень и верхний уровень, то есть на верхнем уровне находятся такие понятия, как chase и сервисы чейнс это цепочки.
197: Взаимодействия. Они сейчас, насколько я понимаю, уже отмечаются как legacy и в основном не дорабатываются, и в основном используются уже и сервисы на верхнеуровнево слое.
198: Абстракция, нижний уровень абстракции это базовое, да, использование Промтов, использование модулей по памяти, ну и, соответственно, использование
199: Именно api моделей, ну и также рак это по загрузке, по разделению документов, хранение в векторных хранилищах н. Эмбедингов или вектор.
200: И также эмбеддингов модели тоже на низком уровне используются, мы сегодня не будем про r говорить, мы в основном будем говорить про вот эти 2 слоя это я, сервис, да, верхнеуровневый и проти плейс мемори и language.
201: Module на нижнем уровне.
202: Структура.
203: То есть, соответственно, для того, чтобы подключать нам различные модули в наше джава приложение, нам нужно понимать структуру вообще библиотек данного фреймворка.
204: Структура достаточно простая. Есть кор, как в принципе, чаще всего и случается, да, это модуль, в котором определены все основные абстракции. Это модель чатов, да, то есть для того,
205: Чтобы общаться с api и, допустим, эмбеддинг стор да, то есть для того, чтобы сохранять вектора в хранилище, далее уже подключаются модули вида.
206: J. Они содержат уже различные инструменты, там загрузка документов, уже реализация памяти чата, также и сервиса, и интегра.
207: Integration вот под интегрейшен подразумевается, что это различные модули для того, чтобы интегрироваться с фреймворками различными, например, ну или встраивать какие-то других поставщиков, например, библиотеку, там по GigaChat.
208: Или библиотеку по яндексу, а также можно написать различные стартеры, например, для спрингбута или для кларуса.
209: Как осуществляется подключение в 1 очередь нам для того, чтобы работать уже именно с open, им с api open, и нам нужно подключить зависимость фо джей от open ияя.
210: То есть это вот эта вот строка, здесь приводится пример на gradle. Естественно, есть тоже самое описание и для Марина, вот, то есть в этом модуле будет, в принципе, сама модель для подклю.
211: Учение к api от open, и нам потребуются дальше уже инструменты и сервисы различные, которые уже содержатся в библиотеке фо джей. Последняя версия всех этих библиотек это
212: 1. На данный момент времени сегодня 17.07.2025. Соответственно. Далее для того, чтобы подключаться к модели, нам нужно
213: Определить, проинициализировать наш
214: Нашу модель от openai это class open i chat module мы, по сути, собираем его из различных параметров, где нам нужно передать apk для подключения к Эмке.
215: Название модели это, допустим, gpt 4 о мини, да, это от open, и задать температуру. Температура это имеется ввиду, насколько разнообразно будет выдаваться текст.
216: От языковой модели температура будет от нуля до 2 и, соответственно, её можно вот дробно задавать. То есть самая максимальная температура это 2, когда максимально разнообра.
217: Будет, когда мы хотим более сдержанные какие-то ответы, да, короткие, короткую выжимку именно получать это будет 0. То есть будет достаточно сдержанно вести себя моделька. Так что
218: Соответственно, тайм аут это сколько времени мы готовы ждать ответа от лемки и
219: Locust io респонс, соответственно логировать запросы и ответы к очень нужный параметр, потому что таким образом вы увидите в логах, как вообще общается о джей с.
220: Так, окей, там на самом деле есть ещё множество параметров, но вот мы здесь выводим основные
221: Далее для того, чтобы начать чат с моделью, да, мы должны, ну, в принципе, определить нашу, ну, точнее,
222: Не определить, да, а задавать какие-то запросы и получать какие-то ответы от нашей модели. То есть вот этот вот интерфейс, чат, модул, да, у которой есть метод чат на вход, который мы будем передавать.
223: Строковое значение или можем передавать несколько объектов чат месседж, в которых, по сути, будут наши запросы. Их может быть несколько. Также можно это в виде списка передать и есть такой ещё
224: Понятие как chat request, оно более более унифицированное, то есть более настраиваемое. Точечно для того, чтобы работать там с моделью, там тоже множество параметров. Можно также настроить температуру, конкретную модель.
225: И так далее. Вот, но базово мы можем просто общаться текстом и получать текстовый ответ.
226: Пример, как это может выглядеть? Ну вот если мы не то что в текстовом формате, да, будем генерировать, точнее создавать класс, user message, нам нужно, соответственно, пройти
227: Инициализировать наше сообщение. Далее это сообщение мы передаём в метод чат нашей модели и получаем ответ. А message, да, уже класс, который будет у нас вот в виде ферста, а message это буде
228: Уже ответ от нашей модели. Ну и дальше мы можем тоже общаться, задавать там 2 запрос и уже на чат передавать несколько наших запросов, включая предыдущий ответ. Ну и получать уже ответ. То есть таким образом,
229: Можно создавать контекст, потому что сама моделька, в данном случае она уже ничего не будет знать об этом запросе, о 1. То есть поэтому нам нужно все время ей передавать вот эту вот цепочку.
230: Держать постоянно и организовывать вот эти вот цепочки.
231: Так, сейчас сбился немного для того, чтобы организовывать цепочки вот этих вот зависимостей, ну их достаточно сложно вот так вот держать в виде классов, да, и поэтому предоставляется
232: Сообществом чат месседж.
233: Ну, точнее, чат мемори. По сути, в чат мемори как раз-таки складывается определённое количество сообщений, которые уже все время передаются в нашу языковую модель. То есть вам не нужно заморачиваться о том, как хранить все запросы предыдущие.
234: Этим займётся, по сути, чат менеджер. Ну, по сути, это некий список предыду предыдущих сообщений, которые вы ранее задавали, и ответов от, соответственно, нужно контролировать размер.
235: В чат меморе, да, и можно контролировать размер с количеством сообщений или с количеством токенов. Вот здесь в принципе приведён некий пример вот уже такого legacy.
236: Кода, когда мы именно руками добавляем в чат мемори наши все сообщения и передаём их уже в нашу модель. Но, как мы видим, здесь мы уже не
237: Сами накапливаем, да, там наши все предыдущие запросы и ответы, а просто кидаем запросики в модельку.
238: И чат мемори уже контролирует эти запросы. Чат мемори, естественно, хранится в памяти нашего приложения. То есть если у нас какой-то здоровый контекст, то память будет распухать. Это тоже важно понимать.
239: Соответственно, далее к нам приходит уже такая концепция, как и сервис, потому что, ну, как бы вот эта концепция по цепочкам, она, да, брала своё начало в
240: От питона. Идея заключалась в том, чтобы создавать цепочку для каждого распространённого варианта использования, например, чат, бота, рак и так далее. Цепочки там объединялись в несколько низкоуровневых компонентов. Ну вот как мы сейчас посмотрели, ну и
241: Это как бы тоже достаточно неудобно. Он предоставил уже там своё решение под названием и сервисы, которое адаптировано именно под java, да, и идея заключается в том, чтобы скрыть сложность взаимодействия с
242: Другими компонентами за простыми пиай ну это классическая да, там задача даже тех же самых in spring приложениях, я подозреваю, что в spring, а тоже что-то подобное уже реализовано с той же самой именно концепцией.
243: Ну вот, Шейн фо джей тоже самое делает, по сути. Ну вот тут можно поспорить, кто 1 из них там что начал делать. Да? Ну вот я, в принципе, говорю, что они, в принципе, плюс - одно и то же и делают.
244: Вот, в принципе, подход и сервиса, он очень похож на подход спринг дата джипиэй, когда у нас все закрыто за интерфейсом, где предоставляется прокси объект, который уже
245: Реализует логику по работе с интерфейсом. То есть сервис можно рассматривать как некий компонент сервисного уровня на приложении, то есть
246: Там spring data джипиэй, да, на уровне репозиториев, да, ассистенты вот эти i сервисы, их можно вот на уровне сервисов также относить, ну и для того, чтобы нам создать также и i service нам нужно с пёр.
247: Определить интерфейс, задать ему методы, которые будут вызываться, ну и, соответственно, далее создать сам я сервис класс, этот ассистент, допустим,
248: Реализация которого будет запроксирован в объекте, в объекте уже от сервиса. Вот. Ну и когда мы создаём, естественно, мы уже передаём саму модельку. То есть все внутри будет в прокси.
249: Подход в принципе для разработчиков на джаве и на спринге достаточно знакомый, часто используемый весь спринг, в принципе построен на прокси объектах.
250: Е сервисы, как они, да, там работают. То есть мы предоставляем класс интерфейса для её сервиса вместе с какими-то методами серии.
251: Создаёт прокси объект и реализует этот интерфейс. То есть он, как обычно, использует рефлексию, но насколько читал, тоже и по документации джейн, да, и в сообществах они вроде как хотят рефлексию убрать и
252: С помощью другого метода начать строить вот эти вот, ну, не прокси объе уже не прокси объекты, но что-то другое. Вот что там конкретно, я, честно говоря, не знаю, но вот идут такие разговоры, что
253: Тоже будет не рефлексии. Сейчас прокси объекты обрабатывают. То есть все, все входные и выходные данные их, соответственно, преобразовывая внутри также есть чат модель, которая в принципе
254: На самом деле принимает в себя чат месседж, да, то есть, если мы передали строку, то она будет конвертироваться уже в чат месседж в качестве входных данных и передаваться уже в чат модул. Вот на выходе от чат модула будут, ну, это в прокси.
255: Объекте, да, в самом будут выходить уже ii месседжи классы, да, в которых будет содержаться ответ от лмки и на выходе уже в наш там сервис, если мы будем рассматривать именно данный пример.
256: Она будет уже предоставлят уже трансформироваться в строку, ну либо в какой-то другой объект, который мы там будем задавать.
257: Это, в принципе, такая основная базовая работа сервисов.
258: Далее. Далее у нас есть Тулы, Тулы, это тоже дополнительный инструмент в и в фудже, то есть что
259: Такое существует концепция, известная как tools или function call, да, то есть функционального вызова, она позволяет лм. При необходимости вызывать 1 или несколько доступных инструментов, которые определяет разработчик, то есть что это значит разработчик может
260: Определить какой-то определённый количество действий, например, сходи в google, выполни запрос, запусти задачу там на таком-то сервисе.
261: Я не знаю, отправь сообщение там на почту и так далее. Все, что угодно может быть. Вот это я сейчас базово, да, там сказал, но, соответственно, вот этот вызов этих.
262: Он воспроизводится уже по, ну никак не языковой модели, а все-таки это как бы в коде, да, но языковая модель должна решить, какой метод вызвать исходя из
263: Писание текстового этого метода, да, там этой, этой Тулы, то есть, по сути, таким образом лмка может взаимодействовать с внешним миром, получать какую-то дополнительную информацию и так далее.
264: Вот. До этого, в принципе, используются Тулы. Тулы тоже в представлены на 2, на 2 уровнях. На низком и на высоком, то есть на высоком. Это при
265: Использование также и сервисов. Нам достаточно объявить, аннотацию ту описать, ну какой-то месседж, при каких случаях, да, там эта Тула должна вызываться.
266: Также передать параметры, да, то есть, что в качестве в сообщениях, да, в тексте самом будет являться параметром для вызова, ну, не точнее не вызова, а, ну, для
267: Передачи в какой-то сервис вызываемый. Вот это тоже задаётся вот аннотацией пара.
268: И таких Тулов, соответственно, в классе может быть несколько. Далее сервис уже самостоятельно отслеживает эти аннотации и, соответственно, добавляет к себе в запросы.
269: Эти описания ну уже в контракт для open, например, для вызова open api и низкий уровень, низкий уровень это тогда, когда мы вообще в принципе не аннотациями апеллируе.
270: Да, уже сами создаём, инициализируем различные классы, где мы тоже вот здесь определяем имя, описание, параметры какие-то обязательные пара.
271: Метро для того, чтобы они вообще были для того, чтобы вызвать этот, этот улу. Ну, в общем то, такая низкоуровневая кастомизация. Здесь тоже, в принципе, достаточно понятно. Здесь мы в 1 очередь задаём название
272: Описание, параметры, параметры. Город да, это город в котором там нам нужно померить температуру что это будет цельсии или фаренгейты, то есть какой unit, да, и в обязательный параметр у нас должен на входе.
273: Быть город для того, чтобы мы запустили в конкретном городе. Ну, вызвали, точнее, не знаю, вызов сервиса по конкретному городу и узнали там температуру, да, и вот как она добавляется, соответственно, мы создаём некий наш вот этот чат.
274: Quest уже более точечный, да, передаём в него тул specification этих спецификаций может быть множество, то есть, может быть множество Тулов. Ну и, соответственно, создаём запрос. Этот запрос мы кидаем в модельку. Модель у нас
275: Выполняет запросы, расшифровывает это описание, проектирует также объекты и на основе этих описаний понимает уже как бы вызывает опре.
276: Ённые методы, которые мы сказали.
277: Так, да.
278: Соответственно, идём дальше. Ну и здесь вот тут, да, запрос сейчас я просто здесь.
279: Остаётся спецификация.
280: Ну да, просто вот здесь я не добавил, здесь вот ещё будет класс с этим методом должен присутствовать. То есть этот метод get, да, он должен быть описан также в коде для того, чтобы он вообще, в принципе, вызвался. Я просто здесь не добавил его поэто.
281: Извините немного замкнулся вот то есть здесь же мы вот это вот все описали да, там в виде аннотации вот у нас такой же метод должен быть get weather ещё здесь.
282: Вот, окей, идём дальше. Ну да, в принципе основной поинт, да, вот этого всего, как бы, да, там по работе с чем da фо джей нам предоставляет удобную абстракцию для работы.
283: С лэмом это основной поинт.
284: Так, коллеги, возможно у вас появились какие-то вопросы? Если вопросов нет, поставьте минус, и мы уже будем переходить к практике.
285: Так я немного подожду.
286: Ага, ага, минусы, минусы.
287: Да, вот был изначально вопрос, там все интерфейсы от спринг. Ай, не понял, в чем отличие. Тогда они, возможно, похожи, да, возможно, похожи, но там точно не уже используется.
288: Так, окей, минусы, тогда переходим к практике, к лайву.
289: Так, сейчас мне нужно про
290: Продемонстрировать другой экран. 1 секунду.
291: Так, так, это не то. Сейчас, секундочку, надо переместить окна так, чтобы было удобно.
292: Так и продемонстрируем уже другой экран.
293: Так, я буду демонстрировать уже здесь весь экран, потому что мне так будет удобней переключаться. Поставьте, пожалуйста, плюс в чат, если cod видно хорошо.
294: И не нужно его увеличивать, в принципе.
295: Шрифт побольше все-таки давайте сделаем побольше по моему это сделается здесь.
296: Так, ну давайте на 125 поставим, раз запрос был.
297: Вот так получше, наверное, будет. Угу. Плюсики. Ну все, отлично. Едем. Так, коллеги, помните, я вам говорил ещё, что можно использовать прокси для того,
298: Чтобы, ну, в общем то, да, допустим, к гига чату, к модельке гига чату вы можете обращаться только либо, создав именно модель для гига чата, да, но вот в базовом варианте
299: Этой модели нету. Для этого нужно как бы подключить другой модуль, который специально Сбер разработал, и, соответственно, подключать его либо яндекс. Вот я, кстати, не знаю, яндекс разработал или нет. Вот, либо организовать прокси. Вот для того, чтобы организовать прокси нам
300: Ну, также есть репозиторий с гиг чатом.
301: Сейчас я вам его покажу.
302: Секундочку, сейчас только разберусь в окнах. Так это не оно. Вот оно, соответственно, вот оно.
303: Да, сейчас я вам скину его тоже в чат. То есть основная концепция этого proxy такой, вы поднимаете прокси сервер, который проксирует просто запросы от вашего приложения в формате open иая в гига чат.
304: Преобразуются запросы в формат гига чата, и на выходе уже тоже самое. Выходят запросы в формате GigaChat и преобразуются в формате open. И то есть, в принципе, вы берете, копируете вот этот вот репозито.
305: И настраиваете его для настройки. Вам потребуется в принципе докер я его в докере поднимаю и соответственно потребуется хост и и
306: Да, то есть это по сути apk до вашего личного кабинета ну не до вашего личного кабинета, а apk до вашей модельки, которую можно получить в личном кабинете, я естественно светить не буду, потому что это мои ли.
307: Вот. Ну и соответственно поднимаем это просто все в докере. Я поднимал это с помощью докер компоуза. Ну сейчас команды тоже не буду показывать. В принципе пишем докер. Docker compose.
308: Компоус апп. Здесь он называется одинаково. Можно тире д добавить. Запускаем и у нас, в принципе, по этому файлику запускается контейнер. У меня он уже запущен. Вот он.
309: Gpt to гига называется, вот. И для использования, для подключения к моделькам гиги я буду ходить уже вот на этот локалхост на свой, да, потому что он вот у меня понят, на 8, на Порту 80 90 у меня там
310: Ограниченное количество токенов, там 50000 всего, но уже я в процессе экспериментов там уже чуть поменьше, поэтому внезапно, конечно, может это закончиться все. Если я сейчас сформирую какой-то некорректный запрос в базовом варианте я буду использовать open.
311: Соответственно, тоже прокси, который предоставляет о джей для демо.
312: Он периодически плохо отвечает, и иногда моделька не понимает, что я от неё хочу, когда мы пытаемся вызвать Тулы, поэтому поэтому в какой-то
313: Момент мне, наверное, придётся все-таки переключаться на GigaChat.
314: Ну, потому что так проще вообще, в принципе, ещё тут основная проблема с этими моделями, конечно, что требуется vpn, потому что мы там, в России находимся, да, там заблокированы все, и без випиэна можем пользоваться только по факту, либо китайскими, либо российскими моделями, ну ли.
315: Либо организовывать какие-то прокси, опять-таки же, вот, ну на курсе я тут не могу там какие-то vpn поднимать, да, поэтому пользуемся гига чатом нашей, как бы, ну, либо
316: Демонстрационный. Соответственно. Ну окей, давайте пойдём дальше. Здесь, соответственно, у меня есть несколько модулей, соответственно, для спрингбута, для кваркус и для такого базового варианта, Лена, где написано, у меня просто простые
317: И тесты для того, чтобы показать вам, как это все, в принципе работает здесь, что у меня здесь, у меня определённо несколько моделек. Соответственно, 1 базовая модель, которая чаще всего у меня будет использоваться, это модель open ияя, которая
318: Как раз-таки идёт в демо версию open air от for j я здесь задаю апикей по умолчанию он также демо называется задаю.
319: Имя модели это gpt 4 омини и задаю логгирование. Ну, в данном случае я пока что выключу логирование, чтобы это нам не мешало.
320: Так далее. Эту модельку мы не будем использовать. И 2 моделька это стриминговая моделька. Тоже покажу в качестве примера, как работать со стримами.
321: Вот тоже будет использоваться. А, ну здесь вот я как раз-таки попробую использовать нашу проксию модельку через GigaChat.
322: Так, окей. 1 тест я покажу вам сейчас, как работает, как мы работаем с моделькой, если бы у нас не было никаких a сервисов, чат моделей и так далее. То есть базовое применение.
323: Чата, да, с использованием Лена. Что здесь происходит? Я задаю простое сообщение, то есть создаю именно user message. Да, это этот класс.
324: Который отвечает именно за сообщение от юзера. Формирую запрос и передаю, соответственно, свой запрос в модель. Запрос у меня достаточно простой привет. Меня зовут отус.
325: Я онлайн школа, занимающаяся онлайн образованием. Вот. Далее я получаю от неё ответ и хочу дальше пообщаться с этой моделькой, но при этом мне нужно весь контекст сохранять предыду.
326: Что я для этого делаю? Я, соответственно, создаю новый запрос.
327: Но при этом в в этот запрос я добавляю ещё предыдущее сообщение, то есть 1 сообщение, которое у меня было user message, ответ от лмки предыдущей и моё следующее сообщение.
328: Для того, чтобы сохранять именно контекст. И уже передаю этот свой запрос chat request, да, в модельку. Ну то есть вызываю модуль чат. Давайте посмотрим, что здесь в итоге произойдёт у нас
329: То есть 2, да, у меня запрос, я прошу просто, что ты можешь рассказать про меня?
330: Ну и вот пошли, пошли, соответственно, ответы. То есть что здесь происходит? Да, я написал ему привет, меня зовут тотос, я онлайн школа. Он мне ответил, привет, рад узнать о твоей онлайн школе. Как я могу помочь тебе сегодня?
331: Да, я его спрашиваю, что ты можешь рассказать про меня, поскольку я ему сказал, что я отус и занимаюсь. Ну, я онлайн школа, он мне пишет, ты там являешься онлайн школой, занимаешься предоставлением образовательных курсов и программ для студентов.
332: Почему для студентов он это сам решил, я ему про это ничего не говорил. Да, это он уже сам придумал. Возможно, у тебя есть разнообразные направления обучения, такие как it, дизайн, бизнес и другие сферы. Ну, у меня не
333: Нету, да, потом таких, да, вообще, в принципе, в отусе нет ничего такого, и это все отсебятина уже пошла от. То есть она здесь очень, очень много всего добавила, как бы отсебятины.
334: Потому что, в принципе, базово вот это вот проксиа демо версия, она ничего не знает про от вот, окей, но здесь мы хотели все-таки посмотреть про организацию вот этих сообщений достаточно неудобно, да?
335: Будет нам постоянно сохранять вот так вот все предыдущие сообщения и перекидывать их в message ok также есть у нас
336: Так, также у нас есть пример симпл стриминг, да, это когда мы уже в стриминговом формате общаемся с learn, да, то есть, когда она нам не сразу ответ выдаёт, а там, допустим, по несколько символов.
337: Мы их там распечатываем. Условно говоря. Здесь нам потребуется использовать вот такой метод с названием, да, мы в этот метод должны передать нашу
338: Модельку моделька, она тоже у нас стриминговая должна быть, да, реализована. И я замечу, что я Иду уже на локаловой нас на прокси. И здесь мы, по сути, можем текстом там просить её какие-то запросы, вы
339: Давать и дальше уже реализацию распечатки, ну, вывода там, куда-либо этих данных стриминговых для того, чтобы это все работало из под капота нам.
340: А, нет, здесь нам ничего не, да, да, да, да. Окей. Запускаем. Да, я прошу там рассказать несколько шуток. И вот видим уже в стриминговом формате, что нам там рассказывает шутки наша моделька, да, там вот несколько.
341: Почему программисты плохо играют в прятки, потому что они сразу ищут ошибки там и так далее. Да, там вот он тут мне напридумывал всяких разных шуточек. Отлично. И мы это распечатали в таком стриминговом режиме достаточно удобно, когда
342: Генерируем большое количество текстов и чтобы не ждать долго ответ, да, там не заставлять пользователя долго ждать, а распечатывать ему этот текст последовательно на как бы на экран, условно говоря. Ну и, соответственно, все эти запросы, они
343: И пошли в прокси. Вот мы здесь видим время 21 17. То, что мы получали двухсотые коды ответов от от нашего нашей модели гига.
344: Так, окей.
345: По поводу сохранения сообщений, да, то есть в 1 примере мы здесь видели, что нам приходится постоянно добавлять самостоятельно. В общем, нам приходится самостоятельно организовывать цепочку этих сообщений. И вот, чтобы вот этим не san
346: Анимация предоставляется интерфейс чат. Менее. В данном случае я использую
347: Именно хранение количества сообщений, но также есть ещё и и хранение токенов, да, чат менери с хранением токенов. Вот, ну
348: Когда, как, да, когда вам нужно контролировать именно количество токенов, да, на платных моделях, ну, лучше, наверное, все-таки количество токенов использовать, если как бы, ну, там, понимаете, что сообщения будут небольшие, и как-то это ротами регулируется, то, в принципе,
349: Можно задавать максимальное количество сообщений хранения в контексте. То есть, в принципе здесь используется оконный режим, ну даже даже не так давно аут просто когда мы, у нас просто последние, кто был в очереди, он выходит
350: То есть 1, кто был в очереди, выходит, извините, вот, соответственно, что мы делаем? Мы определяем нашу модельку, закидываем её в наш и сервис.
351: Ну, здесь вот появляется у нас уже Ия сервис, да, потому что мы работаем уже на более высоком уровне, закидываем, соответственно, эту модельку в, в, в, я тоже сервис и
352: Чат. Вот, а также мы вот ранее определили наш интерфейс, который будет проксироваться, оборачиваться в прокси. Да, здесь мы определили 1 метод чат.
353: Вот и
354: И вот в данном случае я бы хотел вообще, в принципе, уже включить, наверное, лук.
355: Так, окей. Ну и здесь вот как мы видим, уже более просто у нас строится взаимосвязь, точнее выстраивается процесс хранения наших сообщений, да, через как раз-таки
356: Через общение с нашим, с нашим ботом сервисом то есть мы ему здесь просто пишем наши сообщения. То есть привет, расскажи обо мне. Здесь добавляется определённый контекст, статус и мы просим его ещё раз.
357: Исходя из этого контекста, сказать про нас. Да, здесь мы уже говорим, что от сегодня это более 130 авторских курсов для it специалистов и так далее. Ну, окей, запускаем.
358: Не факт, что сработает нормально, потому что вот у меня моделька периодически подглючивала.
359: Вот у нас здесь выполняет уже несколько запросов и ждём ответа окончательного. Все выполнилось. Давайте проанализируем, что в итоге у нас здесь по логам было. Здесь у нас фиксировались, логировались сами запросы к модельке.
360: То есть, вот это, вот это выводы. Я, которые задал, да, текст, привет, меня зовут отус. Вот этот запрос, метод post, который ушёл в модельку, да, то есть в теле запроса мы указали, какая моделька используется здесь сообщение, роль лю.
361: User привет. Там и не в стриминговом формате. Ну, сам контент имеется ввиду привет, и мы работаем не в стриминговом формате. Окей, мы получили код ответа 200. Вот оно, тело от самой модельки.
362: То мы получили вот это вот это тело, да, где он также отвечает с ролью ассистента с контентом. Привет, отпуск, рад познакомиться с вами и tri. Та, та, та та, короче, окей, вот мы это распечатали, я его
363: Спрашиваю теперь, что ты можешь рассказать про меня? Вот этот запрос ушёл. Опять-таки же, и мы здесь видим, что мы сохранили уже предыдущий контекст. То есть сообщений. То есть здесь присутствует роль юзера, да, наше 1 сообщение ответ
364: Ассистента, роль assistant и наше новое сообщение добавилось, что ты можешь рассказать про меня? Он здесь отвечает. К сожалению, у меня нет. К сожалению, у меня нет доступа к конкретной информации о вас. Однако я знаю, что вы преподава предоставляете.
365: Онлайн школа о окей
366: Далее я ещё раз добавляю следующее сообщение про себя, то есть задаю более подробный контекст про себя и спрашиваю что ты можешь рассказать про меня? И здесь мы опять видим весь предыдущий контекст сохранён.
367: И добавилось наше ещё новое сообщение и так далее. Вот, и вот он нам отвечает отлично, теперь у меня есть больше информации о вашей онлайн школе, вы предлагаете широкий спектр курсов в области it, трата та, ну, в общем то.
368: Взял информацию из описания. Ну отлично, здорово отработаю.
369: Ну, как бы вот здесь опять-таки же, такой способ организации, вот хранения этого контекста, почему мы опять-таки же начинаем хранить максимальное количество сообщений. Ну потому что, чтобы контролировать, чтобы у нас контекст вообще не забился вот этими какими-то сообще,
370: Окей, идём дальше. Симпл, чат мемори токен. Ну, все, тоже самое можно уже контролировать, в принципе, на уровне токенов. То есть, если я задам здесь 1 токен, запущу.
371: Увижу ошибку, да, что, что там на входе у нас какие-то новые уже идут ли они запрещены. Вот. Поэтому 300, извините, и задаю контекст.
372: Прошу прощения.
373: Вот отработало все. Ну и также мы можем здесь увидеть, что нам 300 токенов хватило для работы, да, и он нам все-таки вот все данные добавлял в контекст.
374: Да, наше сообщение, вот. И в конце вот ответил спасибо за информацию. Исходя из вашего описания. Tra ta ta. Ну в общем то понял, что у нас в контексте задано. Отлично. Кстати, коллеги, да, я не сказал вот это вот все, оно, в принципе,
375: Будет также сохранено в моём репозитории. Я сейчас репозиторий скину в чат 1 секундочку, чтобы не забыть.
376: Если что самостоятельно просто позапускать вот эти вот различные модели, там поднять, возможно прокси, попробовать что-то там с GigaChat, м, поработать и так далее. Вот. Далее, что если мы хотим все наши сообщения,
377: Сохранять именно в какой-то базе данных. Для этого организуется также персистентность. Это отдельная как бы сущность персистент чат мемори стор, да.
378: Соответственно, мы должны имплементировать интерфейс чат мемери стор и уже здесь занести какой-то репозиторий, ну, например, там нашу базу данных, посгрес или что-то ещё. Но здесь я использую дипмейкер, это такая как бы
379: Упрощённая база данных. Вот здесь я как бы переопределяю 2 основных метода get message и update message, да, то есть добавить и и взять и получить наше сообщение из
380: Из репозитория, из базы данных. Вот тоже не буду здесь подробно описывать. В принципе, при желании тоже можете развернуть, но здесь нет ничего сложного. Объявили базу данных, объявили, соответственно, саму мапу это
381: В ней, по сути, будут данные храниться, и в эту мапу добавляем сообщение или обновляем сообщения.
382: Соответственно, передаём либо список сообщений, либо идентификатор сообщений и как мы это реализуем. Соответственно, мы инициализируем наше хранилище и данное хранилище, добавляем в чат мемори и данное количество сообщений.
383: Постоянно будет сохраняться в нашем репозитории, то есть мы будем хранить не в памяти, а брать из репозитория.
384: Сейчас я удалю.
385: Текущая.
386: Chat assistance контекст.
387: Да, id 1 окей, запускаем.
388: Запустили. Вот мы видим тоже, что у нас весь контекст также сохраняется, но он уже хранился не в памяти, а создалась некая наша вот база данных, в которой сохранились, сохранился этот контекст и ес.
389: Я сейчас сразу же попрошу рассказать про себя, то мы всю информацию получим конкретно из базы данных и увидим, что у нас весь контекст полетел в нашу модельку. Вот я специально
390: Предыдущее сообщение.
391: И вот он, наш весь контекст, сразу же добавился из базы данных.
392: Что ты можешь рассказать про меня? Трата та. И вот он уже, к сожалению, я не обладаю информацией. Ну вот в этот раз он ничего нам не ответил. Вот бывает такое, что начинает подглючивать и не отвечать. Вот, но весь контекст, как мы видим, мы ему добавили.
393: Окей, с этим тоже все понятно.
394: Так, чат мемери. Сейчас, секунду. Чат мемери. Персистенс чат мемери персистенс контекст.
395: А, ну вот это, в принципе, тоже самое, что я сейчас и сделал то, что мы подтянули из контекста. Ну, в принципе, тоже самое просто. Да ладно, давайте ещё раз запустим. Да, да, все тоже самое. Мы подтянули все данные из контекста. Интересно, че ответит сейчас в этот раз?
396: Думает.
397: О, в этот раз ответил корректно это да, да, да. Ну все, отлично. Далее для того, чтобы, ну, можно задавать не только контекст, но если мы строим вообще, в принципе, какие-то приложения многопоточные, то
398: Нам требуется, скорее всего, разделять эти контексты по каким-то ячейкам памяти, да, чтобы мы не пересекались с контекстами, с другими запросами. Для этого, соответственно, существует чат мемер провайдер в
399: Который мы можем задавать идентификатор. Ну вот этого провайдера, вот уже через него мы можем взаимодействовать как бы с с клиентом. Вот здесь также мы
400: Идентифицируем чат мемори. Вот он, да, задаём ему репозиторий, задаём идентификатор и привязываем мемори айди идентификатор с
401: Соответственно, с этим чат менежером.
402: Так, и, соответственно, когда мы пытаемся общаться с нашим ботом, вот он наш, да, персистент чат бот ассистент, мы уже реализуем этот интерфейс, задаём ему 2 параметра.
403: Это memory айди с аннотацией и user message да, таким образом, все сообщения по этому мемори айди будут, ну, будут привязаны к этому мемори айди в этом персистентном хранилище.
404: Ну и начинаем общаться. Вот здесь у меня сперва, да, там идёт контекст 1, 1, 1, 1, да, то есть это мы в 1 контексте. Далее я переключаюсь на 2. И вот этот 2 мемер айди, он ничего не будет знать про 1 мемори айди, да, то есть это будут разные
405: Контекста давайте запустим в логах, это будет немного запутано сейчас, поэтому я отключу
406: И только вывод мы посмотрим, да, который у нас здесь непосредственно
407: Реализован с помощью система.
408: Так вот он чат мемери, да чат мемери из
409: Так, окей, запустил. Вот рад вас видеть онлайн школа. Это замечательно. Что ты можешь рассказать про отус?
410: Задумался.
411: Слишком много его спрашивал оо, очень много всего про отус. И теперь вот видите, он опять спрашивает, привет, меня зовут Иван, я студент онлайн школы. Отус. Привет, Иван. Рад познакомиться. Как здорово и тоже.
412: Что ты можешь рассказать? Привет, аарона. Рад познакомиться. Что ты можешь рассказать про отус и отвечает отус это образовательная платформа. Некоторые особенности.
413: Как будто бы контексты пересеклись, но это либо mk уже у себя внутри закэшировало. То есть бывает такое, что mk, она ещё внутри себя начинает кэшировать запросы, но, по идее, как бы да, это, это все разные, кон.
414: Текст по идее, то есть здесь он должен был уже ответить как бы про что он про отус ничего не знает.
415: Но, по всей видимости, просто все-таки закэшировали запросы уже на уровне my ладно, идём дальше.
416: Ну вот, да, вот здесь вот есть вот эта проблема с кэшированием, на самом деле, когда мы постоянно эмку используем, она может подкэшировать какие-то запросы. И вот даже если мы будем разграничивать наши области памяти, чтобы разные
417: Создавались все равно на уровне и могут пересекаться контексты. Вот если запросы постоянно одни и те же похожие будут есть нюансы, это надо понимать тоже. Так. Ну и здесь что у нас здесь
418: У нас простой сервис и сервис вот этот, да, где мы
419: Задаём как бы некий некого учителя, где мы просто начинаем, делаем такой простой ияй сервис, да не, не именно агента, а именно i service, где мы сделали интерфейс.
420: Попросили сгенерировать план урока курса и сам язык программирования да, для этого курса мы будем передавать в параметрах. Вот. И план должен содержать только пункты тем. Да, там здесь также system message ты
421: Преподаватель онлайн курса такого-то, да, там отвечай на вопросы и здесь просто без различных дополнительных сообщений да, там user сгенерируй план.
422: Соответственно, запустим тичер конверсейшен, мы его сперва попросим создать план и посмотреть, сколько токенов было затрачено на создание план.
423: Вытащим, что у нас было в 9, ну, в 8 пункте, да, и
424: Выведем пункт этого плана. Вот, ну и далее.
425: Попросим, ну, не выведем, а попросим рассказать про пункт этого плана и сервиса, да, чат вызовем вот этот вот, куда передадим язык. И сам вопрос по этому плану. Ну, я думаю, понятно здесь все, да.
426: На создание плана потрачено 248 токенов. Студент попро задал вопрос по 9 пункту работы с аннотациями, да и ламка нам начала отвечать аннотация джава это мощный механизм, трата та та та та.
427: Так, короче, ну окей, здесь все понятно. Вот, а нам там ответила на наш вопрос достаточно подробно. Ну, как бы, проверять корректность сейчас не будем. Вот это просто сейчас, как бы, я показал вам сервис, который
428: Может, ну, работать как именно и сервис, да, не агент.
429: Так.
430: И здесь, соответственно, тоже некий сервис. Мы просим извлечь некую информацию о студенте из описания, да?
431: Студент 2010 года рождения по имени Игорь из города Москва. Мы передаём ему имя.
432: Экстрактор. А, ну то есть смотрите, да, мы как бы задаём здесь сообщение, просим извлечь информацию из описания, то есть мы, по сути, к этому тексту подклеим то, что мы передадим в сообщение. Ну да.
433: В случае мы передаём студент 2010 года, но это как бы тоже ещё 1 из способов применения, и он нам должен выдать просто описание о студенте.
434: Так.
435: Че он выдал? Игорь? 13 лет, Москва. Все отлично. Это как бы все было простые сервисы. Теперь у нас добавляется такой модуль, как tools. Это наши тулзы.
436: Которых мы можем какую-то дополнительную информацию откуда-либо вообще в принципе извлекать. Да, в данном случае мы тоже будем использовать высокоуровневый интерфейс. Это Тулы отмечаем аннотации тулс даём нашей Туле описание при составлении плана урок
437: Используем материалы из источника, здесь мы будем передавать ссылку на страницу источника и обычным джессуп вытаскивать информацию.
438: Вытаскивать информацию из интернета по данному источнику.
439: Коллеги, да, буду немного ускоряться, потому что я счёты уже затянул и, соответственно, генерирую. Здесь я сервис передаю, тичер наш этот класс, да, сдаю модель, задаю тулзы их, может быть тоже.
440: Несколько и прошу сгенерировать также лессон план джава эдвансед и основываться на данных из этой ссылки. Да, здесь, что у меня здесь, у меня страничка.
441: На наш курс, да, то есть тут, тут и на этом курсе есть план, и мы просим создать вот план по вот этому плану, условно основываясь на этот план.
442: Так, окей, что должно произойти сейчас? Логирование включено или нет? Не включено. То есть лмка должна самостоятельно понять, какую ссылку нужно?
443: Извлечь, потому что мы сделали такое.
444: Потому что мы сделали такое описание, и это уже будет такое, такой маленький пример работы агента, потому что здесь я, сервис сам принимает решение из серии, откуда вытащить ссылку, да? Ну как бы, из какого источника, исходя из описания.
445: Окей, поехали.
446: Так, и что у нас здесь происходит? Идут запросы.
447: Сейчас подождём, видимо, генерируют.
448: Что-то долго, странно.
449: Сломалась ли там лмка оо все вот сгенерировала нам план, она по итогу вот план урока для онлайн курса java advanced. Вот он взял план, в принципе практически такой же, как на.
450: Нашем курсе многопоточность, облачные технологии, протокол взаимодействия, проектная работа. Ну, что-то выкинул, судя по всему, и давайте посмотрим те запросы, которые он кидал в саму мку через api. То есть
451: 1 запрос мы попросили как юзеры. Сгенерируй план урока, ориентируйся и добавили ссылочку. Далее мы у нас добавился здесь, в джейсоне блок Тузов, да, то есть в этот блок мы можем
452: Передать различное количество Тулов для того, чтобы лмка поняла какой ей вообще в принципе Туул можно использовать исходя из этого описания здесь у нас 1 tool, в котором говорится при
453: Плана урока, используем материал из источника. Есть аргументы, ссылка на страницу источника, да, то есть по Такому то описанию он должен определять наш аргумент.
454: Ну и мы здесь, да, там ориентируемся на информацию из ресурса, и это выглядит как ссылка. Вот, то есть моделька, она, в принципе, далее.
455: Ну, ей улетел этот запрос, она поняла, что от неё требуется.
456: Выдала нам ответ.
457: Вот он, он ответ пошёл, да, и поняла, и сказала нашему фреймворку, по сути, да. Ну то есть контракт там такой. Сказала нашему фреймворку, что вызови такой-то метод get web page content с таким-то аргументом
458: И далее мы начали делать запрос тоже в лэкейн.
459: О том, что мы вызвали у себя, да, то есть что здесь произошло, здесь мы получили вот этот ответ.
460: Вот этот вот ответ, да, с тем, что нам нужно вызвать этот интерфейс, разобрали его, вычитали наш класс, вычитали наш метод, ну то есть с помощью рефлексии создали, соответственно, эти классы вызвали этот метод.
461: Получили результат и теперь идём, говорим, что мы выполнили этот результат.
462: Сгенерировали вот такой вот вызов айдишника.
463: Вот, и передаём вот здесь вот роль ту, да, это результат работы нашей вот этой вот Тулы, обучение, все курсы программирования, архитектура это вот все то, что как раз-таки мы получили со страницы
464: Которая была передана вот здесь вот, вот. И после этого мы дальше кидаем в такой запрос.
465: Ну, это же тоже контекст для лмки. Она такая поняла. Ага, у меня задался контекст. Мне надо то, то, то, то сделать, я делаю план, все и выдаёт нам ответ. Вот я как бы составила план. Держите прекрасно. То есть таким образом мы задали некий контекст нашей эмки с
466: Улов. И это получился такой я агент минимальный, когда он сам принял решение о том, что нужно как бы запустить и что нужно сделать. Вот, но мы задали описание для этого, а не составляли
467: Какую-то именно цепочку, что сначала сходи туда сюда и так далее. Вот. Окей, коллеги, далее я сейчас быстренько тогда пробегусь, уже не успеваем по фреймворкам, да, по тому, как подключить spring эквар.
468: Для того чтобы подключить spring ну нужно все тоже самое, что и в предыдущем, да даже не нужно все тоже самое в предыдущем нужно подключить зависимость вот такую фо джей трата та опен и a spring у стартер.
469: И, соответственно, легчён спринг стартер тоже подключить нужно. Ну и сам веб, потому что мы будем стандартные энвиси приложение делать 100.
470: Это предложение просто будет как бы некий учитель, который будет отвечать на вопросы, ответы на от пользователей с задачей какого-то контекста. Здесь, соответственно, в этой зависимости будет храниться сама моделька, а в этой зависимости
471: Храниться Тулы, но уже как бы с аспектом на
472: На spring. Вот я хотел просто подробнее там внутри походить, но видимо уже как бы не хватит времени, поэтому я сейчас просто запущу и продемонстрируем, посмотрим, как это работает. Соответственно, у меня есть
473: A teacher, да, у которого есть там 3 метода. 1 метод вызывает нашего агента тичера, да, который что делает, составляет план от.
474: Отвечает на вопросы ученика по заданному языку программирования. План он тоже составляет по заданному языку программирования и отвечает на вопросы только по курсу джава эдванс. Вот.
475: Наш teacher, он определён в слое сервисов.
476: Отмечена нотации и сервис это уже, да, это уже спринговая нотация, да, для спринга.
477: И, соответственно, пошли уже те же самые стандартные юзер месседж и system message. Чем user message от систем месседжа отличается? Ну то, что это системный пром, как бы мы задаём какой-то контекст, а user message это как будто бы от пользователя идёт.
478: Вот, ну и 1 мы используем для построения плана, куда передаём просто язык программирования, да, и просим сгенерировать план урока для курса онлайн курса на таком-то языке программирования Зада.
479: Это как user message, давайте попробуем кинуть запрос кстати, у меня, и сейчас я её переключу. Попробуем кинуть запрос, кидаем запрос.
480: И ждём.
481: Коллеги, поставьте плюсики, если ещё не устали.
482: Так, ну, в принципе, вопросов нет, они есть. Отлично, хорошо.
483: Ага, супер. Ну отлично. Вот. И, в принципе, он нам создал как раз-таки наш план, да, исходя из нашего языка. Ну, отлично, передадим ему в параметрах. Сейчас python, он нам
484: Сгенерировать для пайтона, кстати, план нормальный, введение в java, основы синтаксиса, многопоточность все как надо, сгенерировал сейчас посмотрим для пайтона, для пайтона уже там немного по другому основы синтаксиса, операторы выражения и так далее ну, отли.
485: Схема работы, то есть здесь, по сути, что происходило, мы также также превращали все запросы лмки, ну, приводили их к определённому формату с помощью наших, нашего сервиса на
486: Слоёв. Здесь он также добавлял Тулы, но понимал, что от него ничего не требуется, да потому что здесь сгенерирует план урока при ответе на вопрос ученика, опираясь на материал а у
487: Здесь текст план урока, то есть он как бы не применял никакой тул, потому что никак не соотносится с контекстом. Это, ну прекрасно вот отработало далее. Далее есть метод
488: Который у нас уже будет пользоваться, будет пользоваться тулами Тулы, то я не показал. Да, и соответственно, у нас 2 Тула здесь при ответе на вопрос ученика опирайся на материал источника. Да, и в случае преподаватель
489: Курса джавы 20, который отвечает только по темам, которые указаны в программе java курса. Бери программу курса из источников только да, конкретно, и вот эти 2 Тула, если мы посмотрим, они у нас всегда передаются в запросе, даже если мы шли.
490: Сгенерировать план урока, то есть get web page, content и get web page контент java вас в случае преподавателя курса java, который отвечает то, то есть они всегда в контекст передаются, но сама понимает, какое, что, что.
491: Что нужно вызвать исходя из контекста запроса.
492: Окей. Теперь мы будем давать описание. Да, ты преподаватель онлайн курса по Такому то языку программирования. Отвечай на вопросы. Раскрывая тему, чтобы студенту было понятно, структурирую ответы по пунктам за дополнительной информацией. Обращайся за помощью.
493: Который указал студент, и мы ожидаем, что применится вот этот вот метод. То есть я, ну, в общем, эмка сама выделит этот элемент исходя из контекста и попросит наш
494: Вызвать этот элемент, потому что мы ему в тулах уже передали его. Вот, соответственно, ссылку на параметры он тоже должен распознать самостоятельно и не вызвать при этом вот этот вот
495: Так, has teacher, возьми информацию о паттерне из источника. Да, источник будет просто ну да, мы попросим его рассказать про паттерн адаптер и попросим взять информацию о паттерне из источник.
496: Источник такой-то он похож на ссылку, похож на ссылку, ну и там у нас обычное описание про паттерны, проектирование, где описывается паттерн, адаптер, прокси и bridge.
497: Адаптер попросим его рассказать, сделаем запрос. Возможно, лмка может заглючить и не дать какой-то корректный результат, потому что у меня от раза в раз она странно работала. Ну ничего страшного, мы переключимся на гига.
498: Она всегда мне выдавала корректно.
499: О, отлично выдало даже корректный результат.
500: Давайте проверим тотал тайм адаптер. Есть у нас вообще такие слова в этой статье. Тотал, тайм, адаптер, да, он даже взял примеры отсюда. Ну, прекрасно.
501: Total time имплемент тайм племён тайм. Да он даже пример взял именно из этой статьи. То есть таким образом мы ему вообще дали контекст на эту статью. Отлично посмотрим на запросы. Может
502: Он пошёл, как бы не определил неправильный тул. Ну, судя из описания, правильный тул определён.
503: Так нам достаточно для этого посмотреть на последний запрос.
504: Да, последний запрос, вот он добавил ссылку на аргументы.
505: В аргументы, точнее, выбрал метод get the page content и вызвал его.
506: И, соответственно, вот он результат этого вызова. То есть он все правильно самостоятельно определил, исходя из контекста и выдал нам ответ. Ну прекрасно. Теперь давайте попросим именно чтоб
507: Следующий метод, да, чтобы отвечал только на вопросы из курса, а если на курсе нету этой темы, то он как бы говорил, извините, я ничего не знаю. Вот это, по идее, должен вызываться. У нас 2 метод в Тула, который мы вызвали, ну вот за
508: Заглючило. Данная тема не рассматривается на курсе, и мне нужно изучить её подробно для подготовки ответа. При этом он на самом деле определил Тулу. Скорее всего.
509: Нет, не определил.
510: Он даже не понял, что нужно её вызвать.
511: Он никакую не вызвал.
512: А почему? Потому что я ему, наверное, не задал, откуда забирать план? Сейчас, секундочку.
513: Так, ссылка, ссылка, ссылка. А ссылка где у нас?
514: А ссылка у нас должна быть в question по идее или в тулах.
515: Нет, в тулах её нету. Да, он ничего не понял, потому что я ему не дал ссылку. Расскажи про java virtual machine. Мне надо дать ему ссылку на наш план, так?
516: Отус, отус.
517: Java 20.
518: Так приведи примеры, даю ссылку.
519: Да, вот здесь, видите, ответ немного другой. Он как бы взял, все-таки сходил, но нифига не понял, что, где, где там план, потому что очень много информации отсюда вот в качестве примера.
520: Можем увидеть вот этот вот вызов, да, он сходил в otus, и вот он получил все-таки информацию обучения всех курсов. Вот, но не понял, что у него там в конце есть этот план и как бы, ну не распознал ну это вот моделька плохая да, она все-таки демо и иногда
521: Не распознает. Давайте я сейчас все-таки на гигу, да, переключу, чтобы было понятно, что все-таки это работает. Вот я включаю нашу прокси прокси, у меня запроксирован на гига чат.
522: Я её вкратце называю гига, гига, чат долго, да, гига, гига. Так, окей. И запускаю запрос. Сейчас порасходуем мои токены. Ну, ничего страшного там даётся.
523: Бесплатно 50000 токенов при 1 регистрации, так что можно не страшно брать, да и, пожалуйста, он прям привёл, что на курсе java Ван рассматриваются следующие аспекты джава виртуал, машин джи основны.
524: Компоненты байткод грамм, ну грамм в java virtual machine да, кстати тоже рассматривается да, он прям взял это из нашего курса, вот мы можем убедиться даже.
525: Так, план в конце вот этот наш курс вот эта тема java virtual джи и вот да у нас даже есть в здесь прекрасно отработала вот с гигой отработало все-таки вот качество.
526: Оно очень влияет, исходя из ваших запросов. Так, ну и давайте на кваркусе тоже быстро посмотрим. Там абсолютно все тоже самое, поэтому я только по коду пробегусь. Вот здесь просто задаётся Немно.
527: Немного другим сначала зависимостям здесь задаются другие зависимости. Требуется, ну, именно реализация для кваркус, че фо джей опен и i подключение, соответственно, кваркус средств для того, чтобы мы могли с кваркус ком взаимодействовать.
528: И да, Смоллер фол толеранс тоже от кваркус. Сейчас покажу как можно использовать её тоже прикольная библиотека для
529: Ну, при возникновении ошибок какие-то заполнять все, да, в части чейна. Здесь нам достаточно просто подключить, как и все остальное идёт именно уже для листа.
530: Или для каких-то дополнительных вещей зависимости так ну здесь все тоже самое, здесь у нас и teacher есть обычный, да, здесь немного по другому задаются аннотации, у нас есть тоже открытый урок на тему кваркус, мы его на курсе тоже не рассматриваем.
531: Ну, если интересно, напишите в личку тоже ссылки скину. Ну, либо там просто загуглите на, они также есть в общем доступе на видеохостингах наших, на вк и на других.
532: Да, в общем то и teacher здесь есть также есть интерфейс, определяется и teacher, но вот по другому уже нотация называется здесь мы регистрируем и сервис это уже от
533: Именно и сервис здесь абсолютно такая же логика по поводу создания прокси объектов, по сути.
534: Вот, но есть удобные разные фичи. Вот, допустим, для чего я подключил фо толеранс, допустим, нам долго не отвечает какой-то, какой-то метод, да, вот в данном случае и мы хотим, чтоб по истече.
535: Там этого времени у нас отработал фолбэк заданный, да, называется фолбэк.
536: Вот он, фолбэк, да, извините, не могу написать план курса. Вот давайте сейчас. Ой, это не то сейчас запустим.
537: Так, сейчас запустим мы кваркус. Нет, не надо было запускать. Извините, надо было сперва тайм аут выставить.
538: На 1 секунду, хотя бы потому, что за 1 секунду он нам не ответит. И у нас должен сработать фолбэк.
539: Сейчас запустится. Ну вот, то есть что я здесь хочу. То есть за 1 секунду не отрабатывает метод, отрабатывает фолбэк.
540: Да уж, темно. Прошу сгенерировать план. Вот он долго генерируется, он все-таки все запросы прогонит, но поскольку там он не ответил за 1 секунду, он сейчас должен выдать результат о том, что
541: Не сгенерирован с ждём. Вот извините, не могу написать план курса для пайтона. Вот, потому что отработал фулбэк в данном случае.
542: Вот это 1 из таких фичей, которую я хотел вот показать именно в кваркусе. А так, в принципе, все остальное тоже самое. Ещё дополнительно можно как бы на каждый, на каж.
543: Я метод, да, вот здесь вот, который в интерфейсе сервиса определён, можно навесить тулбокс, да, здесь вот как раз-таки я Тулы, допустим, хочу разграничить, чтобы у меня в 1 сервисе использовались только одни Тулы при
544: Вызове определённого метода в этом сервисе имеется ввиду, а на другом другие конкретно, да, то есть для ответов именно только по курсу я хочу вот эту Тулу использовать, а для ответов по просто на все вопросы я хочу эту Тулу использовать. И вот с помощь
545: Бокс это можно разграничивать. То есть так или иначе разные фреймворки, они добавляют каких-то своих фишек для того, чтобы как бы взаимодействовать. Я думаю, спринг тоже там есть различные фишки, но, к сожалению, уже как бы времени не хватает.
546: На самом деле про это все проговорить.
547: Вот так, коллеги, по практике у меня все достаточно объёмно получилось. Я надеюсь, вы не устали и у вас есть, возможно, какие-то вопросы ко мне?
548: Так, сейчас, секунду, я демонстрацию экрана завершу.
549: Это сюда и вернусь к презентации. А вы пока вопросы, если есть, пишите так слайд шоу.
550: Так, да, был вопрос по поводу, если температуру понизить, он будет меньше придумывать.
551: Если температуру понизить, ну да, он будет, по сути, больше сжатые какие-то вещи более кратко отвечать в этом случае, да, в плане там проявлений каких-то галлюцинаций, скорее всего.
552: Будет проявляться меньше. Вот. Но иногда все-таки хочется, чтобы он более вариативно начал рассказывать и поэтому стоит повысить также температуру.
553: Так, покажите так покажите в плане легчён в плане занятий.
554: А у нас нет в плане занятий, чей я вот в начале говорил, что у нас, ну, чейн, фо джей вот не используется на курсе. Это вот просто как пример того, как проходят курсы.
555: Вот просто если нужно, на самом деле, может быть имеет смысл, конечно, добавить. Ну, посмотрим.
556: Приходилось уже использовать в реальных проектах. Смотрите, я сейчас как, ну, в общем то, коллеги использовали, но не писали агентов. Я сейчас занимаюсь как раз-таки
557: Агента, именно используя фо джей и использование именно гига чата с модулем зависимости, который именно GigaChat выдаёт нам как разработчикам. Вот
558: Пока проблем не встречал, там есть у меня особенности определённые. Я делаю рак систему, пока ещё с этим ковыряюсь, но, в принципе все тесты показывают, что можно использовать на продакшене уже.
559: Да, я понимаю, но вот именно довелось только сейчас именно его опробовать на продакшене, да?
560: Ну, именно в серьёзном таком виде. Ну, как бы, там, из серии каких-то Ботов. Ну, да, писали из серии, там, распознай, суммаризировать. Писали, используя, но это достаточно простая история, для этого даже как бы.
561: Не используется. Вот где работаю, я предпочёл бы не говорить, где работаю.
562: В какое векторное хранилище используете для rock в рабочем проекте Кудрат?
563: Показался достаточно удобным, хорошим для работы именно с нашей нагрузкой. Плюс понравилось, что он вширь может расти достаточно хорошо, есть шара.
564: Классная история если хотим делать рак, то алгоритм нарезки эмбеддинг пишется самим или библиотекой, библиотекой, чаще всего библиотекой, например, у всех моделек и у GigaChat.
565: А также есть специальный отдельный api для построения эмбеддингов, ну, для построения векторов.
566: В моём проекте генерируется с текстом.
567: Не с кодом.
568: Так, ну я гляжу, рак интересная тема. Да, мы здесь не затрагивали, я возьму себе на заметочку, скорее всего, постараемся сделать открытый урок по рагу и по векторизации. Вот я думаю, это будет интересно тоже.
569: Так, ладно, коллеги, тут вопросы пошли по векторной базе, это не по легчену. Ну ладно, отвечу здесь вот по вопросу. Смотрите, все зависит от того, какое количество у вас векторов вы можете в памяти держать, можете в векторной базе, если
570: У вас много векторов, имеет смысл как бы вытаскивать это все в базу. Если у вас маленькое количество векторов, память позволяет, используйте пока что в памяти все зависит от количества. Так, коллеги, предлагаю двинуться дальше. Вижу, что по
571: Именно нет вопросов, хотел немного рассказать про курс. Можно его по ссылочке пройти? Я его сейчас уже в процессе, правда, неоднократно показывал, называется он java.
572: Программа курса в принципе, мы тоже её посмотрели, у нас есть, мы в принципе разговариваем именно про джаву на уровне the рассматриваем jvm многопоточность облачный.
573: Технологии, рассматриваем различные протоколы взаимодействия веб флакс, там используем и в конце как бы проектная работа. Вот все это, соответственно, подкрепляется преподавателями, домашними заданиями, ответами на
574: Личные вопросы и всяческой поддержкой на курсе вот преподаватели курса здесь представлены, руководитель курса Александр Царёв, он в принципе его придумал и как бы, ну и отвечает за него.
575: Здесь указаны не все преподаватели, в частности, меня нету там ещё у нас ряд преподавателей, курс достаточно большой, много тем, поэтому на нём достаточно много преподавателей.
576: Соответственно, как построено обучение, отус обучение проходит в живом формате вебинаров. То есть вот примерно как сейчас все записи сохраняются в личном кабинете, вы всегда можете
577: Просмотреть вебинар также на не на всех занятиях, но на ряде занятий есть домашнее задание на большинстве, в принципе, по которым вы можете получать развёрнутый фидбэк, также нетворкинг.
578: Создаются группы в мессенджерах, где вы можете с коллегами общаться и обсуждать различные темы, а также с преподавателями. В конце делаете проектную, ну, проект, кото
579: В общем, делаете проект по, по темам, используете те темы, которые были на курсе. Извините, уже под вечер заговариваюсь. И, соответственно, программа обучения.
580: Курсах, она обновляется. Вот недавно тоже узнал, там добавился новый урок, как бы по, например, по актуатору тоже. Вот интересно, ну, имеется ввиду, там пересекается, не пересекается с тем, что я рассказываю наприме
581: Вот, по идее, не пересекается. Ну, имеется ввиду, на курсе старт курса 30 сентября, 30, 0 7, 30 июля достаточно.
582: Скоро длительность курса 5 месяцев занятия там в принципе 2 раза в неделю курс. Можно на курс, можно перейти по данной ссылке, где более подробно можно изучить информацию и в принципе позадавать.
583: Вопросы также менеджерам. Вот курс достаточно насыщенный погружаемся именно темы уровня эдвансе более детально рассматриваем именно внутренности джавы разли
584: Production решения, ну и в основном продакшн решения.
585: Давайте подведём итоги занятий. Теперь вы сможете, ну, соответственно, по целям пройтись, да, в принципе, концепции мы рассмотрели, понимаем, зачем ей нужен основы, че фо джея, как взаимо.
586: Действует с джавой тоже понимаем, рассмотрели, создали простых агентов, на практике использует java, соответственно, теперь можно в личных целях или в работе на основе изученного самостоятельно поковыряться.
587: И что-то сделать, используя различные лмки. В принципе, здесь достаточно подробно рассказал о возможностях. Ну и в принципе, что, коллеги, можем делать автономные системы, которые в кавычках должны
588: Заменить нас. Ну, я так не думаю, конечно. Поэтому я думаю, что все в порядке. Наоборот, это помощники будут помогать нам работать. Вот. И на джаве мы можем писать такие автономные системы и как бы двигать
589: Прогресс, дальше, вперёд.
590: Подведём итоги да, основное то есть мы взаимодействуем с элом через api, для того, чтобы через api взаимодействовать, нам нужны фреймворки, чтобы удобно да, взаимодействовать с этим api, а не вызывать свои.
591: Запросы писать тимплейт, рест, клиенты и так далее, и также это достаточно хороший инструмент, отличный инструмент для создания автономных приложений на java, потому что у него достаточно много различных вещей уже реализовано.
592: Из под капота на каждом уроке. У нас вот дополнительная информация. Список материалов для самостоятельного изучения. Здесь я прикрепил также, ну, информацию по проксированию, информацию по
593: Arcus более подробную про и то, что мы не успели рассмотреть и на learn документацию там достаточно много написано по ещё дополнительным возможностям тоже это можно самостоятельно почитать.
594: Коллеги, старт обучения 30.07 ещё раз QR-код можно пройти соответственно по ссылочке и просмотреть информацию.
595: Да, присоединяйтесь, коллеги. Да, спасибо вам. Тоже. Единственная только просьба. Вы не могли бы заполнить опрос? Я сейчас ссылочку скину в чат.
596: По данному вебинару.
597: Вот ссылочка, пройдите, пожалуйста, если не сложно. Обратная связь очень важна для нас.
598: Да, опрос мероприятий скинул. Ну и приходите учиться в otus. Спасибо большое, что вы пришли.
599: 403. Ну, не знаю, мне такое предоставили. 403.
600: Да, 403. Ну, коллеги, извините, тогда по поводу опроса, почему-то 403.
601: Сейчас напишу.
602: Может быть, авторизоваться? Не знаю, коллеги.
603: А, да, он пишет это войти в систему, возможно. А я вошёл, кстати, я под своим профилем захожу, у меня 403 доступ запрещён.
604: Возможно, какие-то неполадки, может быть ссылка некорректно сделали.
605: Так, ну, коллеги, не знаю, в принципе, у меня по материалам все, ну, с опросом, вот так вот у кого-то норм. Ну, в общем, если у кого-то получилось пройти, пройдите, пожалуйста.
606: Спасибо большое за внимание. Спасибо большое за вопросы. Очень было приятно пообщаться. Если будут какие-то вопросы, пишите в личку. Постараюсь ответить. Если есть какие-то комментарии на тему того, что, ну, вообще
607: В принципе, подискутировать насчёт дженна. Возможно, что-то ещё тоже. Знаете, пишите в личку, я буду рад только тоже как-то поделиться информацией и от вас что-то узнать интересное. Спасибо большое. Всем хорошего вечера и хорошего дня.