background top icon
background center wave icon
background filled rhombus icon
background two lines icon
background stroke rhombus icon

Скачать "Why abstractions are useful (storing openai conversations into a db)"

input logo icon
Теги видео
|

Теги видео

web development
programming
coding
code
learn to code
tutorial
software engineering
Субтитры
|

Субтитры

subtitles menu arrow
  • enАнглийский
Скачать
00:00:01
поигрался с этой текстовой приключенческой ролевой игрой, в которой
00:00:03
используется открытый искусственный интеллект, а также что-то, называемое
00:00:05
цепочкой Ланга, чтобы в основном отслеживать
00:00:07
разговор, который я веду с
00:00:09
системой ИИ, чтобы, когда я задаю ей вопросы
00:00:12
в в будущем он может как бы вернуться и
00:00:13
проверить то, что уже обсуждалось,
00:00:15
каков реальный сценарий этого
00:00:18
приключения, в котором мы находимся, и когда я
00:00:20
впервые начал его создавать, я использовал
00:00:21
так называемую буферную память для хранения
00:00:23
информации внутри памяти.
00:00:26
Проблема в том,
00:00:27
что когда я останавливаю программу, она
00:00:30
очищает всю известную память, так что
00:00:32
вы не знаете, какой у вас персонаж,
00:00:34
вы не знаете, где вы находитесь в
00:00:35
реальном подземелье, вы не знаете сколько
00:00:36
очков жизни у вас есть, все это просто
00:00:38
стирается, и это имеет
00:00:39
смысл, поэтому я искал способ
00:00:40
хранения истории или
00:00:42
памяти во внешней базе данных,
00:00:44
чтобы, когда я начну это снова, все
00:00:46
пошло чтобы продолжить с того места, на котором мы остановились,
00:00:48
так что вся эта справочная информация
00:00:49
обсуждается. Причина, по которой я делаю
00:00:52
это видео, заключается в том, что я хочу обсудить
00:00:53
кое-что очень важное, когда дело
00:00:54
доходит до программирования, а именно
00:00:55
интерфейсы, которые вы используете, интерфейсы все
00:00:58
время, которые мы объявляем функций, вам необходимо
00:00:59
очистить аргументы в возвращаемых значениях
00:01:01
этих функций, и вы можете не знать,
00:01:04
что такое интерфейс, если вы
00:01:05
новичок. Интерфейсы — отличный способ
00:01:08
позволить вам расширять и заменять
00:01:10
функциональность, просто используя
00:01:12
абстрактные классы и другие типы
00:01:14
подходов, правильно, поэтому позвольте мне показать вам, что
00:01:15
я сделал, и что я имею в виду под этим,
00:01:17
прежде чем мы используем буферную память, и
00:01:19
я беру эту переменную и передаю ее
00:01:20
этому аргументу памяти
00:01:23
цепочки разговоров, правильно, если вы наводите курсор мыши на
00:01:25
вы заметите, что память должна быть
00:01:28
базовым типом памяти класса, поэтому это
00:01:31
позволяет нам делать то, что всякий раз, когда вы
00:01:33
объявляете новый класс, если он
00:01:35
расширяет
00:01:36
некоторые существующие функции, такие как
00:01:39
абстрактный класс или что-то в этом роде,
00:01:40
и если вы Продолжайте погружаться в
00:01:43
цепочку расширений, так что вы заметите,
00:01:44
что это расширяет базовую память.
00:01:46
Это позволяет вам начать
00:01:48
объявлять свои собственные классы, и поскольку
00:01:50
они соответствуют ожидаемому интерфейсу
00:01:53
этого свойства памяти, все будет
00:01:55
работать правильно, поэтому в Чтобы расширить
00:01:58
вместо использования буферной памяти в памяти,
00:02:00
я могу использовать свою собственную внешнюю память,
00:02:02
все, что мне нужно сделать, это создать свою
00:02:05
собственную общую память чата и заметить, что
00:02:08
это всего лишь класс, который расширяет базовую
00:02:09
память чата, и когда вы расширяете
00:02:12
абстрактную class, большинство ваших Ид
00:02:14
дадут вам похожие предложения о том,
00:02:16
что вам нужно
00:02:17
реализовать, например, если я прокомментирую все
00:02:18
это, вы заметите, что это красный цвет,
00:02:20
говорящий, что вы не реализовали
00:02:22
правильные абстрактные члены, поэтому если я
00:02:24
зайду сюда и скажу «Быстрое исправление», обратите внимание, что
00:02:27
оно добавит все методы, которые мне нужны, чтобы
00:02:29
начать работу, чтобы позволить этому
00:02:32
хранить память во внешней базе данных,
00:02:34
поэтому я добавил эти необходимые методы
00:02:37
и, по сути, когда черный ящик, который
00:02:40
эта цепочка разговоров решает, что
00:02:42
ей нужно либо загрузить, либо записать
00:02:45
историю разговоров, она вызовет
00:02:47
здесь один из двух моих методов, она либо
00:02:48
вызовет переменные загрузки памяти, либо
00:02:51
вызовет Сохранить контекст, и
00:02:53
поскольку я следую интерфейсу, это очень
00:02:55
легко что-то вроде расширения
00:02:57
функциональности, просто
00:02:58
записав эти входные данные в базу данных или
00:03:00
взяв эти входные данные и снова извлекая их
00:03:02
из базы данных. Это видео больше
00:03:04
для новичков, поэтому, если вы довольно
00:03:05
продвинуты, вы уже знаете о
00:03:06
программировании Одри Дорни и Абстрактные классы
00:03:08
и интерфейсы. Это будет похоже на
00:03:09
скучное видео, но в целом я
00:03:12
хочу сказать, что все, что мне нужно было
00:03:13
сделать, это создать новый класс, расширяющий
00:03:15
этот абстрактный класс, а затем передать ему
00:03:18
свои собственные методы для запись и загрузка
00:03:20
истории из хранилищ данных моего собственного типа,
00:03:22
поэтому в этом случае я сохраняю и
00:03:24
извлекаю данные истории в
00:03:25
стороннем сервисе, называемом convex, который по
00:03:28
сути представляет собой бэкэнд как сервис, а
00:03:29
также предоставляет вам базу данных без
00:03:31
необходимости устанавливать это также и обратите внимание,
00:03:33
что когда в какой-то момент
00:03:35
цепочка разговоров решает загрузить историю, все, что
00:03:39
я говорю, это запросить мою базу данных, вызвать
00:03:41
этот метод истории загрузки, а затем объединить
00:03:44
все истории разговоров в
00:03:47
одну строку и вернуть это правильно, так что
00:03:49
все эта штука должна просто
00:03:50
вернуть строку предыдущих
00:03:52
разговоров в чате вместе, и эта штука
00:03:55
может выяснить, как делать то, что ей
00:03:57
нужно, все в порядке, то же самое с
00:03:58
записью событий истории. Я получаю входные данные
00:04:00
и ответ, и мне просто нужно написать
00:04:02
это где-то, не имеет значения, в какую
00:04:03
базу данных я пишу, это может быть
00:04:05
хранилище файлов, это может быть где-то еще,
00:04:06
но эта вещь была написана хорошим способом,
00:04:08
где это зависит от хорошего
00:04:10
интерфейса, который позволяет вам выполнять своего рода
00:04:11
обмен это будет всякий раз, когда вам нужно, так что
00:04:13
позвольте мне просто запустить это очень быстро, я
00:04:15
скажу mpm Run, начните,
00:04:17
хорошо, и это, по сути, вы
00:04:19
знаете, подставит меня так, как будто вы
00:04:20
воин, вы собираетесь пойти в
00:04:23
место с привидениями и затем он спрашивает,
00:04:25
готовы ли мы начать? Я собираюсь сказать да,
00:04:27
мы готовы вот так, хорошо, к
00:04:29
вам приближается группа нежити,
00:04:31
их глаза светятся жутким светом,
00:04:32
они поднимают свои мечи, действительно, 20-гранный
00:04:34
кубик, чтобы определить вашу атаку бросок, давай
00:04:35
просто пойдём и бросим один очень быстро, я сделаю
00:04:37
девятку, окей, и это как бы говорит тебе,
00:04:39
что ты причинил боль одному из нежити,
00:04:41
а затем они также ударили меня, и
00:04:42
я собираюсь показать здесь, что,
00:04:44
э, если ты подойди к своей базе данных, теперь
00:04:46
обратите внимание, что эта история хранится
00:04:49
здесь в таблице, где у меня есть
00:04:51
хронологический порядок всех входных данных
00:04:54
и ответов от открытого Ai, и
00:04:57
за кулисами, когда lingchain решает,
00:04:59
что ему нужно принять решение по другому
00:05:01
вызову, это просто используя эту базу данных под
00:05:04
капотом, все, что мне нужно было сделать, это расширить
00:05:05
интерфейс, и все готово, поэтому я
00:05:07
думаю, что я пытаюсь сказать, что
00:05:09
важно понимать, как
00:05:10
неявные и явные интерфейсы работают в
00:05:13
программном обеспечении. Я имею в виду, что вы используете их все
00:05:15
время, независимо от того, знаете вы о них или нет,
00:05:16
а использование чего-то вроде машинописного текста,
00:05:18
Java или строго типизированных статических языков
00:05:20
позволяет вам иметь явный интерфейс
00:05:23
для поиска, чтобы люди могли прийти и
00:05:25
легко расширить вашу библиотеку нижнего уровня,
00:05:27
если им нужно это исправить, поэтому чем лучше вы
00:05:29
определите свой интерфейс, тем лучше ваша
00:05:32
абстракция потенциально может быть в порядке,
00:05:34
так что теперь, когда я вроде как убрал это с
00:05:35
пути, я хочу поговорить о некоторых
00:05:36
препятствиях, с которыми я сталкиваюсь в этом
00:05:38
проекте. Дело в том, что каждый раз, когда вы,
00:05:40
по сути, знаете, бросаете кости или
00:05:42
отправляете команду, это должно принять всю
00:05:45
предыдущую историю разговоров и
00:05:47
отправить ей открытый ИИ, так что он
00:05:48
постоянно становится все больше, больше и
00:05:50
больше по мере того, как игра продолжается и продолжается. в какой-то
00:05:52
момент после пяти или шести ответов,
00:05:55
которые вы вводите в длину токена, вы получаете
00:05:57
около тысячи, теперь я думаю, что открытый ИИ
00:05:59
с этой турбо-моделью взимает примерно 0,00
00:06:02
один пять
00:06:04
центов
00:06:05
за 1000 токенов, так что, по сути, это
00:06:08
начнет складываться, верно?
00:06:09
будет продолжать взиматься плата по мере того, как ваш
00:06:10
выигрыш становится все дольше и дольше, а также
00:06:12
вы столкнетесь с ограничениями,
00:06:13
вы можете предоставить этим моделям только определенное количество входных жетонов, некоторые из которых
00:06:15
установлены
00:06:17
на 4 000, некоторые - 8 000, у некоторых гораздо
00:06:20
выше порог, но
00:06:22
с ними связаны разные затраты, так что одна
00:06:24
вещь, которую я начал добавлять в эту игру,
00:06:25
заключалась в том, что, по сути, после того, как у вас есть X количество
00:06:28
подсказок, которые будут запущены, мы собираемся
00:06:30
сделать, это в основном суммировать состояние
00:06:32
игры, и у нас есть openai в основном
00:06:35
распечатывает это резюме где-нибудь, позвольте мне
00:06:36
просто продолжить и бросить еще раз, позвольте мне
00:06:38
набрать 20. в какой-то момент он должен
00:06:40
подвести итог и распечатать,
00:06:42
сколько мне помощи, что у меня в инвентаре,
00:06:45
хм, здесь все в порядке, так что все в порядке, так что
00:06:47
после пяти или шести подсказок
00:06:49
я говорю открытому ИИ, чтобы он
00:06:50
суммировал состояние игры, включая
00:06:53
цели, текущее местоположение, предметы здоровья игрока,
00:06:55
в один абзац, чтобы мы могли
00:06:57
легко продолжить позже, пожалуйста,
00:06:58
используйте минимум максимально возможное количество слов,
00:06:59
хорошо, так что это
00:07:01
в основном распечатывает состояние, в котором говорится, что
00:07:04
игрок в настоящее время участвует в
00:07:06
битве с нежитью, они
00:07:07
успешно нанесли удары по двум
00:07:09
существам, нанеся шесть единиц урона,
00:07:10
каждое из которых также есть у игрока сумел
00:07:11
заблокировать две атаки, не получил урона
00:07:14
осталось еще две нежити,
00:07:15
текущее местоположение игрока неизвестно
00:07:17
и его здоровье и инвентарь
00:07:19
еще раз не указаны, зачем я все это делаю,
00:07:20
чтобы, если кто-то решит
00:07:22
закрыть игру и вернитесь, он
00:07:24
загрузится в хронологическую историю, которую
00:07:25
он, надеюсь, прочитает в одном из
00:07:27
этих итоговых состояний игры, и открытый ИИ
00:07:30
сможет в основном возобновить работу с того места, где
00:07:32
вы остановились, так что он будет
00:07:34
захватывать только прошлое, например, пять подсказок,
00:07:36
так что эти вещи будут генерироваться, поэтому, если
00:07:38
есть что-то сверхкритическое,
00:07:39
что было опущено здесь и не
00:07:41
включено в ваше резюме, тогда вам
00:07:42
действительно понравится странный
00:07:43
опыт, с которым им как бы придется
00:07:45
поиграть, например, сколько памяти вы
00:07:47
хотите дайте этой штуке, поэтому в данном случае
00:07:49
я даю ей пять, но, возможно, вы хотите
00:07:50
еще раз дать ей 10 или что-то в этом роде,
00:07:53
чем больше объем памяти, тем дороже будет стоить
00:07:55
продолжение игры. что я делаю, так это игра
00:07:57
сначала инициализируется, я проверяю,
00:07:59
это первый раз мы играли, если
00:08:01
нет, то мы просим openai напомнить мне, где
00:08:04
мы остановились, хорошо, и если вы заметили здесь,
00:08:06
он будет использовать историю,
00:08:07
хранящуюся в базе данных, и
00:08:09
скажет, что вы в настоящее время участвуете в битве
00:08:10
с нежитью, это в основном только что
00:08:12
распечатал самое последнее резюме, но,
00:08:15
хм, возможно,
00:08:17
здесь выше может быть больше вещей, которые
00:08:18
также нужно резюмировать, поэтому я собираюсь пойти
00:08:20
дальше и сказать: «Атакуйте
00:08:23
существ», и теперь на
00:08:25
меня нападают гоблины, которые становятся такими играми
00:08:26
более интенсивным, и я также сделал
00:08:28
следующее: у меня есть math.random,
00:08:30
и если он меньше 0,15, я также
00:08:35
включаю это в конец своего выпускного,
00:08:36
говоря, пожалуйста, включите случайное боевое
00:08:38
столкновение, так что я думаю, именно поэтому
00:08:41
я на меня сейчас нападают гоблины,
00:08:43
потому что я добавил немного сложности,
00:08:45
например, добавил еще несколько встреч,
00:08:48
гм, так что теперь я сражаюсь с нежитью
00:08:50
и гоблинами, так что в любом случае это отстой, я
00:08:52
немного повеселился
00:08:53
с этим, просто возвышаю мои знания
00:08:54
в области открытого ИИ, я
00:08:56
надеюсь создать для этого реальный интерфейс,
00:08:58
например, пользовательский интерфейс приложения nexjs, который
00:09:02
вроде бы показывает изображения игры, в которой
00:09:04
мы играем, а затем также
00:09:06
инвентарь, который я мог бы использовать Долли для создания
00:09:09
изображений для значки, которые появятся,
00:09:11
я думаю, это тоже было бы очень круто,
00:09:13
да, это все, что у меня есть для вас, ребята,
00:09:15
хорошего дня и удачного программирования

Описание:

📘 T3 Stack Tutorial: https://1017897100294.gumroad.com/l/jipjfm 🤖 SaaS I'm Building: https://icongeneratorai.com/ ✂️ Background Cutter: https://www.backgroundcutter.com/ 💬 Discord: https://discord.com/invite/4kGbBaa 🔔 Newsletter: https://webdevcody.com// 📁 GitHub: https://github.com/webdevcody 📺 Twitch: https://www.twitch.tv/webdevcody 🤖 Website: https://webdevcody.com 🐦 Twitter: https://twitter.com/webdevcody

Готовим варианты загрузки

popular icon
Популярные
hd icon
HD видео
audio icon
Только звук
total icon
Все форматы
* — Если видео проигрывается в новой вкладке, перейдите в неё, а затем кликните по видео правой кнопкой мыши и выберите пункт "Сохранить видео как..."
** — Ссылка предназначенная для онлайн воспроизведения в специализированных плеерах

Вопросы о скачивании видео

mobile menu iconКак можно скачать видео "Why abstractions are useful (storing openai conversations into a db)"?mobile menu icon

  • Сайт http://unidownloader.com/ — лучший способ скачать видео или отдельно аудиодорожку, если хочется обойтись без установки программ и расширений. Расширение UDL Helper — удобная кнопка, которая органично встраивается на сайты YouTube, Instagram и OK.ru для быстрого скачивания контента.

  • Программа UDL Client (для Windows) — самое мощное решение, поддерживающее более 900 сайтов, социальных сетей и видеохостингов, а также любое качество видео, которое доступно в источнике.

  • UDL Lite — представляет собой удобный доступ к сайту с мобильного устройства. С его помощью вы можете легко скачивать видео прямо на смартфон.

mobile menu iconКакой формат видео "Why abstractions are useful (storing openai conversations into a db)" выбрать?mobile menu icon

  • Наилучшее качество имеют форматы FullHD (1080p), 2K (1440p), 4K (2160p) и 8K (4320p). Чем больше разрешение вашего экрана, тем выше должно быть качество видео. Однако следует учесть и другие факторы: скорость скачивания, количество свободного места, а также производительность устройства при воспроизведении.

mobile menu iconПочему компьютер зависает при загрузке видео "Why abstractions are useful (storing openai conversations into a db)"?mobile menu icon

  • Полностью зависать браузер/компьютер не должен! Если это произошло, просьба сообщить об этом, указав ссылку на видео. Иногда видео нельзя скачать напрямую в подходящем формате, поэтому мы добавили возможность конвертации файла в нужный формат. В отдельных случаях этот процесс может активно использовать ресурсы компьютера.

mobile menu iconКак скачать видео "Why abstractions are useful (storing openai conversations into a db)" на телефон?mobile menu icon

  • Вы можете скачать видео на свой смартфон с помощью сайта или pwa-приложения UDL Lite. Также есть возможность отправить ссылку на скачивание через QR-код с помощью расширения UDL Helper.

mobile menu iconКак скачать аудиодорожку (музыку) в MP3 "Why abstractions are useful (storing openai conversations into a db)"?mobile menu icon

  • Самый удобный способ — воспользоваться программой UDL Client, которая поддерживает конвертацию видео в формат MP3. В некоторых случаях MP3 можно скачать и через расширение UDL Helper.

mobile menu iconКак сохранить кадр из видео "Why abstractions are useful (storing openai conversations into a db)"?mobile menu icon

  • Эта функция доступна в расширении UDL Helper. Убедитесь, что в настройках отмечен пункт «Отображать кнопку сохранения скриншота из видео». В правом нижнем углу плеера левее иконки «Настройки» должна появиться иконка камеры, по нажатию на которую текущий кадр из видео будет сохранён на ваш компьютер в формате JPEG.

mobile menu iconСколько это всё стоит?mobile menu icon

  • Нисколько. Наши сервисы абсолютно бесплатны для всех пользователей. Здесь нет PRO подписок, нет ограничений на количество или максимальную длину скачиваемого видео.