Здравствуйте и добро пожаловать на Большой курс по искусственному интеллекту Chat gpt и другим сервисам от компании openai я уверен что среди вас нет тех кто не использовал Chat gpt либо другие сервисы от других компаний для генерации текста для создания изображений для работы с данными для программирования и выполнения других задач и с помощью этого курса вы сможете выполнять все эти задачи эффективнее прежде чем мы начнём Я хочу представиться Меня зовут Богдан и я создал много курсов по программированию и другим темам связанных с программированием и у меня есть курсы по JavaScript по Python и по другим языкам
программирования и я создал большой курс по искусственному интеллекту Chat gpt и программной работе с сервисами Open на JavaScript и Python длительность полного курса более чем часов и в это видео Я включил некоторые части из моего полного курса и в этом видео я расскажу вам принцип работы моделей для генерации текстовой информации изображений вы узнаете Как эффективно выполнять различные задачи с помощью Chat gpt в частности Вы научитесь создавать программы обрабатывать данные работать с текстовой информацией и Кроме этого в этой видео Я включил некоторые уроки в которых я покажу вам как взаимодействовать с сервисами Open ai с текстовыми
моделями с моделями для генерации изображений программно с помощью JavaScript если это видео вам понравится и вы захотите углубить свои знания по Chat gpt и работе с сервисами openai Я буду рад видеть вас в моём полном курсе по Chat gpt и Open ai ссылка на него находится в описании по под этим видео А теперь давайте начинать И я желаю вам успехов в [музыка] обучении Добро пожаловать в главную секцию этого курса в которой мы поговорим о главных концепциях о том что такое gpt что такое LM как работаю с текстом текстовой модели и как работают модели для создания
изображений Итак добро пожаловать в эту секцию И начнём мы собственно говоря с определений того что такое gpt и что такое [музыка] LM Итак начинаем плавное Погружение в мир искусственного интеллекта и моделей И начнём мы с определения того что такое gpt и llm Итак gpt gpt generative pretrained Transformer либо в переводе генеративный предобработка чего-то во что-то слово предо означает что этот трансформер был заранее генерацией gpt в свою очередь - это llm llm large Language Model либо в переводе большая языковая модель и когда мы говорим большая то это означает на самом деле очень большая модель и LM
на самом деле это нейронная сеть а нейронные сети в свою очередь используются в NLP Natural langage process NLP - это область в которой м используется для понимания генерации а также анализа естественного языка то есть языка либо языков на которых мы с вами говорим Какие же основные задачи решает NLP во-первых это обработка текста это разделение текста на слова части речи а также анализ структуры предложений включая запятые точки и остальные знаки припинания далее генерация текста это создание новых текстов которые похожи на написанные человеком но которые отличаются от тех текстов которые были использованы на этапе обучения той или
иной модели понимание текста - это определение темы тональности стиля целевой аудитории и ответы на вопросы которые касаются предоставленного текста далее Это конечно же перевод так как на этапе обучения моделей обычно используют различные языки то на этапе генерации возможен перевод из одного языка в другой язык и это делается автоматически и очень просто кроме этого есть возможность распознавания речи а именно преобразование речи в текст и далее допустим перевод этого текста на другой язык учитывая все эти основные задачи можно сделать Вывод что NLP в целом занимается текстом то есть генерацией текста переводом текстов интерпретацией текста а также переводом
и распознаванием речи вот основные задачи NLP и вот собственно говоря то Как связано gpt llm и NLP [музыка] а теперь я хочу сделать несколько очень важных замечаний касательно поведения моделей потому что многие пользователи моделей не до конца осознают эти важные нюансы и потому зачастую результат работы моделей не соответствует ожиданиям пользователей этих моделей Итак внимание во-первых текстовые модели не осознают сгенерированного текста Хотя это может показаться иначе то есть смотря на результат ответа на определённый вопрос может показаться что модель сгенерировал этот ответ сознательно Но это на самом деле не так в реальности текстовые модели генерируют результат частями
на основании предыдущей информации то есть при генерации каждой части ответа учитывается ваш вопрос как пользователя модели а также та часть ответа от модели которая уже была ранее сгенерирована то есть модели генерируют результат по частям Кроме этого очень важно на один и тот же запрос модели могут генерировать разные ответы иными словами отвечать по-разному почему это происходит потому что при генерации результата всегда есть элемент случайности так как модель формирует ответ частями то вот при выборе следующей части есть заю претендентов и модель выбирает того кандидата который будет на месте следующей части случайным образом но также при этом учитываются
определённые веса всех претендентов и потому на один и тот же вопрос допустим вопрос Сколько планет в солнечной системе модель может ответить допустим вот таким образом в солнечной системе официально вается восемь планет Вот они в порядке удалённости от солнца Меркурий и так далее Венера горячая штучка с кислотными облаками и так далее порядок иследования планет Меркурий Венера Земля Марс и так далее Давайте посмотрим на другой ответ на этот же вопрос Сколько планет в солнечной системе ответ Следующий в солнечной системе официально восемь планет вот их список начиная с ближайшей к Солнцу порядок следования планет Такой же но вы
видите что слова использованы другие для описания каждой из планет в списке то есть снова таки при формировании ответа на поставленный вопрос всегда есть элемент случайности и Вы практически никогда не получите чный ответ на один и тот же вопрос и на самом деле это особенность NLP и Одна из основных задач формировать такой ответ который ранее нигде ещё не встречался особенно в тех данных которые были использованы для обучения модели Итак один и тот же вопрос но разные ответы конечно смысл у них будет примерно одинаковый то есть мы получили похожие ответы на наш вопрос но написаны они абсолютно
разными словами и теперь ещё один раз внимание модели могут выдавать ложную или недостоверную информацию и часто процесс выдачи ложной информации называется галлюцинация и это происходит Снова таки из-за того что у моделей нет человеческого мышления то есть они не могут мыслить логически всё что они делают это выбирают определённые части текста при генерации ответа и добавляют эти части в цепочку формируют цепочку и далее эту цепочку возвращают вам вот как работают тек модели потому Вам всегда следует проверять полученную от модели информацию и никогда не доверять тем результатам которые вам сгенерировал модель конечно На простые вопросы которые включают в
себя определённые факты допустим информацию о погоде информацию о населении земли вероятно что ответ будет правдивым но на более сложные вопросы модель может выдавать ложную информацию при этом из-за того что модели настроены на генерацию скажем так естественного языка вам может показаться что на самом деле то что выдаёт Вам модель является чистой правдой но очень часто в ответах от моделей есть ошибки и недостоверная информация потому полностью доверять результатам модели не рекомендуется и я Рекомендую вам всегда проверять результаты которые вы получаете от моделей вот несколько основных нюансов касательно моделей и NLP в целом которые вам всегда стоит учитывать
и иметь в виду когда вы взаимодействует с моделями [музыка] а теперь давайте рассмотрим ещё один важный термин который называется agi artificial General intelligence либо в переводе общий искусственный интеллект agi - это цель всех компаний которые занимаются искусственным интеллектом и созданием моделей знаете что обычные текстовые модели формируют результат частями на основании тех знаний которые они получили на этапе обучения вашего ввода как пользователя а также той части вывода который уже был сгенерирован моделью ранее так вот в отличие от таких моделей agi будет мыслить самостоятельно и поведение H будет ближе к поведению человеческого мозга если снова таки придёт
то время когда agi будет создано пока что есть много разговоров о том что уже где-то кто-то создал agi но на текущий момент подтверждений этому нет Какое же определение того что такое agi artificial General intelligence это искусственный интеллект который обладает способностью выполнять любые интеллектуальные задачи на уровне человека то есть на нашем с вами уровне включая обучение адаптацию решение новых задач без специальной настройки и дополнительного обучения и в отличие от узкого искусственного интеллекта который ограничен определёнными функциями такими как допустим просто генерация текста слово за словом agi стремится к универсальности и это его собственное стремление и также agi
может применять свои знания в различных областях то есть Исходя из этого определения вы понимаете что H - это нельзя сказать что модель это структура которая по своему поведению будет если будет создана приближена к человеку и человеческому мозгу но снова таки на текущий момент пока что H не было достигнуто но возможно в будущем это случится и никто не знает будет это хорошо для человечества либо нет [музыка] а теперь давайте поговорим о том как работает нейронная сеть и как происходит обучение нейронной сети Если говорить о нейронной сети которая работает с текстом то в процессе обучения используются всевозможные
источники текстовой информации а именно веб-страницы веб-сайты в интернете то есть этапе обучения выполняется сбор всех текстовых данных из интернета то есть то что делают поисковые боты такие как например Google Bot и другие для того чтобы далее предоставлять вам результаты при поиске информации вот тоже самое выполняется на этапе обучения нейронной сети то есть в эту модель передаются все веб-сайты которые обще доступны и которым есть доступ ботов которые также используются на этапе сбора информации для модели Кроме этого это все книги конечно же книги которые представлены в электронном виде включая книги которые доступны в интернете а также отсканированные
версии печатных книг Кроме этого для обучения используются новости конечно новости - это информация которая не является актуальной длительное время и не всегда новости включают только правдивую информацию но тем не менее новости новостные каналы используются для обучения нейронной сети Кроме этого для обучения используют различные научные статьи и научные книги и конечно же Доверие к научным статьям и книгам гораздо больше нежели к новостям и соответственно на этапе обучения модели есть определённая ранжирование качества исходного контента для обучения модели Кроме этого модель использует Исходный код различных программ и конечно же Исходный код многих программ скрыт и в таком случае
его нельзя использовать для обучени публичных моделей но тем не менее компании которые владеют допустим определённым кодом и разрабатывают свои программы могут обучить собственные модели на основании тех программ которые они создали для допустим дальнейшего улучшения программ развития их и также написани дополнительных программ на основании существующих то есть код программ научные статьи новости веб-страницы веб-сайты книги и любая другая цифровая информация которая может помочь модели выполнить этап обучения и это на самом деле огромные массивы данных и конечно же на этапе обучения нейронной сети происходит обязательно фильтрация либо отсеивать но тем не менее разработчики нейронных сетей стараются обучить модель
максимально эффективно так чтобы она в итоге обладала максимальными знаниями знаниями в кавычках Потому что это не более чем модель и Давайте посмотрим на то как собственно говоря работает модель в модели есть так называемый входной слой либо входные данные далее внутри модели есть скрытые слои И между всеми входными слоями а также скрытыми слоями формируются связи наподобие тех связей которые формируются в мозгу человека и в итоге на входе мы получаем оден вводные данные какие именно Мы только что с вами обсуждали то есть определённые текстовые данные статьи различные программы код программ и так далее Далее эти данные проходят
через множество скрытых слоёв и на выходе формируется один итоговый выходной слой то есть вот такой принцип нейронной сети то есть есть входной слой который состоит из многих точек входа на вход подаётся определённая информация также конечно же любая модель настраивается соответствующим образом далее информация проходит через скрытые слои и на выходе мы получаем один выходной слой В современных моделях для входа используют более 200 млрд различных параметров только вдумайтесь в эту цифру 200 млрд различных параметров и Кроме этого в современных моделях существует более 120 скрытых слоёв то есть после предоставления данных на входе эти данные проходят через 120
и более скрытых слоёв которые имеют тесные связи друг с другом и на выходе мы получаем один выходной слой вот такой принцип работы нейронных сетей в частности моделей которые обучаются на основании текстовых данных и обучаются для формирования текстовых данных на выходе вот такой принцип работы современных [музыка] моделей теперь давайте рассмотрим процесс работы текстовой модели когда она уже принимает ввод от пользователя и должна сгенерировать определённый ответ либо результат и давайте рассмотрим на примере допустим у нас есть следующие слова самый популярный фрукт тире и мы хотим передать эту последовательность в текстовую модель и попросить её Продолжить это предложение
и Наша задача получить одно слово как продолжение вот этой последовательности из-за того что текстовая модель является нейронной сетью то эти слова в этой чёткой последовательности передаются на вход в нейронную сеть далее эти слова проходят через скрытые слои и на выходе модель должна вернуть либо ответить нам определённым словом и вот возникает вопрос как же модель выбирает то слово которое будет продолжением той последовательности которую мы передали в модель То есть самый популярный фрукт тире в таком случае при выборе слова модель будет иметь несколько вариантов и таких вариантов может быть очень много внутри модели Но процесс выбора скрыт
от нас с вами то есть модель Сама решает Какие возможные слова дальше могут потенциально присутствовать в этом предложении и эти слова модель выбирает на основании тех данных которые модель использовала на этапе обучения напоминаю у современных моделей более 200 миллиардов разных параметров и Кроме этого модель учитывает ту последовательность самый популярный фрукт тире которую мы передали ей на вход и в этом случае вероятно что у появятся вот такие варианты как яблоко банан ананас абрикос и возможно другие варианты у этих вариантов будет внутренний вес который также скрыт от нас с вами и этот вес каждое слово получает снова
таки на основании контекста самый популярный фрукт тире а также всех тех данных которые были использованы для обучения модели и допустим в этом случае у таких слов как яблоко банан вес будет выше чем у ананаса и абрикоса но максимальный вес будет в данном случае у слова банан кроме непосредственно веса возможных кандидатов на место трёх точек модель всегда добавляет определённый коэффициент случайности и благодаря этому коэффициенту случайности может случиться Так что слово яблоко будет выбрано В итоге вместо слова банан Хотя вес потенциального кандидата яблоко меньше нежели потенциальный вес кандидата банан так вот пройдя через этап выбора потенциальных кандидатов
далее добавление эффекта случайности модель определяется с одним словом и в данном случае с высокой вероятностью не стопроцентной вероятностью это слово будет банан и вот таким образом модель завершит предложение которое начали мы с вами словами самый популярный фрукт тире и далее модель продолжит банан При желании модель может продолжить дальше и взять уже все вот эти слова Как ввод для модели и сформировать следующее слово которое Идёт уже после слова банан то есть вот таким образом мы получаем завершённое предложение и допустим дальше если модель будет продолжать это будет передано на вход далее допустим модель добавит точку потом Именно
его вы видите чаще всего на прилавках магазинов точка то есть вот так модель может продолжить этот ряд слов и снова таки на каждой итерации модели генерируют только одну часть результата вот собственно говоря так работает модель и если посмотреть допустим на другой пример и в этом примере мы пишем к примеру слово ответ модель продолжает добавляет на потом получается что для продолжения дальнейшего текста необходимо отправить на вход модели уже ответ на то есть получается что на следующей итерации ответ на становится вводом для модели выводом будет Допустим слово этот снова таки Каждый раз при выборе следующего слова модель
выбирает его из Большого Пула потенциальных кандидатов у которых есть вес и Кроме этого модель добавляет элемент случайности То есть если определённые слова имеют примерно одинаковый вес то благодаря элементу случайности в одном случае модель выберет одно слово в другом случае другое слово но всегда учитывайте то что после формирования одной части она добавляется к предыдущей части и вся предыдущая часть передаётся на вход модели для формирования для формирования ещё одного вывода и вот таким образом Шаг за шагом модель расширяет это слово ответ на этот вопрос ответ на этот вопрос заключается ответ на этот вопрос заключается в и так
далее То есть у модели всегда есть ввод и вывод и на выводе модель генерирует либо формирует один определённый элемент и этот элемент в текстовых моделях называется токен и о токенах давайте поговорим в следующем уроке [музыка] прежде чем продолжать Давайте на практике посмотрим что нам ответит модель если мы напишем предложение самый популярный фрукт тире Итак отправляем запрос модели и получаем на удивление банан после это банан Мы видим продолжение Почему Потому что он универсален его удобно брать с собой он вкусный питательный и вечно в моде и так далее но смотрите дальше Также идёт обсуждение яблок потому что
у яблок вес также высокий но в контексте самого популярного фрукта в мире банан лидирует с точки зрения веса внутри модели Т gpt если я ещё раз напишу этот же запрос в новом чате я получу вероятнее всего тот же банан но далее я увижу немного другую текстовую информацию то есть видите порядок следования слов другой но снова-здорово как самый популярный фрукт и получается что модель связывает потенциальные кандидаты со всеми этими словами то есть популярный фрукт и благодаря вот этой комбинации в вводных данных для модели вес вот этого потенциального слова повышается именно потому мы во всех этих ответах
получаем снова банан и банан вот такой принцип продолжения предложений для этого конкретного [музыка] примера А теперь давайте буквально немножко изменим контекст и вместо слова популярный напишем слово вкусный То есть самый вкусный фрукт и посмотрим что в таком случае нам напишет модель Итак самый вкусный фрукт - это тот который сейчас у тебя в руке яблоко нарисовано Но если серьёзно выбор зависит от настроение хотите сладкого Манго или ананас кисленько грейпфрут или киви освежающего арбуз то есть видите в таком случае у модели нет однозначного победителя которого можно указать после тире то есть есть несколько разных вариантов то есть
для кого-то вкуснее ананас для кого-то вкуснее манго и потому ответ вы увидите вот в таком виде Давайте повторим этот же запрос самый вкусный фрукт это тот снова таки под рукой и готов подарить тебе счастье арбуз дальше ты выбираешь между арбузом и дурианом помни и так далее снова киви личи карамболу и так далее То есть сно таки в таком случае вы увидите абсолютно разные фрукты в ответе потому что у всех их примерный вес будет одинаков как у кандидатов на следующие места после вот этих трёх слов вот как изменение буквально одного слова влияет на ответ который вы
получаете от модели А теперь давайте поговорим о том Что такое токены потому что именно токенами думают текстовые модели мы с вами думаем словами текстовые модели думают токенами Потому что так моделям удобнее то есть модели не генерируют слова То есть те которые мы с вами используем для общения такие как самый популярный фрукт тире банан модели генерируют токены и в этом случае предложение разбивается вот на такие части сам далее пробел популяр ный пробел фрукт пробел Тире пробел бан ан и каждая Вот такая часть соответствует определённому токену и для представления того что такое токен я нарисовал здесь каждого
токена то есть в терминах текстовой модели последовательность токенов представляет определённую последовательность слов либо частей слов но снова таки когда модель решает о том как дальше продолжить то или иное предложение модель выбирает среди потенциальных токенов То есть у не есть токены как кандидаты На следующее место и снова таки здесь я взял абсолютно случайное значение Но если допустим в предложении встречается допустим сам в нескольких местах причём сам с большой буквы то токен будет одним и тем же то есть токен допустим с ID 234 ный имеет в данном примере ID 35 то есть текстовые модели оперируют токенами то
есть вся текстовая информация в процессе обучения в процессе формирование ответа на определённый вопрос представляется в моделях с помощью токенов То есть можно сказать что модели думают хотя вы знаете что модели не думают а просто генерируют токены на основании всей предыдущей информации которую модели получили обучения плюс той информации которую вы предоставляете как дополнительный вход для модели то есть допустим самый популярный фрукт тире то есть это вот от пользователя То есть все эти данные трансформируются моделью в токены и если допустим перевести это же предложение на английский то мы получим другие токены и так сложилось исторически что модели
с самого начала хорошо справлялись с английским языком и генерировать токены на английском языке гораздо быстрее потому что изначально английский был выбран основным языком и в английском языке примерно каждое слово является отдельным токеном то есть допустим в данном примере The - это один токен допустим с id4 далее пробел Most - это ID допустим 868 далее допустим пробел is имеет ID 3 пробел The имеет другой ID 5 потому что в начале у нас The с большой буквы а далее The с маленькой буквы и после пробела То есть это разные токены но снова таки так сложилось исторически что
изначально текстовые модели для целей общения были оптимизированы под английский язык но современные версии моделей уже адаптированы и под другие самые популярные языки и разбивка на токены на других языках также выполняется максимально оптимальным образом и современные модели с одинаковой примерно скоростью генерируют текст на английском на французском на японском и Наги ги языках благодаря эффективной разбивке на токены А вот самые начальные версии моделей генерировать текст на других языках отличных от английского гораздо медленнее нежели на английском и Это связано с тем что модели снова таки работают с токенами а не со словами в нашем с вами понимании и
конечно же количество токенов отличается для разных язы и даже взять Вот этот пример для этого же предложения на английском языке требуется семь токенов для предложения на русском требовалось восемь токенов Хотя здесь мы видим допустим два предлога The Most и The Banana то есть мы добавили ещё и предлоги то есть слов на русском было меньше токенов больше здесь же слово больше токенов меньше то есть здесь на этом примере явно показано что модели более оптимизированы под английский язык но снова таки современные версии моделей уже адаптированы под разные языки и примерно количество токенов совпадает сон таки примерно и
в среднем четыре символа английского языка равняются одному токену то есть вот такая статистика снова таки это в среднем и если взять текст побольше допустим вот такой то здесь вы видите пример разбивки этого текста на токены и вы видите что некоторые слова являются одним токеном допустим пробел больших либо данных это отдельные токены музыку также отдельный токен А некоторые длинные слова такие как допустим применяются содержат два токена примен и яю снова таки разбивка на токены - это внутреннее устройство моделей и разбивка на токены выполняется на этапе обучения модели на разных языках но Вы всегда должны понимать что
в терминах модели модель работает с токенами и если допустим смотреть стоимость использования моделей от Open ai к примеру то стоимость всегда формируется на основании токенов то есть допустим определённая цена за 1 млн токенов и вы можете примерно конвертировать объём токенов в символы на том или ином языке Но для английского снова таки в среднем один токен - это четыре символа и теперь ещё раз внимание пожалуйста текстовые модели не осознают сгенерированного текста то есть они всего-навсего работают с токенами и их задача - генерировать токены один за другим и генерация следующего потенциального токена основана на всех предыдущих токенах
в истории общения между вами пользователем и моделью а также на основании всех данных которые модель получила на этапе обучения либо же тренировки модели А сам процесс тренировки обычно занимает очень много времени Это месяцы и потому текстовые модели зачастую отстают от самой актуальной информации и имеют немного устаревшие данные но современные модели могут легко уже искать информацию в интернете на случай если вам необходимо получить допустим актуальные данные допустим информацию о погоде в определённом городе в таком случае модели обращаются уже в интернет но снов таки в целом задача текстовой модели генерировать токены один за другим чётко один за
другим и ещё раз важно на один и тот же запрос модели могут генерировать разные ответы Потому что при генерации токена как кандидата на следующую позицию всегда есть элемент случайности то есть всегда есть определённый вес у всех кандидатов причём даже есть кандидаты с минималь весом и на основании веса плюс элемент случайности модель определяется с тем какой токен добавлять дальше после цепочки предыдущих токенов отмечу что при программном использовании сервисов openai то есть взаимодействие с openai используя API Application programming interf можно влиять на вот этот коэффициент случайности и можно повышать его либо понижать путём понижения Вы можете добиться
более предсказуемы ответов от модели путём повышения вы добавляете вероятность появления токенов с меньшим весом и модель тогда будет вести себя скажем так более творчески то есть на эти параметры можно влиять при работе с сервисами openai программы На текущий момент в Chat gpt такой возможности нет но возможно в будущем появится то есть модель настроена для общего использования с оптимальными параметрами для широкого э общество скажем так Итак э учитывайте пожалуйста эти замечания и всегда думайте также в терминах токенов То есть токены - это основа любой текстовой модели то есть они обучаются на токенах получают на вход токены
и также генерируют токены на [музыка] выходе А теперь давайте на практике подсчитаем с вами количество токенов в определённом блоке текста Вы можете задать любой вопрос в чат gpt получить один либо два абзаца текста я возьму вот допустим этот текст который я получил на вопрос точнее на предложение самый вкусный фрукт тире и далее Найдите пожалуйста в интернете токена и вы в самом верху должны увидеть ссылку на сайт Open ai кликайте на этой ссылки и вы попадёте вот на такую страницу на которой вы можете ввести определённый текст Я вставлю сюда текст который я скопировал допустим отсюда можно
вставить абсолютно любой текст на любом языке и ниже вы увидите разбивку этого текста на токены и я вижу что в этом тексте 114 токенов в символах Это около 400 символов и здесь выше есть возможность выбора модели то есть вот эту разбивку по токенам я вижу для текущих моделей gpd 4o gpd 4o mini можно выбрать предыдущие модели такие как gpd по и gpt 4 И я увижу что количество токенов сильно возрастёт то есть для модели 4o 114 токенов и я вижу что здесь некоторые слова являются отдельным токеном допустим как вот слово выбор может так вообще к
примеру который прямо то есть мы видим что текущие модели уже оптимизированы допустим под кириллицу А вот предыдущий версии моделей не были оптимизированы и здесь мы видим что в этих же словах уже по несколько токенов то есть допустим слово вообще состоит из четырёх токенов фрукт состоит из трёх токенов и так далее если выбрать самую первую модель gpt-3 то количество токенов станет вообще заоблачным и в первой версии модели в gpt 3 каждый символ равнялся одному токену Мы даже здесь видим больше токенов нежели символов и некоторые символы здесь неразборчиво Теперь давайте возьмём переведём этот текст допустим на английский
так я напишу Переведи на английский Вы можете перевести любой другой блок текста Давайте подождём перевода так вот Я получил перевод Давайте посмотрим теперь сколько токенов будет для этого текста я могу для сравнения открыть новую вкладку здесь вот так и скопирую ещё раз текст и вставлю его здесь Итак для английского текста получилось суммарно вот такое количество символов 437 Здесь было меньше символов но 114 токенов Я выбрал последнюю модель выбираете ту модель которую вы видите на текущий момент Вполне вероятно что в будущем появятся более новые модели возможно такие которые будут работать с токенами которые будут равняться целому
предложению но не факт я думаю что уже как бы достигли в этом плане максимальной эффективности по разбивке текста на отдельные токены так вот здесь 114 токенов для последней модели здесь 103 токена и мы здесь чётко видим что каждое слово является отдельным токеном depend cving и так далее То есть каждое слово отдельный токен Так давайте попросим перевести на другой язык но перед этим Давайте посмотрим как с английским справлялись предыдущие модели gpt 35 gp4 109 токенов здесь Было 103 токена то есть на сть токенов больше то есть было уже оптимально в предыдущих моделях gp3 111 токенов на
токена больше то есть то что я вам говорил с английским языком изначально самые первое версии моделей работали уже отлично из-за того что была эффективная разбивка слов на токены но здесь я вижу что допустим вот слово Test в первой модели gpt 3 содержала два токена тест и то есть два токена если я выберу последнюю модель тоже самое то есть это два разных токена Давайте посмотрим на другой язык так Переведи допустим Переведи на так Переведи на японский Давайте увидим этот же текст на японском и посмотрим сколько токенов это будет на японском так по собственно говоря иконкам я
понимаю где закончилось какое предложение так давайте скопирую этот текст так включаю банан видите про банан всё равно модель вспомнила так и Давайте вот здесь на месте английского языка Я вставлю текст на японском получаю 150 токенов для последней модели для gpt-3 Было почти в два раза больше то есть мы видим здесь явно что каждый иероглиф является отдельным токеном некоторые иероглифы допустим объединены в группы то есть вот вот допустим одна группа это один токен вот также один токен вот таким образом используя вот эту утилиту tokenizer на сайте Open ai вы всегда можете оценить примерное количество токенов но
современные модели Отлично Уже работают с генерацией текста на разных языках из-за того что количество токенов для разных языков сейчас примерно одинаково [музыка] мы с вами ранее уже обсудили то как работают текстовые модели и вы знаете что gpt - это большая языковая модель llm а LM - это нейронная сеть и нейронная сеть имеет много данных на входе имеет скрытые слои и вот много данных на входе используется для тренировки модели либо для обучения модели потом в процессе использования модели пользователи текстовой модели передают дополнительные данные на вход модели и ожидают определённый результат на выходе из выходного слоя То
есть это принцип работы текстовых моделей и вы знаете что текстовые модели работают с токенами то есть они обучаются на токенах принимают от пользователей также последовательности токенов и генерируют на выходе также токены причём генерация выполняется один токен за другим то есть модели не генерируют сразу весь результат то есть генерация происходит поэтапно но модели настолько хорошо с этим справляются что нам с вами Может казаться что текст был сгенерирован за один подход моментально но это не так в этом уроке Давайте поговорим о том как происходит генерация изображений Потому что есть модели задача которых это сугубо генерация изображений и
на текущий момент есть несколько моделей которые можно использовать для генерации изображений это Mid journey и эта компания занимается только созданием и поддержкой модели для генерации изображений и также Да это модель разработанная компанией Open ai которая также используется для генерации изображений и вот это изображение которое вы видите было сгенерировано одной из этих моделей Вы можете угадать какой из них в целом ми journey подходит больше для генерации реалистичных футуристичный абстрактных изображений далее отлично справляется допустим с генерацией НОК логотипов векторных рисунков и также хорошо рисует реалистичные изображение конечно в будущем появятся и другие модели которые возможно потенциально будут
генерировать также целый видеофильмы генерируют изображений для целого фильма но на текущий момент э эти две компании эти две модели являются лидерами для генерации изображений Давайте поговорим о этапах создания изображений То есть как происходит генерация изображения во-первых модели для генерации изображений принимают от нас с вами текстовый ввод то есть также как это делают текстовые модели то есть пользователь вводит описание желаемого изображения указывая также детали то есть в каком виде он хочет получить изображение что должно быть изображено В каком стиле и так далее кая цветовая гамма далее модель обрабатывает текст то есть она анализирует текстовый запрос и
преобразует его в числовую форму то есть оцифровывать текст иными словами Кроме этого между этими двумя этапами может быть дополнительный этап этап расширения текста и допустим современные модели поступают Так что они принимают текстовый запрос от пользователя потом с помощью текстовой модели улучшают и расширяют его добавляя больше деталей и потом уже этот результат то есть расширенный запрос передают на этот второй этап для обработки текста уже моделью для создания изображений следующий этап - это связь текста и изображения и модель определяет как текст соотносится с визуальными элементами которые потенциально могут возникнуть в сгенерированного Пополняется этап создания изображения и это
конечно самый сложный этап и на этом этапе используется генератор и генератор создаёт изображение поэтапно начиная с шума и потихоньку добавляя определённые детали то есть постепенно улучшая качество изображения то есть в целом процесс генерации изображения начинается с большого пятна которое постепенно уточняется добавляются цвета добавляются детали расширяется само изображение и в итоге формируется итоговое изображение потом выполняется постобработка улучшается качество изображения исправляются дефекты если таковые есть изменяется допустим шение изображения то есть допустим увеличивается изображение при необходимости и далее процесс повторяется то есть результат передаётся клиенту клиент может снова с помощью текстового ввода указать что необходимо исправить в изображении
какие части допустим убрать какие части заменить на другие потом снова модель переходит к обработке текста преобразовывает его в числовую форму и так далее и уже сейчас модели отлично справляются зада по допустим замене определенных частей изображения на другие либо же удаление определённых элементов из существующего изображения есть эти задачи модели для генерации изображений выполняют на отлично Но что же такое генератор то есть и как генерируются изображения то есть мы с вами уже обсудили что в процессе генерации изображений учитывается текст от пользователя то есть выполня трансформация текста и текст приобретает цифровую форму но также в итоге эту числовую
форму текста необходимо преобразовать в изображение так вот это выполняется с помощью Gen generative adversarial Network переводится это как генеративна состязательная сеть то есть выполняется генерация с состязанием и вот это изображение также было сгенерировано одной из моделью одной из моделей и я дал задание сгенерировать изображение для термина собственно говоря generative adversarial Network и Вот такой результат мы получили то есть есть два участника в этом состязанием и дн в целом это по сути такая специальная нейронная сеть которая состоит из двух частей генератора и дискриминатором и вот генератор и дискриминатор соревнуются друг с другом потому здесь на этом
изображении нарисованы две части одного целого то есть они противоположны но они формируют одно целое и задача генератора сне вариант изображения так чтобы дискриминатор его не отбросил и принял но дискриминатор может посмотреть что изображение которое сделал генератор очень похоже на какое-то из изображений которое ранее использовалась для обучения дискриминатор и генератора и он скажет что нет этот вариант не подходит сделает другой вариант И вот так генератор и дискриминатор соревнуются друг с другом если детально то этапы создания изображений следующее генератор создаёт новые данные например изображения и старается сделать их как можно более реалистичными но при этом не похожими
на те которые использовались для обучения модели дискриминатор оценивает являются ли данные настоящими то есть из снова таки того реального набора данных которые использовались для обучения модели а для обучения моделей для генерации изображе новаки использовались все доступные изображения в интернете которые доступны в открытом доступе бесплатные и которые не требуют лицензии для их использования конечно же таких изображений не так уж и много по сравнению с платными изображениями но тем не менее этого хватило для того чтобы обучить современной модели так вот дискриминатор оценивает являются ли данные те которые уже были ранее моде или они новые абсолютно сгенерированные заново
Да стиль изображений может повторяться потому мы с вами можем и давать задачу модели нарисовать изображение в стиле Сальвадора Дали допустим но вы никогда не получите Один в один изображение такое же как нарисовал именно этот конкретный автор благодаря сноки соревнованию между генератором и дискриминатором то есть принцип работы Такой генератор пытается обмануть дискриминатор а дискриминатор учится распознавать фальшивые результаты И тем самым Это улучшает обе сети то есть обе нейронные сети улучшаются и получается на выходе в результате вот такого обучения взаимного обучения Вот такая нейронная сеть гн создат реалистичные данные которые практически не отличаются от настоящих то есть
мы говорим в данном случае о изображениях иконки иллюстрации реалистичные фотографии анимационные персонажи и так далее то есть задача вот этой пары дискриминатор генератора довести процесс генерации конкретного изображения до совершенства то есть и это ВС проходит на одном эта генерации изображения то есть проходит много итераций и в этом процессе активно задействуются видеокарты то есть GPU и именно с помощью GPU и создаются собственно говоря изображение Но это всё равно итеративный процесс то есть любое изображение генерируется на протяжении многих итераций и итерации описаны собственно говоря здесь то есть Вот так работают модели для генерации изображений и принцип похож
на работу собственно говоря текстовых моделей и в целом любое изображение представляет собой также цифровую последовательность и вот задача модели для генерации изображений также работать с этими цифровыми данными и генерировать определённые изображения вот такой принцип работы моделей которые генерируют изображение и я думаю что в будущем конечно же эти модели будут улучшаться и изображения будут крайне высокого качества Хотя они уже высокого качества но тем не менее я думаю что качество будет постоянно улучшаться А теперь давайте на практике сгенерируйте моделью дали для генерации изображений уже интегрирована в CH gpt и на текущий момент Даже те кто пользуется Chat
gpt бесплатно могут генерировать несколько изображений на протяжении суток Если же вы хотите генерировать больше изображений то необходима подписка плюс Итак давайте здесь напишем допустим следующий запрос сгенерируйте Пизанской башни в тёмном лесу в джунглях джунглях на башне на башне должно быть много различных животных которые живут в джунглях Добавь также Добавь также Свет луны к примеру то есть вот такая задача для генерации изображения можно было написать ещё роль то есть указать в каком стиле нарисовать изображение но я роль не указал просто описал цель то есть что я хочу увидеть на изображении выполняется генерация изображения с помощью модели
Да снова таки для пользователей ch5 этот процесс прозрачен то есть не нужно обращаться напрямую в модель Дале и вот Я получил такой результат Пизанская башня вижу птицы вижу разных зверей вот интересно обезьяна с головой Лева Льва точнее и вижу Луну которая светит прямо над Пизанской башней вот такой пример генерации изображения и на мой взгляд результат в принципе неплохой Так давайте дадим другую задачу так в новом окне чата я напишу нарисуй векторную векторную иллюстрацию иллюстрацию для магазина для магазина допустим бытовых товаров Вот так и снов таки можно детализировать но я время тратить не буду на написание
большого запроса То есть я хочу получить векторную иллюстрацию для магазина бытовых товаров выполняется генерация и процесс обычно занимает около 10-15 секунд и вот такая векторная иллюстрация была сгенерирована Если Вас не устраивает этот результат вы всегда можете перег нери Другую картинку но я думаю что принцип понятен То есть я попросил векторную иллюстрацию и я получил не то что получал в предыдущем запросе то есть не картинку приближённую больше к реальности А собственно говоря разноцветную иллюстрацию давай Давайте попросим теперь написать сгенерировать собственно говоря допустим иконку так сгенерируйте Допустим вот такая задача Итак генерируется иконка и после генерации иконки
можно будет Допустим обрезать фон и сделать иконку прозрачной и использовать её допустим в мессенджерах Итак завершается этап генерации так получил вот такую иконку но я вижу что фон как бы серый и он сливается как бы с краем и можно попробовать дать задачу модели убрать фон либо заменить его на белый но сейчас это приводит обычно к генерации нового изображение А ну-ка давайте я напишу сделай фон белым но оставь это же изображение вот так то есть я добавляю уточняющий запрос это всё-таки чат То есть в рамках чата Мы можем общаться с т gpt в данном случае и
просить определённые уточните результаты и снова таки как сказал результат будет отличаться от этого если вам нравится этот результат то можно уже выполнить обрезку фона самостоятельно то есть допустим я [музыка] могу взять Это изображение на самом деле если я кликнуть вот такой редактор в котором я могу выделить определённые часть изображения с помощью вот этого инструмента допустим я могу сказать что я хочу убрать вот эти части но снов таки если я напишу Удали фон Я думаю что вряд ли весь фон будет удалён но я могу написать удали это и серый серый фон посмотрим что получится Итак отправили
запрос на удаление тех элементов которые я выделил А я выделил вот эти две части вот эту часть и эту часть и посмотрим сейчас на результат Я думаю что фон останется всё равно серым но этот фон мы сможем легко в принципе убрать дальше в постобработки уже у себя на компьютере локально Итак завершается процесс редактирования этого изображения так вот Я получил такое изображение эти части были удалены то есть вот нет ни слева ни справа частей и сейчас я могу в принципе сделать скриншот либо же загрузить Это изображение Ну я могу загрузить его здесь так я его загружу
вот так изображение загрузилось И теперь я его открою и на Mac я могу его прямо здесь отредактировать и здесь есть инструмент прозрачности на Windows я думаю есть похожее средство вот здесь называется это instant Alpha я могу выделить допустим фон вот таким образом и удалить его duplicate stive и теперь я могу сохранить Это изображение уже собственно говоря в расширении png допустим здесь будет тест Так давайте M png так и сохраню допустим на рабочем столе Save И теперь я могу использовать Это изображение как иконку где-то где мне это нужно то есть вот такой пример генерации иконки и
редактирования прямо в окне чата и далее дополнительного редактирования уже вне собственно говоря чата но я думаю что в будущем добавят средство удаление фона прямо собственно говоря в чате где мы общаемся с чатто но снова таки здесь я вижу то что при дополнительных запросах генерируются абсолютно новые картинки Потому что при генерации изображений модели которые генерируют новое изображение не сохраняют предыдущее изображение в контексте снова таки из-за того что есть наличие генератора и на этапе создания любого нового изображения и стараются сделать новое изображение максимально не похожим на предыдущее то есть вот такой принцип генерации изображения на текущий момент
но снов таки возможно в будущем модели как-то будут Дона ены так чтобы можно было сказать оставь допустим именно это изображение но поменять допустим цвет глаз либо Увеличь Бивни либо ещё что-то на текущий момент генерация работает вот таким образом и тем не менее я думаю что мы получаем очень даже хороший результаты мы с вами завершили вступительную секцию в которой поговорили о том что такое gpt LM нейронные сети мы обсудили то Какие ограничения есть у текстовых моделей вы знаете то что текстовые модели работают с токенами генерируют токены причём один за другим и также мы с вами давать
определённые задачи текстовым моделям и вы убедились в том что каждый раз модель отвечает по-разному то есть всегда присутствует элемент случайности в процессе генерации токенов и очень редко когда вы получите один и тот же ответ от модели То есть это почти невозможно также мы с вами поговорили о том как происходит разбиение на токены и вы знаете что в современных моделях количество токенов для одного и того же текста на разных языках примерно уже одинаково Это означает что современные текстовые модели генерируют текст на разных языках В нашем понимании токены в понимании моделей примерно с одинаковой скоростью и если
вы взаимодействует на основании объёма использованных токенов то есть токенов вы передали вы модель И сколько токенов модель сгенерировал и потому сейчас снова таки при использовании современных моделей на других языках отличных от английского стоимость использования этих сервисов будет примерно сопоставима с использованием английского языка Кроме этого мы с вами поговорили о том как происходит генерация изображений моделями которые специально настроены на генерацию изображений они также работают с текстовым вводом они обычно улучшают расширяют текстовый ввод Также можно добавлять дополнительные параметры для настройки модели дегенерации изображений и в итоге на этапе создания изображений всегда присутствует два участника то есть две
нейронных сети это генератор и та часть которая проверяет собственно говоря изображения и просто их отбрасывает если найдено определённая схожесть с теми знаниями которые модель получила уже на этапе обучения то есть дискриминатор и генератор работают всегда в паре и благодаря такой парной работе и создаётся итоговая изображение Итак это основные концепции но пожалуйста помните что текстовые модели могут выдавать неправдивые результаты то есть доверять результатам нельзя то есть всегда ну нужно перепроверять и конечно же вы должны понимать что модели на текущий момент не имеют своего собственного мышления они просто генерируют токены один за другим либо же часть изображения
один за другим но делают это очень хорошо Так что нельзя отличить от того что делает человеческий мозг допустим в процессе рисования изображения либо в процессе написания определённого текста Добро пожаловать в введение в Chat gpt в этой секции я расскажу вам о стоимости использования Chat gpt о том Чем отличается бесплатная версия и версия Chat gpt Plus и также я покажу вам как пользоваться веб интерфейсом Chat gpt и какие основные функции у Chat gpt и конечно же мы посмотрим на несколько примеров использования чатбот Chat [музыка] gpt Chat gpt был создан и поддерживается компании openai и в этом
уроке давайте сделаем краткий обзор других продуктов которые создаёт компания openai для этого Зайдите пожалуйста на сайт openai com и здесь на вкладке products вы можете ознакомиться с тем что предлагает собственно говоря Open ai и здесь в начале вы увидите собственно говоря Chat gpt и Chat gpt доступен Как для обычных пользователей Таких как вы и я но также доступен и для компаний Кроме этого Open ai предоставляет API доступ к различным моделям и Это означает что можно взаимодействовать со всеми моделями openai программно используя допустим язык программирования Python либо JavaScript и если посмотреть ниже то Также вы можете
найти информацию о тех моделях которые на текущий момент доступны в компании openai openai o1 o1 Mini - это модели которые будут использоваться и уже используются для сло вычислений и которые могут проводить некоторые итерации внутри себя прежде чем выдавать ответ gpt 4 и 353 - это предыдущие версии текстовых моделей На текущий момент используются модели gpt 4o Mini и gpt 4o я думаю что именно эти модели Будут ещё долгое время актуальные модель да 3 - это модель для генерации изображений и при использовании Chat gpt в чате уже интегрировано взаимодействие с моделью дали 3 То есть вам не
нужно отдельно отправлять запрос на создание изображений всё это можно делать непосредственно в чате Chat gpt и Кроме этого есть модель sora которая позволяет создавать также видео на основании текста и здесь есть некоторые примеры тех видео которые были созданы вот ниже указан текстовый запрос и то собственно говоря что было в итоге сгенерировано то есть здесь мы видим некоторые отрывки из сгенерированных видео Давайте посмотрим также допустим вот на это видео которое выглядит очень даже реалистично так давайте подождём окончания загрузки и вот собственно говоря видео которое была создана полностью моделью S То есть вы видите что воз искусственного
интеллекта развиваются и на сайте Open ai вы всегда сможете ознакомиться с последними функциями которые доступны На текущий момент для использования таким же образом вы можете ознакомиться и с другими продуктами Open ai Можно перейти допустим на страницу с описанием модели дали 3 которые используется для генерации изображений и вот некоторые примеры сгенерированных изображений То есть вы можете посмотреть внизу какой текстовый запрос Был использован для создания того или иного изображения то есть вот ещё дополнительные примеры Вот и так далее То есть иллюстрации иконки всё это может создавать модель дали которая генерирует изображение Ну и если вы хотите ознакомиться
с информацией о текстовых моделях допустим модели о1 Вы можете также прочитать соответствующее статьи с графиками которые демонстрируют эффективность той или иной модели вот короткий обзор собственно говоря тех продуктов которые доступны на сайте openai и здесь всегда Вы можете найти самую актуальную информацию касательно последних разработок [музыка] компании для того чтобы использовать Chat gpt Вам необходимо зарегистрироваться на openai то есть создать аккаунт openai если у вас ещё нет аккаунта Вы можете зайти на сайт Chat gpt.ini акаунта либо Apple аккаунта потому просьба сначала создать аккаунт и далее Давайте поговорим о стоимости использования Chat gpt в gpt для обычных
пользователей то есть не для корпоративного использования есть две версии это бесплатная версия и версия chpt Plus В бесплатной версии есть полный доп к текстовым моделям То есть можно взаимодействовать со всеми моделями за исключением тех которые находятся на фазе тестирования бета-тестирования и на данный момент есть доступ к модели gpt 4o Mini но ограниченный доступ к модели gpt 4o также есть возможность анализа данных загрузки файлов поиска информации в интернете и также генерация изображений то есть этот доступ есть но вы не сможете сгенерировать допустим много изображений за короткое время у меня ранее был также бесплатный доступ и можно
было генерировать около двух-трёх изображений на протяжении суток то есть каждые сутки этот лимит обнуляется То есть у вас есть полный доступ к текстовой модели Вы можете выбирать текстовую модель и также есть ограниченный доступ к анализу данных генерации изображений и поиску в интернете Кроме этого есть возможность использования кастомных gpt это кастомные чатбот которые создаются другими пользователями так вот в бесплатном доступе у вас также есть возможность использования кастомных gpt в версии ПС которая стоит на текущий момент 20 долларов в месяц есть более широкие возможности тот же доступ ко всем текстовым моделям с возможностью выбора также самых актуальных
моделей которые находятся на этапе preview на текущий момент это модели о1 и о1 Mini Но конечно со временем будут появляться и более новые модели и конечно более полный доступ будет если у вас будет доступ к подписке плюс и для взаимодействия с моделью допустим gpt 4o с подпиской плюс у вас будет более чем в пять раз больше возможностей общения то есть в пять раз больше сообщений Вы можете отправить и получить в ответ от модели gpt 4o также у вас будет полный доступ к анализу данных можно будет загружать файлы для анализа такие файлы как допустим PDF Excel
TT и другие форматы файлов Также можно давать задачи Chat gpt генерировать файлы в ответ и также используя подписку плюс у вас будет доступ к поиску актуальной информации в интернете и задача поиска выполняется конечно же чат gpt То есть вы можете спросить о допустим текущей погоде в определённом городе и в таком случае чат gpt выполнит поиск информации в интернете либо же вы можете сказать Найди информацию в интернете по такому-то запросу то есть явно сказать что вам нужна актуальная информация на текущий момент также у подписчиков Chat gpt Plus есть доступ к голосовому взаимодействию сча gpt к генерации
изображений И также у вас появляется возможность создания своих кастомных gpt То есть у вас будет возможность настройки Chat gpt под определённые конкретные задачи и конечно же Те у кого есть подписка Chat gpt Plus получает доступ к новым функциям которые будут выходить в будущем первыми в отличие от тех у кого бесплатный доступ но в целом Если так резюмировать то Если вам нужен gpt для текстового взаимодействия то бесплат списки вполне будет достаточно Если же вам нужно взаимодействие на основании файлов поиск данных в интернете частая генерация изображений иконок логотипов то конечно рекомендую в таком случае подписаться на платный
доступ то есть Chat gpt Plus Кроме этого есть версии для компаний то есть корпоративный доступ и есть версии Team и Enterprise и это подходит снова таки для больших компаний которые хотят получить доступ к сервисам Chat gpt для большого количества сотрудников и здесь в принципе тот же пакет который включён Chat gpt Plus но здесь не ограниченный доступ к некоторым моделям то есть более высокие лимиты по взаимодействию с текстовыми моделями с моделями для генерации изображений анализу данных и так далее Также можно создавать кастомные gpt в рамках рабочего пространства компании то есть делать их доступными только в рамках
компании и также появляется доступ к административной консоли для управления доступом пользователей и для выполнения аналитики То есть это собственно говоря называется доступ Team Ну а для больших компании есть вариант Enterprise и здесь есть дополнительный функционал который не включён в план Team но снова таки здесь необходимо контактировать отдел продаж для того чтобы договориться о использовании вот этого плана Enterprise Итак начать использовать Chat gpt Вы можете бесплатно главное необходимо создать аккаунт на Open ai И кстати говоря этот же аккаунт вы сможете в дальнейшем при необходимости использовать для программного доступа к моделям то есть для использования сервисов AP
и писать программы допустим на JavaScript Java Python для отправки программных запросов к той или иной модели openi Итак вот сравнение планов и Если Вы планируете активно взаимодействовать gpt Конечно я Рекомендую вам подписку Плюс вы получаете очень широкий спектр возможностей по работе с различными моделями включая самые последние которые Open разрабатывает и будет разрабатывать в дальнейшем прежде чем рассматривать функционал и возможности Chat gpt Давайте сравним Chat gpt с другими сервисами от других компаний и кроме CH gpt от openai есть сервис gem от компании Google Кроме этого есть Microsoft copilot от компании Microsoft и также популярным сервисом является
клауда от компании anthropic и Давайте зададим всем этим сервисам один и тот же вопрос точнее дадим задачу рассказать о себе Расскажи о себе в шутливой форме рую этот запрос и вставлю во все собственно говоря окна для разных текстовых моделей Вот так и Здесь также и посмотрим на собственно говоря результаты Так давайте вернёмся в чат gpt так вот ответ от чат gpt ответ мы получили Да в шутливой форме как мы и просили Google gem также мы получили ответ Чуть более расширенный И я также могу лайкнуть дизлайк нуть ответ могу изменить собственно говоря ответ могу выполнить другие
действия в Google gem перейду в Microsoft кот получаю вот такой ответ Я Microsoft copilot ваш персональный помощник робот созданный для того чтобы облегчить вам жизнь так А где здесь шутливая форма так я не превращу вашу кухню в джунгли и не отправлю вашего кота в космос нет моего кота не надо отправлять в космос так так что если вам нужен виртуальный друг и так далее Также можно лайкнуть дизлайк нуть и скопировать этот сгенерированный текст с помощью Microsoft copilot перейду в клауде получаю вот такой ответ Привет я клауда виртуальный помощник с искромётный юмором И безграничным любопытством если бы
у меня были руки они были бы заняты одновременно печатания жестикуляции и можно поеданием воображаемых пирожных и вот полный ответ я снова таки могу его скопировать могу сгенерировать ответ заново допустим кликнуть R и тогда модель попытается сгенерировать ответ заново вот сравнение некоторых текстовых чатов Chat gpt от openi gem от компании Google Microsoft copilot от компании Microsoft Иу от и я Рекомендую вам поработать с разными текстовыми моделями одни хороши в одном другие хороши в другом и конечно При желании Вы можете использовать и разные модели для ваших повседневных задач зависимо от ваших [музыка] целей Теперь давайте скажу несколько
слов оу к моделям openai программно это называется API на сайте openai есть внизу Вот такая секция API здесь есть обзор платформы есть ссылка на стоимость ссылка на документацию и также ссылка на логин Если вы уже создали аккаунт на Open ai то вы сможете использовать этот же аккаунт для входа на эту страницу но для начала Давайте посмотрим на стоимость использования API сервиса и и здесь указана стоимость для использования различных моделей начиная от текстовых моделей и заканчивая моделями для генерации аудио на основании текста генерации изображений и так далее и для текстовых моделей стоимость формируется на основании количества
токенов которые вы передаёте в модели и которые модели генерируют и стоимость отличается для инпут токенов то есть токенов которые вы передаёте в модель и токенов которые модель генерирует и обычно соотношение 1: четы то есть допустим для модели gpt 4o На текущий момент Стоимость 1 млн токенов на входе 2,5 доллара стоимость генерации 1 миллиона токенов на выходе этой же моделью равняется 10 долларам и мы с вами ранее говорили о том что текстовые модели работают с токенами потому и стоимость основана на токенах Но в среднем один токен равняется четырём буквам в английском языке снова таки это средние
показатели и об этом Здесь также есть информация то есть в среднем один 1.000 токенов - это 750 слов То есть один токен четыре буквы либо же 1.000 токенов - Это примерно 750 слов также для текстовых моделей есть bge API что позволяет отправлять много запросов за один раз и при этом вы получаете скидку но в таком случае Open ai Ответит вам на протяжении 24 часов то есть ответ вы получаете не немедленно а с некоторой задержкой но при этом у вас получается существенная экономия в использовании моделей и ниже также есть стоимость для других моделей таких как gpt
4o Mini по сравнению с большей моделью gpt 4o стоимость гораздо ниже Вот 15 центов за 1 млн инпут токенов и 60 центов за 1 млн аутпут токенов далее есть информация о моделях которые на текущий момент находятся на фазе preview это гораздо более мощные модели такие как о1 и стоимость Как вы видите отличается в разы по сравнению с другими моделями такие такими как 4o 4o Min далее есть информация о дополнительной надстройки моделей под себя называется этон то есть При желании при использовании API сервисов Вы можете до настраивать модели под свои нужды то есть дооб Буча модели
и Здесь также есть информация об этом есть также доступ к Assistance API это выполнение определённых блоков кода на стороне серверов openi генерация изображений в среднем стоимость генерации одного изображения вот в таком разрешении на текущий момент составляет 4 цента также есть возможность генерации изображений в других разрешениях тогда стоимость вырастает в два раза актуальная модель для генерации изображений на текущий момент дали 3 Но конечно всё будет развиваться и будут появляться более новые модели также есть аудио модели такие как Whisper TTS которые позволяют выполнять конвертацию текста в аудио то есть озвучивать текст и также выполнять обратную конвертацию то
есть создавать иными словами субтитры то есть на основании аудио можно формировать субтитры и также есть возможность перевода субтитров с одного языка на другой и ниже в самом конце указаны те модели которые были в использовании ранее некоторые всё ещё поддерживаются некоторые уже устарели но Open ai рекомендует использовать по возможности актуальные модели и зачастую стоимость актуальных моделей формируется таким образом что они становятся более привлекательными по сравнению с теми моделями которые были в использовании ранее и стоит отметить что если вы используете модели через API то у вас нет фиксированной помесячной платы за использование и вы платите только за
использование сервисов то есть за объём токенов либо за количество сгенерированных изображений с помощью модели дали либо за объём конвертирова текста в аудио То есть вы платите только за то что вы используете и ниже Вы можете перейти собственно говоря по ссылке API Lin и выполнить логин на платформе openi и вы увидите уже собственно говоря расширенный набор пунктов для того чтобы взаимодействовать с сервисами Open программно и Вот пример кода на Python с помощью которого можно отправить запрос к текстовой модели gpt 4o здесь можно выбрать допустим No JS то есть получить код на JavaScript и также можно обратиться
к сервисам openai програмно с помощью JavaScript Итак это платформа для разработчиков и вот сонно стоимость использования моделей [музыка] программно в этом уроке Я сравню бесплатную версию Chat gpt с версии Chat gpt Plus и я прошу учесть что веб-интерфейс Chat gpt постоянно изменяется добавляется новый функционал изменяется расположение элементов но в целом логика взаимодействие с чатбот оставаться неизменной и сейчас вы видите бесплатный вариант использования Chat gpt и в таком случае здесь я увижу ссылку на апгрейды с Chat gpt Plus и вместо upgrade внизу я вижу Add Team workspace то есть возможность перейти уже на корпоративный доступ но
в целом веб интерфейс вы примерно одинаково В бесплатной версии сверху я вижу чат gpt и для того чтобы использовать т gpt п Мне нужно выполнить апгрейде я не могу выбрать определённую модель из списка то есть выбор конкретной модели для взаимодействия мне не доступен но мне доступен допустим временный чат Chat Если вы включаете временный чат То тогда история действия с Chat gpt не будет сохраняться в вашей истории Но для целей безопасности история сохраняется на серверах openai на протяжении 30 дней и если вы используете временный чат То тогда данные которые вы передаёте в модель и данные которые
модель генерирует не будут использованы для дальнейшей тренировки модели то есть Для дальнейшего улучшения модели Если вы работаете в обычном чате то учитывайте что ваши данные будут использованы Для дальнейшего улучшения моделей и также в temporary Chat у вас будет отключено сохранение истории в памяти чата снова таки При желании Вы можете выбрать временный чат либо же работать в обычном чате В бесплатной версии также есть возможность допустим добавление файлов то есть attach Files То есть вы можете отправлять файлы для дополнительного анализа можно генерировать изображения можно выполнять другие действия но список некоторых действий которые выходят за рамки работы с
текстовой моделью ограничен То есть вы можете сгенерировать одно либо несколько изображений на протяжении суток но потом у вас отключается такая возможность и вам нужно подождать около суток до сброса ваших лимитов также В бесплатной версии Chat gpt есть возможность поиска кастомных gpt можно кликнуть на Explore gpt и найти адаптированные gpt под определённые задачи такие как допустим генератор файлов написание определённых статей генерации изображений создание логотипов и так далее здесь Также можно найти кастомный gpt который называется мотиватор на день и этот кастомный gpt создал собственно говоря я и вы научитесь создавать такие кастомные gpt также в этом курсе
Но в одной из следующих секций То есть можно выбрать допустим этот кастомный gpt нажать Стар Chat и выполнить уже взаимодействие с этим кастомным gpt для того чтобы перейти обратно в чат gpt нужно выбрать собственно говоря чат gpt здесь слева Я думаю что вы заметили что здесь быстро появилось название текущей модели которая используется для пользователей у которых бесплатный доступ к ча gpt А это на текущий момент gpt 4o Mini и снова таки у будущем конечно же для пользователей у которых будет бесплатный доступ будет доступ к последней модели но не полной а уменьшенной скажем так копии то
есть gpt 4o Mini подходит для большинства задачи большинства пользователей Итак это обзор бесплатной версии Теперь давайте посмотрим на платную версию в платной версии веб интерфейс Такой же но появляется возможность поиска в интернете видите Search The Web В бесплатной версии такой возможности На текущий момент нет возможно в будущем добавится Потому что всегда набор функций изменяется и допустим я могу спросить Нет давайте спрошу позже Давайте посмотрим на возможности выбора моделей То есть я здесь в платной версии могу выбрать определённую модель по умолчанию выбрана большая модель по сравнению с той которая доступна В бесплатной версии А это на
текущий момент gpt 4o её уменьшенный вариант - это gpt 4o Mini есть также доступ к gpt 4os canvas и это на текущий момент в бета тестировании и используя этот вариант можно выполнять задачи которые касаются программирования прямо онлайн то есть оптимизировать код улучшать код выполнять отладку кода и так далее но пока что это в бета тестировании также я могу выбрать модель о1 preview Для более глубокого ответа который занимает больше времени и ресурсов и также есть вариант o1 Mini Кроме этого я могу выбрать модели gpt 4o Mini и gp4 которая уже считается устаревшей то есть здесь написано
Legacy Model её уже не рекомендуется использовать то есть вместо неё следует использовать gp4 Mini либо же gp4 и также есть возможность включить чат и работает он таким же образом как и для бесплатных аккаунтов слева также есть возможность найти определённые gpt то есть доступ к кастомным gpt есть и там и там но здесь У меня появляется возможность создания своего gpt есть ссылка на мои gpt которые я создавал уже ранее я могу создать ещ дополнительные gpt и сделать их допустим доступными для всех как доступным мой мотиватор на день либо же можно сделать gpt приватным и только у
вас будет доступ к нему и там и там есть возможность поиска по вашим чатам то есть и здесь и здесь есть поиск и также есть кнопка для создания новых чатов вот она и вся история чатов сохраняется у вас вот здесь в левом меню При желании можно его скрыть Вот так и показать снова и справа в углу у вас есть доступ к вашему аккаунту То есть можно посмотреть на ваш план можно зайти в настройки можно посмотреть ваши gpt можно настроить чат gpt под себя и Кроме этого я вижу ссылку на скачивание десктопного приложения я использую macos
потому ссылка для macos для Windows также есть десктопное приложение которое обладает э Чуть более широким функционалом нежели онлайн приложения если я кликнуть вот здесь то я вижу только My gpt customized gpt и настройки и также возможность скачать десктопное приложение и выполнить апгрейды возможности создания своих gpt То есть если я кликаю на Explore gpt в бесплатном плане то доступ к созданию моих кастомных gpt закрыт но я вижу что мне необходимо выполнить апгрейды Появилась возможность создания моих кастомных gpt снова таки возможно в будущем набор функций который будет доступен для бесплатных пользователей будет увеличен я скажу что я
долгое время пользовался бесплатной версией и мне её вполне хватало но далее Я перешёл на версию Chat gpt Plus потому что я часто создаю изображение часто ищу актуальную информацию в интернете и потому Chat gpt для меня лично является очень хорошим помощником вот такой обзор собственно говоря платной и бесплатной версии и ключевые отличия в том что здесь у вас нет возможности выбора определённой модели с которой вы хотите взаимодействовать нет доступа к последним моделям нет доступа к последним функциям А если у вас платная подписка Chat gpt Plus Вы можете выбрать определённую модель включая все последние модели которые находятся
на этапе preview либо бета-тестирования и также вы получаете более широкий лимит на генерацию изображений на взаимодействие с текстовыми моделями и также поиск в Интернете но я думаю что поиск в Интернете будет скоро интегрирован в бесплатную версию и также в версии плюс у вас появляется возможность отправлять любые типы файлов генерировать любые типы файлов это также есть В бесплатной версии но очень ограничено то есть вы буквально можете создать несколько файлов и на этом У вас уже будет превышен лимит То есть Вам нужно будет подождать обнуления лимита это было сравнение бесплатной версии Chat gpt и платной версии Chat
gbt [музыка] Теперь давайте поработаем с основными функциями Chat gpt и я буду использовать и платную версию и бесплатную версию для того чтобы вы видели отличия в использовании тех или иных функций и Давайте начнём с простого вопроса Расскажи о себе и то же самое я сделаю В бесплатной версии Итак Расскажи о себе здесь и здесь ожидаем генерации ответа слева я вижу что появился новый чат New Chat и вот собственно говоря ответ и после генерации ответа чат gpt также создаёт название для этого чата причём название генерируется автоматически то есть видите для этого запроса Расскажи о себе название
было определено как о себе и помощи И снова таки При желании я могу скрыть левую панель и работать только в окне чата Давайте посмотрим на результат здесь В бесплатной версии Я также получил ответ конечно же ответы отличаются и это абсолютно Естественно для текстовых моделей и у вас также будет абсолютно другой ответ независимо от того какую версию CH gpt вы используете текстовые модели генерируют токены один за другим и Вполне вероятно что на разных местах будут абсолютно разные токены потому мы и видим с вами разные результаты вот здесь и вот здесь Здесь также появился новый чат и
здесь название чата другое обо мне и тебе то есть видите название чата снова таки генерируется уже после создания ответа вам чат gpt генерирует текстовые ответы в отформатированном виде то есть есть списки текст выделенный жирным и При желании Вы можете выполнить определённые действия с тем текстом который был сгенерирован и здесь я вижу read то есть возможность озвучить этот текст далее я могу скопировать этот текст и вставить его дальше допустим в Microsoft Word либо же в любом текстовом редакторе Могу поделиться отзывом ответ либо не понравился и также могу генерировать ответ используя другую модель то есть видите если
у меня платная подписка я могу выбрать другую модель допустим о1 preview и получить ответ уже от другой модели В бесплатной версии есть также возможность озвучить этот текст скопировать также поделиться отзывам и также выполнить ноде я могу выбрать только одну из двух моделей gpt 4o и gpt 4o Mini давайте я выберу модель gpt 4o и сейчас ответ будет сгенерирован моделью gpt 4o но на текущий момент В бесплатной версии доступ к модели gpt 4o есть но он ограничен То есть через какое-то количество запросов вы достигнете лимита и вы переключитесь на модель по умолчанию на модель gpt Mini
и по этой причине я не могу выбрать здесь собственно говоря модель gpt 4o Да её можно использовать но у вас будет определённый лимит по количеству запросов когда я только что нажал на выбор другой модели у меня здесь Появилась возможность переключения между ответами то есть я могу перейти на первый ответ либо Второй ответ воспринимайте вот эти ответы как разные ветви в рамках определённого чата То есть я работаю в одном чате но у меня появляется несколько разных веток в чате Кроме этого я могу отредактировать запрос кликнув здесь на карандаше и я могу написать Расскажи о себе в
одном предложении Вот так и отправляю запрос Это можно сделать и бесплатной версии в том числе Расскажи о себе в двух вот так отправляем запрос И теперь у меня появляется новая ветка вот здесь на этапе формирования запроса и я могу переключаться между разными ветками так как это чат то конечно я могу задавать дополнительные вопросы в рамках определённой ветки так я вижу ответ в одном предложении как я и попросил и я напишу напиши пример пример задачи которую ты можешь решить Конечно вы можете общаться с чатбот на разных языках и на текущий момент современной модели генерируют ответы на
разных языках английском французском немецком и так далее с примерно одинаковой скоростью и с примерно одинаковым объёмом использованных токенов потому что Напоминаю что текстовые модели работают с токенами и вот в рамках этого чата Я дал дополнительные задание и я получил пример задачи которую может решить чатбот и здесь пример программы на Python и вы видите что блоки кода также форматируется так чтобы было удобно с ними работать и я вижу задачу вот такую Напишите программу которая находит все числа от одного до 100 которые делятся на три и п одновременно и выводит и в список то есть Это пример
задачи для текстовой модели и в ответ вы получите примерно Вот такой результат и снова таки это взаимодействие находится В отдельной ветке если я вернусь обратно в предыдущую ветку то я там не увижу этих блоков кода и вот эти ветки в рамках этого чата абсолютно независимы и При желании Вы можете общаться в разных ветках там где вам нужно Итак если я вернусь обратно во вторую вет я могу продолжить задавать какие-то уточняющие вопросы допустим я могу написать объясни Объясни что такое допустим Print и если я напишу Просто объясни что такое Print в рамках этой ветки то модель
возьмёт информацию из предыдущего контекста то есть вот всё что было ранее в этой ветке попадает в контекст и у разных моделей есть разный размер контекста и у современных моделей размер контекста очень большой То есть это иными словами объём памяти предыдущих взаимодействий причём включаются и ваши запросы и ответы от моделей то есть вот всё это попадает в контекст мой мой начальный запрос ответ от модели потом уточнение ответ от модели то есть всё это попадает в контекст и исходя из контекста модель понимает что я спрашиваю о том что такое прин вот здесь то есть если я просто
возьму скопирую объяснить что такое Print и допустим создам новый чат либо же здесь создам отредактируй просто запрос и напишу здесь Объясни что такое Print Send то я увижу что Print - это встроенная функция в большинстве языков программирования например Python то есть модель знает что Print чаще всего используют в Python и из ходя из этого модель решила мне объяснить что такое функция Print в Python но снова таки здесь в данном случае Нет предыдущего контекста но модель решила что скорее всего что я спрашиваю о функции Print именно применительно к языку программирования и ответ сформирован соответствующим образом здесь
же я вижу что это однозначно команда в Python то есть не написано что это команда для большинства языков программирования конкретно Python потому что в контексте мы ранее общались о Python и далее Также есть примеры использования этой функции то есть вызов функции и то что мы получаем на выходе и детальное описание с другими примерами Вот пример взаимодействия в рамках определённой ветки чата и вы всегда можете создать новый чат кликнув здесь New Chat и предыдущий чат сохранится вот здесь в истории слева и тоже самое можно сделать и здесь то есть создать новый чат При желании Когда у
вас накопится большое количество чатов их можно все удалить за один раз перейдя в настройки settings и здесь есть возможность Delete All chats то есть кликнуть на кнопке удалени всех чатов При желании можно также архивировать чаты и потом восстановить их из архива на случай Если Вам это понадобится Также можно в настройках поменять допустим тему System Dark Light и выполнить другие действия по настройке собственно говоря Chat gpt здесь я могу кликнуть Delete All confirm Del и это приведёт к удалению всех чатов то есть слева здесь я не вижу ни одного чата Вот то как можно создавать чаты
и как можно создавать различные тки в рамках одного чата и как можно управлять чатами Кроме этого для чата я могу выполнить определённые действия такие как rame то есть При желании если мне не нравится это название я могу переименовать чат могу архивировать один чат могу удалить его и могу также поделиться этим чатом с другими то есть кликнуть на Share и я получу ссылку которую я смогу скопировать для того чтобы другие пользователи могли получить доступ к этому чату Ну давайте я его просто сейчас удалю вот таким образом вот основы работы в чат gpt с разными [музыка] чатами
Теперь давайте на практике поработаем с Chat gpt и поработаем с текстом и попробуем генерировать изображение и я предлагаю начать собственно говоря с создания изображений И для этого достаточно просто написать в те запросе Что вы хотите получить изображение либо написать нарисуй создай изображение и так далее и я напишу следующее нарисуй видео блогера который сидит за компьютером за компьютером и записывает что-то в микрофон при этом есть видеокамера освещение ноутбук и монитор То есть я по сути описал то что я вижу перед собой и посмотрим как с этим справится собственно говоря модель Итак отправляем такой запрос Нарисуй видеоблогера
и так далее Итак ожидаем генерации изображения кстати говоря сейчас я пользуюсь бесплатным планом И как я уже отметил ранее в бесплатном плане есть возможность генерации изображений Но количество таких изображений ограничено Итак вот собственно говоря результат который модель сгенерировал то есть всё в принципе есть Согласно моим требованиям но я вижу что есть допустим два стола вместо одного и камера почему-то стоит сзади блогера я могу собственно говоря уточнить мой запрос и я могу написать следующее ноутбук ноутбук должен стоять на том же столе где и монитор камера должна стоять напротив блогера на столе освещение вроде нормально микрофон есть
всё в порядке давайте так то есть я отправил уточ за но не факт что сохранится какая-то часть этого изображения потому что на текущий момент модели для генерации изображений работают Так что Они каждый раз создают создают почти новое изображение которое совсем не похоже на предыдущее И сейчас мы в этом убедимся с вами то есть да как бы изображение было создано свет примерно такой же камера теперь стоит с другой Роны ноутбук на этом столе гитара есть как бы и там гитара видна и тут ещё одна гитара То есть в принципе смысл сохранён но вы видите что и
угол отображения изображения другой и элементы на изображении также другие и я вижу что здесь как бы проблема вот с этой частью то есть микрофон как бы должен стоять Я так понимаю на этой ноге но стоит на другой ноге но снова таки можно выполнить несколько итераций прежде чем вы получите то изображение которое вас будет более-менее устраивать и При желании можно кликнуть на изображение и можно его скачать нажав вот на кнопку скачивания можно лайкнуть дизлайк нуть и В бесплатной версии Я не вижу возможности отредактировать Это изображение то есть выделить какую-то часть и попросить исправить либо заменить на
что-то другое в версии плюс такая возможность есть но снова таки возможно в будущем возможность редактирования появится также и В бесплатной версии но Вот пример собственно говоря генерации изображений и сама генерация изображений выполняется с помощью модели дали и это взаимодействие уже интегрировано в чат [музыка] gpt продолжаем и Давайте создадим новый чат кликнув на иконки создания нового чата и в этом уроке Давайте попробуем написать статью для новостной газеты И следовательно мы будем работать сейчас с текстовой моделью и Давайте напишем следующее ты редактор новостной новостной газеты напиши так для того чтобы перейти на новую строку Вы можете нажать
Shift Enter и и тогда запрос не будет отправлен в чат gpt Потому что если вы нажмёте просто Enter тогда запрос будет отправлен потому если вы хотите добавить что-то нажимаете Shift Enter Так ты редактор новостной газеты напиши статью о том что люди наконец отправили миссию на Марс и ниже я напишу следующее пиши в Тоне и также в одной части Добавь технических деталей деталей о полёте Вот такая задача то есть Давайте отправим такой запрос и посмотрим что у нас с вами получится то есть насколько хороша у нас выйдет собственно говоря статья Итак вижу что идёт процесс написания
статьи и отмечу что слова создаются одно за другим и снов таки в терминах текстовой модели модель генерирует токены и при взаимодействии с ча gpt вот когда вы видите здесь точку модель ещё не знает что будет дальше то есть GP настроен таким образом что по частям информация передаётся от сервера вам то есть это сделано не специально то есть снова таки весь текст за один раз моментально не генерируется модель выдаёт результат частями и потому в чат gpt реализован механизм отображения слов одно за другим То есть то что мы только что с вами видели Итак вот написанная статья
собственно говоря это название заголовок статьи долгожданный Старт торжество технологии и духа Я попросил написать в восторженно Тоне и я вижу что собственно говоря здесь есть восторженность процессом так технические особенности полёта также были добавлены и об этом также и попросил здесь то есть добавив технических деталей о полёте и в итоге вот собственно говоря завершение впереди не изведано и так далее То есть вот так с небольшим заданием справился чат gpt и здесь собственно говоря я задал роль для текстовой модели далее Я указал цель то есть Что необходимо сделать написать статью и далее я добавил дополнительного контекста то
есть указал что и как следует учесть при написании статьи то есть вот в таком виде получилась статья При желании Вы можете детальнее указать О чём именно написать в статье Какого размера должна быть статья сколько допустим предложений либо сколько слов То есть это всё можно уточнять в задании для текстовой [музыка] модели Теперь давайте посмотрим на то как модель справиться с подведением итогов для какого-то большого блока текста и к примеру я могу взять текст с Википедии вот допустим текст о галактике и я могу просто вот так взять и выделить допустим весь этот блок текста Ну я не
знаю весь стоит выделять или нет Ну давайте допустим вот досюда я выделю примерно скопирую его и вставлю сюда и здесь ниже я напишу задание для текстовой модели напиши коротко в десяти пунктах ключевые ключевые моменты из этой статьи далее ниже напишу целевая аудитория школьники последних классов то есть вот так я даю задание в чат gpt и я вижу ошибку то есть сообщение которое пытаюсь передать очень длинное пому В таком случае я должен передать сообщение поменьше Так давайте я тогда выделю всё что я вставил и скопирую часть поменьше Так давайте я начну допустим здесь и где-то вот
здесь я закончу вот так то есть возьму просто какой-то блок текста и остальное я оставлю То есть напиши коротко де пунктах ключевые моменты из этой статьи целевая аудитория школьники последних так ожидаем результата так это обширная информативная статья о галактиках их природе морфологии и ключевых свойствах основные аспекты Вот первый Аспект Галактики и так далее размеры и масштабы диаметр галактик варьируется от льки до льки Млечный Путь и так далее разнообразие галактик масса галактик варьируется То есть я вижу некоторые формулы Потому что если целевая аудитория школьники последних классов То вероятно что они уже должны быть знакомы с возведением
степени умножением и некоторые такие технические моменты им думаю что будут интересны наблюдаемые компоненты число галактик во Вселенной от 100 млрд до 2 триллионов Тёмная материя эволюция и процессы методы измерения расстояний То есть я попросил 10 пунктов но получилось восемь пунктов это Вполне может случиться но в целом мы видим короткий итог с ключевой информацией из того текста который я передал в модель и при формировании вот этого итога модель учитывает не только те данные которые я передал но и все те данные на которых модель была обучена и из всего этого большого объёма данных она сформировала ключевые пункты
начиная с того что такое Галактики дали размеры разнообразие и так далее Вот пример того как можно резюмировать либо сумарин виде допустим используя эту же технику можно взять к примеру субтитры любого видео с YouTube канала и попросить выделить ключевые моменты допустим 20 ключевых моментов и далее Прочитайте короткую сводку с определённого видео на YouTube канале вместо того чтобы тратить время на просмотр длинного [музыка] видео Теперь давайте посмотрим как Chat gbt Может помогать в процессе обучения и предположим что я школьник и Мне требуется изучить основные элементы таблицы Менделеева Итак я напишу следующее я учусь в школе и мне
нужно изучить основные элементы основные элементы таблицы Менделеева я могу добавить дополнительную информацию Могу указать какие именно элементы Я хочу изучить Ну давайте чтобы не тратить время на набор текста просто отправим вот такой запрос То есть мне нужно выучить основные элементы таблиц Менделеева и тогда собственно говоря модель сама определится с основными элементами и о них пойдёт речь в ответе то есть сначала короткая информация о том что такое таблица Менделеева далее основные элементы которые нужно запомнить Их семь это металлы почему-то водород в секции металлы самые лёгкие и распространённые элемент во Вселенной литий Да согласен железо очень странно
сейчас мы спросим так неметаллы углерод азот кислород фосфор сера галогены благородные газы структура таблицы группы Столбцы периоды строки советы для запоминания вот используем мнемоники например для первых элемента Вот такая мнемоника на английском языке работай с таблицей так я уточню разве водород - это металл разве водород - это металл Вы абсолютно правы водород не является металлом если помните в начальных секциях я вам говорил чтобы вы всегда перепроверять информацию от текстовых моделей и вот вам собственно говоря пример то есть модель уверенно нам сообщает что водород является металлом и сново таки это можно назвать галлюцинаций моделей либо просто
предоставлением недостоверной информации потому что снова таки модель генерирует токены один за другим и как бы модель в данном случае не смутила то что здесь есть слово металлы и после этого слова либо токена модель начала выводить водород кальций и так далее кальций также не является металлом потому снова таки информацию необходимо проверять просто ий так доверять нельзя и вот вам собственно говоря пример неправдиво информации Но если Вы снова таки поте уточнить информацию то мы получим вот такой ответ Это не металл Хотя в таблице Менделеева Он часто размещается в первой группе группе щелочных металлов такое размещение связано с
тем что у водорода один валентный Электрон Как у элементов этой группы кратко о водороде тип неметалл Ну видите то есть размещается в первой группе потому модель посчитала его металлом так свойства и так далее так вы отли разбираетесь в теме знаю я не сильно разбираюсь в химии если честно А кальций - это металл так а кальций - это металл Да кальций - это металл он относится к группе щелочноземельных металлов хорошо Итак это вопрос был по химии Давайте зададим вопрос по математики и задам его в новом окне Что такое интеграл допустим интегралы в принципе изучают в школе
в последних классах так и вот вам ответ с примерами неопределённый интеграл модель Как вы видите отлично справляется с форматированием формул указание различных переменных в каждой формуле определённый интеграл геометрический смысл и так далее То есть для обучения по любым направлениям по любым дисциплинам текстовая модель подходит отлично потому что снова таки Одним из основных источников для начального обучения для тренировки модели были различные книги в оцифрованного виде для школьников для студентов и потому собственно говоря выполнять до обучения либо самообучение по любым из предметов можно с помощью текстовых моделей очень легко и просто но снова таки рекомендуется информацию перепроверять
Потому что могут быть [музыка] неточности Теперь давайте посмотрим как можно Т gpt использовать в бизнесе и допустим у меня есть вопрос Как оптимизировать складские запасы исходя из информации по продажам того или иного товара Итак Давайте напишем такой вопрос как оптимизировать складские запасы зная информацию о продажах о продажах товаров я продаю около тысячи разных бытовых товаров то есть вот такой запрос и Давайте посмотрим на собственно говоря ответ так анализ данных о продажах сбор данных продажа за определённый период например за год частота пополнения запасов сезонность спроса учёт возврата ви дефектов ABC анализ разделите товары на три группы
по объёму продаж и прибыли 20% товаров приносящие 80% дохода принцип парта далее пункт пункт B пункт C так фокуси на точном прогнозировании для группы А умеренном контроле группы и минимизация для группы C то есть необходимо акцентировать своё внимание вот на этой группе товаров xyz анализ деление товаров по стабильности спроса постоянный спрос сезонный спрос непредсказуемый спрос прогнозирование спросом использование исторических данных Если они у вас есть автоматизация с помощью инструментов Используйте системы или Bi инструменты оценка трендов и так далее так вот управление запасами с счётом точки заказа то есть видите есть определённые даже формулы система fifo первый
пришёл первый ушёл для минимизации риска порчи и устаревания товаров то есть тот товар который первым приходит на склад должен быть продан первым либо отправлен покупателю первым оптимизация заказов экономические размер заказа вот также формулы сокращение издержек инвентаризация и так далее То есть видите я задал в принципе простой вопрос Без уточнения того В каком виде Я хочу получить ответ но получил достаточно развёрнутый ответ по пунктам с мониторингом автоматизацией примерной стратегией на практике да то есть вот вам ответ При желании Вы можете продолжать диалог потому что это чат и вы можете уточнять любую информацию по любому из пунктов
допустим я могу написать расширь расширь пункт такой-то мониторинг и автоматизация я могу указать Как именно я хочу чтобы модель расширила этот пункт и в итоге я получу уже развёрнутый ответ по этому конкретному пункту снова таки контекст общения в рамках вот этого конкретного чата сохраняется и модель имеет к нему доступ Если же вы создавали разные чаты ранее то у них история отдельная то есть информация из других чатов не попадает вот в контекст этого чата Ну и вот в итоге я вижу что генерируется развёрнутый ответ по тому пункту о котором я запросил дополнительную информацию можно всегда остановить
генерацию ответа нажав на кнопку остановить То есть если вы уже допустим получили нужную часть ответа либо вам ответ не нравится и вы хотите его перег нери то можно всегда его остановить и далее например изменить тот Запрос который вы ранее отправляли и снова таки для любого ответа есть возможность озвучки ответа копирования далее Good response Bad respon и При желании можно перег нери используя другую модель для бесплатной версии чата я вижу что На текущий момент я вижу модели 4o 4o Mini для платной версии список моделей больше И конечно актуальные модели здесь будут изменяться в будущем потому что
конечно же openi будет выпускать более новое более быстрые модели Итак вот вам пример использования Chat gpt в бизнесе для расчёта к примеру складских [музыка] запасов Теперь давайте посмотрим как Chat gpt может помочь вам планировать путешествие и здесь я напишу следующее я люблю больше природу и экстрим и я планирую поездку допустим в Перу Составь составь мне план план путешествия путешествия на 5 дней Вот такая задача то есть Я указал целевую аудиторию то есть для кого формируется план путешествия и указал длительность путешествия вот короткое введение так вот я могу насладиться природой и экстримом за 5 дней так
прибытие в лиму и акклиматизация прогулка по лиме знакомство так кухня не вижу Пока никакого экстрима в первый день так так утренний перелёт в куска так осмотр достопримечательностей прогулка по старинным улочкам не вижу экстрима так на третий день только начинается экстрим у меня так переезд в священную долину инков отличное место для экстрима так сплав по бурным рекам это подходит трекинг горы пешие прогулки по живописным маршрутам с видом на долину реки и горы Ну так себе экстрим так после активного отдыха Посетите знаменитые террасы Возвращение в куска так э так 3 по часа я еду в мачу-пикчу на
день четы так посещение Возвращение на Ночной поезд в куска не вижу экстрима так вижу только трекинговые маршруты например восхождение на Хуана Пикчу так адреналиновые Приключения на пятый день Может наконец будет сейчас экстрим так прогулка на катере по озеру ну здесь никакого экстрима нет можно организовать каякинг или даже парасейлинг дополнительные советы и так далее То есть вот вам пример но меня не устраивает я могу уточнить хочу более экстремальные экстремальные развлечения очень экстремальные Поменяй план то есть вот Уточняю задачу то есть снова таки я посмотрел на ответ Меня он не сильно устраивает И я даю уточнение так
если вы любите морские вида экстрима Можно попробовать сёрфинг на побережье лимы Ну хорошо Это уже более-менее так прыжок с парашютом на второй день с высоты 4000 м над лимо так отлично полёт на параплане днём то есть утром прыгаю с парашютом днём полёт на параплане А вечером уже отдыхаю и готовлюсь к экстремальным переключениям в Куско на следующий день так перелёт так с священна Далина инков снова таки упоминаются те места которые посещают большинство туристов и которые Следовательно упоминаются в различных статьях новостях чаще всего и потому они будут присутствовать в любом плане на самом деле так экстремальный рафтинг
подходит трекинг Ну хорошо Если по каньона то можно считать это экстримом хорошо для экстремалов так можно заказать спортивный трекинг на Пик Мачу Пикчу Хорошо подходит ещё более экстремального опыта Попробуйте альпинизм на горных скалах так параплан парапланеризм То есть я там уже где-то Прыгал с парашютом да и был полёт на параплане в день два в день мне снова предлагают пот на параплане Кинг по озеру и так далее и ещё в конце ночной трекинг напоследок перед отправкой домой вот собственно говоря пример плана путешествия При желании Вы можете детализировать указывать какие именно места вы хотите посетить допустим и
модель укажет вам Сколько времени вы можете провести там сколько времени требуется чтобы доехать из пункта А в пункт Б и так далее То есть Вот пример того как можно составлять планы путешествий с помощью CH [музыка] gpt только что в конце предыдущего урока я увидел вот такое сообщение внизу сообщение о том что я превысил лимит использования модели gpt 4o То есть к этой модели есть доступ у пользователей бесплатной версии gpt и это ограничен И как только вы достигаете определённого лимита у вас автоматически модель переключается на модель по умолчанию на текущий момент это gpt 4o Mini и
можно будет снова использовать модель больше в данном случае gpt 4 через сутки то есть лимит устанавливается на сутки у тех у кого есть собственно говоря подписка ПС таких ограничений не будет точнее ограничения есть но они гораздо гораздо выше и я с моей подпиской плюс ни разу ещё не превысил лимит Хотя нет превысил когда я попросил посчитать модель 105 в 800 степени то есть модель посчитала и в итоге сказала что вы превысили лимит но в целом если выполнять разумные задачи то даже с подпиской плюс Как бы вы не превысить те лимиты которые там установлены но сейчас
я вижу Вот такое сообщение но тем не менее я могу продолжить общение с чатом но с помощью модели gp4 O Mini которая отлично справляется с теми задачами которые мы с вами сейчас [музыка] обсуждаем Теперь давайте попросим модель составить маршрут для поездки из пункта А в пункт Б И я напишу следующее Я планирую планирую поезд на мотоцикле из Амстердама в докар опиши мне весь маршрут то есть вот такая задача для модели и я увижу что сейчас модель будет генерировать ответ быстрее потому что меня чат gpt переключил автоматически на модель gpt 4o То есть она более быстрая
но не такая скажем так точная и не такая обширная как gpt 4o но снова таки будущие модели будут иметь другие названия потому те названия которые я называю сейчас они особой роли не играют Итак я получил собственно говоря вот такой ответ Амстердам Париж сначала дистанция 500 км время в пути 5-6 часов и далее маршрут далее Париж Лион дистанция столько-то время пути столько-то так Леон Марсель столько-то маль балона Барселона Мадрид Мадрид кадис кадис Танжер и так далее То есть я вижу все этапы моего путешествия и При желании я могу допустим добавить Добавь ещё где я могу останавливаться
перекусить не у дороги не у дороги и где ночевать ночевать вот так то есть я прошу добавить ещё информацию о питании и ночёвка собственно говоря так перекус Ну видите я как бы хотел получить дополнительную информацию в каждой из этих секци собственно говоря но модель Просто мне показывает где перекусывать в каких пунктах Так где ночевать так вот даже название отеля я вижу так для бюджетных путешественников и так далее так перекус там-то Леон Кулинар столица Франции и так далее То есть вот я вижу полностью детали касательно того где мне в процессе путешествия перекусывать и где мне останавливаться
на ночь вот вам пример того как можно планировать определённые путешествия снова таки При желании Вы можете детализировать любой пункт и говорить что допустим это мне не нравится давай предложить что-то другое и так далее То есть это собственно говоря ваш помощник в путешествиях [музыка] Теперь давайте посмотрим как модель может помочь определиться с определённой покупкой и допустим я выбираю к примеру ноутбук и не могу определиться какой именно мне покупать Итак помоги мне определиться с покупкой ноутбука ноутбука я не могу решить сам что мне нужно Давайте отправим такой запрос так я могу помочь и видите так как я
высказал определённую неуверенность да то в таком случае модель задаст вам уточняющие вопросы прежде чем формировать ответ то есть видите я не указал что я предпочитаю Для чего мне нужен ноутбук и в таком случае модель вам сразу не скажет покупай допустим этот потому что информации на текущий момент недостаточно потому В таком случае я вижу дополнительные вопросы для каких целей нужен ноутбук Какой бюджет Вы готовы выделить Какие характеристики для вас наиболее важны размер экрана разрешение экрана срок работы от аккумулятора вес и портативность есть ли предпочтение по бренду может быть у вас есть предпочтение по каким-то популярным брендам
как Apple Dell и так далее используете ли вы какие-то специфичные программы или приложения указаны примеры приложений которые возможно я использую и можно ответить на эти вопросы давайте я Коротко напишу допустим здесь напишу просто игры далее второй пункт допустим 2 тысяч я готов выделить Так давайте долларов допишу вот так Какие характеристики максимально максимально максимально большой экран так разрешение так Ну больше ничего не указываю в пункте три допустим так четыре ели предпочтения нет п так играю играю днём и ночью вот так вот такие ответы Давайте отправим ответы в собственно говоря модель отлично 2000 долларов можно найти ноутбуки
с отличной производительностью и большими экранами так ключевые характеристики для игр так Intel Core i7 i9 AMD Так ну видите информацию о новых процессорах здесь почему-то не показывает мне модель так видеокарта оперативная память так а я просил ноутбук или десктоп Э так ну ладно я просил ноутбук так оперативная память не менее 16 Гб Так ну для современных игр 16 Гб мало Я не знаю О чём здесь идёт речь так экран так 15,6 до 17 дюймов охлаждение так и вот вам собственно говоря конкретные примеры ноутбуков Вот первый вариант Так ну оперативной памяти маловато Razer Blade 17 так
также 16 Гб цена около 2.000 каждого из них э MSI Raider так вот характеристики Ну видите мощные графические видеокарты в принципе у всех этих ноутбуков так lenov и так далее И вот итог Если вы хотите самый большой экран то подходит вот такой с экраном 17 дюймов то есть вот вам пример того как можно определиться с покупкой При желании если у Вас уже есть список определённых товаров из которых вы выбираете Вы можете предоставить список модели и попросить описать собственно говоря плюсы и минусы каждой модели и в целом подвести итог касательно того Какую модель вольного товара лучше
выбрать то есть вот так можно использовать Chat gpt как помощник в покупке товаров текстовые модели такие как модели которые используются в Chat gpt могут не только выдавать вам текст на экране но и генерировать различные файлы и добавлять информацию в эти файлы кроме этого можно загружать файлы при общении с моделями и в этом уроке Давайте попросим gpt вместо текстового ответа сформировать файл причём форматы файлов возможны различные такие как Excel CSV separated val txt далее Dog формат либо PowerPoint презентация Также можно генерировать PDF файлы Итак давайте дадим следующую задачу создай список список производителей производителей самолётов самолётов с
датой основания именем именем основателя и коротким описанием результат так результат предоставь в формате CSV так CSV формат хочу Итак вот такой запрос так вот список производителей и вот я вижу результат в CSV формате То есть если я запрашиваю CSV формат то обычно модель Не генерирует файл То есть Вам нужно вручную скопировать Вот этот текст в этом окне и создать у вас на компьютере текстовый файл с расширением CSV и далее собственно говоря вставить в него тот текст который вы скопировали то есть CS формат это просто формат в котором есть на первом ряду название колонок допустим такие
как название компании дата основания основатель описание и на остальных рядах есть уже значени и значение также разделены запятыми потому называется формат comma separated value но это не более чем текстовый формат и потом далее вот такой CSV формат можно преобразовать легко допустим в Excel либо использовать допустим в программах Если вы создаёте программы и так далее Ну вот вам пример созданного текста в формате CSV теперь Давайте напишем А в формате А в формате Excel Так давайте посмотрим что будет выполняется анализ видите analysing и в этом случае модель создаёт собственно говоря файл который мы сможем скачать по ссылке
и вот я вижу ответ я создал файл в формате Excel с данными о производителях самолётов Вы можете скачать его по следующей ссылке кликаю скачать файл скачается файл в формате Excel и я смогу его собственно говоря потом открыть То есть я допустим могу его сохранить в папке downloads и далее кликаю на этом файле и файл откроется в моём случае в Numbers это аналог экселя то есть вот собственно говоря та же информация но уже в виде таблицы вот таким образом можно генерировать ответ в различных форматах и здесь вот также я могу кликнуть на иконке View analis если
я кликнуть то я увижу на самом деле программу Python потому что на текущий момент на стороне сервером генерация файла выполняется с помощью кода Python то есть вот я вижу данные которые использовались для формирования текстового документа и ниже программный код по созданию файла и вот название файла Aircraft manufacturers xlsx и здесь путь на сервере к этому файлу и далее уже используя другой сервис на стороне сервера этот файл был опубликован и стал доступным для скачивания по указанной ссылке что собственно говоря я и сделал То есть я скачал файл себе локально и далее могу выполнять определённые действия с
ним вот так можно получать ответ от модели в разных форматах начиная от CSV Excel и также можно использовать другие форматы такие как PDF json Dog X и [музыка] другие Теперь давайте посмотрим как модель справляется с озвучкой текста и при выводе ответа здесь внизу я вижу Read All Давайте Клик на этой иконки и посмотрим что произойдёт я создал файл в формате Excel с данными о производителях самолётов Вы можете скачать его по следующей ссылке то есть вот Была выполнена озвучка вот этого текста и похожим образом в принципе можно озвучивать любую другую информацию и здесь я могу написать
следующее Озвучь озвуч этот текст я планирую сегодня закончить запись курса по ai Так давайте отправим такой запрос так просто я получаю текст ответ Так ну давайте я выберу допустим этот и здесь я уже могу кликнуть собственно говоря на озвучке То есть я не получил ссылки на аудиофайл То есть я просто получил ответ в виде текста и здесь я могу кликнуть на readout Я планирую сегодня закончить запись курса по ai то есть вот так вы можете озвучивать любую текстовую информацию которую нужно и на текущий момент я здесь не вижу возможности скачать аудиофайл и я не вижу
этой же возможности в версии плюс давайте я перейду версию плюс И выполню этот же запрос здесь и посмотрим на ответ Так нужно видимо обновить страницу пару секунд буквально так и этот же запрос К сожалению я не могу озвучивать напрямую но могу предложить вам попробовать встроенные инструменты такие как Google Text to search или Балаболка чтобы сделать это быстро и просто или вы можете представить что я говорю это бодрым и оптимистичным голосом так нуно в принципе Здесь также доступна кнопка read allow и только что я получил видите ответ от модели 4o здесь ответ был от модели 4o
Mini я могу попробовать выбрать модель допустим о1 preview и я посмотрю озвучит ли она этот текст так я создам специально новый чат о1 превью допустим и посмотрю на результат этой модели так модель думает thinking и снова таки эта модель будет рассчитана на более сложные задачи и видите ответ генерироваться дольше и в итоге всё равно я получил ответ что она не может озвучить текст то есть на текущий момен возможности генерации аудиофайлов непосредственно в окне Chat gpt Нет но я думаю что в будущем это возможность появится Потому что при использовании сервиса API от openai то есть взаимодействие
программ на серверами openai позволяет генерировать аудиофайлы на основании текста и выполнять транскрипцию аудиофайлов в текст но в Chat gpt пока что это не реализовано но здесь есть возможность озвучки ответа Извините но я не могу озвучить текст вот ваш текст я планирую сегодня закончить запись курса по ai видите отвечает что не может озвучить и потом озвучивает Вот то как собственно говоря можно озвучивать тот ответ который вы получаете от модели в окне чат [музыка] gpt в этом уроке Давайте поэкспериментировать с собственно говоря работой Chat gpt на мобильном телефоне и Давайте попробуем вести диалог на разных языках То
есть я буду говорить на русском и буду просить чат gpt отвечать допустим на английском либо к примеру французском и Необходимо включить голосовой режим он включается кнопкой внизу Итак привет чат gpt так загружается пока что Привет чат gpt Привет Чем могу помо Я хочу выучить английский язык и Давай я буду говорить по-русски а ты будешь отвечать по английски я хочу поговорить о выборе новой кепки для записи аудио курсов Дело в том что я не использую наушники то есть я записываю себя на видеокамеру то есть мне нужно чтобы я Красиво выглядел в этой кепке То есть это
видеокурсы Скажи мне какая самая лучшая бейсбольная кепка для такого случая Да так случилось что как раз сейчас на мне кепка New и у меня ещ есть кепок Так что твой совет как раз в тему [музыка] [музыка] так закончил Я чат общения и в таком стиле можно говорить снова таки на разных языках можно задать роль чатбот и сказать что допустим Ты учитель такого-то языка и я буду говорить также допустим по-английски но ты исправляй ошибки которые буду делать мне с произношением и так далее То есть используя вот такого аудио помощника можно очень легко улучшать свои знания любого
языка и смотрите сразу после окончания общения я вижу транскрипцию всего нашего разговора причём снова таки я вижу ответы от чат бота на английском и свои ответы по-русски и собственно говоря я могу также озвучить ещ здесь то что я говорил а ну-ка я попробую ещё раз нет здесь просто микрофон который говорит о том что это то что я сказал голосом оно было просто транслировали открою это же взаимодействие в десктопном приложении Оно должно было здесь появиться Так сейчас я обновлю и найду собственно говоря Да Сейчас я покажу его так вот это общение которое только что состоялось используя
мобильное приложение и вот собственно говоря начало Привет чат gpt Привет и так далее Я хочу выучить английский язык и вот собственно говоря транскрипция всего нашего разговора то есть вот вопросы о кепках рекомендация касательно бренда New Era как раз у меня большинство кепок этого бренда так совпало видите и вот таким образом можно общаться с Chat gpt в мобильном приложении и это на самом деле очень хороший помощник для особенно обучения различным [музыка] языкам в этом уроке Давайте посмотрим на настройки которые доступны в Chat gpt И для этого вам нужно кликнуть на иконки своего профиля и перейти в
settings и здесь можно настраивать тему у меня выбрана опция System и глобально у меня выбрана Тёмная тема потому сейчас я вижу тёмную тему но я могу выбрать светлую тему При желании вот так она выглядит но я предпочитаю использовать везде тёмные темы и потому я могу выбрать либо System либо Dark То есть у меня здесь ничего не изменится в таком случае так можно включить опцию всегда показывать код когда используется анализ данных мы с вами ранее видели уже что допустим при генерации файла появляется ссылка на новое окно которое открывается поверх главного окна и можно посмотреть в новом
окне тот код который был выполнен для генерации файла к примеру либо для решения любых других задач и здесь можно включить эту опцию тогда вы всегда будете видеть код сразу в главном окне Ну я думаю что в этом особой необходимости нет Если нужно посмотреть код вы всегда можете кликнуть на небольшой иконке так можно выбрать язык так по умолчанию стоит ауто детек то есть автоопределение языка Дальше можно управлять архивными чатами то есть При желании предыдущие чаты Можно либо просто удалять либо архивировать и если вы всегда восстановить его вот здесь кликнув на кнопке mane но у меня никаких
архивных чатов Нет ну допустим если я перейду в историю и допустим вот этот я заархивировать менедж управление архивами И вот я уже вижу архив и дату создания этого архива При желании я могу кликнуть вот здесь на этой иконке и восстановить этот чат То есть это очень хорошая опция которая скрывает чат из списка всех чатов Но если там была важная для вас информация которую вы хотите в будущем допустим восстановить вернуться к ней допустим были сгенерировано определённые изображения либо же как только что я общался с чат-ботам используя приложение на мобильном телефоне и вы хотите в будущем вернуться
к этому взаимодействию то тогда вы всегда можете восстановить определённую цепочку из архива либо же можно удалить здесь архив то есть я могу кликнуть здесь восстановить Итак давайте ККМ на восстановление так Del FA Я почему-то случайно видимо кликнул на удаление так А ну-ка давайте так ещё раз так вот вижу и кликнуть из архива так что-то пошло не так почему-то Пит Del Так давайте е раз я попробую размера экрана Так Так давайте я вот так попробую о Теперь всё в порядке просто из-за того что я увеличивал экран видимо курсор попадал не на ту кнопку так и теперь
собственно говоря снова увижу этот чат вот здесь в списке чатов запись курса по то есть вот именно этот чат я архивировал и потом восстанавливал из архива здесь можно конечно же также искать Допустим можно здесь искать ноутбук То есть я просил посоветовать мне найти ноутбук и вот используя поиск Я могу найти определённый чат допустим докар То есть я говорил о путешествии из Амстердама в Дакар допустим и вот собственно говоря чат и кликнув на результате Я возвращаюсь в этот чат Так давайте ККМ на новом чате и вернёмся обратно в настройки так можно архивировать все ча Если вы
хотите можно удалить все чаты я этого делать не буду можно выполнить lout с этого компьютера Можно перейти в personalization так кастомные инструкции так Remember concise responses то есть здесь можно настроить поведение Chat gpt под себя допустим сказать что я люблю там Короткие ответы и я вижу что сейчас Memory is disabled то есть память отключена и необходимо мне включить память Здесь и тогда настроить собственно говоря эти опции вот здесь так As You Chat with Chat gpt The details and preferences it remembers will be shown here то есть э когда я буду создавать уже новые собственно говоря
чаты то мои команды касательно того как я хочу видеть ответ будут добавлены автоматически вот сюда в память то есть по умолчанию память отключена Так давайте её отключим так спич здесь можно поменять голос которым озвучивается собственно говоря текст мы с вами пробовали озвучивать текст ранее и вот здесь собственно говоря место где вы можете При желании изменить текст для озвучивания точнее изменить голос для озвучивания текста Прошу прощения здесь можно кликнуть п чтобы проиграть голос Так давайте поменяем на другой [музыка] голос то есть вот разные голоса собственно говоря которые можно выбирать здесь в секции он и здесь можно
Отключить эту опцию и в таком случае Chat gpt не будет использовать данные из ваших чатов для дальнейшей тренировки модели потому что по умолчанию все данные которые вы передаёте в чат gpt которые ча gpt генерирует используются дальше для тренировки моделей поэтому пожалуйста учитывайте это То есть можно это отключить и тогда ваши чаты не будут участвовать в дополнительной тренировке моделей так можно управлять ссылками которые вы допустим публикуете для других то есть я не выполнял шеринг моих чатов можно экспортировать данные Export Data кликаем эпо и можно выполнить экспорт всех данных из вашего аккаунта на случае если вы допустим
в будущем хотите импортировать данные в другой аккаунт допустим вы решили поменять аккаунт то есть тогда можно выполнить экспорт и импорт можно удалить аккаунт далее Builder Profile и здесь можно настроить свой профиль на случай Если Вы планируете публиковать кастомные gpt для других то есть эта возможность На текущий момент отключена для бесплатных пользователей но в Chat gpt Plus эта функция есть и поэтому вот здесь вы можете настроить допустим ссылку на свой Linkin профиль на свой github аккаунт на X и указать допустим ссылку на свой сайт При желании также есть опция connected Apps и здесь можно соединить чат
gpt с Google Drive Microsoft onedrive и возможно в будущем появятся также и другие интеграции и также есть секция безопасность Здесь можно включить малфа ную аутентификацию для входа в чат gpt и можно выполнить логау на всех устройствах то есть вот собственно говоря такие настройки доступны в вашем gpt и Здесь же есть ссылка на ваш gpt который вы создаёте но В бесплатной версии у вас нет возможности создать свои кастомные gpt То есть у вас кнопка Create На текущий момент неактивна Но вы можете пользоваться другими gpt которые создавали другие авторы и также здесь есть собственно говоря возможность кастомизации
так когда вы изменяете кастомные инструкции они будут только в новых чатах которые вы создаёте Окей и здесь можно добавить кастомные инструкции для всех будущих чатов то есть допустим Если вы хотите чтобы чат gpt отвечал Вам всегда кратко либо там тремя предложениями то можно указать эти кастомные инструкции вот здесь Но я лично этой функцией не пользуюсь потому что в некоторых случаях Я хочу получить развёрнутый ответ в некоторых ответ покороче потому общие инструкции для всех чатов сложно настроить на самом деле но отмечу что при программном взаимодействии с сервисами openai можно указывать настройку системы А это именно настройка
системы в каждом запросе API То есть вы можете указывать Как именно Вы хотите чтобы модель Вам отвечала либо Какую роль должна играть модель и так далее Но при желании кастомизация чат gpt доступна и вот здесь вы можете ответить на некоторые вопросы касательно того допустим Для чего вы используете Chat gpt О чём вы в основном будете говорить Как должна модель отвечать и так далее То есть всё это вы можете указать здесь в кастомных инструкциях вот в принципе и все собственно говоря настройки Кроме этого здесь можно обновить точнее проапгрейдить свой план и также можно скачать десктопное приложение
на текущий момент десктопное приложение выглядит примерно так же как и веб-приложение но уже сейчас тестируется интеграция десктопных приложений с другими приложениями на вашем компьютере и я думаю что в будущем будет очень тесная интеграция и можно будет использовать данные из других приложений при общении в десктопном приложении Chat gpt Итак это собственно говоря был обзор настроек Chat [музыка] gpt в этом уроке мы представим с вами что нам нужно создать веб-сайт это будет Допустим персональная страница и мы посмотрим как Chat gpt справится с этой задачей причём мы с вами Нарисуем макет для нашего сайта самостоятельно и вы можете
либо взять листок бумаги А4 И на нём нарисовать схематично то как вы хотите чтобы выглядел ваш сайт я это сделаю с помощью утилиты для рисования и сново таки Неважно как вы это сделаете Главное чтобы у вас получилось какое-то изображение Итак здесь допустим будет заголовок так здесь допустим так текст я добавлю позже так здесь будет Допустим информация о мне здесь будет несколько цитат допустим первая вторая снова таки Вы можете использовать абсолютно любое средство для рисования если это Microsoft можно использовать Paint либо Photoshop либо какой-то онлайн редактор для рисования либо же снова таки взять ручку либо карандаш
рисовать на собственно говоря бумаге так и здесь будет у нас собственно говоря так не так здесь у нас будет маленький футер и перед этим будет Main Area Так давайте я Main Area сделаю так и далее я напишу текстом здесь будет Допустим Log здесь будет Допустим courses здесь будет Допустим cont здесь будет Profile pH вот так здесь будет info 1 к примеру info 2 здесь будет info 3 то есть какая-то информация допустим обо мне либо проект 1 проект 2 проект 3 давайте так Project One допустим Project 2 Project 3 здесь будет Допустим Main Content то есть
зона основного контента и здесь допустим будет к примеру снова Contacts далее здесь будет к примеру Copy Wi и допустим здесь будет ещё ИО то есть вот такой шаблон для вебсайта И теперь я просто сделаю скриншот вот так этот скриншот будет доступен для вас сейчас его сохраню в папке и вы сможете его найти то есть При желании Вы можете использовать его но я Рекомендую вам нарисовать что-то похожее самостоятельно неважно чтобы структура была точно такой же то есть структура веб-страниц может быть любой другой как вам понравится Итак я нарисовал эту схему теперь собственно говоря я просто возьму
Для начала я её размещу для вас здесь я переименую этот файл на э Web page layout то есть вот собственно говоря так называется файл это png файл и я его помещ в так ээ давайте так я здесь Наверное создам новую папку и здесь будет название папки Ну давайте png png и в папке png вы найдёте собственно говоря вот этот файл который называется webpage layout то есть При желании Вы можете использовать его и нужно просто его перетянуть собственно говоря в окно Chat gpt Вот так я его перетягивают давайте так я напишу создай вебсайт на основании этого
макета снова-здорово [музыка] в любой другой программе Как Вам удобно Итак давайте отправим этот запрос и посмотрим на то что у нас В итоге получится так на основании представленного макета я создам HTML и CSS код снова таки для тех кто не знаком с программированием Ничего абсолютно страшного нет Сейчас я расскажу как мы создадим этот сайт и как его запустим у себя на компьютере так вот код HTML снова таки я не буду описывать структуру HTML докумен но я вижу что здесь есть логотип лого есть курс есть контакт то есть видите даже текст был распознан из того макета
который я загрузил далее есть ниже секция с прой фо есть секция с проектами проект о проект 2 проект 3 При желании Дальше можно будет легко исправить код уже непосредственно в HTML документе и расширить текстовое описание проектов но главное что сейчас мы должны С вами увидеть структуру этого вебсайта далее ниже есть секция с основным контентом там можно разместить допустим какую-то большую текстовую информацию допустим статью обо мне либо Авас и ниже будет футер в котором есть контакты copyright и info то есть видите весь текст был Корректно распознан это структура HTML документа и ниже есть таблица со стилями
то есть стили CSS которые позволят собственно говоря стилизовать отображение данных в HTML документе Как использовать Создайте файл Index HTML и Вставьте в него HTML код Создайте фай Style CSS и Вставьте в него CSS код Откройте ИК HTML в браузере чтобы увидеть сайт то есть вот все шаги которые необходимо выполнить вы можете создать эти два файла где угодно то есть допустим я могу создать здесь на рабочем столе новую папку назову е website то есть вот так назову папку необходимо создать два файла так наверное давайте я собственно говоря сделаю это в редакторе кода так будет для меня
быстрее вы же можете создать собственно говоря два файла как угодно то есть главное чтобы вы создали два файла с расширением ИК HTML 1 файл Назовите его ИК HTML а второй Назовите styles.css именно такое название должно быть у второго файла и они должны быть рядом друг с другом В одной папке и я могу это сделать в редакторе кода Visual Studio Code то есть При желании Вы можете также его скачать с интернета Это бесплатный редактор и в него просто я перетянут эту новую папку которую я создал веб-сайт Вот так и здесь я создам собственно говоря два файла
Итак первый будет называться Index HTML а второй будет называться Styles так второй будет называться styles.css это обычные файлы Вот они появились уже в папке website видите два файла снова таки вы можете создать их как угодно используя допустим текстовый редактор То есть то что вы привыкли использовать для создания файлов и теперь собственно говоря в файле Index HTML Я вставлю код который здесь сгенерировал в т gpt Итак я скопировал код Вставляю его в файл Index HTML нужно не забыть сохранить изменения в файле F Save либо же Ctrl S на Windows Command S на Mac файл был сохранён
и то же самое делаю с файлом Style CSS так беру содержимое для файла Style CSS Вот это содержимое вставляем его в Style CSS также необходимо сохранить этот файл Save И теперь у меня уже есть два файла Index HTML и ST SS и также они видны конечно же в папке вебсайт вот эти два файла я вижу размеры около 1 кб каждый файл и теперь осталось открыть файл Index HTML в браузере можно просто кликнуть дважды на этом файле и он будет открыт в вашем дефолтном веб браузере И вот я вижу такой результат то есть это тот вебсайт
который Мы создали с помощью Chat gpt и в моём случае даже вижу разноцветные блоки потому что в моём шаблоне я рисовал это всё утилитой с разными цветами и я вижу разные цветовые блоки Конечно можно потом это подправить поубирать но главное что я вижу структуру в том видео в котором я её задал то есть есть у нас заголовок слева есть логотип справа есть ссылки на курсы видите это как ссылки уже то есть курсы контакт здесь допустим Я вставлю свою фотографию здесь список моих проектов к примеру здесь основной контент и ниже есть контакты copyright и info и
сайт также должен быть адаптивным то есть если я буду изменять ширину экрана сайт будет также изменяться то есть вот так легко на основании изображения мы с вами создали собственно говоря сайт И теперь я смогу его изменять допустим я перейду в Index HTML и допустим я хочу заменить вот здесь Main Content и здесь я напишу э Напиши Напиши текст для секции Main Content в формате в формате HTML Я занимаюсь программированием на Java Script допустим Python и напиши не менее допустим чех абзацев вот так то есть вот такое задание Я хочу получить собственно говоря текст для секции
Main Content То есть я хочу вот сюда вставить побольше информации так вот секция и результат отображается в формате HTML то есть я могу его скопировать вот копирую этот код и Вставляю вместо Main Content то есть вот так Вставляю я могу сохранить изменения либо же comand S на Mac Ctrl S на Windows либо Save Вы можете использовать абсолютно любой редактор для этих целей неважно форматируется у вас также как и у меня код либо нет то есть у меня настроен PR это расширение в редакторе кода для автоформатирование Главное чтобы вы просто вставили тот код который Вы получили
от Chat gpt и далее нужно просто обновить здесь страницу и я уже вижу собственно говоря вот этот код здесь Но я вижу что он центру и нет отступов абзацами можно об этом сообщить так я вижу я вижу текст но он по центру и без отступов Так а ну-ка здесь появился код CSS нет здесь кода CSS не появилось и без отступов между абзацами сделай выровняйте вот такое уточнение снова таки можно исходить из того что вы вообще не знаете как создавать HTML CSS То есть вы ничего об этом не знаете то есть с помощью всего-навсего текста Вы
можете всё сделать то что вам нужно то есть видите я получаю код CSS который мне необходимо добавить в файл CSS то есть тот файл который уже есть У меня итак я перехожу в File Style CSS и сюда ниже Вставляю что собственно говоря мне дал чатбот сохраняю изменения в этом файле Style CSS обновляю страницу и уже вижу что здесь текст отформатирован так как я указал то есть появились отступы вот здесь между абзацами и также сейчас текст находится по левому краю и так далее и тому подобное То есть можно дальше развивать Этот проект можно попросить добавить фотографию
здесь загрузить допустим фотографию в папку фотографию вас допустим добавить здесь логотип добавить новые страницы добавить описание проектов поменять дизайн и так далее но так как я загрузил макет вот в том виде в котором я загрузил Вот ещё раз так Где это изображение макета вот этот макет который я загрузил изначально главное что текст был везде корректно распознан Да и цвета также даже чатбот решил сохранить в том виде котором я их предоставил Хотя я могу сказать не делай цветными эти блоки поубирать все цвета допустим и тогда Останется только собственно говоря текст вот здесь вот здесь и вот
здесь Но я оставлю в таком виде чтобы вам была видна структура этого HTML документа и вот так легко можно использовать чат gpt для создания к примеру вебсайтов при этому при этом у вас не должно быть особо каких-то знаний в программировании для того чтобы чтобы Вы могли создать веб-сайт так же как это сделал Я так веб-сайт я Перенесу в папку со всеми проектами и для вас он также будет доступен на случае если вы захотите его открыть у себя но я надеюсь что вы также создали свой веб-сайт на основании своего макета Итак мы с вами закончили секцию
в которой мы поговорили о некоторых примерах использования Chat gpt мы поработали с текстом с изображениями с файлами и даже создали HTML веб-сайт со стилями CSS и конечно же эту секцию можно продолжать бесконечно потому что сфера применения Chat gpt и текстовых моделей в целом очень и очень Широкая но я думаю что у вас появилась понимание того как и где можно использовать Chat gpt и далее вы сможете уверенно использовать Chat gpt для своих повседневных задач Добро пожаловать в секцию которая будет посвящена правильному написанию запросов для получения максимально полезных для вас ответов и по-английски этот термин называется prompt
engineering и если спросить у CH gpt Как переводится PROMT engineering на русский то вы увидите вот такие ответы как разработка запросов или инженерия запросов но я бы не использовал такой сложный термин как инженерия запросов потому что это может оттолкнуть людей в принципе от попытки понять Как правильно создавать запросы потому что на самом деле механизм создания запросов очень прост и принцип здесь такой чем больше данных вы дадите модели тем лучше вы получите ответ от модели то есть тем больше он будет соответствовать вашим ожиданиям если ваш текстовый запрос состоит из одного предложения тогда вероятно что вы получите
не тот результат который вы ожидаете Если вы детально опишите что вам нужно Какая целевая аудитория Какую роль исполняет модель при написании ответа тогда вероятно вы получите более развёрнутый и более то ответ который соответствует вашим ожиданиям и в этой секции мы с вами поговорим о различных техниках создания запросов либо инженерии запросов и на практике на многих примерах мы с вами посмотрим насколько эффективнее работает модель Если вы используете одну либо несколько техник и дальше мы собственно говоря начнём с обсуждения самых популярных техник для создания запросов [музыка] Давайте начнём обсуждение нескольких популярных техник для формирования запросов либо же
инженерии запросов и мы обсудим с вами несколько основных техник Хотя существует огромный Спектр других техник и конечно же очень часто на практике приходится комбинировать разные техники для того чтобы получить максимальный результат Итак техники создания запросов следующее одна из самых популярных - это добавление контекста То есть вы не просто даёте задание текстовой модели а добавляете ещё контекст то есть объясняете что именно вы хотите получить В каком виде В каком формате и так далее То есть это добавление контекста далее использование примеров Вы можете не просто дать задачу например описать поведение человека в космосе к примеру но и
дать несколько примеров ответа которые вас устроят то есть в примерах Вы можете указать тон ответа формат ответа размер объём ответа и так далее и можно использовать один пример либо несколько примеров чем больше примеров вы предоставите модели тем вероятнее что ответ будет очень приближен к формату и стилю тех ответов тех которые вы предоставили ещё одна техника уточнение и ограничения Вы можете с помощью уточнения сказать что вам нужно получить ответ например в виде определённого файла либо же указать ограничение по размеру сказать что я хочу максимум к примеру 100 символов либо максимум три предложения либо же наоборот сказать
что я хочу развёрнутый ответ я к примеру размещу далее на Х листах А4 И распечатаю следующий вариант это пошаговое мышление То есть это техника которая позволяет выполнить на стороне модели пошаговую итерацию до того как она предоставит Вам ответ То есть вы можете сказать модели чтобы она не сразу предоставила вам ответ А отобразилась Шаг за шагом того как модель собственно говоря приходит к определённому ответу вот некоторые техники и Давайте сразу посмотрим на примеры использования этих техник первая техника добавления контекста И в такой технике Вам следует указывать что должна сделать модель То есть например можно написать Представь
что ты эксперт в программировании и объясни то есть этим самым по сути мы задаём роль то есть мы говорим Какая роль будет у модели в процессе формирования ответа и то есть таким образом указывая роль для модели мы позволяем направить её ответы в определённое русло то есть мы говорим Как именно модель должна мыслить исходя из назначенной роли пример ты являешься техническим писателем то есть мы задаём роль и далее мы указываем цель То есть объясни простыми словами как работает нейронная сеть то есть мы не просто говорим объясни простыми словами как работает нейронная сеть но ещё говорим Как
именно следует сделать То есть видите если мы укажем что модель должна являться техническим писателем То вероятно что в ответе несколько технических терминов но модель попытается их объяснить простыми словами то есть Вот пример собственно говоря формирования запроса используя технику добавления контекста которая включае также назначение определённой роли и я Рекомендую вам всегда назначать роль модели исходя из того запроса который вы формируете например ты школьный учитель либо ты опытный инженер либо ты опытный программист и так далее следующая техника использование примеров зачастую те кто особенно начинают взаимодействие с текстовыми моделями Не используют эту технику вообще то есть ставится задача
и ожидается что ответ вы получите именно в том формате в котором вы ожидаете и в том объёме который вы ожидаете Но если предоставить модели один либо несколько примеров ответа то вероятность того что вы получите ожидаемый ответ от модели на ваш запрос уже будет крайне высокая Итак Здесь вы должны по сути продемонстрировать формат ответа и вы можете показать один либо несколько примеров чтобы задать структуру или стиль ответа по английски эта техника называется Single Shot либо multiple Shot prompting То есть вы можете показать один пример либо несколько допустим вы хотите задать какой-то вопрос Но перед тем как
задать этот вопрос Вы показываете примеры вопросов и ответов То есть вы показываете примеры взаимодействия между допустим вами и моделью допустим вопрос что такое интернет ответ это глобальная сеть соединяющая миллионы компьютеров для об информации то есть видите короткий простой ответ который будет понятен в принципе всем что такой браузер допустим это программа которая позволяет пользователям просматривать веб-сайт в интернете то есть это ещё один пример взаимодействия Если вы зададите допустим Следующий вопрос например что такое оперативная память в компьютере либо Что такое компьютерная мышка либо Как работает допустим видеокамера вероятность того что вы получите похожие ответы в таком же
формате будет очень высокая То есть вы получите скорее всего одно предложение на ваш вопрос то есть вот такая техника использования примеров следующая техника - это уточнение и ограничение и Здесь вы можете ограничить объём ответа Вы можете указать что вы хотите допустим Краткий ответ либо подробный ответ либо ответ с определёнными секциями и вы даже Можете описать формат этих секций то есть в первом абзаце допустим начало должно быть следующее во втором абзаце необходимо уточнить что-то в третьем абзаце необходимо подвести краткий итог и добавить пункты и не менее пяти пунктов То есть это всё также уточнение и ограничение
либо же можно сказать отвечай кратко да или нет либо отвечай одним предложением либо отвечай только иконки эмодзи форматирование ответа также относится к этой технике текстовые модели конечно же работают с текстом то есть они принимают текстовый ввод и выдают текстовый ввод но сейчас уже Конечно можно взаимодействовать используя и другие форматы Например можно загружать файлы в модель и можно просить модель генерировать ответ также в различных форматах То есть можно формировать списки можно формировать таблицы либо документы docx либо же документы PowerPoint презентаций Также вы можете сказать что вы хотите отформатировать результат на стороне модели в формате J это
JavaScript object notation это очень популярный формат для обмена данными между компьютерно в интернете либо же использовать markdown это также форматы для форматирования текстовых файлов который позволяет в дальнейшем отобразить заголовки списки и например блоки кода То есть вы в вашем запросе должны указать в каком формате вы хотите получить ответ Если явно нигде этого не указано то модель будет отвечать вам в виде обычного текста кроме этого можно допустим указывать формат PDF Как загружать файлы PDF в модель так и просить сгенерировать ответ в формате pdf зависимо снова таки от того как вы в дальнейшем планируете использовать ответ от
модели то есть формат ответа пример создать таблицу сравниваю ую геостационарные и низкоомный применение должно быть не менее 20 слов то есть вот таким образом я сказал что я хочу получить таблицу и применение допустим каждого спутника должно быть описано с помощью не менее 20 слов То есть вот такой примерный запрос для этой техники но снова таки можно указывать различные форматы и современные модели могут генерировать ответ в разных форматах данных и если генерируется файл то обычно вы получите ссылку на определённый файл кликая на которую вы сможете скачать файл себе локально и далее выполнять уже нужные вам действия
следующая техника - это пошаговое мышление и в этой технике вы обычно получите более развёрнутый ответ от модели и вы также увидите пошагово Что делала модель для того чтобы прийти к определённому ответу особенно Я рекомендую использовать эту технику для решения логических либо математических задач и конечно же рекомендуется использовать эту технику для обработки данных и для задачи по программированию Итак в этой технике вы говорите модели чтобы модель разделила задачу на различные этапы То есть вы можете попросить модель объяснить свои шаги или рассуждать логически для того чтобы получить более точный результат потому что в некоторых случаях Если вы
дадите допустим задачу выполнить определённые математические расчёты вероятно что модель вам сразу предоставит ответ и он может быть неверным но если вы скажете чтобы модель мысли логически то модель начнёт с допустим самых простых случаев и перейдёт в итоге к более сложному решению То есть вы Тим самым вероятно что получите более точный и главное правильный результат если задача была поставлена сложная и цель получить конечно более точный либо более правильный правдивый результат и также отобразить все этапы рассуждений При желании Вы можете после этого задать уточняющий вопрос касательно определённого этапа и попросить допустим расширить этап мышления и рассказать что
именно было сделано на определённом этапе для того чтобы получить больше информации пример реши следующую задачу пошагово то есть мы уточняем не просто Реши задачу а реши пошагово у Богдана было 20 яблок допустим он сел половину а затем Купил ещё 10 Сколько яблок у Богдана теперь то есть если вы напишите просто задачу без предварительного предложения решить следующую задачу пошагово вероятно что вы просто увидите в ответе одну цифру либо одно число Если же вы укажете что необходимо показать подробный ответ с пошаговыми этапами То вероятно что вы увидите более развёрнутый ответ и вы увидите даже по пунктам что
и как делала модель чтобы получить определённый ответ конечно эта задача в примере также простая Но если у вас стоит задача получить ответ на Более сложный вопрос который требует снова таки нескольких логических этапов то лучше попросить модель отображать результаты поэтапно Можно даже При желании указать эти этапы допустим предварительный анализ анализа и формирования ответа То есть вы можете задать как бы эти шаги Если вы не задали их то модель самостоятельно придёт к собственно говоря к тому как правильней выдать вам результат вот такие собственно говоря техники для получения более эффективных ответов от модели и снова таки главный смысл
техник в том чтобы не думать что модель прочтёт Ваши мысли и не давать тем самым простые задачи либо простые вопросы модели которые состоят допустим из трёх слов либо из одного предложения Чем более развёрнуто вы опишите что вам нужно зададите допустим роль модели укажете целевую аудиторию Напишите несколько примеров ответов которые вас устраивают То тем вероятнее что вы получите от модели именно тот ответ который Вас устроит и далее Давайте на практике посмотрим на то как можно собственно говоря использовать те техники которые мы с вами [музыка] обсудили Теперь давайте на практике поработаем с различными техниками создания запросов для
текстовых моделей И начнём с первой техники которую мы обсуждали который называется добавление контекста либо же создание контекста и Давайте начнём с простого вопроса к примеру Почему идёт дождь то есть вот такой вопрос без какого-либо дополнительного контекста То есть я просто задаю вопрос модели и Давайте посмотрим на результат Итак получаю вот такой ответ то есть несколько абзацев текста дождь - это часть круговорота воды в природе Представь что это как Великая водяная вечеринка и я вижу уже какие-то аналогии вода испаряется из рек морей и даже твоей чашки чая если оставить её слишком долго превращаясь в водяной пар
когда капельки в облаках начинают тусить слишком тесно их становится очень много они объединяются и падают на землю в виде дождя то есть смотрите объяснение состоит из Некоторых слов которые очевидно что нацелены на подростков то есть на детей допустим 141 16 лет так А ещё дождь помогает растениям расти рекам наполняться и нам наслаждаться уютными вечерами с горячим чаем у окна грубо говоря облако Просто переборщила с водой и решила поделиться снова таки вот эта фраза Со смайликом явно говорит о том что модель сама определила целевую аудиторию исходя снова таки из того Кто чаще всего задаёт этот вопрос
который я задал то есть я бы не сказал что это нацелено на детей наверное нет то есть но на подростков скорее всего да то есть видите снова таки вот ответ на поставленный вопрос я не задал роль и также я не собственно говоря не описал целевую аудиторию давайте я открою новый чат в новом окне и здесь я задам этот же вопрос но укажу дополнительно ещё роль Итак я напишу здесь этот же вопрос почему идёт дождь но выше я задам роль снова таки Неважно где вы задаёте роль это может быть ниже это можно делать без перехода на
новые строки Но я это сделаю отдельно чтобы чётко было понятно где мы задаём роль где мы задаём цель то есть что мы хотим узнать И где мы допустим уточняем контекст итак я здесь напишу ты допустим ты папа ребёнка ребёнка 5 лет то есть я задаю здесь сразу роль и также задаю целевую аудиторию то есть на кого должен быть рассчитан ответ Так почему идёт дождь вот такой собственно говоря уточняющий запрос Давайте посмотрим теперь на ответ так Дождь идёт потому что Облака в небе полны маленьких капелек воды когда в Облаке становится слишком много капель они сливаются и
становятся слишком тяжёлыми чтобы оставаться в воздухе тогда они падают на землю это и есть дождь Можно сказать что Облака как ведёрко которое иногда про потому что в него набралось лишком много воды то есть мы видим что здесь уже не использовались сленговые слова такие как переборщила тусить и так где ещё вечеринка допустим то есть таких слов уже здесь нет в этом ответе потому что мы задали роль вот здесь и кроме роли мы задали ещё и целевую аудиторию и далее задали этот же вопрос и получили абсолютно другой ответ который я думаю что поймёт ребнок 5 лет то
есть здесь использованы базовые простые слова которые вероятно что ребёнок знает то есть и ведёрко и капель и воздух падают на землю и так далее то есть абсолютно простой ответ для ребёнка Теперь давайте откроем ещё раз окно так и здесь напишем следующее ты автор научного ты автор статей научного журнала вот так то есть я задал вот такую роль ставлю тот же вопрос почему идёт дождь Почему идёт дождь и далее я могу добавить ещё дополнительный контекст Опиши это развёрнуто развёрнуто с научными обоснования ты пишешь статью для главной страницы научного журнала Ну это можно написать в начале давайте
я это передвинул в начало чтобы Для нас это выглядело более логично снов таки для модели неважно В каком порядке вы укажете контекст Где вы зададите роль и так далее с научными обоснования также можно использовать математические формулы то есть смотрите что я здесь сделал во-первых Я задал роль модели ты автор статей научного журнала здесь собственно говоря цель то есть главный вопрос на который хочу получить ответ А здесь ниже добавлен контекст То есть я добавил некоторые уточняющие детали то есть что делает собственно говоря модель и собственно говоря также я добавил что следует добавить ещё и к примеру
математических формул если таковые будут нужны в процессе формирования ответа Итак отправляем теперь вот такой запрос и посмотрим что же мы увидим в ответе на этот раз то есть очевидно что мы получим гораздо более развёрнутый ответ нежели в предыдущем случае либо же в первом варианте когда мы вообще не задавали ни роль ни указывали дополнительный контекст Итак Почему идёт дождь то есть написана по сути статья то есть ведение дождь и так далее Одно из самых распространённых явлений в природе в этой статье мы разберём механизмы образования дождя физические принципы лежащие в его основе и даже попробуем Взглянуть на
него С математической точки зрения то есть видите весь тот контекст который Я указал присутствует сразу введение то есть видно что пишется как бы статья Где будут описаны физические принципы того как возникает дождь и Также будут некоторые математические формулы как я и попросил Итак механизм образования дождя Основной причиной дождя является круговорот воды в природе испарение процесс испарения описывается уравнением перона клаузиуса то есть мы и близко не могли увидеть вот эту формулу вот в этом ответе либо в этом ответе потому что по умолчанию снова таки модель сама определяет целевую аудиторию и в итоге решает В каком формате
отвечать И насколько развёрнуто отвечать то есть на простой вопрос вам модель не напишет развёрнутую статью то есть не следует этого ожидать то есть нужно указать явно в запросе Что вы хотите допустим научную статью как мы сделали это здесь Итак формула пи давление пара T температура L удельная теплота парообразования конденсация водяной пар поднимается в атмосферу и так далее вот формула которая описывает конденсацию то есть уравнение насыщенного пара то есть очевидно что целевая аудитория здесь абсолютно другая То есть это автор научного журнала И следовательно всё описывается Исходя из этого образование капель и так далее физика движения капли
дождя описано вот такой формулой где МЮ или м Масса капли м ускорение свободного падения и так далее климатические и метеорологические аспекты то есть дождь формируется при взаимодействии воздушных масс подъём тёплого воздуха в атмосферу может быть вызван и далее спис конвекцией фронтальными процессами либо ониче Ским эффектом и заключение дождь - это результат сложного взаимодействия термодинамических аэродинамических и метеорологических процессов Да ну в конце как бы есть шутка как бы которую в принципе можно попросить удалить как бы то есть она не должна присутствовать В научных журналах но тем не менее в целом Я думаю что Понятно отличие между
вот этими тремя запросами то есть мы не добавили с вами много текста на самом деле мы просто задали здесь роль указали тот же вопрос Что и ранее Почему идёт дождь и добавили дополнительно контекст то есть для кого допустим пишется статья В каком виде Я хочу получить ответ Можно даже указать тко допустим структуру статьи и ещё что я хочу увидеть математические формулы и в итоге мы собственно говоря с вами получили желаемый результат которого мы никогда не получим если мы будем просто задавать вопрос почему идёт дождь Итак вот техника добавление контекста либо формирование контекста и в трёх
разных вкладках вы видите Три разных варианта ответов исходя снова таки из Нашего Нашего текстового собственно говоря запроса Я рекомендую вам потренироваться сейчас самостоятельно и позадавать другие задачи модели снова таки указывая разные роли и указывая контекст и посмотреть на результаты снова таки результат крайне связан с тем что вы пишете в запросе потому я не Рекомендую вам использовать простые вопросы если конечно только вам ну получить быстрый ответ Если у вас задача получить быстрый ответ допустим давайте я напоследок задам вот такой вопрос допустим Сколько сколько звёзд в галактике число так я допустил опечатку Я прошу прощения так 100
млрд так от 100 млрд до 400 млрд звёзд то есть хотя я указал число как бы всё равно я получил Чуть более развёрнутый ответ Давайте напишем другой вопрос так сколько допустим сколько рук у человека у человека так вот такой вопрос так всё равно я получаю Чуть более развёрнутый ответ как бы две руки правая и левая то есть не просто число Д То есть видите модель всё равно настроена на то чтобы ответить Чуть более развёрнуто нежели мы ожидаем но снова таки на такой вопрос Мы явно что ожидаем простой ответ и мы не будем здесь задавать роль
не будем формировать дополнительный контекст и не нужно писать развёрнутую научную статью либо же можно задавать вопросы которые касаются определённых фактов к примеру Какое население Земли вот такой вопрос то есть это по сути фактический вопрос и я вижу что был запрос в интернет для получения текущей информации Я записываю этот курс в ноябре 2024 года потому я и получаю ответ на текущий момент и вот ответ который был сформирован исходя из разных источников снова таки меня вот такой ответ абсолютно устроит То есть мне не нужно уточнять что-то не нужно формировать снова таки роль контекст и так далее То
есть мне чно ответа допустим 8,5 млрд человек к 2030 году допустим А сейчас приблизительно 8 за 17 млрд человек то есть вот такой подход в формировании запросов и снова таки от вас зависит какой контекст вы добавите И как вы зададите роль модели и какой в итоге ответ вы получите от модели [музыка] Теперь давайте на практике посмотрим на то как можно использовать примеры в запросах и Давайте здесь в окне чатбот напишем следующее Я изучаю технику запросов и текущая техника техника No Shot Single Shot или Few shots prompting Дай мне дай мне пример этой техники техники техники
для всех трёх вариантов то есть я не Уточняю какой именно пример Я хочу не Уточняю роль просто говорю дай мне пример этой техники для всех трх вариантов и посмотрим на то что мы здесь увидим так логично что ответ будет о нейронной сети это то о чём собственно говоря нейронная сеть будет говорить в первую очередь Если вы не задали собственно говоря контекст либо тему общения так вот пример No Shot prompting то есть без каких-либо примеров То есть вы в прошлом уроке Допустим мы задавали вопрос почему идёт дождь и мы не давали никаких примеров ответа то есть
это был No Shot prompting в этом случае мы видим также один вопрос Что такое нейронная сеть то есть в этом запросе нет каких-либо примеров То есть по-английски это no SH prom ответ будет соответствующим То есть это будет скорее всего короткий ответ и модель сама решит В каком формате отвечать то есть ответ будет такой как мы видим здесь в примере нейронная сеть это математическая модель и так далее второй пример с одним примером и здесь мы ста один пример чтобы показать модели Как именно должен выглядеть ответ то есть мы говорим в запросе допустим вот такой вопрос Что
такое алгоритм и вот ответ алгоритм - это последовательность и так далее То есть то есть мы задали формат ответа так я прошу прощения то есть мы задали формат ответа вот такой то есть одно предложение алгоритм это и тепер на вопрос что такое нейрона есть здесь Но уже собственно говоря после того как мы указали пример и далее мы увидим вот такой ответ то есть нейронная сеть и так далее Это структура состоящая из узлов и так далее То есть мы получили в данном случае более короткий ответ Ну не совсем более короткий примерно такой же на самом деле
потому что в собственно говоря в примере мы не задали явно стиль допустим отображения В каком формате это должно быть то есть мы просто указали здесь одно предложение и в итоге мы получили вот такой ответ то есть это запрос с одним примером Few Short prompting несколько примеров и здесь мы указываем несколько примеров взаимодействия и в таком случае лучше указывать как можно больше вопросов и ответов для того чтобы получить в итоге ответ который примерно будет иметь такую же структуру как и ответы на предыдущие вопросы то есть что такое алгоритм вот ответ что такое машинное обучение вот ответ
и теперь спрашиваем Что такое нейронная сеть и получаем вот такой ответ то есть сно вот таки в этих примерах Большой разницы между ответами нет потому что в целом мы задаём как бы вопрос на который нельзя ответить по-разному то есть ответ примерно будет один и тот же но снова таки мы здесь задаём примеры и теперь давайте основываясь на этом создадим свой собственный запрос так и допустим я задам вот такой вопрос допустим Сколько сколько яблок в одном килограмме вот так вот такой вопрос то есть так килограмме вот так Давайте напишем вот так то есть это получается пер
вариант то есть No SH prom то есть мы не указываем какие-либо примеры Итак Сколько яблок в одном килограмме и получаем вот такой ответ количество яблок в одном килограмме зависит от их размера и сорта обычно маленькие яблоки 100-120 г каждые примерно 8-10 штук на килограмм средние яблоки столько-то крупные яблоки 4-5 штук на килограмм Так что если хочешь рассчитать точнее Взвесь одно яблоко а потом Дели 1000 г на его или просто возьми побольше яблок вдруг пригодятся Теперь смотрите Я добавляю пример и теперь уже будет у нас sle то есть запрос с одним примером Итак я беру тот
же вопрос так я перейду в новый чат чтобы у нас контекст предыдущего чата не сохранялся и здесь напишу этот же вопрос и ниже напишу пример пример вопроса так пример вопроса так чтобы перейти на новую строку необходимо нажать Shift Enter для того чтобы не отправить запрос в модель а перейти на новую строку пример вопроса сколько груш в одном килограмме и здесь ответ так Ответ так Ответ здесь будет Допустим просто одна цифра допустим пять То есть я задал пример вопроса и ответа Итак теперь посмотрим на ответ снова получаю тот же развёрнутый ответ в среднем маленькие яблоки и
так далее То есть если важно знать точно лучше взять весы средние яблоки весят и так далее так Ну я могу попробовать откорректировать этот запрос я напишу допустим Давайте Так сколько в среднем яблок в одном килограмме Давайте отправим вот такой запрос без примера пока То есть я создам новую ветку в рамках этого чата и увижу в среднем в одном килограмме содержится 5-7 яблок и снова таки развёрнутый текстовый ответ Теперь давайте исправим откорректируйте пример пример вопроса Сколько в среднем в среднем груш в одном килограмме и Давайте теперь отправим запрос Send так э снова таки ответ более короткий
но здесь я всё-таки вижу не одну цифру а текстовый ответ и для того чтобы всё-таки получить мне желаемый ответ я думаю что мне следует задать ещё дополнительный контекст ниже отвечай Одним числом или цифрой Вот так и в таком случае я уже Надеюсь получить только одну цифру что я сейчас и вижу то есть видите у меня не получилось полностью симулировать формат ответа благодаря этому вопросу и мне нужно было уточнить Теперь давайте Что будет если я уберу уточнение и добавлю дополнительные примеры то есть будет у нас prom так пример вопроса один так Ответ 5 это я скопирую
вставлю Так сколько в среднем к примеру Апельсин Апельсин так апельсинов в одном килограмме допустим Т пример вопроса два делаем тоже самое пример вопроса три Сколько в среднем к примеру Давайте напишем вишен вишен в одном килограмме ответ допустим 300 к примеру вот так так наверное много я написал Давайте 100 укажем так Я указал несколько примеров вопросов с ответами и задаю мой вопрос Ну давайте вопрос ниже зададим то есть сначала будут примеры допустим Но неважно где примеры А где ваш вопрос Сколько в среднем яблок в одном килограмме Итак отправляем запрос так Ответ сем то есть видите снова
таки мы отправили примеры и я вижу что здесь есть ответ двоеточие сем то есть вот эти примеры были восприняты дословно то есть ответ се средний вес яблок обычно составляет около 150 г то есть есть уточнение видите то есть всё равно без дополнительного контекста модель добавит дополнительное описание Можно попробовать откорректировать этот запрос и здесь добавить пару фигурных скобок посмотрим повлияет ли это на ответ Так а ну-ка давайте отправим запрос теперь так нет получаю вот В каком формате ответ Давайте тогда добавим всё-таки контекст то есть нужно Я думаю что в таком случае добавить ещё и формат ответа
так формат ответа формат ответа формат ответа Просто Число Вот так давайте отправим запрос и теперь я ожидаю получить только одно число и вот результат то есть вот примеры того как можно добавлять некоторые примеры в запросе для того чтобы получить ответ максимально приближённый к к тому что мы описали в примерах но здесь снова таки мы использовали такие примеры в которых мы указывали числовые ответы и мы видим что модель всё равно пытается расширить собственно говоря ответ текстом потому что всё-таки это текстовая модель и Её задача текст а не просто числа Так давайте в первом окне в котором
мы попросили Дать пример техники для всех трёх вариантов но не указали В какой именно сфере Мы хотим получить пример так давайте укажем Дай мне дай мне также примеры но Представь представь что я чаю допустим теорию вероятностей теорию вероятностей вероятностей в университете вот так то есть хочу получить также примеры запросов но я указал скажем так другую целевую аудиторию то есть поменял немного контекст так No SH PR то есть без примеров Что такое условная вероятность допустим и вот ответ с определённой формулой Single SH примера Что такое вероятность вероятность - это числовая мера степени и так далее и
так далее То есть одно предложение в этом запросе в этом ответе И теперь я спрашиваю что такое условная вероятность получаю более короткий ответ но снова таки с формулой несколько примеров Что такое вероятность ответ что такое независимые события ответ и теперь мой вопрос Что такое условная вероятность получа также ответ снова таки здесь в этих ответах которые были предоставлены нет определённого стиля который отличался бы от стиля формирования ответа на простой вопрос Что такое условный вероятность потому снова-здорово Давайте попробуем ещё один запрос так допустим напишем такой вопрос какая какая погода допустим в Австралии то есть вот такой вопрос
Без примеров Давайте посмотрим так выполняется поиск информации в интернете В таком случае так Вот ссылка на сайт где была найдена погода в настоящее время столько-то облачно в Австралии сейчас весна да и вот прогноз погоды на несколько дней вперёд так и Давайте теперь Попробуем так вот детально детальный ответ с информацией которая была получена с разных сайтов э так Теперь давайте этот же вопрос зададим с примером так пример пример вопроса так давайте так Ну давайте пример вопроса так какая какая так Какая погода в Африке Африке ответ ответ Следующий Ты шутишь Зачем тебе погода в Африке Разве ты
туда сейчас собрался поехать ха-ха Вот так и далее мой вопрос Какая погода в Австралии Давайте посмотрим теперь на ответ так выполняется поиск в интернете и снова я получаю конкретный ответ с информацией о погоде в австрали то есть мой пример вообще не был воспринят только что давайте я напишу при формировании при формировании ответа учитывать учитывай пример который я предоставил выше вот так то есть я Уточняю Давайте посмотрим теперь так выполняется поиск Ты шутишь Зачем тебе погода в Австралии то есть видите Теперь он уже учитывает этот ответ то есть видите нужно было в данном случае дополнительно указать
что примеры Важны и я хочу получить ответ в том стиле в котором Я указал ответ вот здесь в этом примере вопроса Разве ты туда сейчас собрался поехать так всё как бы дословно здесь видите но если всё же интересно вот прогноз погоды для некоторых городов Австралии Зачем тебе погода в Австралии то есть видите дословно реально было воспринято могу указать так не воспринимай не формируй точно такой же ответ используй его для вдохновлен на твой уникальный ответ Давайте вот так напишем теперь отправим запрос Так Снова таки выполняется поиск Так Снова сейчас в Австралии лето Если Вы планируете поездку
в Австралию то есть Теперь снова не учитывает ответ то есть видите модель настроена в данном случае настолько жёстко на то чтобы предоставить именно информацию о погоде на вопросы о погоде что Вот мои примеры вопросов и ответов мало учитываются В этом случае но снова таки если запросы более специфичные и вы хотите получить ответы вы примерно в похожем стиле либо формате то обычно следует использовать технику указания примеров запросов и ответов Так ну здесь нет никаких шуток Но снова таки можно указать что отвечаю в шутливо Тоне но снова таки здесь Ну давайте так я ещё один пример добавлю
Возможно это поможет Так это будет Последняя попытка для этого запроса Так какая погода допустим в Париже Ну да не нужен тебе этот Париж так ха-ха вот так отвечаем точнее формируем запрос вот в таком виде так та Какая Австралия Ты случайно не собираешься прыгать к кенгуру в гости то есть вот теперь когда я добавил ещё один пример то есть чем больше примеров с ответами тем лучше одного примера может быть недостаточно то есть не то что может быть недостаточно его было недостаточно не вот в этих запросах ни вот в этом запросе Теперь же когда я показал два
примера с ответами и стиль ответов похож видите наконец модель ответила так как я хочу то есть погода У них там наверняка замечательная видит Австралия а не какая-нибудь улая осень есть виде даже было запрос вфо погоде и я получил ответ в нужном формате давайте я попробую удалить Вот это уточнение как бы и посмотрим теперь на ответ то есть Будет ли в итоге так поиск в интернете видите всё равно необходимо было добавлять уточнение без уточнения всё равно я получаю стандартный ответ о погоде потому что снова таки модель настроена на формирование Вот таких прогнозов погоды и Нужно постараться
чтобы перенаправить модель в другое русло то есть сформировать ответ по-другому но у нас это получилось вот в этом запросе то есть мы дали примеры задали вопрос и добавили контекст то есть уточнили в каком именно формате Мы хотим получить ответ вот это собственно говоря техника которая называется SH То есть когда вы не даёте какие-либо примеры добавляете один пример и Few shs prompting несколько примеров но на практике вы увидели что модель может учитывать эти дополнительные примеры А может и не учитывать зависимо от того м насколько общий вопрос насколько модель знакома с Темой и так далее Итак это
техника добавления запросов примеров запросов в собственно говоря в вашем текстовом запросе и плюс ещё кроме запроса вы указываете примеры ответов и по-английски называется это no Shot prompting Single Shot prompting и Few Shot [музыка] prompting Теперь давайте на практике поработаем с техникой уточнений и ограничений которая включает в себя указание размера ответа при необходимости формата ответа и также можно указывать что вы хотите получить допустим ответ в виде файла и можно указывать формат файла допустим CSV Excel pdf и также можно указывать другие текстовые форматы такие как markdown либо Jason и Давайте начнём сразу с примера и я задам
такой вопрос Сравни Сравни разные типы дисков для компьютеров вот такой вопрос Без указания роли без дополнительного контекста без ничего То есть просто вот такой вопрос и посмотрим на ответ модели так главные герои компьютерного мира дисков HDD SSD и их продвинутого собрата снова таки почему-то по умолчанию модель настроена на то что целевая аудитория - это подростки скорее всего то есть мы снова видим слн То есть то что мы видели с вами в позапрошлом уроке так HDD жёсткий диск плюсы такие-то минусы медленный шумный подвержены механическим повреждениям лучше не ронять когда использовать SSD твердотельных и так далее минусы
дороже и так далее nvme SSD молния среди SSD плюсы максимальная скорость минусы и ито бюджетный вариант HDD оптимальный SSD миу и так далее То есть вот такой ответ по умолчанию то есть ответ как мы видим достаточно развёрнутый с разными вариантами жёстких дисков и с плюсами и минусами каждого из собственно говоря дисков Теперь давайте этот же вопрос зададим по-другому так откроем новое окно чата точнее вопрос будет такой жено пишем следующее Ответ должен быть максимально кратким максимально кратким то есть мы не говорим Как именно Мы хотим увидеть ответ но хотим максимально Краткий ответ выполняем запрос так вот
краткое сравнение типов дисков HDD дёшево много места медленно шумно SSD nvme SSD и ещё был добавлен Hybrid HD то есть вот такой ответ на такой вопрос но допустим я хочу получить ответ одно предложение на один тип диска Давайте выполним здесь же редактирование Ответ должен быть по одному по одному предложению на каждый тип диска то есть вот такой уточняющий запрос получаем ответ в том формате в котором мы запросили то есть по одному предложению на каждый тип диска то есть вот HDD одно предложение SSD твердотельная запросили его теперь давайте это же Ну давайте здесь же будем редактировать
всегда Можно перейти в определённую ветку кликая вот здесь снова таки ветки независимые То есть это отдельная ветка это отдельная ветка и здесь Давайте снова отредактируй по одной странице текста для каждого типа дисков то есть вот такой запрос теперь то есть мы хотим более развёрнутую информацию и наверняка что сейчас мы получим больше текста для каждого типа дисков то есть вот жёсткие диски сначала рассматриваются старожилы преимущества детально описаны недостатки детально описаны итог То есть это в принципе объём текста для одной страницы твердо телы накопители и так далее То есть формируется больший объём собственно говоря ответа исходя из
того как я указал это в запросе но всё равно мы получаем ответ в текстовом виде то есть гибридные накопители ssh HD и так далее То есть нужно подождать пока завершится формирование текстового ответа но снова таки Возможно мы здесь увидим не все возможные типы дисков которые существуют модель всё-таки Я думаю что постарается как-то уменьшить объём ответа да вот теперь я вижу 1 2 3 Четыре типа дисков то есть описаны на на отдельных скажем так страницах И ещё я вижу разделители то есть что не позволить допустим скопировать отдельный блок текста и вставить в другом месте то есть
вот таким образом можно указывать объём ответа и я Рекомендую вам Часто этим пользоваться то есть указывайте в каком формате хотите получить ответ сейчас мы это будем также пробовать и какой размер ответа вас устроит так м Теперь давайте в новом окне зададим этот же вопрос либо Давайте другой вопрос Сравни разные типы допустим микрофонов микрофонов вот так выполняем такой запрос в таком случае мы получаем ответ в формате текста то есть есть динамические микрофоны снова таки плюсы и минусы То есть вы видите что структура ответа очень похожа на структуру первого ответа вот здесь когда мы спросили просто Какие
типы дисков есть и попросили сравнить их то есть видите тип плюсы минусы далее второй тип плюсы минусы очень похожий формат здесь то есть видите тип динамические микрофоны плюсы минусы конденсаторные микрофоны плюсы минусы то есть Вот то как на такие запросы модель отвечает по умолчанию скажем так то есть без дополнительных требований с вашей стороны то есть вот пять типов собственно говоря микрофонов и в итоге короткий суммарный итог Так давайте теперь собственно говоря укажем на конкретный формат ответа в котором я хочу получить ответ от модели собственно говоря так иногда необходимо выполнять верификацию так Сравни разные типы микрофонов
ответ так ответ предоставь в формате Давайте укажем здесь допустим PDF То есть я снова таки не Уточняю и скорее всего что я получу вот этот же текст но в формате pdf то есть с плюсами минусами но не здесь в окне чатбот А я получу ссылку на файл pdf и сейчас вы видите Anal и это означает что на стороне сервера выполняется код программный код который генерирует PDF файл из вот этого текста занимает некоторое время обычно секунд 10-15 зависимо от объёма данных которые необходимо добавить в данном случае V PDF файл то есть выполнение программ происходит для разных
запросов для разных задач и снова таки это делается автоматически исходя из контекста запроса то есть модель Сама решает В каком случае нужно выполнять программу на сервере А в каких случаях не нужно выполнять программу на сервере ЕС если бы мы здесь дали уточнение что мы хотим допустим ответ в виде одного предложения на каждый тип микрофона то возможно что мы получили бы ответ с вами быстрее Ну давайте как бы подождём завершения этой операции А пока я открою ещё одно окно и напишу в нём так Сравни разные типы микрофонов здесь добавлю ниже по одному предложению предложению так для
каждого типа и напишу ответ предоставь предоставь в в формате укажу Jon для тех кто не знает что такое формат Jon Сейчас вы увидите как выглядят данные в этом формате Итак я отправлю Здесь также запрос так здесь как раз завершился этап генерации PDF документа со сравнением разных типов микрофонов и я могу скачать его по ссылке давайте я Клину здесь скачать PDF скачивается файл pdf вот он был скачен и я уже вижу результат в формате pdf то есть сравнение разных типов микрофонов конечно какие-то дополнительные элементы дизайна здесь будут отсутствовать но можно попросить их добавить но в целом
PDF файл был сгенерирован и в нём есть информация о разных типах микрофонов и При желании Вы можете взять этот документ и допустим распечатать его и Здесь также есть вот такая ссылка View analysis и если вы кликните на ней то вы увидите тот код который был выполнен на сервере для генерации вот того файла который мы с вами получили то есть указывается шрифт создаётся собственно говоря PDF это всё код Python и в итоге добавляется контент для итогового PDF файла вот контент и этот же контент мы увидели только что в файле и далее указывается путь для создания PDF
файла это путь на сервере и в конце этот же путь делается публичным для вас и вы можете скачать этот же файл через интернет по указанной ссылке то есть Вот ссылка на PDF файл Теперь давайте посмотрим на то как мы получили ответ вот здесь в формате Jon И вот так выглядит формат J То есть это объект то есть фигурные скобки означают что-то объект и объект состоит из пар ключ значения то есть вот это у нас ключ Dynamic после двоеточия идёт его значение и значение - Это просто строка видите динамические микрофоны надёжные универсальные и так далее после
пары ключ значения идёт запятая вот я вижу запятую и далее идёт следующая пара ключ значения и вот в таком формате Вы можете легко взять эти данные и допустим использовать их в вашей программе допустим программе JavaScript либо Python либо программе на любом другом языке программирования потому что это формат который понимают в принципе все языки программирования То есть вы можете дальше допустим отобразить информацию об этих микрофонах на веб-странице то есть у вас уже есть готовые данные для этого То есть у вас есть объект Jon с ключами и вы легко можете обратиться к любому значению определённого ключа зная
название ключа то есть допустим boundary ribbon condenser и так далее То есть вот такой формат Jon Давайте попросим другой формат ответ ответ Давай ответ Представь в формате txt так txt в файле Давайте в файле то есть попросим сгенерировать файл txt Я думаю что генерация файла txt пройдёт быстрее потому что PDF файл генерировать сложнее Особенно с кириллицей внутри Я думаю потому как бы вот процесс генерации PDF файла здесь и затянулся я думаю что сейчас Да я уже вижу результат то есть видите есть ссылка на txt файл но txt файл - это обычный текстовый документ Давайте его
собственно говоря откроем вот Обычный txt Документ и в нём есть собственно говоря та же информация но видите так как я продолжил общение после того как получил ответ в формате Jon это сохранилось в контексте потому модель как бы добавила эти же данные то есть видите по сути формат пар ключ значения но без двойных кавычек то есть ключ значения но видя уже txt файла для того чтобы получить как бы изначально ответ в формате txt я должен подправить вот этот запрос ответ предоставить в формате txt и и кратко и кратко плюсы плюсы и минусы минусы каждого Типа так
Send То есть сразу хочу ответ в формате txt и вот формируется текстовый документ но я здесь вижу тип файла markdown то есть разметка так петличный Микрофон так USB микрофон Да это формат markdown на самом деле то есть не текстовый документ Я попросил формат txt потому было решено моделью предоставить ответ в формате markdown и я могу сделать следующее вы это можете не делать я вам просто покажу как выглядит формат markdown я быстро создам новый файл так я создам его здесь тест Давайте Так у меня есть собственно говоря папка gpt и в не разные подпапки которые вы
также увидите в файлах проекта и там есть подпапка markdown и я быстро как бы создам в редакторе кода новое окно и перемещай так microphones так microphones либо просто mices markdown вот так и сюда вставлю то что собственно говоря предоставил мне Т gpt Но как только я сохранил как бы результат вот здесь я увидел что звёздочки были заменены на знаки подчёркивания Но это в формате markdown равносильно звёздочкам Но эти звёздочки остались Теперь смотрите что я сделаю я скопирую путь к этому файлу Copy path Вот так и открою этот файл в в браузере и я увижу Вот
такой результат то есть это то как отображается текст в формате то есть мы видим здесь курсив видите и курсив указывается с помощью знаков подчеркивания либо одной звёздочки в начале и в конце то есть вот русив описание плюсы минусы жирный текст добавляется используя две звёздочки в начале и две звёздочки в конце Но это снова таки обычный текстовый формат не более просто при отображении в браузере у меня данные уже формати так как они должны в формате markdown то есть вот так он выглядит и у меня есть специальное расширение в моём ве браузере называется оно markdown View и
вы можете его Mark Down View так Viewer Вы можете его найти вром и здесь я укажу Chrome то есть вот такой запрос markdown Viewer Chrome и вы найдёте это расширение При желании Вы можете его инсталлировать себе в браузере и также создать файл с расширением MD Но вам нужно ещё настроить расширение здесь можно выбрать тему отображения и также в Advanced options необходимо разрешить доступ к локальным файлам то есть чтобы был доступ у расширения к локальным файлам вот здесь и тогда вы сможете открывать markdown файлы прямо в браузере так как сделал это я и увидеть как в
итоге выглядят файлы в обычном текстовом формате но с форматированием для markdown Также можно допустим указывать здесь так я Давайте сделаю это быстро так допустим заголовки формируются использую знаки решёток Вот так и здесь я напишу сравнение сравнение сравнение разных типов микрофонов вот так сохраню изменения в этом файле обновлю здесь страницу и сверху я уже увижу вот такой заголовок сравнение разных типов микрофонов если я поменяю на две решётки то размер станет больше этого текста если одна решётка - это максимальный размер Вот такой сравнение разных типов микрофонов то есть вот так можно работать с форматом markdown этот файл
Mix MD останется доступным для вас в собственно говоря в папке MD То есть вы его сможете найти там Итак это собственно говоря пример формата markdown Ну давайте вернёмся в чат gpt И попросим создать собственно говоря файл txt ответ предоставь в файле txt чтобы я мог скачать файл txt но не в том виде в котором он был ранее там где были пары ключ значения А именно просто чтобы он содержал текст который модель Иначе просто отобразил бы нам здесь в окне чата Так Снова таки выполняется анализ то есть снова создаётся программа и программно генерируется файл txt и
нам должна быть быть предоставлена ссылка на скачивание этого текстового файла и это должно пройти быстрее нежели создание PDF файла так файл создан скачать файл кликаем на скачивание файла так и вот и вижу Вот такой текстовый файл То есть это обычный файл с расширением txt вот здесь я это вижу то есть расширение txt и здесь есть вот типы микрофонов и их особенности и далее по пунктам с плюсами и минусами каждого типа микрофонов и При желании Вы можете также этот файл взять и распечатать теперь давайте рассмотрим ещё один пример с форматом CSV Давайте зададим вопрос Что такое
формат CSV так формат CSV по-английски это comm separated values это текстовый формат для представления табличных данных Я думаю что всем из вас знаком формат Excel так вот CSV это альтернатива скажем так экселю но CSV - это обычный текстовый документ без каких-либо мето данных которые присутствуют допустим в Excel файлах и CSV формат скажем так универсален и CSV файлы открываются одинаково на разных компьютерах разных операционных систем и CSV формат часто используют при обработке данных анализе данных и у программировании То есть это очень удобный формат сохранение текстовых данных но текстовых данных в табличной форме то есть проще говоря
это таблица которая притворяется текстовым файлом чтобы не чувствовать себя одинокой одинокой в мире данных снова таки я вижу что модель явно настроена по умолчанию на ответ для подростков то есть мы снова таки неоднократно видим этот же формат ответа скажем так Этот стиль ответа возможно в будущем это изменится но сейчас я вижу Вот такой формат со смайликами и так далее CSV минималистичный формат без излишеств как маленькая чёрная записная книжка для данных структура первая строка обычно содержат заголовки название колонок остальные строки Это сами данные собственно говоря в CSV используют разделители между значениями и чаще всего это запятая
и теперь давайте в новой вкладке дадим следующую задачу Я хочу получить получить информацию информацию о топовых о топовых мировых брендах Вот так я хочу знать так каждый бренд каждый бренд должен иметь название страну происхождения так далее год основания и и краткое описание Вот так и далее укажу формат ответа CSV так CSV документ то есть вот так Я хочу получить ответ в виде CSV документа отправляем запрос так конечно предостав информацию мировых брендах в формате CSV и смотрите здесь как бы не был создан CSV файл для скачивания но вы можете легко скопировать просто вот этот текст и
вставить его в текстовый файл и сохранить его с расширением CSV то есть мы видим что в этом тексте это просто текст есть первая строка и это собственно говоря название для колонок то есть воспринимаете CSV как таблицу То есть у нас есть получается вот по вертикали а по горизонтали у нас колонки То есть это двумерная таблица и на первом ряду У нас есть название для столбцов такие как название страна происхождения год основания краткое описание то есть структура такая точно как я описал в запросе и далее на остальных рядах уже идут собственно говоря конкретные бренды у каждого
бренда есть название на происхождение Годо основания и краткое описание то есть мы это видим для каждого ряда здесь то есть это формат CSV можно попросить собственно говоря создать CSV файл создай CSV файл вот так то есть я даю эту задачу в контексте То есть мне не нужно что-либо дополнительно здесь описывать и в таком случае выполняется снова таки программа на стороне сервера который генерирует CSV документ то есть вот такой ответ модель создала быстрее конечно же потому что для формирования такого ответа не нужно было создавать программу и конечно снов таки Вы можете взять этот текст вручную и
сохранить его в текстовом файле с расширением CSV потому что вот создание ссылки на CSV файл занимает некоторое время Итак вот я получил собственно говоря файл Называется он Top BRAND CSV я могу его собственно говоря открыть так он был у меня открыт редактором таблиц на Mac называется Numbers и потому я вижу уже Вот такой результат но если я открою его обычным текстовым редактором давайте я это сделаю так я открою его с помощью Text Edit на Windows Вы можете открыть используя notepad и я увижу обычный текстовый документ собственно говоря то есть формат такой же То есть все
значения включая название столбцов разделены запятыми то есть запятая - это разделитель для данных в документе но вы увидите что некоторое значения допустим такое значение как вот это указано в двойных кавычках это делается тогда когда у нас в самом тексте допустим есть запятая видите чтобы эта запятая не воспринималась как разделитель то есть вот собственно говоря описание компании Apple в двойных кавычках если Запятых нет в тексте допустим здесь Запятых нет мы видим в таком случае не нужно добавлять двойные кавычки то есть здесь значение без двойных кавычек то есть Вот пример CSV файла и я сделаю его доступным
также для вас собственно говоря я его Перенесу в папку Chat gpt и Перенесу в папку CSV то есть там вы сможете всегда найти этот файл Top brands CSV то есть тот файл который мне создала модель и указала ссылку на этот файл то есть Вот пример файла CSV и таким образом мы с вами сгенерировать результаты в разных форматах а именно CSV Также вы узнали что такое формат Jason так вот у нас так это формат txt вот формат Jon это объект с парами ключ значения и он лучше всего подходит для каких-то программных решений и вы можете с
помощью модели Chat gpt формировать допустим какие-то Демо данные либо реальные данные с допустим описанием разных типов в нашем случае микрофонов компьютеров и так далее использовать их уже Далее в программных решениях которые вы создаёте то есть для создания допустим вебсайтов либо для хранения данных в базе данных и так далее так также мы с вами потренировать генерировать PDF документы и генерация PDF документов занимает больше времени нежели создание txt либо CSV файлов особенно если текст содержит кириллицу и по умолчанию Если вы просто даёте задание типа Сравни разные типами вы получаете ответ в виде текста и текст отображается прямо
здесь в окне ТБО этот текст можно скопировать всегда то есть нажать копи и далее вставить его допустим в другом месте а ну-ка я посмотрю что будет если нажму копи для этого текста и создам здесь допустим Так ну я Давайте создам новое окно так New Window и перет сюда всю папку gpt ня уже там есть некоторые собственно говоря подпапки так и я создам здесь обычный текстовый документ ещё так New File в папке txt и здесь будет m. txt и сюда Я вставлю собственно говоря содержимое то что скопировал и я вижу что вставило на самом деле содержимое
в формате markdown то есть в том формате в котором мы уже с вами видели отображение то есть здесь в окне ТБО текст уже отображается в формате markdown то есть но не в исходном формате не в виде текста а уже отформатированный то есть видите есть пункты есть части выделенные жирным но если мы скопирую Просто этот текст то его следует сохранять в формате markdown Итак давайте я его Перенесу собственно говоря в папку MD markdown и так у меня уже есть здесь Mix markdown M markdown Так давайте я M V2 и здесь будет Вот так и я просто
хочу это сделать для того чтобы вам показать как этот файл выглядит у меня в браузере снова таки необходимо расширение так ещё раз C то есть копировать путь так и здесь Вставляю путь вот так выглядит этот конкретный файл То есть если вы Сравните результат Так где у навет есть формат такой жемис микрофоны микрофоны и так далее То есть плюсы минусы жирным и здесь по пунктам всё указано то есть это формат markdown в котором собственно говоря чатбот по умолчанию показывает текст и если вы просто скопируйте текст Вы можете его сохранить у себя в файле также с расширением
markdown Итак мы с вами поработали с разными типами ответов и также мы с вами изначально в этом уроке поэкспериментировать То есть вы можете всегда указать Сколько вы хотите текста в ответе То есть можно написать хочу ответ одним предложением допустим вот здесь у нас было допустим Ответ должен быть максимально кратким вот максимально Краткий ответ вот ответ по одному предложению на каждый тип диска вот ответ с страницей текста для каждого типа диска То есть вы решаете В каком формате и ным должен быть ответ от модели и эта техника называется в целом уточнение размера и также уточнение формата
ответа на ваш запрос Я рекомендую Вам всегда пользоваться этой техникой и указывать формат ответа Если вам нужен просто текст тогда не указывайте Если же вам нужен определённый тип файла тогда Рекомендую вам пользоваться этой техникой [музыка] Теперь давайте посмотрим на пример пошагового мышления и благодаря такому подходу в запросах Вы можете получить во-первых развёрнутый ответ от модели и увидете определённые этапы формирования конкретного ответа Итак давайте начнём и здесь напишем допустим следующее сколько будет д в Сой степени допустим вот такой запрос 2 в со степени Итак д в сотой степени - это действительно большое число для любопытства давай
его посчитаем результат вот такой или если упростить жизнь глазам это Примерно вот столько Если вдруг планируешь платить такими деньгами то это уже уровень покупки Галактики а не булочки Ну снова таки целевая аудитория - это видимо подростки по умолчанию у модели То есть я делаю Вот такой вывод свки это на текущий момент и теперь я напишу этот же запрос так В отдельной вкладке Опиши Опиши детально пошагово как ты выполняешь расчёт вот такое уточнение то есть хочу получить детальное пошаговое описание хотя в принципе задача не сложная но видите здесь всё-таки модель пытается показать максимально много информации пошагово
как мы выполняем поиск значения 2 в сотой степени потому что здесь мы по сути сразу получили результат вот результат без того как собственно говоря модель рассчитывала это число так возведение числа так умножение числа 2 на себя 100 раз так понять суть первый шаг мы ищем результат это экспоненциальный рост который быстро даёт очень большое число так разделение на части для упрощения под счёт разбиваем его так то есть 2 в сотой степени - это 2 де степени умноже на 2 в 50 степени А 2 в 50 степени - это вот так и так далее мы уменьшаем степень
пока не доберёмся до чего-то что можем умножить вручную или с помощью калькулятора идём От простого к сложному 2 в первой степени 2 2 во второй степени 4 и так далее 2 в степени 64 уже больше чем 10 в де степени А 2 в сотой степени становится огромным финальный расчёт реальные вычисления лучше проводить программно Вот пример на Python то есть создаём переменную result пишем здесь выражение два две звёздочки означают возведение в степень 100 и выводим результат допустим в терминале в программе Python и вот мы видим вот такое значение 1 2 6 7 и так далее и
последний шаг понимание результата то есть число д в сотой степени имеет 31 цифру это настолько большое значение что если бы вы начали писать её от руки его от руки то ваш карандаш скорее всего сломался бы от ужаса то есть Вот такой результат Давайте сравним как бы вот это число с этим числом совпадает оно или нет так в конце 5 3 5 3 7 6 да я вижу что здесь число совпадает так 1 2 6 7 то есть в данном случае у нас как бы модель не ошиблась когда просто сгенерировал вот такой ответ Видимо у неё
как бы есть информация о том сколько будет 2 в Сой степени А ну-ка давайте напишем здесь сколько будет 2 в 1005 степени допустим Сент а ну-ка Посмотрим сейчас на результат так получил вот такое значение 6432 в конце так и давайте это же напишем здесь то есть я отредактируй этот запрос 2 в 125 степени Опиши детально пошагово как ты выполняешь расчёт снова мы получим похожую структуру в ответе то есть сразу ответ как как здесь так а уже более развёрнуто так это огромная задача Так использование алгоритма быстрого возведения в степень видите так рекурсия или цикл практическое вычисление
снова таки формируется результат так но здесь сделаем это на Python Я не вижу самого блока кода А код здесь доступен по ссылке то есть снова таки код такой же видите два в степени 125 получаем результат Давайте сравним совпадает он с тем что мы видим здесь так 102 6432 102 6432 да В данном случае мы видим что Ответ здесь который был немедленно дал немедленно Дан текстовой моделью совпадает с тем ответом который мы видим как ответ от программы потому что в данном случае Была выполнена вот эта программа на стороне сервера и был сформирован ответ который и показан
вот здесь Но это не всегда так на самом деле Если вы дадите более сложную задачу допустим Ну давайте всё-таки попытаемся добиться чего-то так сколько будет Допустим 105 в степени допустим 800 восо степени Ну я не думаю что мы получим здесь сразу точный ответ Так это мягко говоря огромное число нужно воспользоваться вычислительными методами так как это значение имеет сотни если не тысячи цифр то есть видите мы ответа здесь не получили то есть можем получить только примерный ответ Если же я напишу этот же запрос так в этом окне давайте это попробуем сделать сколько будет так сколько будет
105 в 00 степени так Сент и посмотрим здесь на ответ Это просто гигантская величина основная формула так умножается на себя и так далее проблема с большими числами возникает за рамки стандартных числовых форматов выходит это значение так арифметика больших чисел B in научная запись вот такая A у 10 в степени B так A - это матиса B порядок расчёт в научной нотации вот такой точное значение вот такое хотите я выполню этот расчёт то есть видите даже как бы модель не решилась сразу выполнять этот расчёт предоставила нам формулу но сама не выполнила расчёт Да Выполни расчёт Да
Выполни расчёт Итак посмотрим увидим ли мы в итоге какое-то число потому что реально эта сложная Задача В плане вычислений так слишком велик Чтобы отобразить его здесь то есть видите не получилось отобразить Результат есть ссылка на скачивание результата то есть всё-таки результат был создан и результат мы получаем в текстовом файле вот такое число То есть это 105 в степени 800 то есть в итоге мы получили результат от модели если он вам нужен снова-здорово расчёт только тогда вы получите нужный результат то есть вот вам пример пошагового мышления и я Рекомендую вам использовать эту технику тогда когда вы
выполняете определённые расчёты особенно когда вы выполняете расчёты то есть физика математика то есть вот эти сферы очень хорошо подходят именно для пошаговых задач программирование также смотрите давайте давайте откроем новое окно и здесь напишем следующую задачу Так напиши напиши программу на допустим JavaScript на JavaScript для вычисление максимального максимального числа среди всех среди всех чисел Так давайте так среди допустим чисел 10 10 100 5 допустим 200 1000 1 сем То есть напиши программу на JavaScript и так далее Давайте дадим задачу так вот пример программы на JavaScript Да только что я кстати говоря увидел окно что я достиг
лимита использования модели Хотя у меня подписка Плюс То есть платная подписка на Chat gpt но видимо из-за предыдущего запроса на расчёт 105 в степени 800 я перевыполнил скажем так план по использованию gpt 4o и я вижу что собственно говоря у меня будут ограничения некоторые в дальнейшем но это не проблема так вот пример программы на JavaScript вот собственно говоря я сразу вижу пример программы то есть создаётся массив чисел и далее вызывается функция Max для объекта math для тех кто как бы знаком с JavaScript этот код будет понятным и простым и нужно будет просто его взять и
выполнить допустим у себя Если у вас стоит задача Найти максимальное число среди вот указанных сноки здесь ниже есть короткое описание что такое что такое оператор Так ну это не оператор Это вызов функции а оператор три точки да оператор три точки это спред оператор разделяет массив на элементы но надо написать как бы не Вот это оператор А вот это оператор Так ну не столь важно снов таки у нас есть пример программы и есть короткое описание теперь я даю ту же задачу так я копирую эту же задачу Давайте открою в новом окне gpt напишу же задачу и
напиши напиши пошагово пошагово как для начинающего программиста как ты мыслишь вот так то есть я снова таки даю инструкцию дать мне конкретно пошаговый ответ и всё начинается с первого шага понимание задачи JavaScript есть встроенный способ сделать это с помощью math Ma Но для практики Можно попробовать найти максимум вручную выбрать способ решения использовать Ma для объекта Ma То есть это первый подход второй подход пройтись по каждому числу с помощью цикла и вручную найти максимум Давайте напишем оба способа то есть видите уже как бы два варианта решения будет Вот первый вариант используя math Ma с детальным описанием
того как это делается и я уже вижу здесь правильный ответ касательно спре оператора то есть вот Первая Попытка оказалась правильной с точки зрения языка JavaScript То есть отаки это не оператор но когда я попросил мыслить пошагово более глубоко то я уже вижу более корректный ответ то есть я вижу что есть оператор три точки называется он spread и он используется для разворачивания массива в отдельные числа в данном случае а math Max возвращает самое большое число из тех которые мы передали вызове метода Макс второй способ - ручной поиск то есть вот у нас есть снова таки массив
далее мы предполагаем что первое число самое большое мы можем обратиться к этому числу используя квадратные скобки где Ноль - это индекс элемента и здесь это написано видите то есть Number квадратной скобки но не уточнили как бы что именно значит квадратные скобки и ноль но можно задать дополнительный запрос на самом деле то есть если вы не понимаете чего-то можно сказать А что такое квадратные скобки потому что здесь это не объяснили И потом мы перебираем все числа и если определённое число больше текущего Ma number мы присваиваем Max Number новое значение То есть если нашли больше значения мы
обновляем Max Number то есть вот такой алгоритм поиска максимального числа среди вот этих вручную скажем так то есть без без использования метода Max как это было сделано ранее то есть вот альтернативное решение этой же задачи запустим код Скопируй любой из кодов и встав его в консоль браузера то есть смотрите Я прямо беру этот код так консоль браузера Открой браузер нажми F12 или Ctrl Shift I чтобы открыть инструменты разработчика нажимаю F12 так открылась консоль точнее консоль не открылась но я вижу здесь консоль кликаю на консоль и сюда Вставляю собственно говоря код Вот так и выполняю его
максимальное число 100 1000 Точнее то есть вот я вижу результат выполнения этого кода могу взять другой код Так давайте я возьму другой код с с Ma Так где он так вот он Я его скопирую вставлю снова таки в консоль нажимаю Enter получаю ошибку unc synta ER ID если о сноки начинающий не понимаю что делать так могу отправить ошибку вот сюда так Ma Number уже была объявлена это случается если дважды объявляете одну и ту же переменную с помощью const или LED так ошибка объяснена э когда мы пишем Вот так и позже снова делаем вот так это
то что я сделал Но я сделал наоборот то есть Сначала я сделал вот так а потом пытаюсь сделать вот так и возникает ошибка исправление так если логика похожая не Объявлять её дважды правильный код исправленный код То есть можно написать что Я попытался выполнить код в браузере выполнил тот-то код потом попытался выполнить тот-то код и получил вот такую ошибку И тогда вам чатбот объяснит детально что нужно допустим обновить страницу веб-браузера либо сделать это на другой странице допустим то есть вот могу сделать это здесь в этой странице то есть Вставляю Так давайте вставлю тот же код который
Я копировал ранее Так где он Вот этот код с math Max и вставлю просто в другой вкладке в консоли выполню и получу уже результат то есть ошибка не возникает Но сноки если Вы не знаете как как допустим исправить ошибку описываете контекст ошибки и вам чатбот подскажет это но снов таки это выходит уже за рамки м техники пошагового мышления то есть главное что мы с вами обсуждаем в этом уроке так это то что можно получить детальные пошаговые инструкции от модели допустим для целей обучения либо для целей понимания процесса а не просто получить допустим код программы как
вот мы получили здесь с коротким описанием то есть но вот таки зависимо от того что вы хотите получить от модели то есть здесь есть и этап запуска кода и даже маленький бонус с юмором в конце то есть вот такой пример И для этого для того чтобы получить вот такой развёрнутый ответ с шагами достаточно просто указать в запросе чтобы модель мысли пошагово либо детально с этапами При желании можно даже описать формат этих этапов то есть вот такая техника формирования пошаговых ответов от модели и конечно Для более сложных задач особенно по программированию часто бывает часто бывает нужно
использовать другую технику техника дополнительных запросов то есть Сначала вы допустим даёте общую задачу допустим Опиши Шаги по созданию такого-то веб-приложения описывают шаги и потом говоришь теперь начнём с первого шага Давай Опиши детально что не сделать на Первом шаге описывается детально потом переходим ко второму шагу теперь переходим к шагу номер два и так далее То есть это называется итеративный Процесс формирования ответа но он похож на этот собственно говоря подход в формирование запросов но используется тогда когда собственно говоря модель не может вам дать один большой ответ на один запрос то есть Когда необходимо несколько итераций То есть
вы в рамках дополнительных итераций получаете дополнительную информацию от модели то есть вот такая техника и я думаю что вам понятно как её использовать И что будет если её не использовать То есть вы получите просто краткие ответы без детального описания процесса и для расчётов это особенно важно то есть мы с вами убедились в этом на практике То есть если допустим нужно выполнить какие-то сложные вычисления то вам как бы модель сразу не даст ответ и не распи пишет его детально для того чтобы вы поняли как модель мысли в процессе формирования ответа то есть необходимо явно указать это
и потом возможно дополнительно ещё дать дополнительные задания Да выполнить расчёт потому что вот эта задача оказалась сложной Я даже превысил лимиты использования модели 4o и через сутки эти лимиты будут снова обнулением так Итак это техника пошагового мышления на стороне модели и Я рекомендую ею пользоваться тогда когда вам нужно получить максимально развёрнутый ответ от [музыка] модели мы с вами закончили секцию в которой мы поговорили о разных техниках запросов о PROMT engineering и мы рассмотрели основные техники конечно же с примерами и мы поговорили о технике добавления контекста и в рамках этой техники следует задать ро модели чтобы
она Представила себя допустим инженером программистом учителем начальной школы и так далее Также в рамках контекста мы указывали целевую аудиторию то есть на кого рассчитан ответ модели и также можно добавлять дополнительный контекст то есть детальнее описывать то что вы хотите получить от модели мы поговорили также о том как можно использовать примеры для получения ответов от модели которые будут приближены к формату тех ответов которые вы предоставляете в качестве примеров и по-английски эта техника называется No SH prom Когда вы не предоставляете примеры One Shot PR Когда вы даёте один пример и multiple Shot prom Когда вы даёте много
примеров и мы с вами на практике убедились что не всегда модель учитывает форматы ответов которые вы предоставляете в запросе Но если предоставить как можно больше ответов и вопросов и дополнительно ещё указать текст чтобы модель учитывала собственно говоря формат ответов тогда модель уже принимает во внимание тот формат и тот стиль формирования ответов которые указаны были в примерах Кроме этого мы поговорили о технике уточнения формата и указания ограничений и с помощью такой техники Вы можете указывать в каком объёме Вы хотите получить ответ можно указать структуру ответа можно указать также формат генерации ответа по умолча модель генерирует ответ
в виде txt документа Но на самом деле это markdown стиль Mark формат который отображается в веб браузере но можно формировать ответ и в других форматах таких как допустим CSV PDF Excel Doc PowerPoint даже мы с вами не пробовали все эти форматы но основные форматы мы с вами попробовали на практике и Кроме этого мы поговорили о технике пошагового мышления когда собственно говоря даёте команду модели не просто создать ответ А пошагово описать процесс того как модель пришла к определённому ответу и это особенно актуально для математических вычислений для э для обучения студентов школьников и в таком случае вы
получаете максимально подробный развёрнутый ответ Особенно если это касается каких-то сложных вычислений то есть обычно модель просто так на простой вопрос Сколько будет Допустим как мы пробовали 100 в степени 1.000 не даст вам конкретный ответ А даст примерный текстовый ответ но если вам нужен конкретно точный ответ то Говорите модели выполняйте процесс пошагово это же касается и задач по программированию либо допустим по изучению языков То есть если вы допустим изучаете английский язык либо любой другой язык Вы можете также использовать эту технику чтобы модель вам пошагово описывала Весь процесс мышления То есть это были осно техники существует также
очень много других техник и вы легко можете найти другие техники в интернете с примерами использования и я Рекомендую вам экспериментировать и на практике добиваться того чтобы модель вам давала ответы максимально приближённые к тому что вы ожидаете потому что главное в использовании текстовых моделей искусственного интеллекта - это добиться совпадения уровня ваших ожиданий и ответа от модели Потому что всегда это будет отставать то есть ваше ожидание здесь результат от модели вот здесь вот используя разные техники м формирования запросов вы выравнивается вот эти уровни но снов таки всё зависит от ват То есть вы с помощью ваших текстовых
запросов направляете модель в нужном направлении и снов таки я Рекомендую вам всё-таки писать запросы максимально подробно Если вы хотите получить ответ максимально приближённый к тому что вы [музыка] ожидаете Теперь давайте детальнее поговорим о разных моделях и о том Какими возможностями Они обладают для этого перейдите на платформу Open ai в документацию и далее перейдите по ссылке Models мы уже с вами были на этой странице но мы отсюда перешли на обзор цен для разных моделей На текущий момент самая производительная модель - это gpt 4o но есть уже o1 preview и o1 Mini Они находятся в бета тестировании
На текущий момент и они вот эти следующие модели будут подходить для решения очень сложных задач и я думаю что текущие модели такие как 4o 4 Mini будут использоваться ещё очень много времени и на этой странице Вы можете найти информацию обо всех актуальных моделях включая те конечно же которые будут появляться в будущем и скорее всего вы увидите более новые модели здесь и справа вы видите также информацию о разных моделях в списке и Давайте проведём короткий обзор моделей которые доступны На текущий момент и gpt 4o - это лучшая модель На текущий момент для решения сложных задач которые
состоят из разных этапов То есть у этой модели большой контекст который позволяет вам передавать не только новую информацию но и обрабатывать ту информацию которую вы уже ранее передали в модель включая то что она сгенерировал gpt 4o - это мини-версия модели 4o подходит для большинства задач и эта модель намного дешевле по сравнению с моделью 4o Ну и следующий модели о1 preview и о1 Mini ну следующая модель будет называться логично что просто о1 без preview - это модели для решения сложных задач далее есть gp4 Turbo и gpt 4 - это предыдущий набор моделей и вы видите что
в каждом наборе моделей openi экспериментируют с разным набором названий то есть ранее была модель gp4 и gpt 4 Turbo сейчас же получается Mini и просто модель да то есть 4o Mini и 4o то есть Mini - это как бы аналог gp4 а Turbo это уже переросло в 4о просто снова таки компания растёт и э по-разному подходит к вопросам маркетинга в развитии своих продуктов gpt 3.5 Turbo это быстрая дешёвая модель для простых задач то есть написать какой-то текст для веб-страницы сайта какой-то блогпост либо же откорректировать текст для этих целей очень хорошо подходит предыдущая модель 3.5 Турбо
работает быстро и эффективно для небольших задач далее дали Так я сделаю наверное вот так чуть крупнее далее Дале это модель которая позволяет генерировать и изображение Используя текст то есть на основании текстового ввода вы получаете результаты в виде изображений также в эту модель Вы можете передавать изображение то есть загружать изображение и далее выполнять определённые действия по обработке этих изображений то есть Edit images далее модель ТТС которая позволяет конвертировать текст в аудио причём Вы можете определять какой голос использовать для сгенерированного аудиофайла Whisper - это модель которая наоборот конвертирует аудио в текст то есть по сути выполняет транскрипт
текста и на входе ожидает конечно же аудиофайл разных форматов а на выходе вы получаете уже текст из модели так eding - это набор моделей который конвертирует текст в ю форму дали moderation это модель которая очень хорошо интегрируется в различные допустим Telegram боты либо же другие боты которые должны анализировать текст на предмет того ели там недопустимые слова и решать является ли текст потенциально небезопасным То есть это модель для те То есть вы передаёте туда текст и он отвечает вам является ли этот текст Либо так ну и есть также устаревшие модели de которые ещё доступны для использования
Но не рекомендуются для использования Итак это основные модели и здесь ниже есть собственно говоря описание более детально каждой из моделей и в модели есть снова таки разные под версии вы знаете что для gpt 4o есть также вариант gpt 4o Mini для gpt 4 был вариант Турбо и просто gpt 4 для gpt 35 был также gpt 3.5 и Turbo при этом для использования На текущий момент доступна модель Turbo модель gpt 35 уже является устаревшей и не рекомендуется к использованию также в рамках каждой модели допустим модели gpt 4o есть разные версии и версии добавляются вот таким образом
то есть допустим gpt 35 Turbo и далее номер в рамках вот этой конкретной версии Если вы хотите использовать последнюю версию в рамках допустим gpt 4o то необходимо указывать её вот в таком виде CH gpt 4 4o latest То есть она вот эта версия будет постоянно указывать на самую актуальную версию gpt 4o и как раз именно эта модель gpt 4o используется по умолчанию в Chat gpt Хотя можно это изменить то есть снова таки модели обновляются очень часто и при использовании в конце суфикса latest вы будете уверены в том что вы используете самую последнюю версию модели так
касательно модели которые устаревают вы можете почитать вот на этой странице deprecation page Давайте её откроем так deprecations так здесь есть информация о том Чем отличается deprecation от Legacy так так если мы анонсирует deproc то она становится deproc немедленно так также есть shutdown Date для разных моделей Ну endpoint - это API endpoint имеется в виду который вы можете использовать для обращения к API потому что в API есть понятие разных эндпоинт и при обращении к разным эндпоинт Вы можете взаимодействовать с разными допустим базами данных на сервере либо с разными объёмами данных с разными блоками данных термин Legacy
говорит о том что определённая модель либо эндпоинты не будут более обновляться Вот это Legacy То есть вы можете использовать некоторые Legacy модели которые предоставляет Open ai но вы должны знать что они обновляться не будут то есть обновляются только последние более новые модели и эндпоинты API соответственно так так так так так deproc history так моде которые уже являются вот все новости я вижу последнюю новость На текущий момент так вот указана модель и указана модель на которую Вам следует перейти то есть Open Bet версия 1 уже de следует использовать версию V2 так и shd указа То есть
когда модель станет полностью недоступна Train on bage 002 перейти в gpt 4o Mini то есть и так далее То есть видите здесь информация о о изменениях видна по разным датам также допустим есть информация о изменени цены видите то есть вот модель gpt 4 32k была deproc и shutdown Date указана вот здесь и рекомендуемая модель для замены указана как gpt 4o то есть сос всех этих моделей Vision preview 32k с разными суффиксами следует переходить в модель gpt 4o То есть это рекомендуемая замена и далее указаны другие даты даты устаревание тех или иных моделей конечно же этот
список будет обновляться и более старые модели будут становиться недоступными для использования и Вам нужно будет переходить в вашем API к новым моделям почему это важно потому что при отправке запросов используя API вы указываете какую именно модель вы хотите использовать для формирования ответа То есть вы указываете конкретно название модели допустим gpt 4o либо gpt 4 Mini это мы с вами будем делать позже Так ну и вот допустим пример Legacy end Points То есть ты API которые уже не поддерживаются вместо допустим V1 eng необходимо использовать То есть это ты API на стороне серверов Open Ну и Здесь
также есть VI GU то есть гайды для перехода от старых нпои к новым нпои То есть это всё описано в отдельных статьях При желании Вы можете с этим ознакомиться Итак это информация о устаревания разных моделей с которы также ознакомились так и с вами рассмотрели основные последние модели которые актуальны на текущий момент снов таки в будущем будут появляться новые модели и здесь ниже есть информация по каждой конкретной модели включая размер контекста и максимальное количество токенов на выходе Max output tokens и Давайте об этом поговорим уже в следующем уроке потому что вы должны чётко понимать что такое
Contex Wind Ma Out tokens потому что вот Max output tokens будет влиять на то Насколько быстро вы будете расходовать баланс в вашем аккаунте Итак давайте поговорим об этом в следующем уроке в этой и в следующих секциях мы с вами будем взаимодействовать с Open используя ключ API то есть будем взаимодействовать с сервисами openai не используя Web интерфейс Chat gpt а используя различные программы которые мы с вами будем писать для того чтобы взаимодействовать с openai программно И для этого вам понадобится получить свой ключ openai этот ключ называется API ключ И для этого конечно же вам необходим аккаунт
openi Вы можете зайти на официальный сайт Open и внизу найти опцию API Lin вот эта ссылка API Lin кликните пожалуйста на ней и вы попадёте на страницу platform Open вот эта страница возможно в будущем домен для разработчиков изменится но на текущий момент это pl.com Здесь вам необходимо залогиниться кликнув на Login либо же если у вас ещё нет аккаунта Open ai Вам необходимо создать аккаунт кликнув на sign Up вы можете создать аккаунт используя свой аккаунт Google либо аккаунт Microsoft либо же аккаунт Apple но ещё раз повторю что если у Вас уже есть аккаунт для использования Chat
gpt то как раз его Вам следует использовать для того чтобы залогиниться вот здесь на этой странице для разработчика и я это сделаю у меня уже аккаунт есть Так я вернусь обратно Так давайте я закрою эту страницу и кликнуть логин и я залогин под моим аккаунтом я буду использовать аккаунт Google и я успешно был залогинен на сайте platform Open На текущий момент внешний вид платформы для разра вот такой и здесь сразу видны примеры использования есть информация о различных моделях которые доступны На текущий момент конечно же в будущем будут добавляться новые модели очевидно что следующая модель будет
gpt 5 и так далее слева есть много пунктов меню которые включают всё то что вы можете делать на этой платформе и здесь есть разные секции overview обзор Cap возможности различные гайды для взаимодействия используя API Assistance помощники далее Chat gpt и Best practices где описаны различные примеры использования API Ну и внизу также есть ресурсы то есть Есть информация о ограничениях которые действуют для взаимодействия с API информация о кодах ошибок и так далее То есть мы с вами будем работать с этим левым меню конечно же и мы пройм по большинству этих пунктов и также есть возможность искать
информацию здесь допустим если вас интересует PROMT engineering Вы можете найти PROMT engineering вот таким образом также сверху есть информация которая касается playground dashboard Docs и API reference Вы можете перейти в playground и поэкспериментировать с взаимодействием с Open прямо здесь Но если вы ранее не использовали сервис API то вы увидите то же самое что вижу я то есть если у вас нет ещё API кредитов То есть если вы не подключили свою кредитную карту для взаимодействия с сервисом API вам необходимо будет закончить настройку вашего аккаунта сразу скажу что если у вас есть платный доступ к Chat gpt
это вам автоматически не даёт доступа к сервисам Open API для использования API вам необходимы кредиты и кредиты расходуются по мере использование сервиса API и Насколько быстро они расходуются мы с вами конечно же обсудим Итак это playground далее есть дашборд и здесь есть ссылки на чаты на помощники и так далее То есть несколько разных опций включая также доступ к ключам API я могу сейчас перейти в API kys и на текущий момент у меня нет ключа API который я мог бы использовать для взаимодействия с openai также есть ссылка на документацию и как раз эту страницу мы уже
с вами обсудили то есть здесь есть много различной информации которые касается того как использовать API и как использовать его для разных языков программирования допустим здесь сразу видны примеры допустим для Python и nodejs также можно использовать Open API используя команду curl в командной строке и также есть API reference с тем как собственно говоря выполнить инсталляцию необходимых библиотек для взаимодействия с openai программно информация о ключах API и так далее и для того чтобы нам вами начать процесс взаимодействия с Open ai Program Нам необходимо закончить настройку аккаунта и подключить собственно говоря метод оплаты то есть кликните Finish account
setup На текущий момент я вижу что у меня нет кредитов и необходимо добавить собственно говоря методы оплаты то есть Add payment details я не являюсь сотрудником какой-то компании потому я выбираю individual вы выбираете individual либо же Company зависимо от того как вы планируете использовать сервис API Итак я выбираю individual и здесь необходимо заполнить информацию о вашей карте выбрать billing Address и так далее Итак пожалуйста Заполните эти данные то есть Подключите метод оплаты и далее В следующем уроке мы с вами продолжим обсуждение того как работать с API [музыка] после внесения данных вашей кредитной карты Вам необходимо
указать сумму пополнения вашего баланса и вы можете пополнить баланс допустим на 5 на 10 долларов и При желании можно настроить также автопополнение баланса если допустим у вас сумма на балансе станет меньше 5 долларов тогда можно автоматически пополнить допустим до 10 снова либо до 50 долларов допустим зависимо от ваших планов использования openai я отключу автопополнение и пополню кредит на 10 долларов и снова таки он будет расходоваться по мере использования сервисов API То есть это не ежемесячный платёж то есть столько сколько вы используете API столько Вам необходимо кредита то есть и это может быть растянутого времени То
есть вы можете пополнить допустим на 10 долларов и использовать этот кредит на протяжении нескольких месяцев к примеру Итак после указания суммы Вам необходимо нажать continue и далее подтвердить оплату Итак в моём случае я успешно Пополнил баланс на 10 долларов и здесь снова таки ещё раз замечание что это никак не отражается на использовании аккаунта Chat gpt то есть Chat gpt отдельно API сервис от Open ai отдельно и для использования Chat gpt вы можете приобрести ежемесячную подписку которая на текущий момент стоит для персонального плана 20 долларов а для использования сервисов Open ai Вам необходимо пополнять баланс Итак
на моём балансе уже есть кредиты и я их могу использовать для взаимодействия с сервисом и я могу перейти допустим в playground и здесь я уже могу использовать различные модели Open ai для взаимодействия с сервисами программно Но прежде чем это делать Я хотел бы с вами поговорить о том какие собственно говоря ограничения действуют для разных моделей и как происходит собственно говоря оплата за использование разных моделей раз мы уже начали с пополнения баланса И для этого пожалуйста перейдите в Docs и далее здесь ниже в секции Get Start На текущий момент есть информация о моделях вот информация о
моде пожалуйста перейдите в информацию о моделях и на текущий момент я вижу такие модели как gpt 4o gpt 4o Mini и также есть o1 preview и o1 mini в Beta сново таки Вполне вероятно что вы видите уже более новые модели это абсолютно нормальный процесс развития любого сервиса Open ai развивается создаёт новые более интеллектуальные модели и на текущий момент мне доступна модель gpt 4o это самая продуктивная модель на текущий момент но снова таки Если вы видите более новую модель это абсолютно нормально и вот сейчас мы поговорим о том что такое длина контекста и как будут расходоваться
ваши кредиты собственно говоря Итак здесь можно кликнуть на ссылки и здесь ниже это отдельная Open API pricing на которой описано то как собственно говоря происходит оплата за использование API во-первых оплата зависит от модели и от возможностей этой модели есть модели которые требуют более вычислительных мощностей нежели самые первые модели openai есть те которые работают быстро но не точно скажем так и они более дешёвые и оплата происходит Согласно количеству использованных токенов то есть в мире Open ai главное - это токены но нельзя сказать что одна буква допустим вот этого слова - это один токен либо же вот
это предложение - это один токен Вы должны думать и здесь это написано О токенах как о частях слов и в английском языке 1000 токенов примерно равняются 750 словам снова таки это в среднем по статистике и количество используемых токенов при взаимодействии с текстовой моделью то есть той моделью которую мы привыкли использовать в Chat gpt зависит от языка на котором вы общаетесь с ТМ так вот дешевле всего скажем так общаться с сервисами API на английском языке потому что в английском языке Даже некоторые целые слова равняются всего одному токену А вот допустим Если вы будете говорить на русском
то возможно что одна буква будет равняться одному токену и потому На текущий момент если вы используете язык отличный от английского для текстового общения с с текстовыми моделями конечно же то лучше всего использовать английский на других языках вы будете использовать гораздо больше токенов по сравнению с английским языком Если говорить о количестве символов то один токен снова таки в английском языке примерно равняется четырём символам Но сноки это в среднем потому что в английском языке сноки слово может равняться одному токену в терминах текстовой модели и здесь ниже описаны цены для разных моделей снова таки на текущий момент я
вижу последнюю модель gpg 4o в будущем появятся более новые модели пятая шестая скорее всего и так далее и здесь указаны цены за определённый объём токенов так я сделаю больше Итак если вы используете модель gp4 то цена использования будет примерно 2,5 доллара за 1 млн токенов То есть можно трансформировать это в количество слов мы здесь прочли что 1000 токенов - это примерно 750 слов И следовательно 1 Милн токенов - это 750.000 слов То есть 750.000 слов в текстовой модели это будет вам стоить 2,5 доллара и Кроме этого здесь важно учитывать ещё размер контекста в разных моделях
разный размер контекста Что такое контекст контекст - это объём информации который учитывает модель при формировании ответа вам То есть если вы до этого модели задавали предыдущие какие-то вопросы то они попадают в контекст и сохраняются в модели так вот на текущий момент в gpt 4o размер контекста равняется 128.000 и конечно в будущем скорее всего у более совершенных моделей размер контекста будет больше это говорит о том что при формировании ответа модель будет принимать во внимание намного больше информации которую вы дали ей до этого так Кроме этого здесь в информации о ценах есть информация о ценах для bge
API и вы можете прочесть Что такое bge API ниже и цена будет в два раза ниже нежели указанного здесь и снова таки здесь Как видите Цена указана в данном случае для инпут токенов и также есть понятие атпу токенов То есть инпут - это то что принимает модель на входе аутпут - это то что выдаёт модель на выходе то есть конечно же стоимость формирования результата модели выше нежели стоимость того что вы передаёте в модель и разница здесь в четыре раза как бы 10 долларов стоит 1 млн токенов на выходе из модели Это то что касается цены
gpt 4o и здесь Также есть разные варианты gpt 4o Audio preview допустим и при формировании допустим аудио также всё пересчитывается в токены То есть токены - это скажем так единица в которой измеряется всё в мире Open то есть аудио контент видеоконтент текстовая информация изображение всё переводятся в токены зависимо от того сколько ресурсов тратит модель для формирования ответа вам но как вы видите для разных вариаций этой модели цена примерно одинакова для разного количества собственно говоря токенов так Ну я вижу что для аудио здесь как это по-другому 200 долларов за 1 млн токенов на выходе так Audio
три звёздочки то есть необходимо читать эти все ссылки то есть зависимо от ваших планов использования сервисов Я рекомендую вам детальнее ознакомиться с оплатой именно за определённую модель Так здесь Также можно использовать калькулятор Так давайте допустим выберем gpt 4o Так что такое ширина и что такое высота так 150 пикселей А здесь Наверное речь идёт о изображении которое генерируется так Vision pricing Calculator да возможно это для изображения что ли И вот стоимость одного изображения так А ну-ка давайте посмотрим информация так фиксированная цена за 1 млн токенов 2,5 доллара так есть информация о базовых токенах потом добавляются Tile
tokens так 255 это общее количество токенов количество базовых токенов плюс Tile tokens и получаем цену общую В итоге так так здесь информация ещё есть о bch API и здесь написано что вы можете получить скидку Если вы отправляете запрос в чах то есть блоками и написано что ответы будут генерироваться не сразу то есть это отложенная генерация ответов но ответы вы получаете на протяжении 24 часов и в этом случае вы получаете 50% скидку то есть стоимость также зависит от того насколько много вы отправляете запросов и насколько для вас критично время ответа То есть если вы хотите получить
ответ быстро То следует платить за это больше если вы готовы подождать как в случае с bge API запросами вы получаете скидку то есть тогда в дата-центра Open ai ваши запросы будут обрабатываться Когда в целом будет нагрузка ниже на системы так также есть понятие cash proms и при использовании кэша при взаимодействии с сервисами вы также можете получить скидку 50% и здесь есть ссылка которая ведёт вас к информации о том что такое cashed prompts и ниже написано также что Audio Input То есть если вы передаёте в модель уже аудиоданные то есть допустим MP3 либо же WoW файлы
то стоимость обработки на входе аудиофайлов равняется 6 центов за минуту в среднем Audio output то есть результат генерации Audio стоит примерно 24 цента за минуту то есть вот такая средняя стоимость то есть 6 центов за минуту на входе Когда вы отправляете аудио в модель и на выходе 24 цента то есть в четыре раза больше нежели то что вы передаёте в модель так далее снова таки указана цена для других моделей допустим для gpt 4o mini цена намного выше нежели для gpt 4o и на текущий момент gpt 4o считается самой производительной моделью самой скажем так умной моделью
но она работает медленнее нежели предыдущей модели Вам необходимо это учитывать но она и дороже то есть мы только что с вами говорили о ценах gpt 4o более дешёвая это меньшая модель и конечно же она не такая умная как gpt 4o но намного умнее gpt 3.5 Turbo и у неё также большой контекст 128000 и на текущий момент знания этой модели ограничиваются вот такой датой но я думаю что конечно же Open ai будет и переучивать свои модели регулярно и если вы допустим смотрите это видео допустим в 2026 году то скорее всего что конечно же у модели есть
уже знания на момент допустим 2025 года но из-за того что у gpt 4o уже есть возможности взаимодействия с интернетом и поиск в интернете Вы можете получать также актуальную информацию основанные на данных в интернете но снова таки данные для обучения самой модели всегда будут отставать от текущего момента потому что обучение модели тренировка модели занимает очень много времени потому вы и будете видеть небольшое отставание в в датах обучения той или иной модели Итак для gpt 4o Mini стоимость следующая 0,15 долларов за 1 млн инпут токенов и в четыре раза больше за 1 млн апу токенов то есть
эта модель в разы дешевле нежели gpt 4o и снова таки есть вариант bge API и также как и для gpt 4o разница в два раза так также есть калькулятор так так так openai o1 preview это следующая модель которая находится в бета версии на текущий момент и её стоимость намного выше нежели 4 ома модели 15 долларов за 1 млн инпут и 60 долларов за 1 млн аутпут токенов То есть вы должны понимать что чем умнее и чем интеллектуальные становятся модели тем дороже будет использование этих моделей Поэтому я думаю что много задач в будущем будут всё-таки решаться
более старыми более производительными и более дешёвыми моделями то есть там где позволительно как бы получать немного неточные ответы Э где чатбот может ошибаться допустим и так далее Вот но снова таки это логично что более современные модели будут стоить дороже так э o1 Mini также есть это вариант вот этой модели o1 preview No Mini но на текущий момент стоимость Вот такая то есть 3 доллара за 1 млн инпут токенов снова таки конечно же стоимости будут изменяться так есть понятия embedding Models такие как Text eding Small large и стоимость очень небольшая то есть такие модели подходят для
каких-то рутинных задач которые не требуют особой точности для поиска данных и так далее и ниже также есть информация о кастомных моделях которые вы можете подстраивать под себя то есть вы можете предоставлять таким моделям свои данные допустим данные из своий компании Вы можете загрузить в модель модель обучится на ваших данных на ваших данных и далее будет использовать уже ваши данные для формирования ответов и здесь есть ссылка на то как собственно говоря выполнять создание таких моделей вами самостоятельно и детали о использовании таких моделей цены для этих моделей 15 долларов за А за 1 млн апу токенов и
25 долларов почти в два раза больше за 1 млн Training tokens так есть разные основы такие модели и разные стоимости так Real Time API так Low latency очень быстрые модели но снова таки я уже сказал что от скорости зависит цена Если вы хотите получать ответы в реальном времени допустим Если вы строите какой-то сервис для реального перевода текста либо же создаёте робота который будет моментально реагировать на какие-то команды то конечно вам понадобится использование Real Time API то есть обработка текста и аудио в реальном времени и конечно же это будет стоить очень дорого то есть 5 долларов
за 1 млн инпут токенов и 20 долларов вче раза больше за 1 Милн апу токенов и для аудио цены будут ещё выше То есть если вы хотите сделать говорящего робота который будет с вами общаться и заменит вам лучшего друга то придётся платить очень много за генерацию аудио этим роботам потому дешевле будет найти друга вс-таки я думаю так так так хорошо API то здесь есть снова таки разные варианты Assistant API - Это помощник для для программистов Code interpreter 0.03 доллара за сессию поиск в файлах Image Models На текущий момент Open использует dy для генерации изображений и
есть разные варианты этой модели D На текущий момент d 3 самые производительные и вы видите стоимость генерации изображения то есть стандартное изображение вот такого разрешение будет стоить Вам 4 цента за изображение и есть другие варианты други других разрешений и стоимость указана справа снова таки это собственная модель API для генерации изображений и здесь есть ссылка с деталями детали о том как работает модель дали и как её использовать то есть дали используется чаще всего для генерации изображений по текстовому вводу и вот справа указаны стоимости зависимо от модели стоимость разная и конечно более старые модели будут вам обходиться
дешевле и небольшие изображение вот такого разрешения можно генерировать за полтора цента так аудио модели для конвертации текста в аудио допустим вы передаёте в модель текст И хотите получить на выходе уже аудио либо же перевести допустим текст в на другой язык и делается это с помощью Whisper и стоимость Вот такая то есть почти Ну пол цента скажем так за минуту при обработке и при генерации аудио то есть текст в аудио либо же либо же перевод так есть другие модели здесь указаны более старые модели gpt 4 gpt 35 Turbo и видите стоимость сильно отличается от актуальных моделей
то есть gpt 35 Турбо стоит полдоллара за 1 млн токенов Так ну и здесь в этой колонке указана стоимость за токены в этой колонке указана стоимость за аутпут токены то есть ипу апу и здесь как вы видите разница в два раза в некоторых случаях в некоторых почти одинаково зависимо от модели Ну и снова таки можно использовать bge API тогда стоимость будет в два раза ниже но таки всё это уже считаются как бы предыдущие устаревшие модели но тем не менее они быстрые и дее и ниже в самом конце информация о том ещё раз что такое токены
и я уже вам сказал что в английском языке один токен примерно равняется четырём символам либо же 0.75 слов и снова таки это средние показатели Но это зависит также от языка который вы используете и здесь есть ссылка на to Tool и я предлагаю рассмотреть эту утилиту но не в этом уроке и Я думаю что для этого урока достаточно то есть мы с вами поговорили о том какая стоимость использования разных моделей и о том что такое токены то есть в мире Open ai используются токены как и во многих допустим играх и эффективнее всего с текстовыми моделями взаимодействовать
используя английский язык для других языков генерация текста будет медленнее за счёт того что там используется больше токенов то есть там чаще всего один символ слова равняется одному токену и конечно для других языков стоимость использования API будет у вас обходиться дороже нежели при работе с английским языком Итак Это то что касается стоимости использования API и вы платите по мере использования сервиса API то есть нет понятия подписки вы Пополняется баланс Вы получаете ключ API и вы его используете для взаимо действия с разными моделями которые мы обсудили здесь То есть вы можете взаимодействовать и с моделью Whisper для
генерации аудио на основании текста Можете взаимодействовать с моделью дали для получения изображений А можете взаимодействовать с самой популярной текстовой моделью которую вы привыкли использовать в чат gpt Итак Это то что касается стоимости и того что такое токены и как они используются при взаимодействии с разными моделями мы Обсудили с вами то сколько стоит использование разных моделей и мы поговорили о том что такое токены и для того чтобы более точно вы понимали что такое токен есть сервис который называется tokenizer доступен вот по этой ссылке и Здесь вы можете добавить онные тексты и вы увидите сколько токенов это
вам обойдется если вы допустим этот текст передадите через сервис API в одну из моделей Здесь вы можете выбрать определённую модель и далее добавить определённый текст либо же просто нажать Example если я нажму Example то здесь появится допустим вот такой текст и я вижу что он равняется 5 токенам и ниже указана разбивка то есть указа высчитываются конкретно количество токенов для этого текста допустим одно слово Many равняется одному токену пробел равняется также одному токену есть длинные слова такие как допустим indivisible и indivisible разбита на две части Это означает что вот это один токен а - это второй
токен двоеточие - это также отдельный токен запятая отдельный токен то есть вот так формируется собственно говоря количество токенов для определённого текста так давайте-ка посмотрим как это происходит для других моделей допустим модель gpt 3.5 так здесь будет немножко больше токенов так А ну-ка ещё раз Здесь 53 токена в gpt 35 57 токенов в gpt 3 64 токена то есть вот количество символов у нас не изменяется при этом количество токенов у нас немного отличается для разных моделей но в целом количество близкое для разных моделей то есть но вот таки в среднем для английского языка один токен это
в среднем четыре символа либо же 100 токенов - Это примерно 75 слов так давайте я допустим сюда передам какой-то текст кириллицей Так давайте здесь напишем Напиши текст длиной 250 символов так так вот текст я его скопирую отсюда и вставлю в tokenizer так так Ну здесь я как бы вижу примерно то же самое количество токенов то есть для кириллицы как мы видим количество токенов не сильно изменилось Хотя в документации ранее я видел что для некоторых языков оди токен равняется одному символу так а ну-ка Давайте попробуем так а ну-ка предыдущей модели так вот здесь видите у предыдущей
модели gpt 35 в два раза больше токенов то есть здесь видите как раз та ситуация о которой мы говорили с Вами отдельные буквы здесь равняются одному токену допустим вот здесь вот здесь это модель 354 хуже один токен То есть в последних моделях которые я вижу на текущий момент для кириллицы количество токенов существенно уменьшается для того же объёма текста Так а ну-ка давайте переведём допустим на японский Переведи на японский Так давайте возьмём это же текст на японском вставим сюда так здесь 84 токена Хотя кириллицей было 55 токенов на английском языке было 40 с чем-то то есть
здесь получается что один иероглиф - это отдельный токен и это чётко видно здесь хотя нет хотя вот здесь есть четыре иероглифа которые равняются одному токену возможно какие-то популярные комбинации иероглифов Рав одному токену как в принципе и в английском языке более популярные слова которые чаще всего встречаются равняются одному токену так Давайте попробуем другой язык так переведи переведи на немецкий к примеру то есть снова таки здесь мы видим явно что количество токенов больше так в предыдущих моделях ещ больше 170 токенов в первой модели gpt-3 так возьмём текст на немецком так вставим сюда 60 токенов тот же принцип
что и для русского То есть в принципе в современных моделях уже можно не сильно переживать за язык на котором вы общаетесь с текстовыми моделями потому что как вы видите для разных языков количество токенов примерно одинаково и один токен равняется одному слову то есть мы явно видим разбиение на токены для разных языков здесь Но для предыдущих моделей количество токенов больше то есть больше всего токенов использовалось в gpt-3 хотя мы видим что для кириллицы в gpt-3 один символ равнялся одному токену для немецкого языка мы видим что уже даже в gpt-3 было эффективное э разбиение текста на различные
слова и части то есть токенов здесь меньше нежели Для текста кириллицы так хорошо Это то что называется tokenizer и используя кейр Вы можете высчитать количество токенов для разных текстовых блоков на разных языках что мы собственно говоря с вами и сделали и вы видите что текущие модели и конечно же будущие модели которые появятся в дальнейшем пятая шестая и так далее эффективно разбивают текст на части и примерно вы можете рассчитывать что одно слово - это один токен Ну в среднем четыре символа это один токен если смотреть на статистику которую мы видим вот здесь но снова таки это
статистика для английского языка мы видим что для других языков количество токенов Немного больше на процентов 10 по сравнению с английским языком Итак это информация касательно того сколько токенов вам потребуется для того чтобы допустим передать такой текст в модель либо если модель генерирует вот такой текст то это равняется 60 токенам и далее вы смотрите на стоимость допустим для gpt 4o это 2,5 доллара за 1 млн инпут токенов и Можете посчитать сколько Вот таких текстовых блоков Вы можете передать в модель Ну генерация такого текста будет стоить 4 раза дороже нежели то что вы передаёте в модель Вот
и можете посчитать Примерно сколько вы сможете Вот таких текстовых блоков получить от сервиса API Итак Это то что касается токенов и расчёта токенов в [музыка] openi Теперь давайте детальнее поговорим о разных моделях и о том Какими возможностями Они обладают для этого перейдите на платформу openai в документацию и далее перейдите по ссылке Models мы уже с вами были на этой странице но мы отсюда перешли на обзор цен для разных моделей На текущий момент самая производительная модель - это gpt 4o но есть уже о1 preview и о1 Mini Они находятся в бета тестировании На текущий момент и
они вот эти следующие модели будут подходить для решения очень сложных задач и я думаю что текущие модели такие как 4o 4o Mini будут э использоваться ещё очень много времени и на этой странице Вы можете найти информацию обо всех актуальных моделях включая те конечно же которые будут появляться в будущем и скорее всего вы увидите более новые модели здесь и справа вы видите также информацию о разных моделях в списке и Давайте проведём короткий обзор модели которые доступны на текущий момент и gpt 4o - это лучшая модель на текущий момент для решения сложных задач которые состоят из разных
этапов То есть у этой модели большой контекст который позволяет э вам передавать не только новую информацию но и обрабатывать ту информацию которую вы уже ранее передали в модель включает то что она сгенерировал gpt 4o - это мини-версия модели 4o и подходит для большинства задач и эта модель намного дешевле по сравнению с моделью 4o Ну и следующая модели o1 preview и o1 Mini ну следующая модель будет называться логично что просто o1 без preview - это модели для решения сложных задач далее есть gpt 4 Turbo и gpt 4 - это предыдущий набор моделей и вы видите что
в каждом наборе моделей Open ai экспериментируют с разным набором названий то есть ранее была модель gp4 и gp4 Turbo сейчас же получается Mini и просто модель да то есть 4o Mini и 4o то есть Mini - это как бы аналог gpt 4 а Turbo э это уже переросло в 4o просто снова таки компания растёт и по-разному подходят к вопросам маркетинга в развитии своих продуктов gpt 3.5 Turbo - это быстрая дешёвая модель для простых задач то есть написать какой-то текст для веб-странице сайта какой-то блогпост либо же откорректировать текст для этих целей очень хорошо подходит предыдущая модель
3.5 turb работает быстро и эффективно для небольших задач дали Так я сделаю наверное вот так чуть крупнее далее дали - это модель которая позволяет генерировать и редактировать изображение Используя текст то есть на основании текстового ввода вы получаете результаты в виде изображений также в эту модель Вы можете передавать изображения то есть загружать изображения и далее выполнять определённые действия по обработке этих изображений то есть IM далее модель ТТС которая позволяет конвертировать текст в аудио причём Вы можете определять какой голос использовать для сгенерированного аудиофайла Whisper - это модель которая наоборот конвертирует аудио в текст то есть по сути
выполняет транскрипт текста и на входе ожидает конечно же аудиофайл разных форматов а на выходе вы получаете уже текст из модели так eddings - это набор моделей который конвертирует текст в числовую форму дали moderation это модель которая очень хорошо интегрируется в различные допустим Telegram боты либо же другие боты которые должны анализировать текст на предмет того если там недопустимое слова и решать является ли текст потенциально небезопасным То есть это модель для модерации текста То есть вы передаёте туда текст и он отвечает вам является ли этот текст Save либо UN Save Так ну и есть также устаревшие модели
deprecated которые ещё доступны для использования Но не рекомендуются для использования Итак это основные модели и здесь ниже есть собственно говоря описание более детально каждой из моделей и в рамках каждой модели есть снов таки разные под версии вы знаете что для gpt 4o есть также вариант gpt 4o Mini для gpt 4 был вариант Turbo и просто gpt 4 для gpt 35 был также gpt 3.5 и Turbo при этом для использования На текущий момент доступна модель tur модель gpt 35 уже является устаревшей и не рекомендуется к использованию также в рамках каждой модели допустим модели gpt 4o есть
разные версии и версии добавляются вот таким образом то есть допустим gpt 35 Turbo и далее номер в рамках вот этой конкретной версии Если вы хотите использовать последнюю версию в рамках допустим gp4 то необходимо указывать её вот в таком виде Chat gpt 4 4o latest То есть она вот эта версия будет постоянно указывать на самую актуальную версию gpt 4o и как раз именно эта модель gpt 4o используется по умолчанию в Chat gpt Хотя можно это изменить то есть снова таки модели обновляются очень часто и при использовании в конце суфикса latest вы будете уверены в том что
вы используете самую последнюю версию модели так касательно модели которые устаревают вы можете почитать вот на этой странице deproc page Давайте её откроем так deprecations так здесь есть информация о том Чем отличается deprecation от Legacy так так если мы анонсирует модель является deprecated то она становится deprecated немедленно так также есть shutdown Date для разных моделей Ну endpoint - это API endpoint имеется в виду который вы можете использовать для обращения к API потому что в API есть понятие разных эндпоинт и при обращении к разным эндпоинт Вы можете взаимодействовать с разными допустим базами данных на сервере либо с
с разными объёмами данных с разными блоками данных э термин Legacy говорит о том что определённые модели либо эндпоинты не будут более обновляться Вот это Legacy То есть вы можете использовать некоторые Legacy модели которые предоставляет Open ai Но вы должны знать что не обновляться не будут то есть обновляются только последние более новые модели и эндпоинты API соответственно так э так так так так deprecation history так история э модели которые уже являются deprecated вот все новости я вижу последнюю новость На текущий момент э так вот указана модель и указана модель на которую Вам следует перейти то есть
Open A Beta Assistance версия О уже deprecated следует использовать версию V2 так и shutdown Date указано то есть когда модель станет полностью недоступна так New F Tuning Training on bage 002 перейти в gpt 4o Mini то есть и так далее То есть видите здесь информация о о изменениях видна по разным датам также допустим есть информация о изменении цены видите то есть вот модель gpt 432 была deprecated и shutdown Date указана вот здесь и рекомендуемая модель для замены указана как gpt 4o то есть со всех этих моделей Vision preview м 32k с разными суффиксами следует переходить
в модель gpt 4o То есть это рекомендуемая замена и далее указаны другие даты даты устраивания тех или иных моделей конечно же этот список будет обновляться и более старые модели будут становиться недоступными для использования и Вам нужно будет переходить в вашем API к новым моделям почему это важно потому что при отправке запросов используя API вы указываете какую именно модель вы хотите использовать для формирования ответа То есть вы указываете конкретно название модели допустим gpt 4o либо gpt 4o Mini это мы с вами будем делать позже Так ну и вот допустим пример Legacy ends то есть end API
которые уже не поддерживаются вместо допустим V1 engines необходимо использовать V1 Models То есть это endp API на стороне серверов openai Ну и Здесь также есть vie transition Guide то есть гайды для перехода от старых нпои к новым нпои То есть это всё описано в отдельных статьях При желании Вы можете с этим ознакомиться и так это информация о устаревания с который мы также ознакомились так и мы с вами рассмотрели основные последние модели которые актуальны На текущий момент снов таки в будущем будут появляются новые модели и здесь ниже есть информация по каждой конкретной модели включая размер контекста
и максимальное количество токенов на выходе Max output tokens и Давайте об этом поговорим уже в следующем уроке потому что вы должны чётко понимать что такое context Window и Max output tokens потому что вот Max output tokens будет влиять на то Насколько быстро вы будете расходовать баланс в вашем аккаунте Итак давайте поговорим об этом в следующем [музыка] уроке Давайте продолжим обсуждение возможностей разных моделей и на текущий момент gpt 4o является самой самой лучшей моделью из всех и это мультимодальная модель Это означает что она может принимать текст изображения другие типы файлов такие как допустим CSV файл либо
Excel файл выдавать текст выдавать допустим таблицы и так далее и она эта модель генерирует текст в два раза быстрее по сравнению с моделью gpt 4 Turbo и в два раза дешевле и если помните мы с вами смотрели tokenizer и мы с вами выяснили что для других языков отличных от английского количество токенов примерно такое же как и для английского языка в модели gpt 4o и это описано здесь то есть это самая лучшая модель с точки зрения эффективности её использования на других языках отличных от английского и здесь есть ссылка на гайд по использованию этой модели для генерации
текста Но мы с вами позже будем конечно же использовать разные модели для генерации текста изображений аудио и так далее То есть мы поработаем с вами на практике с разными моделями начиная конечно же с модели gpt 4o Ну давайте ниже посмотрим информацию о возможностях каждой модели Итак gpt 4o имеет размер контекста 128.000 токенов это воспринимаете как размер памяти этой модели и то что было ранее 128.000 токенов забывается моделью То есть если вы долго общаетесь с моделью даёте разные текстовые данные изображения и так далее То самые старые данные старше вот этого объёма забывают моде это максимальное количество
токенов которые модель может выдать за один раз то есть 16.000 токенов и конечно Для более эффективного использования ваших ресурсов точнее ваших денег Скажем так которые Вы загружаете в свой баланс вам В некоторых случаях следует конечно же ограничивать максимальное количество токенов на выходе То есть это максимальные возможности модели но зачастую при общении с и это мы с вами будем также делать на практике Вы можете вручную ограничивать количество токенов на выходе допустим можете сказать что для таких-то запросов максимальное количество токенов должно быть 1.000 не более Потому что если у вас есть опыт общение сча gpt Вы знаете
что текстовые модели могут выдавать очень большие объёмы текста но снова таки есть максимальные ограничение есть ваши ограничения которые вы можете указывать при отправке API запросов и я вам крайне рекомендую думать над тем Какие допустимые ограничения для данных на выходе и указывать их в API запросах но Вы также должны понимать что как только модель достигает лимита вот этого Либо вашего лимита который вы указали то вывод просто обрывается Вы конечно можете отправлять следующий запрос с просьбой продолжить генерацию результатов и тогда используя контекст чатбот допустим модель 4o продолжит вам генерацию текста И вы тогда должны уже программно объединить
разные части сгенерированного текста то есть это конечно возможно но снова таки я Рекомендую вам всегда ограничивать максимальное число токенов на выходе и делать его конечно же гораздо меньше нежели возможности модели Так ну и далее указано Training Data То есть те данные которые использовались для тренировки модели и я думаю что ну на текущий момент отставание идёт В год примерно самая первая модель была тренированных на конец 2021 года и я думаю что вот сейчас когда я записываю эти видео Идёт тренировка заново модели и скоро будет доступна более новая модель с более актуальными данными так дальше есть другие
версии gt4 То есть это информация о самой последней версии gpt 4o но вы знаете что есть разные подверг так вот gpt 4 All latest - это по сути та же самая модель которая указывает на самую последнюю версию gpt 4o так э так вот есть gpt 4o snapshot и у неё 4.000 токенов на выходе максимальное ограничения но Training Data одинаково для всех так gpt 4o Mini здесь размер контекста также 128000 токенов и gpt 4o Mini пришла на на замену gpt 35 Турбо А всё-таки Турбо видите это была более быстрая модель но менее интеллектуальная а gpt 35
была более скажем так функциональна и рекомендуется использовать gpt 4o mini там где вы ранее использовали gpt 35 Turbo то есть эта модель дешевле нежели gpt 3.5 Turbo и более функционально то есть размер контекста больше 128.000 токенов такой же как и в gpt 4o и Max output tokens такое же большое 16.000 токенов снова таки она более быстрая по сравнению с gpt 4o и рекомендуется использовать её вместо gpt 35 Turbo так э gpt 4o realtime Plus Audio находится в бета тестировании На текущий момент и скоро я думаю будет опубликовано ограничения указаны вот здесь то есть максимальное количество
токенов 4.000 на выходе то есть в четыре раза меньше нежели для gpt 4o Mini но используется для генерации м текста и аудио в реальном времени и они могут также принимать аудио и текст так о1 preview и о1 Mini будут обладать таким же размером контекста Но количество токенов будет в два раза больше нежели у 4o На текущий момент и o1 Mini будет дешевле и лучше для программирования для математики для Data Science и для схожих задач которые выполняются при обработке данных Итак на текущий момент есть о1 preview есть о Min у1 о1 Min обладает вот таким количеством
токеном на выходе то есть оми сможет за один запрос написать за вас небольшую программу полностью от начала до конца но снова таки пока что это находится в бета тестировании так предыдущие модели gt4 Turbo и 5 4 они позволяли собственно говоря иметь размер на 128.000 gpt 4 Turbo а максимальное количество токенов 4.000 то есть вче раза меньше нежели gpt 4o так ниже есть информация о gpt 4 Ну gpt 4 хуже нежели gpt 4 Turbo Так ну я здесь сказал что выше что на самом деле так как мы обсуждали ранее Так оно и есть на самом деле
Турбо версия она лучше лучше обычной версии то есть здесь было написано что gpt 4o Mini рекомендуется использовать вместо gpt 35 Turbo а gpt 35 turb лучше нежели gpt 35 gpt 4 Turbo лучше нежели gpt 4 То есть это видно вот здесь вот мер контекста Max output tokens для gpt 4 Turbo - это предыдущая самая мощная модель скажем так м перед gpt 4o А gpt 4 88.000 токенов это размер контекста и максимальное количество токенов для генерации на выходе то есть 88.000 Ну и конечно же данные на конец ну на сентябрь 2021 года то есть на текущий
момент эта модель уже сильно устарела На мой взгляд но её всё ещё можно использовать для задач которые не требуют каких-то актуальных данных которые появились допустим где-то в интернете после этой даты То есть для базовых задач gpt 4 ээ подходит очень хорошо так но выше мы с вами обсудили что gpt 4o Mini дешевле нежели gpt 3.5 Turbo к примеру Поэтому лучше использовать уже gpt 4o Mini для различных задач Так ну и написано что dp4 на ну это старая снова таки информация То есть она уже лучше работала с разными языками по сравнению с gpt 35 но gpt
4o ещё лучше это делает ещё оптимальнее работает на разных языках отличных от английского Так ну здесь снова таки заметка Что gpt 4o Mini следует использовать вместо gpt 3.5 Turbo то есть gpt 3.5 Turbo как бы считается уже устаревшей моделью но всё ещё поддерживается на текущий момент снова таки Ну я думаю что в будущим она станет deprecated то есть вот информация об этой модели то есть максимальный аутпут в токенах 4.000 токенов gpt 3.5 Turbo Так ну и далее идёт информация о других моделях То есть те модели которые мы с вами рассмотрели это больше текстовые модели но
gpt 4o и 4o Mini - это мультимодальные модели которые поддерживают разные форматы ввода Вы можете передавать изображения и другие данные допустим CSV либо текстовые файлы далее Дале эта модель сугубо для работы с изображениями и на текущий момент дали 3 - это самая последняя версия и также генерация изображения доступна вам если вы являетесь платным пользователем gpt gpt Бота То есть если у вас есть подписка Chat gpt п которая стоит около 20 долларов в месяц так ТТС - это модель для конвертации текста в в аудио и есть разный вариант этой модели TTS 1 оптимизирована для реально времени
TTS 1 HD оптимизирована касательно качества то есть работает медленнее но выдаёт более качественные аудиофайлы на выходе то есть ts1 и ts1 HD Whisper позволяет распознавать текст и на текущий момент доступна модель V и называется модель про Whisper 1 вот так один и есть также Open Source версия Whisper и как раз Open Source версия доступна через API сервис То есть если это Open Source версия то это означает что вы сами можете развернуть её у себя где-то на сервере При желании Так ну написано что конечно же использование Whisper через Open позволит вам выполнять задачи более быстро так
детали вот здесь по ссылке eding это презентация текста в в числовом виде для того чтобы можно было кластери Зро текст искать текст искать аномалии в тексте то есть эта модель подходит для Data Science то есть для различных задач по обработке данных которые касаются работы с тек и модель указана вот здесь название модели есть версии так модерация это то что мы уже обсуждали то есть позволяет анализировать текст на предмет наличия различного текста который попадает Вот в эти категории насилие и так далее и называтся моде последня версия на текущий момент вот такая максимальное количество токенов 32.000 и
также есть другие варианты Tex moderation latest TT moderation stable и другие так gpt Base позволяют генерировать так generate Natural Language то есть генерируют либо код либо же либо же текст и подходит для Так ну является замена gpt 3 Base модели так называется просто модель gpt Base здесь есть DaVinci и bage Но мы с вами читали о том что рекомендуется переходить с этих моделей на gpt 4o Mini кажется то есть мы это смотрели в deprecation гайде так так информация о так так написано дальше как Open использует те данные которые вы предоставляете openai при взаимодействии написано что
API данные могут сохраняться до 30 дней и через 30 дней данные удаляются так для серьёзных клиентов можно договориться о вообще не сохранении данных в принципе то есть То есть если вы попросите Open Если вы серьёзный клиент то ваши данные вообще не будут сохраняться в принципе и не будут использоваться для дальнейших тренировок моделей потому что логично что Open использует ваши данные для дальнейших тренировок по крайней мере это касается бесплатных чато Вт gpt но сноки здесь дальше ниже уза Будет ли использовано то что вы передаёте в Open для тренировки дальнейших моделей или нет допустим Если вы взаимодействует
с таким эндпоинт не используются данные сохраняются 30 дней есть вариант то есть немедленного удаления данных снов таки по договорённости Так ну вот для большинства НВ Мы видим что данные использу для ни моделей и данные сохраняются 30 дней вот везде указано в колонке где указано используются данные для тренировки модели или нет для этих нпои которые вы видите вот здесь снов таки по этим НМ вы обращаетесь для отправки тех или иных запросов через API сервис То есть это эндпоинты на стороне серверов Open так другие-то сно так ну в принципе и всё так и далее ещё в конце
указана информация о каждом эндпоинт то есть какие эндпоинты используются в каких моделях то есть V1 Assistance используется для модели gpt 4o и 4o Mini 4 просто 3.5 Turbo То есть вы можете отправлять запрос вот по такому эндпоинт причём указывать Какую модель вы хотите использовать gpt 4 gp4 либо gt35 Turbo То есть вы указываете это в запросе API вот такой endp используется для модели Whisper 1 вот такой end также используется для Whisper 1 это для для получения транскрипции Это для перевода Так spe это получается для формирования аудио в аудио для этого используется TTS 1 TTS 1
HD модели то есть вот указано отдельные эндпоинты для Whisper это аудио в текст либо же аудио в аудио то есть перевод спи Это трансляция текста в аудио так completions так для разных моделей используется также начиная с 4 на текущий момент и заканчивая моделями gpt 35 Turbo так есть вот устаревший endpoint видите просто ving completions то есть теперь endpoint называется V1 Chat completions То есть если вы разрабатываете приложения которые взаимодействуют с Open програмно Вы должны отслеживать актуальность нпои и обновлять ваше приложение соответственно так endpoint для eddings моделей для модели для модерации текста есть отдельный endpoint V1
moderation и модели указаны здесь Text moderation stable Text moderation latest для генерации изображений используется вот такой endpoint images Generations Real Time вот такие так это вся информация на этой странице Где находится список всех актуальных моделей и конечно список будет обновляться в будущем поэтому я Рекомендую вам заглядывать сюда время от времени Если вы занимаетесь серьёзно созданием приложений для взаимодействия с Open ai и смотреть какие модели становятся доступными Какие становится deprecated Какие эндпоинты следует использовать и так далее То есть это информация о моделях и о их возможностях То есть вы видите что основная модель на текущий момент
gpt 4o - это мультимодальная модель то есть позволяет получать данные в разной форме и выдавать данные в разной форме но допустим если если вам требуется получить изображение из модели gpt 4o то изображение генерируется конечно же моделью дали и передаётся дальше в gpt 4o для возврата вам Итак это основной функционал и на текущий момент как вы видите модели Open ai позволяют работать с разными типами данных текстовые данные изображения данные в виде структурированных таблиц CSV Excel работа с презентациями также доступна PowerPoint к примеру генерируются также моделями далее есть работа с аудио конвертация текста в аудио и наоборот
формирование транскрипта из аудио в текст далее работа с изображениями и допустим модерация текста то есть это основные модели которые доступны в openai [музыка] Итак мы с вами рассмотрели разные модели которые предлагает openi и Кроме этого мы поговорили о стоимости токенов и также поговорили о ограничениях каждой из моделей и сейчас пришло время перейти уже к практике И на самом деле вы можете попробовать любую из моделей прямо на платформе Open ai перейдя в playground но Конечно вы увидите PlayGround только если у вас есть не нулевой баланс и ранее Я показывал как пополнить баланс для использования API сервиса
Давайте посмотрим на функционал плейграунд и справа можно выбрать модель с которой вы хотите взаимодействовать и список моделей виден здесь то есть есть для текущего момента gpt 4o 4 Min 4 Turbo 4 3,5 Turbo и другие вариации этих моделей собственно говоря с разными суффиксами такими как gpt 35 суфиксом Turbo 16k Но конечно со временем старые модели уже будут отсюда убраны давайте я оставлю допустим модель gpt 3.5 Turbo и ниже можно добавлять разные функции и можно вызывать в процессе взаимодействия с моделью определённые функции допустим такие как указаны здесь Get Stock Price и формат данных которые вы видите
вот здесь называется J и J - это объект который состоит из пар ключ значения вот допустим ключ name в двойных кавычках и после двоеточия значение этого ключа это Get Stock Price ключи в объекте Jon обязательно должны быть в двойных кавычках то есть здесь все ключи такие как параметры Property свойства Type и другие находятся в двойных кавычках а значения могут быть шести разных типов первый самый популярный - это строки также есть числа но здесь чисел не видно в этом примере далее True false логические значения массивы Вот пример массива в качестве значения объекты также могут быть значениями
для определённых свойств и ещё есть одно значение N Так давайте пока нажмём здесь cancel далее можно Указать тип ответа текст либо же J объект либо же J сма по умолчанию выбран вариант текст то есть При желании Вы можете получать ответ в формате J для того чтобы в дальнейшем допустим обрабатывать его программно и когда мы будем программно взаимодействовать с сервисом API как раз мы будем получать ответы в формате Jon здесь же в плейграунд можно получать данные в формате текста потому по умолчанию respons формат текст далее есть опции настройки модели Model configuration вот этот блок и первый
риант настройки - это temperature температура и температура по умолчанию стоит как один и минимальное значение ноль максимальная два то есть стоит по центру один температура указывает на то насколько модель включает Случайность скажем так в процесс генерации ответа то есть насколько ответы будут случайными и насколько они будут отличаться друг от друга Если вы даёте одни и те же вводные данные и Чем ниже температура тем меньше будет скажем так Случайность работы модели randomness по-английски Чем выше тем больше будет randomness потому по умолчанию стоит один То есть это среднее значение далее можно ограничить максимальную длину вывода в токенах
и причём это число включает в себя также и ваш запрос то так но я не могу выделить это То есть если навести курсор мыши на maum L то вы увидите что это количество токенов которое включает PROMT и completion То есть то что выводится в результате работы модели и вы должны помнить что один токен равняется примерно четырём символам для английского текста но и для других языков в принципе такое же количество то есть примерно также четыре символа то есть мы с вами анализировали тексты на русском на немецком и примерно получали такое же количество токенов как и для
английского языка для модели 4о и конечно же для будущих моделей это не будет хуже то есть будет только лучше то есть для разных языков в принципе количество токенов сопоставимо и можно общаться с моделями на разных языках не обязательно на английском Хотя ранее говорил что для других языков количество токенов которые потребу будет больше но это касается предыдущих моделей то есть четвёртой и модели 3.5 так вот здесь вы можете указать максимальную длину в токенах и чем меньше тем Следовательно оптимальнее Вы будете использовать ресурсы API И следовательно меньше будете платить за использование API по умолчанию Maximum L для
этой модели А я выбрал модель gpt 35 Turbo стоит по центру можно выбрать другую модель давайте выберем 4o mini к примеру и вы видите что 2026 стоит где-то в начале уже видите Хотя максимальное значение 16.000 но снов таки я не Рекомендую вам указывать максимальное значение то есть исходите из дефолтной для определённой модели Так давайте выберу gpt 35 Turbo и выберу значение посредине 2068 далее есть STOP sequences и здесь можно указывать до четырёх последовательностей и Stop sequence указывает момент когда API будет останавливаться и не будет выдавать следующие токены то есть следующие текстовые данные и текст который
возвращается не будет содержать эту сто последовательность то есть допустим Вы можете указать Здесь три знака вопроса и если в выдаваемом тексте от модели появится три знака вопроса тогда модель остановится и не будет больше выдавать токены но при этом эти три знака вопроса не будут показаны в выводе так далее есть ещё три опции настройки и топпи указывает diversity и это больше такой математический термин и Я рекомендую оставлять его один умолчанию также есть frequency penalty и presence penalty и снова таки эти опции Я рекомендую оставлять по нулям то есть главный - это температура которая показывает Случайность которая
влияет на то как собственно говоря работает модель Ну и максимальная длина которая указывает сколько токенов выдаёт э модель за раз но при этом эта длина включает также и то что вы напишете в запросе так Допустим я напишу здесь текст Напиши стих о программировании так Run Так ну вот написано стих о программировании написано сколько токенов было в моём запросе Так давайте сделаю крупнее 22 токена было в моём запросе и 258 токенов было дано в ответе Вот время Сколько потребовалось для формирования вот этого ответа можно отформатировать как Jon результат потому что по умолчанию я вижу ответ в
формате текст вот формат текст и давайте я нажму формат As Jon так но я не вижу здесь никакой разницы так рткт S Jon так Ну скопировать я почему-то здесь не могу этот текст так Assistant J TT так не вижу почему-то ответа в формате Jon давайте-ка Я здесь выберу Jon object вот так напиши напиши ещ один Т стих Так можно нажать comand Enter на Mac либо же Ctrl Enter так mes must contain The Word Jon in form use of Type Jon object То есть если я хочу получить ответ в формате J то я должен написать в
запросе что я хочу формат J Давайте напишем здесь J просто Jon можно расширить но я думаю что так будет понятно Ну вот формат Jon то есть необходимо в запросе указать что я хочу получить ответ в формате Jon так вот собственно говоря объект Jon в нём есть три ключа статус стих и автор и значения вот такие то есть статус готово стих указан вот здесь в мире Джейсон пара ключ значения красота в каждом элементе так и автор ассистент то есть вот такой формат можно отформатировать как текст можно вернуться к формату Jon так я сделал немножко меньше Вот
так я думаю Тогда больше информации будет отображаться Ну и я вижу сколько токенов на инпуте И сколько на выходе 53 токена Потому что сейчас учитываются также и предыдущие данные которые уже есть в контексте Потому что сейчас учитывается также предыдущий контекст и я могу допустим попросить Перевести вот этот стих на другой язык Переведи первый стих на французский например так Ctrl Enter на Mac comand Enter на Windows так Ну я так так так Код да смотрите у меня в этом стихе было в мире кода красота таится здесь же начинается стих то есть логично понять что это как
бы первая строка вот этого стиха стиха Это означает что снова таки чатбот имеет доступ к контексту к предыдущему общению Ну и объём контекста зависит от определённой модели то есть для разных моделей размер контекста разный так Выведи результат в формате так Давайте напишем здесь так Выведи результат в текстовом формате так наверное Мне нужно перейти обратно в текст так R Так ну вот результат в формате текста так хорошо Это пример взаимодействия с моделью 35 tur При желании можно использовать и ги модели давайте-ка Я здесь так давайте я очищу Clear и давайте я попрошу сгенерировать изображение у модели
3.5 Турбо так сгенерируйте Луны к примеру Извините я не могу генерировать изображение визуального характера то есть видите модель 35 tur способна генерировать изображение Давайте попробуем выбрать модель gpt 4o Mini и напишу тот же запрос Так давайте я очищу напишу снова тот же запрос так я не могу создавать изображение 4o Mini также Отвечает мне так давайте-ка я выберу 4o так очищу так Run так к сожалению не могу напрямую создать изображение однако я могу посоветовать вам несколько способов как это сделать использовать приложение для генерации изображений так дали M journey и так далее так надеюсь это поможет Так
давайте тогда выберем так здесь я не могу выбрать собственно говоря дали которые используется для генерации изображений в этом плейграунд так System instructions Так давайте тут спросим how to generate Image так нет системная инструкция - это другое Так Enter User message Open ai Models так я выберу допустим 4o Mini Jon skim так используете модель Да так Open API Так ключ получить Ну и сделать это программно то есть мы сможем получить от API изображение программно чем мы займёмся позже так Ну хорошо давайте тогда то есть здесь мы изображение не сможем сгенерировать выбрав определённую из моде есть дали
а здесь в списке дали отсутствует но здесь вы можете экспериментировать с разными моделями так код Ну если вы нажмёте на код то вы получите этот же запрос который сформирован на основании вот этих настроек на основании выбранной модели но уже в программном виде то есть нажав на Вы можете выбрать JS Python либо же либо же J То есть это уже программные запросы которые вы можете отправлять То есть можно просто отправить по запрос вот по такому эндпоинт конечно же используя ключ API который вы можете получить по указанной ссылке и вот J который необходимо добавить в теле запроса
то есть видите указывается модель как значение для ключа моду далее массив сообщений час сообщений не ня один видите максимальное количество токенов 2068 Вот это число справа и другие настройки которые принципе опциональный и respon Format Type Text можно использовать curl то есть в командной строке прямо можно использовать уту curl то есть здесь указываются такие опции как Content Type Application Jon то есть мы говорим В каком формате Мы хотим Получить ответ от сервера формат J далее используя то есть добавляет заголовок мы указываем как раз API причём необходимо сначала написать далее пробел и потом уже ваш ключ То
есть это обязательно то есть вот такой формат значения для заголовка aut и далее опция ми D и после неё уже идёт J который мы отправляем на сервер сноки с запросом к серверу указывая модель указывая массив сообщений и это мы отправляем используя определённый endpoint То есть endpoint - это вот эта часть это путь к серверу который включает в себя доменное имя Open aom и поддомен API то есть полный путь к серверу - это api.ai https - Это протокол обращения к серверу hps - это безопасная версия протокола http который включает шифрование используя tls то есть взаимодействие с
серверами openi зашифровано Ну и пример node JS это снова таки пример с использованием внешнего npm пакета то что мы будем делать дальше мы импортируем openai далее формируем клиента openai и отправляем запрос на сервер снова таки те же опции указаны здесь уже в виде объекта JavaScript то есть модель сообщений температуру и так далее Python Аналогично то есть используя язык Python Мы также можем отправить запрос уже в таком виде и получить ответ то есть н будет содержать ответ уже от сервера и дальше Вы сможете выполнять определённые действия с этим ответом от сервера Ну и метод po -
это метод отправки данных на сервер то есть при обращении на сервере мы должны отправить ему собственно говоря вот эти скажем так параметры запроса такие как модель ту и так далее ну и собственно говоря сам запрос в массиве сообщений так то есть вы всегда можете поменять допустим настройки изменить температуру максимальную длину выбрать модель допустим давайте я выберу модель gp4 Mini нажать дальше на C и вы получите собственно говоря уже программный код конкретно для вот этого запроса так А ну-ка давайте я напишу здесь допустим Python App давайте нажмём coe так ну сюда сообщение не попало которое я
написал Вот здесь но оно должно быть Там как бы так Add message а ну-ка coe сейчас О вот сейчас оно появилось уже видите То есть если я нажму Add message то при нажатии на Code Я уже получу в массиве Messages вот такой объект видите роль контент тип текст и текст значение вот такое teste For The pyth То есть это мой запрос к серверу собственно говоря то есть текстовое сообщение причём в одном запросе API Как вы видите можно добавлять в Масси Messages много объектов можно дополнительно добавить системные инструкции и здесь можно допустим указать with Python Application
Так что такое так Нет я не хочу генерировать А ну-ка сейчас нажму и сейчас если нажму появится ещё один объект здесь в ма и роль здесь будет уже SY Content имеет такой же формат как иде То есть вы можете с помощью Вот таких системных команд скажем так давать контекст для для для модели собственно говоря и отталкиваясь от контекста уже будет формироваться ответы пользователю То есть это настройки системы скажем так syru так ну-ка давайте есть допустим я пишу тесты для приложения pyth stud допустим так Update wr Test cases так generate вот видите появились системные инструкции уже
с деталями видите System instructions так если нажму на Code так я должен по идее получить всё это здесь в виде строки то есть видите длинная длинная строка обратный с N означает переход на новую строку то есть видите это системный контекст для модели и уже используя один и тот же системный контекст вы можете давать разные запросы модели похожим образом формируется на самом деле также в Chat gpt кастомные gpt которые вы можете использовать то есть они настраиваются под определённые сценарии то есть системная инструкция - это настройка по сути модели под определённые сценарии то есть видите вы указываете
в каком формате вы хотите получать пример ответа от сервера заметки Так давайте тогда допустим я сохраню эти системные инструкции Вот они у меня остались здесь и давайте я попрошу допустим чатбот в другой в другой вкладке просто напишу чатбот Simple pyth токи можно писать на любом языке я буду писать на английском Иногда чтобы не переключаться и допустим я скопирую этот код и перейду вот сюда и здесь просто вставлю вот этот код видите То есть я ничего больше не пишу как бы я просто вставил код какой-то функции Python то есть функция которая просто суммирует значение двух параметров
и возвращает результат и всё давайте я нажму Run и смотрите сразу же я получаю вывод с информацией о том как протестировать вот эту функцию видите То есть я не писал что я хочу протестировать И так далее Потому что я добавил системные инструкции которые будут действовать для всех запросов и здесь написано что допустим предполагается что эта функция Calculator так Add Numbers так Student grades почему-то здесь учитывается Student нет всё-таки в системный инструкции добавил конкретный контекст про Student grades А так Python import calculate grade calculate grade здесь почему-то речь идёт именно о тестах для функции calculate grade
А так а ну-ка enter User message Давайте ещё раз так Ну вот теперь я получил уже видимо учитывался Вот то сообщение предыдущее учитывалось как-то и я добавил ещё сообщение Assistant но теперь вот видите сделано тоже самое для функции Add Numbers то есть видите чатбот написал мне тесты для вот этой функции Add Numbers то есть написано как автоматически проверять насколько корректно работает эта функция функция с разными аргументами и результат вызова функции сравнивается вот с этими числами То есть если вызываем с такими значениями 0 и5 то необходимо получить на выходе 5 и выполняется сравнение То есть можно
используя системные инструкции настраивать модель под определённые сценарии Ну и снова таки нажимая на код Вы можете получить всегда то что в API запросе Так ну я ещ вижу здесь User Assistant Assistant User assist так давайте-ка я возьму Вот это User и Assistant вставлю здесь и спрошу какая разница между User и так так так Ну так роли участников в общении юзер - это роль представляющая запрос или сообщение которые отправляет пользователь ass представляющая ответ который Асистент в данном случае я генерирует в ответ пользователя так то есть это информация для ассистента дополнительная роли помогают поддерживать контекст диалога То
есть можно дополнительно добавлять контекст для диалога используя Астан так здесь можно поменять видите р на Assistant я видимо случайно нажал на Assistant и потому одно из предыдущих сообщени было передано от ассистента как бы то есть дополнительный контекст для ассистента пому Я получил не то что я хотел то есть вот результат который хотел получить исходя из системных инструкций Так ну хорошо это то что мы собственно говоря реализовали здесь в плейграунд и Здесь вы можете настраивать температуру максимальную длину и так далее так давайте-ка поэкспериментировать вопрос как работают процессоры ам допустим То есть это процессоры на Mac так
так вот ответ процессор и так далее работают на основе архитектуры и так далее в широком спектре устройств и так далее То есть видите снова таки я отправил 23 токена получил 312 токенов так давайте-ка ещё раз этот же запрос Так этот же запрос отправляем так и Давайте посмотрим на отличия в ответах Так ну снова таки Чем ниже температура тем меньше будет коэффициент случайности в ответах То есть если температура будет близкая к нулю либо нулевая тогда ответы могут повтор моде становится более предсказуемой и возможны конечно же повторы так давайте-ка сравним процессор в широком спектре устройств низки широким
спектром применения популярным в различных устройствах и системах несколько инструкций параллельно и внм поря в одних и тех же соответствующих абзацах примерно написано одно и то же просто немного разными словами Но логика идентично как бы низким энергопотреблением так здесь есть про энергопотребление так энергопотребление здесь в этом абзаце выполнение операций процессор выполняет операцию так поочередно задач одновременно так смартфоны простых команд Так может ну я думаю что принцип понятен как бы то есть Чем ниже температура Тем более предсказуемыми будут ответы То есть может какой-то более простой вопрос задать Что такое число ПИ так так Константа и так далее
математи Так давайте е раз повторим число Пи это математическая Константа которая представляет собой отношение длины окружности к её диаметру отношение длины окружности к её диаметру вдовой геометрии то есть немножко видите предложения отличаются значение числа Пи приблизительно равно является иррациональным числом так нука и слова Что означает что его десятичное представление бесконечно Не повторяется не может быть точно выражено дробью види здесь написано что означает здесь написано то есть его десятичное представление бесконечно и так далее не может быть выражено дробью то есть видите примерно даже теперь последовательность та же широко используется в математике физики инженерии широко используется математике
физики инженерии видите то есть одни и те же слова друг за другом идут также свойств является объектом изучению математики вот одно и то же фактически видите одно и то же предложение теперь Давайте попробуем увеличить temperature Давайте укажем максимальную температуру Так что такое число ПИ Так ну что-то я получил не то что я хотел так какой-то не тот Вывод что я хотел конечно же так что такое число ПИ ещё раз абсолютно не то так который соответствует так лидова геометрии математике физике и других науках так не вижу здесь отличи на самом деле в данном конкретном запросе Так
ну-ка давайте е раз температура повыше максимальная температура так что-то здесь видите после какого-то этапа началась Абракадабра то есть из какого-то источника взяты эти данные Я так понимаю и Ну я такого честно не видел Раньше я вижу что максимум tokens limit reached terminated То есть я достиг максимального количества токенов ви Вот для чего хорошо использовать максимальное количество токенов чтобы чатбот не выводил вот такую Абракадабра непонятно Сколько времени так Ну хорошо В целом температура влияет на Случайность модели на коэффициент случайности и вот таким образом в этом плейграунд Вы можете взаимодействовать с разными моделями так я вижу что
здесь есть также механизм загрузки изображений то есть upload Image link to Image ээ supported formats так давайте-ка найдём какое-то изображение так э допустим я скопирую так копи Copy Link Address Так нет я хочу скопировать изображение какое-то А так давайте у чат бода попросим Give me link to some Image of the Moon Internet jpg То есть я Прошу чатбот дать мне можно было бы и там в принципе это сделать как бы так ну я не понимаю почему иногда он не реагирует на отправку запроса так видите 4 может искать данные в интернете чем не могли похвастаться предыдущей
модели так sources так Give me http Link Second не IM так VI так ну-ка открою это в новой вкладке Так нет я получаю вот такое изображение Мне необходимо Copy Image Address то есть копировать изображение вот такое то есть ссылка на jpg изображение Видите вот я его скопировал как бы так так G мне пока не нужно так давайте здесь я добавлю ссылку на изображение вот так Image URL так загружается изображение загрузилось так insert и напишу the Moon dis то есть какая какая сторона луны здесь показана так B4 так не подошло изображение то есть необходимо png изображение
фик то есть получил изображение без префикса Data не получилось как бы передать изображение только что [музыка] так давайте так Give me link to png Image то есть Давайте попробуем png изображение так так давайте-ка откроем Вот это так Ну это уже похожее изображение png Так давайте его вставим здесь так cancel давайте я здесь нажму Clear link to Image так insert side of the так так снова не получается так формат так А ну-ка давайте укажем другую модель gp4 допустим Run а необходимо было поменять модель видите модель была указана у меня 3,5 С5 так написано так side of
the Moon То есть это видите ассистент то есть модель разобрала Это изображение и отвечает что это видимая часть Луны то есть которая постоянно видна с земли то есть написано что на этой части Луны отображается то есть вот так можно загрузить изображение для его анализа Давайте поищем Так а ну-ка здесь Так найди изображение в интернете с несколькими животными вот так так не может искать gpt 4o то есть видите необходимо использовать чат gpd для этих целей если вы хотите взаимодействовать здесь в плейграунд с несколькими животными Так давайте я здесь это сделаю снов таки у вас может быть
платная подписка на чат gpt может быть бесплатная если бесплатная то у вас будут ограничения на использование именно этой модели 4o Но при желании здесь можно выбрать и другие модели То есть у меня стоит 4о по умолчанию могу выбрать gp4 устаревшая 35 я здесь не могу выбрать В5 На текущий момент могу поменять на 4 Mini При желании Так давайте я вот это так Open так вот Это ссылка на изображение давайте я его загружу сюда Так давайте я оу так link to Image так Вот ссылка на другое изображение так insert э какое напишу по-русски так какое какое
животное изображено а во втором ряду ряду справа то есть какое животное изображено во втором ряду справа так это рысь видите то есть произошло распознавание изображения и во втором ряду справа находится у нас конечно же рысь Вот то есть корректное распознавание этого изображения то есть вот что позволяет делать модель gpt 4o и вот указано снова таки количество токенов которое потребовалось для работы то есть 300 токенов на входе 18 токенов на выходе сноки Это новая новый чат я очищал предыдущий потому изображение плюс вот это текст это 278 токенов так хорошо Я думаю что достаточно работы с этим
плейграунд При желании Вы можете по взаимодействовать с ним ещё я с ним взаимодействие закончу и далее мы перейдём с вами уже к программному взаимодействию с API от Open [музыка] ai мы с вами поработали уже в онлайн плейграунд где можно выбирать модели и менять настройки модели изменять формат ответа и теперь давайте перейдём в документацию Doc и собственно говоря начнём реализацию программ которые будут использовать собственно говоря API для получения уже ответов с серверов Open без вот этого ве интерфейса собственно говоря Итак можем начать в секции секции overview и для начала Вам необходимо определиться с языком который вы
хотите использовать для взаимодействия и здесь в этом гайде на текущий момент есть два варианта Python и nodejs nodejs - это возможность писать код на JavaScript и выполнять код JavaScript используя интерпретатор node.js Python - это собственно говоря интерпретатор Python и возможно другие языки появятся здесь но в целом Вы можете взаимодействовать с Open ai используя много разных языков и если вы вот внизу здесь слева поищите в ресурсах ссылку на Library и перейдёте туда то вы увидите что на самом деле есть много разных библиотек не только для Python и nodejs но и для dnet и других языков программирования
и здесь также видны примеры использования для разных языков вот допустим для dnet есть пакет который называется Open ai Вот пример использования этого пакета в dnet есть библиотеки для CSP c+ Plus для Delphi даже есть это один из первых языков программирования на котором я писал программы GO Java klin примеры использования node JS PHP Ruby R Rust и так далее Swift Unity то есть для разных языков программирования для разных фреймворков существуют уже библиотеки которые позволяют вам легко интегрировать взаимодействие с Open ai в вашу программу либо Допустим даже в игру и в какой-то игре в реальном времени если
игра написана допустим на Unity Вы можете отправлять запросы на Open ai получать допустим какие-то аудиофайлы к примеру либо же какие-то случайные текстовые данные То есть это всё находится в вкладке libraries и здесь есть много ресурсов на разной библиотеки которые доступны не только для Python и JavaScript но и для других языков программирования Но конечно же Python и JavaScript - это самые популярные языки для реализации именно API и здесь наше приложени которые мы будем давать это будут небольшие приложения будут выступать в роли клиентов API то есть мы будем от имени нашего приложения отправлять запросы на сервера openai
при этом Вы можете создавать приложения которые будут выступать в роли серверов для ваших клиентов То есть вы будете как прокси между клиентами и между Open A То есть можно нарисовать это то есть допустим здесь у нас будет Open ai вы создаёте своё приложение И здесь будут так здесь будут ваши клиенты клиенты будут отправлять запросы на ваш сервер а вы будете отправлять запросы на Open ai получать ответы через API и отправлять ответы вашим клиентам уже То есть это вы можете реализовать допустим с помощью nodejs либо Python то есть создать свой сервис API вот здесь и конечно
API ключ для Open ai Вы будете использовать вот здесь в своём сервере Итак давайте выберем для начала nodejs и создадим приложение используя JavaScript и обратимся собственно говоря к к серверу openai и конечно же при обращении мы должны указывать модель которую мы хотим использовать gpt 4o ну сноки можно всегда открыть ГРАУ я его открою в новой вкладке чтобы у нас были доступны быстрые варианты допустим перехода в разные модели чтобы я допустим видел как называется конкретно модель вот здесь gpt ти 3.5 ти Turbo к примеру и далее можно передавать сообщения То есть ль User То есть если
роль юзер то это означает что сообщение передаётся от имени пользователя то есть так как вы это делае Если вы используете gpt То есть вы обращаетесь от имени пользователя модели Ну и далее контент указываете допустим текстовый контент который передаётся в модель так так давайте снова таки здесь Клик на Developer Quick Start информацию о моделях Мы уже обсудили с вами То есть я не буду к этому возвращаться то есть мы уже детально поговорили с вами о моделях и далее можно при желании подстраивать модели под себя можно использовать разные модели можно Ну в принципе формат ответа от модели
стандартный это формат Jon и можно испробовать это в плейграунд что мы в принципе делали с вами и формат ответа В принципе не сильно отличается но здесь есть много деталей касательно того как выглядит ответ вот допустим пример ответа steps И вот массив с объектами explanation output explanation output для какого-то конкретного запроса Вот пример другого ответа то есть ID object created модель choices usage то есть указана также статистика использования API видите и так далее ну детальнее сейчас рассматривать это не буду давайте уже быстрее перейдём собственно говоря к реализации так Start Building ассистенты Так ну можно добавлять видите
ассистентов в обсуждение use cases bch request то есть отправлять много запросов одновременно для для того чтобы во-первых сэкономить на запросах Но во-вторых необходимо будет подождать завершени обработки всех запросов то есть обычно это до 24 часо так настройка под свои требования Ну и есть также много Гайдов Ну давайте начнём Developer Quick Start ККМ здесь и переходим в Quick Start и собственно говоря начать необходимо с создания ключа API и далее этот ключ API необходимо загрузить в приложение которое вы создаёте и эта загрузка отличается от приложений и отличается зависимо от ваших операционных систем так Ну давайте посмотрим как
здесь предлагается сделать первый запрос так здесь есть варианты JavaScript Python curl так если это JavaScript инсталлировать его необходимо добавить в переменные среды вот так отдельно в командной строке но я не хотел бы так делать Мы с вами уже будем писать если мы уже пишем приложение как бы то будем уже писать его так чтобы оно было независимо от каких-либо переменных среды вне самого приложения то есть мы добавлять будем API ключ в самом приложении и будем использовать его приложени так noe Example mgs так Ну этой командой Мы будем выполнять собственно говоря вот этот файл Итак давайте давайте
начнём и для начала Вам необходимо получить доступ к вашему ключу API и давайте я открою это В отдельной вкладке так API reference То есть это находится в API reference и здесь ниже так Project API Keys так introduction так А ну-ка если я перейду в настройки просто settings и здесь перейду в API Keys для проекта и вот здесь я могу сгенерировать собственно говоря API ключи ваш проект выбран вот здесь причём Вы можете создавать разные проекты То есть у меня выбран проект default Project можно создавать новое можно нажать manage Projects и здесь создавать проект и управлять проект
вот ID моего проекта количество участников этого проекта и когда он был создан Так давайте создадим новый ключ API У меня пока что ни одного ключа нет и здесь я напишу демо так Demo API Вы можете назвать его в принципе как угодно так далее указать проект у меня выбран далее Что можно будет деть этот ключ по умолчанию стоит All можно указать доступ к конкретным допустим м то есть restricted и выбрать допустим доступы N либо read к примеру N Mod capabilities так ассистенты N read так потоки везде стоит видите N здесь если у нас restrict доступ и
вы можете указать допустим что можно будет получать доступ только к V1 Tuning допустим read и и создать собственно говоря API ключ Можно только read Only создать ключ то есть с доступом только на чтение так Ну давайте выберем All то есть полный доступ и я выбираю проект default Project и создаю ключ Так ключ был создан я его скопирую сноки Не пытайтесь использовать мой ключ Я удалю его немедленно после завершение записи этих уроков и доступ полный read and API resources То есть я скопирую ключ done ключ был скопирован И после этого он появился в списке ключей так
есть кнопка Edit можно изменить При желании права доступа и в принципе всё То есть вы снова не увидите сам ключ то есть он будет доступен только однократно при создании этого ключа можно его только удалить либо же изменить право доступа и всё теперь Теперь мы перейдём собственно говоря в То есть можно сделать так как написано здесь так можно экспортировать его в командной строке для macos Linux это делается командой экспорт можно сделать это на Windows вот таким образом Давайте на самом деле попробуем сделать таким образом то есть откроем командную строку и посмотрим как это будет работать для
нашего приложения Итак я Рекомендую вам сразу делать все операции в редакторе кода и я сразу скажу что Вы не переживайте Если вы не знакомы вообще с jav скрипт либо с редактором кода Я всё буду рассказывать с самого начала так что не переживайте Не волнуйтесь если у вас нет опыта программирования вообще если у вас нет редактора кода то его необходимо установить Называется он vs Code Найдите его в интернете Visual Studio Code он доступен для разных операционных систем переходите в Download и скачиваете снова таки доступен он для разных операционных систем и выглядит визуально одинаково на всех операционных
системах поэтому скачайте его Установите пожалуйста для вашей операционной системы и далее откроете вот таким образом он вы выглядит Э что вы можете сразу сделать это изменить тему я могу перейти вот сюда в настройки кнопка слева вот она и здесь выбрать themes темы и здесь есть вариант Color Theme цветовая Тема и у меня выбрана тема Dark Modern вот эта тема Хотя При желании Вы можете инсталлировать много разных других тем которые изменяют внешний вид собственно говоря интерфейс я могу выбрать тему Кобальт 2 Вы можете её также установить для этого перейдите в расширение вот сюда и здесь введите
Кобальт 2 вот так в редакторе кода доступны многие многие расширение вот эта тема пожалуйста установите её и если хотите чтобы у вас тема была такая же как и у меня Просто Многие спрашивают какие темы я использую Вот одна из тех которые я использую можете её инсталлировать и выбрать дальше настройка кроме этого можно настраивать много чего другого но при необходимости по ходу я буду показывать вам те настройки которые у меня есть то есть редактор кода открыт вот он и теперь в редакторе кода необходимо открыть терминал это можно сделать используя Terminal New Terminal То есть открыть новый
терминал и терминал откроется внизу вот здесь и далее Нам необходимо для наших с вами проектов создать папку в которой мы будем создавать разные проекты то есть nodejs проект Python проект и потенциально другие проекты и я предлагаю создать папку прямо на рабочем столе это можно сделать в командной строке либо же можно просто перейти на рабочий стол используя веб интерфейс и здесь создать новую папку и Давайте назовём папку Так давайте назовём папку Open ai Я назову её так маленькими буквами Open ai и внутри этой папки будут разные проекты Итак создали папку я создал её на рабочем столе
э вот так и теперь в терминале м ну смотрите можно эту папку открыть в редакторе кода можно это сделать из терминала можно это сделать используя допустим File Open Folder либо же можно взять эту папку перетянуть в Редактор кода то есть вот так беру и перетягивают кода то есть много вариан открытия папки если я перетягивают кода то эта папка откроется вот здесь слева в эксплорере Вот она видна и сейчас эта папка пустая и давайте так как мы скопировали уже ключ и он находится в буфере Я создам здесь просто в корне файл и назову его API знак
подчёркивания. txt для того чтобы просто не потерять свой ключ то есть вот он будет здесь в файле API .tv либо же использовать комбинацию клавиш на Mac - это Command S на Windows crl S То есть сохраняете файл вот в таком виде То есть просто здесь ваш ключ и ничего более и теперь давайте Согласно этого гайда то есть мы с вами уже создали ключ написано что можно его сохранить в безопасной локации допустим в файле zshell RC Если вы работаете на Mac и используете zshell можно сохранить где-то в другом месте но снова таки в безопасном месте и
главное не пересыла его никому и если вы пользуетесь гитом и Если у вас есть репозиторий на github пожалуйста избегайте сохранения API ключей в репозитория git и тем более не публикуете их на github потому что любой может зайти в ваш репозиторий найти ваш API ключ и использовать его в своих целях и потом вы будете удивляться почему у вас расходуются средства в вашем профиле то есть API ключ должен храниться безопасно То есть это данные которые нигде не должны кому-то передаваться И публиковаться тем более как только это случилось сразу же удаляете ваш API ключ создавайте новый если ваш
ключ был скомпрометирован каким-то образом Так ну Давайте напишем давайте сделаем как написано здесь то есть после того как мы сгенерировать ключ мы экспортируем его в переменную среды чтобы он стал доступен для наших приложений а уже потом сделаем так как это обычно делается то есть мы добавим API ключ прямо в приложении Давайте начнём Согласно этого гайда то есть на Windows команда будет Вот такая setx Open API Key далее пробел и ваш ключ API это нужно будет сделать в терминале как сейчас буду показывать на macos Linux команда Вот такая exp далее openai API Ke то есть название
Здесь такое же видите как и для Windows То есть это означает что мы создаём константу в переменных среды и такие константы пишутся обычно заглавными буквами со знаками подчёркивания между словами то есть Open знак подчёркивания API знак подчёркивания и далее после знака равно будет ваш ключ Итак если вы пользователь macos либо Linux используете вот эту команду Если вы пользователь Windows Используйте вот эту команду setx на Windows Вы скорее всего будете использовать Power это как раз команда для powershell То есть это оболочка для терминала в Windows по умолчанию хотя на Windows можно установить и Linux подобные терминалы
такие как допустим git Беш который инсталлировать мой ключ он будет недоступен Теперь снова откроем терминал Terminal New Terminal И если мы создаём новый терминал то теперь он откроется уже в той папке котороя у нас открыта в редакторе кода то есть папка Open ai та папка которую мы создали вот здесь на рабочем столе вот эта папка и в моём случае эта папка находится на рабочем столе Desktop Open ai видите То есть я вижу полный путь снова таки внешний вид вот этой части терминала будет у вас отличаться от моего Это не проблема на Windows у вас здесь
будет работать powershell у меня работает zshell но снова таки разницы в этом нет и на Windows выбираете вот эту опцию и используете вот эту команду setx Я же буду использовать эту команду exper Open API я скопирую Вот это включая знак равно вот так Export Open ai apq и значение - это будет значение моего ключа Так я ещё раз его скопирую так и вставлю здесь вот так и нажму Enter так можно скрыть терминал вот нажав на так maximize Hide Panel нажав на крестик То есть это не закрывает весь терминал А просто скрывает эту панель либо же
можно использовать комбинацию клавиш так здесь её не видно ну на Mac это Command J на Windows скорее всего Ctrl J Но если не работает какая-то комбинация клавиш из тех которые называю Вы можете всегда зайти в настройки вот сюда перейти в Keyboard shortcuts и здесь поискать определённую команду допустим Hide Terminal так Terminal Hide так а ну-ка Terminal так Terminal так здесь как называется так H Panel ну-ка Panel так VI Panel так не нахожу быстро комбинации Terminal Можно спросить у ТБО to Hi Terminal vs Code on Windows так кавычка Ctrl обратная кавычка toggle Terminal есть команда ещё
то есть нажать можно комбинацию клавиш Ctrl Shift P и потом выбрать tole ter но это долго как бы Ctrl обратная кавычка Так ну на Mac работает comand J возможно Ctrl J на Windows также работает Итак мы выполнили первый шаг первый шаг вот этот то есть мы экспортировали API ключ в переменные среды и теперь время сделать первый запрос и мы договорились с вами использовать JavaScript и здесь сразу идёт речь о инсталляции пакета который называется Open ai Но прежде чем это делать необходимо вам установить nodejs то есть среду выполнения кода JavaScript причём есть альтернативы для nodejs это
dena или Ban То есть можно использовать также и их То есть это среда выполнения кода JavaScript на сервере видите написано Server Site JavaScript environment и популярнее всех это nos на самом деле несмотря на альтернативы которые появились после nodejs уже и для начала использования nodejs мы будем использовать nodejs необходимо инсталлировать npm и JS на Ваш компьютер Потому что видите здесь есть команда npm Install То есть у вас необходим доступ к npm непосредственно Вы можете проверить Ели у вас уже npm и Note JS в том же терминале можно снова открыть тот терминал который мы скрыли на Windows
Ctrl обратная кавычка я могу его очистить на Mac - это Ctrl L на Windows это Clear Вот такая команда либо CLS Можно попробовать ещё ну здесь у меня CLS не работает и далее здесь необходимо ввести команду node - - version который проверяет доступна ли среда выполнения кода JavaScript nodejs на вашем компьютере у меня доступно и вместе с node.js инсталлировать версию npm у меня версия доступна если у вас здесь версии не показываются переходите в интернет вводите node JS download то есть скачаете среду выполнения кода nodejs переходите на официальном сайте nodejs.org в секцию download и скачиваете nodejs
для вашего компьютера то есть выбираете вашу операционную систему вот здесь Windows Linux Mac OS и далее выбираете варианты инсталляции то есть на Windows можно это сделать в командной строке прямо то есть в powershell открываете powershell снова таки можно это делать Во встроенном терминале здесь будет у вас также работать powershell либо же открыть powershell отдельно При желании но я Рекомендую вам все действия выполнять в редакторе кода так как здесь это делать намного удобнее нежели в отдельных программах так можно выбрать другой вариант инсталляции с помощью допустим chocol либо же либо же здесь есть вариант Pre Build Installer
То есть просто скачать э инсталляционный файл для допустим Windows но не забудьте выбрать корректную архитектуру то есть вашего процессора это важно то есть архитектура должна совпадать чтобы приложения работали э максимально эффективно на вашем компьютере Итак можно скачать дистрибутив и инсталлировать его уже как обычную программу либо же использовать менеджер пакетов на macos это nvm BRW Ну я обычно использую BRW на macos Ну а на Linux есть также разные менеджеры пакета такие как nvm BR в принципе те же самые что и на macos на Windows вот список менеджеров пакетов Итак Скачайте пожалуйста nodejs инсталлировать Open recent и
Последний из открытых проектов и откроется тот же проект который был до этого но после открытия Я думаю что нам необходимо снова выполнить так так так экспорт ключа давайте а давайте-ка не будем делать экспорт сейчас и попробуем написать приложение и посмотрим сохранился ли у ключ в переменных среды потому что мы с вами перезапуска редактор кода Visual stud Code И следовательно также терминал у нас перезагружался На текущий момент Вы должны уже Проверить елили у вас No JS Вы должны здесь видеть версию если версия будет новее моей ничего страшного Это отлично и проверяете также версию npm используя npm
мими также версия особой роли не играет главное чтобы и node.js и npm были доступны на вашем компьютере и Давайте уже после перерыва следующей лекции мы продолжим и создадим приложение node.js и отправим первый запрос используя уже вот такой примерный код Итак На текущий момент у вас уже должен быть ключ API который мы вместе с вами в предыдущем уроке и мы с вами перешли уже в Quick Start и мы начали с вами создание первого приложение но пока что мы с вами не написали ни одной строки кода но в этом уроке мы это исправим и я попросил вас
сохранить ваш ключ API в текстовом файле в папке Open ai которую я вас попросил создать допустим на рабочем столе либо на другом месте вашего компьютера и эту папку openai Вы должны были открыть в редак Т кода Visual Studio Code также в конце предыдущего урока Я попросил вас инсталлировать среду выполнения кода JavaScript node JS без nodejs мы с вами не сможем запустить наше приложение для запросов на сервера Open ai и вместе с node.js инсталира называется npm и как раз вот с помощью npm инстал пакет Open ai и давайте сейчас найдём этот пакет можно ввести npm Open
ai Вот так и здесь В результатах поиска мы найдём Open ai npm пакет Можно перейти на страницу этого npm пакета он очень популярный около 2 млн еженедельных скачиваний и популярность растёт и вот команда для инсталляции этого npm пакета и далее пример использование этого npm пакета и здесь видите в этом примере уже есть обращение к ключу Open API Хотя вот в этом примере который я вижу здесь такого обращения нет но снов таки мы с вами будем использовать ключ прямо в нашем приложении Но об этом чуть позже Сейчас нам необходимо инсталлировать этот npm пакет и особенность использования
node JS в том что в каждом конкретном приложении nodejs Инста свои npm пакеты нет необходимости инсталлировать npm пакеты глобально на вашем компьютере то есть это обычно делается в рамках конкретного проекта и вот команда npm Install openai инсталлировать с вами проект node JS и Давайте здесь создадим в папке openai новую папку нажимаем здесь на создание новой папки и Давайте здесь назовём папку node либо Как вы хотите я назову просто вот так Да кстати говоря можно также изменять тему для вот этих иконок которые отображаются возле папок и возле файлов Я сейчас посмотрю какая тема у меня настроено
это называется File icon them то есть тема для иконок и в моём случае я использую тему material icon them вот э тема по умолчанию Если не ошибаюсь выбра ильз Вот вот так она выглядит Нет наверно не наверное нет не Minimal Какая же там по умолчанию I так в принципе других и нету наверное по умолчанию но у меня Mat I снова таки Вы можете найти её в списке расширений material icon и вот можно инсталлировать эту тему отсюда и потом как тему для иконок на случае если вы хотите чтобы у вас иконки отображались также как и у
меня итак Мы создали папку и в ней будет собственно говоря наш проект nodejs в этой папке node Нам необходимо инициализировать новый проект nodejs и это делается в терминале Давайте снова откроем терминал можете пользоваться контекстно меню либо же использу комбинацию клавиш и нам необходимо перейти тепер в папку то есть терминал у меня открыт в папке Open то есть в родительской папке я ввожу здесь CD node перехожу в папку node и здесь необходимо ввести команду npm init и можно добавить опцию ми Y и тогда npm инициализирует новый проект No JS не задавай вам какие-либо вопросы Давайте нажмём
Enter и что делает npm просто формирует файл с названием то json то есть это файл с описанием нашего проекта с форматом Jon вы уже немного знакомы то есть в таком формате возвращаются данные от openai при отправке запросов через API и вот в таком же формате сохраняются данные например о Проекте node.js то есть есть название проекта есть версия 1 Main Index JS то есть снова таки это дефолтные значения для определённых ключей автора лицензия описание то есть При желании Вы можете указать себя как автора здесь допустим я могу указать себя но я не буду изменять что-либо в
этом файле То есть он сгенерировал таким как он как он есть по умолчанию но здесь вот - это название папки в которой находится package Jon версия всегда будет начальная 1 и в дальнейшем при внесении изменений Вы можете увеличивать версии допустим 2 3 1 и так далее Итак это й Pack Jon Давайте его закроем И вот теперь мы можем с вами инсталлировать пакет Open ai в нашем проекте потому что наличие файла Pack Jon означает что мы уже выполнили инициализацию проекта в папке node просто путём добавления одного файла на самом деле это просто текстовый файл не более
открываем снова терминал убедитесь в том что вы находитесь в папке то есть там Где находится файл package Jon можно используя команду LS посмотреть содержимое папки в терминале package Jon вот доступный файл и теперь вводим команду npm Install Open ai то же самое указано и здесь npm Install Open ai так npm Install Open ai и это приведёт к загрузке npm пакета Open ai с интернета сайта npm gs.com вот с этого сайта Да вот указана версия этого пакета на текущий момент снов таки версия будет обновляться и вы не скорее всего А точно увидите более более новую версию
То есть я вижу что версия обновлялась последний раз один день назад То есть это популярный npm пакет который многие используют и потому есть команда разработчиков вот ссылки на ихние github профиле При желании можно посмотреть кто занимается разработкой этого npm пакета и снов таки так как пакет Очень популярный Open ai постоянно добавляет новые функции потому пакет постоянно обновляется Но кстати говоря лицензия apach 2.0 Это означает что лицензия Open Source То есть вы можете свободно использовать этот пакет в своих проектах Итак пакет был добавлен и я вижу Что было добавлено 23 пакета Хотя я инстадива только один
это произошло из-за того что у этого пакета Open есть много своих зависимостей и это можно посмотреть на сайте npm перейдя на вкладку dependencies и вот список зависимостей вот этого npm пакета openi и я вижу такие пакеты как types node AB Controller Agent Keep alive node fch и другие То есть И вот эти пакеты также были инсталлировать допустим такие как к примеру Data uri to buffer то есть вот эти три пакета также у меня доступны будут в моём проекте Так давайте вернёмся обратно в openi и можно посмотреть какие именно пакеты были добавлены раскрыв папку node modules
которая у нас появилась в нашем проекте вот эта папка и в ней есть много подпапок с разными npm пакетами которые npm добавил в наш проект и конечно же самый главный из них - это Open ai вот я вижу этот пакет в списке Но кроме него есть и другие пакеты которые мы только что с вами посмотрели допустим node fetch либо же допустим form Data То есть все эти пакеты теперь находятся в нашем конкретном Проекте в папке node modules и также в файле package Jon в секции dependencies появилась Вот такая строка Open ai это означает что в
нашем проекте появилась одна зависимость и вот указана минимальная версия которая удовлетворяет требованиям нашего проекта то есть в моём случае 4711 в вашем случае скорее всего эта версия будет старше чем эта Но основы и принципы взаимодействия с openi останутся неизменными При желании Вы можете инсталлировать ту же версию что и у меня тогда вам при инсталляции версии необходимо указать версию после написать Add и потом 4711 и таким образом вы инсталлировать на случае если у вас вдруг что-то будет работать не так как у меня но в целом можно инсталлировать просто так как сделали это мы используя команду npm
Install Open ai и это приведёт к инсталляции самой последней версии npm пакета той же версии которую вы видите вот здесь на сайте npmjs.com то есть я вижу вот такую версию Итак мы инсталлировать npm пакет и теперь уже Мы можем его использовать в нашем проекте nodejs Итак мы можем перейти обратно в Developer Quick Start на Open aom и Давайте возьмём пример кода для генерации текста здесь есть примеры кода для генерации изображений также и для создание Vector embeddings так посмотрим позже Что делает вот этот пример Ну начнём с генерации текста и нам необходимо добавить этот код в
файл с названием к примеру Example mgs Итак давайте создадим такой файл Нам необходимо создать его в папке node кликаем правой кнопкой мыши на папке noe New File и назовём фай example mgs и в этот файл скопирую Вот этот текст можно нажать здесь скопировать и вставим вот таким образом сюда и редактор vs CDE Как вы видите подсвечивает разными цветами код снова таки я говорю Это для тех кто впервые работает в редакторе кода Visual Studio Code потому что этот курс рассчитан в том числе на тех кто ни разу не работал в редакторе Если вы опытный разработчик и
опытный программист Я прошу прощения за такие детали возможно вам немножко скучно сейчас но снова таки я стараюсь объяснять то что я делаю для всех Итак мы вставили код в файл Example mgs и мы можем его сохранить при этом Если я сохраню этот файл то он у меня немножко по-другому отформатирую вот я могу вернуть обратно comand Z либо Ctrl Z на Windows и вот то что я вставил изначально допустим значение в двойных кавычках везде У меня же при сохранении двойные кавычки меняются на одинарные это происходит благодаря расширению prer который у меня инсталлировать PR с галочкой Вы
можете также установить это расширение перейдя в расширение и здесь видите preter это форматированием кода допустим JavaScript и он также поддерживает другие языки такие как typescript CSS HTML и так далее Потому инстал prer и скорее всего у меня есть какие-то ещё настройки prer давайте я перейду быстро в настройки так settings и здесь Поищу в настройках prer чтобы показать вам что у меня настроено так как настроено не по умолчанию так но вроде Я не вижу каких-то А вот у меня есть опция видите есть Если вы хотите чтобы вместо двойных кавычек использовались одинарные то необходимо поставить галочку вот
здесь Но в принципе для этого проекта раз в примере двойные кавычки давайте я уберу эту галочку это настройка по умолчанию и тогда вместо одинарных кавычек у меня будут двойные так как в этом примере но снова таки это большою роли не играет JavaScript поддерживает и одинарные и двойные кавычки Так ну и у меня также вот в настройке default Format выбран притер как по умолчанию То есть вы можете найти эту опцию можно уточнить здесь написать default Format Вот так и вы найдёте вариант Editor default form выберите здесь prer из выпадающего меню видите есть много разных вариантов у
меня у вас будет возможно меньше Выберите prer и также здесь в поиске настроек поищите form on Save и необходимо поставить галочку вот здесь и Благодаря этой галочки prer будет форматировать код при сохранении файла автоматически То есть в принципе это всё что вам необходимо сделать И тогда если вы вставить код как сделал я и сохраните изменения то prer отформатирую код немного по-другому но у меня теперь только поменялись отступы это из-за того что у меня один отступ равняется двум пробелам Видите вот здесь эта настройка Spaces 2 и если я вернусь в настройки Так settings давайте здесь prer
Tab вот по умолчанию притер настроен таким образом что один Tab равняется двум пробелам То есть отступы - это ТБ но ТБ конвертируются в два пробела и у меня также два пробела указаны вот здесь Spaces 2 причём можно изменить количество пробелов то есть Обычно я использую два пробела но это не критично можно использовать и четыре как в данном примере Потому что видите в примере четыре пробела Вот они четыре пробела но в JavaScript обычно используют два пробела но снова таки форматирование роли не играет Просто я хочу вам объяснить всё чтобы у вас всё работало так же как
и у меня хотя это не критично форматирование роли не играет здесь главный код который написан Итак мы написали код в файле Example mgs Согласно этого гайда и далее Нам необходимо его выполнить собственно говоря используя Note example mgs и давайте это сделаем нам необходимо сделать это в терминале от о этом коде Поговорим немного позже о том что здесь происходит Давайте просто пока выполним ээ Так давайте откроем терминал я нахожусь в папке node и теперь в этой папке есть файл Example mgs и можно ввести команду node и далее ввести название файла Example mgs и выполнить этот файл
давайте это сделаем node Example mgs и я вижу ошибку Open AP environment is missing or empty то есть проблема с доступом к API ключу я специально вам хотел показать что произойдёт если мы с вами загрузим ключ в переменное среды используя вот такую команду как в этом гайде и потом просто закроем редактор И откроем его снова а я просил вас перезапустить редактор после того как мы с вами инсталлировать node JS но у меня nodejs уже было инсталлировать и перезапустили редактор Но мы с вами уже снова таки выполняли эту команду в терминале так вот при перезапуске редактора
Вам необходимо снова выполнять эту же команду в терминале То есть она действует на время работы сессии терминала и всё потом эта переменно из среды удаляется Вот потому именно я не рекомендую использовать именно такой вариант работы с ключом А как следует использовать чуть позже покажу для приложения nodejs Итак давайте сделаем так как указано здесь ещё раз то есть у нас ключ сохранён в файле API txt Давайте ещё раз откроем терминал очистим его то есть ошибка понятна у приложения не доступа к ключу API и здесь в принципе в любом месте вам не нужно переходить в другую папку
то есть прямо здесь можно ввести Эр Open AP и берём ещё раз ключ и вставляем его вот сюда Итак выполняем ту же команду которую мы выполняли ранее команда была выполнено скрываем терминал и выполняем код ещё раз этот код в файле Example mgs Ну возвращаемся снова к терминалу и Можно перейти в историю нажав на кнопку вверх и перейти к команде node Example mgs Итак выполняем файл ещё раз И теперь я уже ошибки не вижу а вместо этого вижу ответ вот в таком виде это объект JavaScript который мы получили собственно говоря уже от сервиса API то есть
вот это была предыдущая ошибка сейчас же Мы уже получили корректный ответ и в ответе я вижу R assist то есть это Assistant его роль это ассистент и контент у нас указан здесь то есть ответ от сервера funs Call Loops with looping Real Grow Endless dep unfold refusal имеет значение N то есть Вот такой результат нашего небольшого приложение J и мы корректно таки снова таки обратились к серверу Open ai То есть у нас всё прошло успешно то есть ключ был корректным образом использован после того как мы его добавили используя экспорт Ну вот эту команду вот эту
Export Open API Причём здесь в самом приложении в самом файле Example mgs у нас нет этого ключа явно но вы уже знаете что в таком подходе Вам необходимо экспортировать ключ в переменное среды Каждый раз когда вы перезапускает кода Итак давайте рассмотрим Что здесь происходит в этом небольшом приложении JavaScript во-первых из пакета openai мы импортируем openai можно навести курсор мыши на Open ai И вам редактор кода Visual Studio Code подскажет что это такое Это класс видите openi и ниже есть описание этого класса AP То есть это AP Лин для взаимодействия с API сервисом Open далее так
как это класс а классы в JavaScript называются с большой буквы То есть сразу в принципе можно понять что это класс Мы инициализирует класс то есть создаём новый экземпляр класса и экземпляр класса мы называем Open с маленькой буквы Э JavaScript создаются используя ключевое слово New New далее название класса и далее две круглые скобки Таким образом мы вызываем конструктор класса конструктор класса опционально ожидает опции Для клиента видите То есть это объект JavaScript в нём может быть базовый URL может быть API ключ как вы видите мы ничего этого не указывали здесь в этом примере организация проект может быть
указан То есть вы знаете что Вы можете создавать на Open ai разные проекты у нас default Project здесь указан То есть можно программно при создании клиента указать какой именно проект вы хотите использовать И следовательно для разных проектов у вас будут разные ключи API конечно же организация базовый URL Open ai и другие опции Если вы не указываете то используются настройки по умолчанию вот описание всех параметров базовый URL по умолчанию вот такой вот он API open.com V1 и после него уже идут разные эндпоинты примеры эндпоинт мы с вами видели раньше для разных моделей Они разные некоторые эндпоинты
используются для разных моделей одновременно То есть можно указывать просто модель в запросе мы здесь также указываем модель в запросе видите так вот здесь мы создам с вами экземпляр класса Open и При желании можно передавать разные опции которые указаны вот здесь в описании вот этого класса и Open уже будет объектом экземпляром класса Open это видно здесь и используя Con мы объявили переменную Open JavaScript если переменная объявлена используя ей нельзя присвоить новое значение Open допустим строка тест то при выполнении такого кода давайте я попробую его выполнить я получу ошибку видите assign const то есть нельзя присваивать новые
значение переменным которые объявлены используя const Давайте удалим это далее Далее после создания клиента можем обращаться КСУ API на самом де мы экспортировали ключ в переменные среды используя вот такую команду в терминале то клиент openai найдёт переменные среды и собственно говоря использует из них значение для Open API Ke мы с вами можем посмотреть на переменные среды Давайте выведем переменное среды которые доступны для этой программы в консоль для этого пишем console.log и здесь пишем process.env так process.env вот так conso Log process env так А ну-ка я здесь поменяю JavaScript Можно ли здесь выбрать nodejs нет nodejs здесь
нет ладно пусть будет JavaScript так conso Log process env вот так как у меня сохраним изменения и давайте давайте закомментировать и сохраняем изменения откроем снова терминал и выполним снова этот файл node Example mgs и вот в выводе я вижу все переменные среды которые доступны для приложения nodejs То есть nodejs - это серверная среда выполнения кода и как вы видите приложению node J доступны различные переменные среды допустим имя пользователя моё на этом компьютере это видите User Demo есть много других переменных среды допустим Home домашняя директория пользователя users Demo оболочка которую я использую bin zshell на Windows
здесь будет powershell и так далее много-много разных переменных среды которые доступны вот допустим путь к папке node в папке openi То есть это местоположение проекта который Мы выполняем используя nodejs на моём компьютере на вашем компьютере Путь будет другим и так далее много разных переменных среды и среди прочих У нас должна быть переменная среды Open API Вот она здесь есть собственно говоря Open API и вот указан ключ так точнее это не полностью вот эта часть То есть я лишнее зацепил как бы там ещё есть переменная среды знак подчёркивания то есть вот у нас Open API и
потому благодаря этому Open ai библиотека Open ai автоматически нашла этот ключ в переменных среды хотя мы это не указывали здесь и использовал его для обращения к собственно говоря серверу openi то есть вот что такое переменные среды это всего-навсего объект Большой объект JavaScript который доступен в объекте про в его свойстве то есть про все переменные среды можно показать здесь только Open A AP Так давайте выполним код ещё раз я получаю значение только Open AP видите то есть вот таким образом наше приложение прошло переменную среды Open apq из объекта process и это произошло автоматически Так давайте Так
давайте я закомментировать доступ к переменным среды и теперь давайте посмотрим вот на этот блок кода в этом блоке кода мы вызываем метод Create видите то есть круглые скобки означают вызов вызываются функции либо методы но методы - это те же функции которые находятся в каком-то объекте JavaScript так вот у нас есть объект JavaScript openai в нём есть свойство чат это также объект в нём есть ещё одно свойство completions и в этом объекте уже есть метод Create то есть вот такая длинная цепочка к методу Create Как использовать собственно говоря ту или иную библиотеку описано в документации к
библиотеке и вы всегда можете перейти в сайт npm для конкретного npm пакета openi и здесь будет ссылка на документацию так необходимо перейти в rme так обычно на самом сайте npm есть только базовая информация по базовому использованию клиента но здесь не здесь в принципе много информации с разными примерами пагинации ещё есть здесь много информацию в принципе так версии так есть ли здесь ссылка на официальный сат какой-то для этого проекта так homepage Вот ссылка на homepage здесь указано github страница для этого проекта Ну вот тот же файл с описанием проекта так вот спецификация Open Open API точнее
так ну и снова таки вот разные примеры использования этого клиента потому что мы используем ли AP для взаимодействия с серверами и Если Вы планируете серьёзно использовать этот npm пакет Вам следует ознакомиться со всеми этими примерами и поэкспериментировать с ними то есть здесь в принципе документация указана э в проекте github для некоторых проектов создают отдельные веб-страницы с описанием так хорошо Таким образом мы мы вызываем метод Create и если навести курсор мыши на Create вы можете ознакомиться с тем что делает этот метод То есть он создаёт модель то есть Model response то есть формирует ответ от модели
для определённого м для определённого диалога Chat conversation и Можно перейти в Text Generation Vision либо аудио гайды так Text Generation Давайте откроем эту ссылку допустим и здесь будет информация касательно генерации текста видите Generation Quick снова таки показан пример Ну тот же пример так рекурсию программирование выбор модели формирование Ну ну с этим Мы ознакомимся ещё детальнее чуть позже генерации текста то есть это в секции capabilities поэтому я пока закрою это но я показываю вам как можно прямо из редактор кода переходить в в оден секция документации Итак здесь в вызове метода Create мы должны передать опции то
есть передать Body видите и Body - это набор опций так точнее опции - это request options мы должны передать Body а тип Body указан вот здесь Chat completion Create prams Non streaming То есть это экземпляр вот такого класса В итоге и мы должны передать здесь вот такой объект вот он и в этом объекте должны быть такие свойства как модель массив сообщений и массив сообщений здесь выглядит так как выглядел в плейграунд который мы с вами тестировали ранее на сайте openai то есть мы используя роль System настраиваем модель под наши запросы то есть мы здесь говорим что
модель должна вести себя как очень очень хороший ассистент скажем так и всё то есть ну такая короткая справка здесь для системы Ну и далее если мы хотим передать сообщение от пользователя мы указываем ль US и передаём контент от пользователя Так давайте поменяем здесь текст на напиши смешную историю о программистах Так ты настроен настроен на серьёзный так так давайте так на Давайте на радостный на радостный разговор приме Так напиши смешную историю о программистах контент так здесь мы указываем модель можно выбирать здесь модель давайте пока сохраним изменения здесь мы поменяли здесь контент вот здесь и контент вот
здесь и снова таки если мы перейдём с вами в playground такт playground и нажмём здесь на мы получим собственно говоря примерно такой же код видите Open то есть мы создаём новый запрос и указываем модель Давайте укажем модель gpt 3.5 Turbo И кстати говоря если просто здесь убрать модель вот так написать пару двойных кавычек так вот так то вы увидите список возможных моделей видите в подсказках это происходит благодаря тому что мы с вами инсталлировать пакет openai в котором есть вся информация касательно возможных значений для для свойств Mod и других свойств в объекте для вызова метода Create
То есть вы просто можете выбрать из списка интересующую вас модель видите На текущий момент Вот такой список о1 Mini о1 preview также доступный мне сейчас но возможно я получу ошибку если я попытаюсь обратиться к ним Ани пока в демо разработке но уже здесь в самом пакете они поддерживаются Так давайте выре GT То есть можно написать вручную можно выбрать из списка gpt 35 Turbo вот так сохраняем изменения и Давайте выполним ещё раз код так Example mgs так что-то долго ждём ответа Если честно Так вот получили ответ но получил ответ побольше чем предыдущий раз вот од из
смешны историй программистах то есть видите я сказал что ты настроен на радостный разговор Сейчас попробуем изменить контекст для системы и вот ответ видите то есть несколько историй смешных О программистах я их зачитывать не буду как бы но вот они видны на экране то есть результат был передан в виде виде строк которые соединены используя плюс видите то есть контент строка переход на новую строку обратный с N + и так далее снова таки мы видим здесь ответ в виде объекта JavaScript Хотя от сервера мы его получаем в формате Jon но когда мы получаем уже ответ вот здесь
и присваиваем его переменной completion это уже будет объект JavaScript то есть конвертация из формата Jon в объект JavaScript происходит автоматически и это происходит собственно говоря в результате вызова метода Create и смотрите если вы найдёте курсор на Create то вы увидите после Двоеточие Вот здесь Тип возвращаемого значени и тип указан как API Promise видите так вот в JavaScript для тех кто не знаком с тем что такое промисы это обещание предоставить результат позже и ВМ случае мы взаимодействуем с сервером который находится в интернете и Вы только что видели что мы получили результат здесь в выводе в консоли
через какое-то время через секунд 5-7 в моём случае то есть у нас результат отложенный во времени и наше приложение node.js отправляет запрос давайте это нарисую то есть вот у нас есть так напишу здесь Севе так вот Server и здесь у нас будет клиент то есть наше приложение - это клиент так клиент наш клиент отправляет запрос на сервер это http запрос отправляется запрос по определённому адресу то есть есть путь в интернете по которому мы Обращаемся и в Ра в рамках пути на сервере указан также endpoint по которому мы Обращаемся то есть приме энпо мы с вами
видели отправили запрос и наше приложение дать ответа то есть вот этот сервер может вообще вообще не ответить в принципе может ответить мгновенно через полсекунды может ответить через допустим 3 секунды 5 секунд 10 секунд То есть он отвечает допустим И вот тогда мы берём ответ от сервера обрабатываем его и уже после этого выводим в виде текста в консоли То есть это называется асинхронное действие то есть мы отправили запрос и ожидаем ответа от сервера и вот Потому здесь используется await и с помощью await мы можем ожидать результата промиса То есть промис - это просто обещание предоставить результат
позже То есть это то что делает метод Create обещает предоставить результат позже А какой это будет результат мы не знаем На момент создания запроса то есть возможно возникнет ошибка и ошибку Мы также видели с вами ранее она Возникала у нас выше когда мы пытались обратиться к серверу без ключа API так вот здесь эта ошибка была видите то есть возникла ошибка сервера то есть сервер нам сказал что у вас ошибка в запросе нет API ключа то есть результат промиса может быть разным потому используется await то есть в JavaScript - Это ожидание отложенных во времени действий то
есть мы создаём промис ожидаем результата как раз с помощью A мы можем подождать на этой строке кода пока у нас не будет результата промиса промис может быть либо с успешным результатом если сервер ответил нам и прислал данные либо же может быть с ошибкой то есть Может быть либо fulfilled либо reject то есть отклонён и только что у нас промис был в итоге успешно обработан и когда уже получен результат промиса мы присваиваем результат промиса переменной completion и если снова таки навести курсор на функцию Create то видно что этот метод возвращает промис то есть обещание предоставить нам
экземпляр Chat completion ещё есть тут to overloads то есть там есть несколько вариантов одного и того же метода но здесь мы видим что так completion - это экземпляр класса Chat completion видите Ну если мы выводим а в консоль мы выводим не completion А мы выводим completion choices 0 mess то есть в объекте completion у нас будет свойство choices choices - это массив массив выборов используя квадратные скобки но мы Обращаемся к первому элементу в этом массиве это будет объект То есть каждый Choice - это экземпляр Choice и у этого объекта должно быть свойство mess и вот
таким образом мы Обращаемся собственно говоря к значению mess в первом объекте в массиве choices объекта completion то есть сам объект completion будет гораздо больше Можно попробовать вывести comple Так ты настроен на давайте так на грустный разговор на грустный разговор выводи так так так где же та точка ну выводи только одну смешную историю Так ну и при желании мы ещё можем с вами ограничить количество токенов Смотрите если вы не знаете как это сделать можно зайти снова таки в PlayGround и здесь поменять количество токенов допустим на на допустим 300 ну я не буду там двигать уже там
до конца как бы давайте так 300 здесь можно ввести вручную 300 вот так 300 нажать на coe и я увижу что мне необходимо добавить в запросе снова таки можно выбрать Здесь также и Python При желании так Max tokens 300 я могу скопировать эту строку отсюда перейти сюда так это необходимо э сделать наравне с моделью видите то есть там где у нас модель Messages вот там необходимо добавить Max tokens то есть вот здесь допустим после модели можно указать Max tokens при этом в объектах JavaScript порядок следования вот этих свойств не играет роли То есть можно указывать
свойства в любом порядке то есть Model Max tokens Messages либо Model Messages потом ниже Max tokens То есть можно подвинуть это вот сюда допустим При желании Ну я оставлю допустим здесь и не забудьте запятую после пары ключ значения то есть вот это у нас объект JavaScript Итак Max tokens 300 мы поменяли немного настройки системы и здесь у нас контент тот же для запроса от пользователя так и посмотрим что такое будет completion то есть весь объект Кош посмотрим так сохраняем изменения Так давайте откроем терминал снова отправим запрос Example mgs ожидаем ответа так и вот весь объект
собственно говоря completion так обк completion так в ответе я вижу Вот такие свойства в объекте ID object created - Это я так понимаю ID идентификатора конкретного API запроса который мы отправили либо же ну сейчас мы посмотрим если я выполню код ещё раз Давайте ещё раз выполним код и Давайте кроме кроме вывода в Коль completion Давайте продублируйте укажем то что было ранее у нас э так давайте перейдём в Developer Quick Start Guide то есть completion choices 0 message То есть можно написать так completion Точка И после точки вы увидите все доступные свойства и методы вот этого
объекта completion и здесь есть choices это массив используя ноль мы Обращаемся к первому элементу массива Ноль - это индекс первого элемента далее ставим точку и видим Какие доступные свойства уже для объекта который мы получаем из этого массива объектов и мы видим свойство mess можно его выбрать если это свойство мы не добавляем здесь круглые скобки то есть мы не вызываем его То есть это не метод вызываются функции только в JavaScript как и в любом другом языке программирования Итак мы выводим просто также выводим сообщения Давайте сохраним изменения откроем снова терминал и здесь не очищая терминал я выполню
ещё раз запрос тот же то есть выполняем ещё раз этот же файл Так ну и получил ответ но всё равно я получил Ну я получил одну смешную историю так Ну почему она смешная если я попросил его быть немного грустным как бы ну ты настро груст разговор Выведи только одну давайте так грустную историю грустную историю Давайте Так напиши не смешную а историю о программистах Вот так я не Уточняю чтобы она была смешная То есть я хочу чтобы использовался вот этот контекст Давайте ещё раз выполним Код да обращаю Ваше внимание что каждый запрос обходится нам в определённое
количество токенов которые вычитаются из нашего баланса потому сильно не увлекайтесь смешны историями О программистах так Давайте ещё раз выполним запрос так Так Джек разделя вший обще страст таки так так-так несчастье произошло у программиста потеряли работу Ну вот это уже Похоже на то что я хотел как бы грустная история о программистах то есть видите я здесь просто попросил написать историю но система настроена таким образом что как бы выводится грустные история о программистах и вот ответ Итак это значение для вот свойства message а выше у нас значение для всего объекта completion Давайте его закончим анализировать то есть
вот у нас этот объект Просто я хотел посмотреть Отличается ли Вот этот ID в разных запросах Давайте посмотрим на этот ID Так у меня чат cmpl - это Chat completion и заканчивается на Ba большие буквы так давайте посмотрим здесь здесь другой ID то есть видите ID у нас уникален в рамках каждого запроса то есть мы здесь дальше видим свойство object значением Chat completion то есть мы используем текстовую модель для завершения текста далее created дата создания модель которую мы использовали вот точная модель Хотя в запросе мы указали просто gpt 3.5 Turbo но она указывает на последнюю
модель то есть Турбо и далее суффикс 0125 далее choices Как вы видите это массив видите массив И в choices в этом массиве есть один объект как мы видим у него есть свойства Index message Log probs и Finish Reason то есть используя квадратные скобки Ноль вот здесь так вот здесь мы Обращаемся как раз вот к этому объекту то есть этот объект является первым элементом и единственным на самом деле в этом массиве объектов и уже в этом объекте есть свойство mess вот таким образом мы Обращаемся к значению этого свойства а значение этого свойства - это объект Ну
он здесь не показан в выводе потому что такие глубоко вложенные объекты Не выводятся в консоль но мы можем обратиться к значению вот этого свойства mess вот так как мы Обращаемся и тогда вы уже увидите значение вот этого свойства как мы это видим ниже то есть вот этот объект объект со свойствами Roll и Content так это массив choices Ну и логично предположить что мы можем получать несколько вариантов ответов в на один запрос То есть у нас в этом массиве объектов может быть допустим два либо три объекта либо больше зависимо от того что нам нужно так Ну
и дальше и свойства ч который описывает то сколько токенов мы с вами использовали то есть 58 токенов запросе 300 токенов для формирования ответа то есть это completion tokens всего 358 токенов Ну и как вы видите 300 - это ограничение токенов которые мы настроили то есть мы с вами посмотрели в плейграунд 300 вот здесь в запросе и давайте-ка посмотрим была ли у нас обрезка да Видите смотрите и с мечтой о воплощении своих и то есть видите формирование ответа оборвалось на каком-то этапе вот мы достигли 300 токенов это у нас 300 токенов и всё на этом формирование
контента закончилось вот как работает Max tokens то есть резкая обрезка формирования ответа от сервера а и снова таки явно видно вот здесь что ну в предыдущем запросе было допустим всего 277 токенов меньше Но для этого запроса у нас было ровно 300 токенов в ответе то есть мы попали под наше ограничение так prom token details Так мы не использовали зашивает мы и не указывали в запросе что мы хотим использовать так completion token details так детали токенов для генерации ответа здесь всё по нулям аудио токены ноль reasoning token Но и здесь также ноль System fingerprint N то
есть вот в принципе и всё что мы видим в объекте в объекте completion то есть главное что мы видим это модель которую мы используем Далее по сути ответы от сервера их может быть несколько и далее собственно говоря объём использования токенов для этого конкретного запроса так Допустим я хочу узнать как можно получить несколько вариантов ответа Я могу взять Вот этот ну я могу так сделать я могу в том же чатбот спросить using Open ai API Get or choices usings То есть как получить допустим два либо Три варианта ответа Так что-то у меня чат gpt не сильно
быстро хочет работать сегодня можно в принципе это делать используя ГРАУ но в плейграунд у нас используются драгоценные токены так так can use and parameter When Calling API то есть Нам необходимо указать параметр N то есть вот параметр N Number of choices you want Давайте укажем здесь так N двоеточие и далее укажем допустим два два варианта Давайте Так ты настроен на Весёлый разговор давайте уже Весёлый Весёлый разговор выводи только одну грустную а короткую историю короткую историю не больше не больше Давайте 20 слов вот так то есть мы поменяем немного настройки системы так количество два Так давайте
выполним код ещё раз так очистим консоль node Example mgs ожидаем так и вот я получил снова ответ так так так так вот по сути ответ то есть это первый выбор он писал код без конца Но никто не занял его тру его имя было забыто в море бесконечных строк Так подождите Я же просил как бы какой-то Весёлый разговор Я не понимаю Ладно хорошо Так может для него это и весело как бы так хорошо Главное что мы видим теперь это то что в массиве choices У нас есть два объекта Видите вот у нас первый объект и вот
у нас второй объект то есть мы можем в итоге выполнить допустим итерацию по всем этим массивам по всем этим объектам и вывести сообщение для каждого из choices То есть как это сделать То есть мы сейчас Обращаемся напрямую в choices видите но можно вместо вот этого сделать итерацию мо использовать цикл for и здесь можно выбрать в выпадающем списке for и использовать вот такой цикл но лучше Вот такой цикл с индексами не использовать так можно использовать for each для массивов и мы знаем что completion то choices - это массив поэтому можно написать здесь completion completion choices вот
так далее точка for each и далее в вызове for each нам необходимо передать функцию функцию и эта функция в терминах JavaScript называется callback функцие точнее считается callback функция то есть это функция которая вызывается автоматически для каждого элемента массива и мы допустим хотим вывести сообщение для каждого ответа то есть мы знаем что в choices У нас есть допустим два элемента может быть три-пять элементов зависимо от значения вот этого параметра настройки вызова потому в этой функции А здесь используется Стрелочная функция можно вместо Element написать Choice То есть это один элемент в массиве choices То есть как бы
в программировании принято так если у вас массив называется choices то есть выборы то один элемент - это Choice один выбор м и далее здесь в этой стрелочной функции между фигурными скобками мы напишем cons Log Choice то Как видите здесь подсказки работают то есть понимает что у нас в каждом объекте Choice есть mess Видите вот так то есть мы пройдёмся по всем результатам Используя метод for этот метод доступен для всех массивов в JavaScript и для каждого элемента в массиве Мы выведем в консоль значение Choice mess так сохраняем изменения можно в принципе весь обе не выводить видим
сообщение для каждого из choices Итак Давайте сохраним изменения и выполним код и мы должны получить сейчас два объекта Да вот они вот первый точнее Вот второй и вот первый так кодеры работали без перерыва в ночь перед дедлайнов изменения пропали изза сбоя системы Ну так себе не сильно смешно мне кажется тоже последний байт программиста был равен один но его жизнь завершилась ошибка 404 страница не найдена Ну я не знаю как-то Ну видите и мы используем модель 35 Турбо как бы ну это предыдущий как бы чат будет Давайте ко поновее модель использовать Может там будут какие-то более
интересные истории так а ну-ка так чат gpt 4 так 4 я хочу использовать ну-ка если ввести здесь видите будет фильтр вариантов Итак я выберу 4o Mini так сохраняем изменения так выполняем ещё раз запрос так получаю снова таки два объекта это результат снова таки итерации по массиву choices видите то есть для каждого Чой для каждого выбора Мы выводим Choice message а Choice message - это у нас объект Ну так как это назвали свойство mess это в принципе объект Я не знаю Как там по-другому назвали бы свойство Ну ладно так вот первый результат вот второй результат то
есть Roll Assistant говорит о том что это ответ от модели Когда программисты наконец наладили код сервер упал и все их усилия растворились в пустоте жили проживали программисты которые работали над великим проектом но в конце концов потеряли код и сон ладно как-то вот эта модель более новая но не больше 20 слов как бы э ладно Вот такой результат мы получили как бы причём вот мы явно видим что у нас вот это работает то есть мы получаем не больше 20 слов в ответе А я же здесь оставил грустную так А ну-ка давайте уберём грустную Я извиняюсь выводи
только одну короткую историю не больше 20 слов так Давайте ещё раз not Example MG сейчас должны быть весёлые истории о программистах о вечеринки Вот это уже то что надо программисты собрали вечеринку но вместо танцев выбрали дебаг итоге весело смеялись над красной кнопкой запускающее пиццу хорошо программисты делали пиццу на коде Почему снова пицца пока не поняли что вместо этого заказали еду онлайн пицца пришла код сломался ладно вот такие результаты и вот такое приложение собственно говоря ми создали экземпляр класса Open далее мы вызвали функцию Create это метод объекта completion и эта функция возвращает промис нам нужно подождать
результата промиса используя A и в итоге результат который мы получаем присваивается переменной completion и далее мы можем выполнять определённые действия с допустим выводить в консоль Давайте раском эту строку и также Мы выполняем ию по датам ещё сохраню изменения Так ну и При желании Ну я оставлю здесь это cons Log process env Open API Ke потому что у нас этот ключ доступен в process env хотя мы сейчас в приложении его не загружаем здесь нигде явно Но это мы сделаем Я думаю что в следующем уроке и здесь в вызове метода Create мы передаём вот такой объект JavaScript
в объекте JavaScript не нужно вот эти ключи оборачивать в двойные кавычки как в объекте Jon То есть это не объект Jon это объект JavaScript и здесь мы указываем модель которую мы хотим использовать Допустим gpt 4 4o Mini максимальное количество токенов то есть мы ограничиваем сколько максимально токенов может нам вернуть модель в ответе указываем максимальное число ответов то есть мы на 1 и5 запрос можем получать несколько разных вариантов ответов и только что мы это с вами проверили и далее в массиве Messages мы можем передать несколько объектов мы передаём два один с ролью System и мы таким
образом настраиваем систему то есть предоставляем контекст для системы и далее мы уже можем передавать контент от пользователя то есть непосредственно то что пользователь допустим вводит в строке message если он общается с Chat gpt используя Web интерфейс То есть это контент вот здесь и в результате мы получаем обк completion если не возникла какая-то ошибка при обращении на сервер и в этом объекте completion будет свойство choices это массив И мы можем провести итерацию по этому массиву и вывести допустим Choice message это как раз объекты которые содержат ответы от сервера и ответы формируются в виде Вот таких объектов
и в каждом объекте есть Roll Content и другие свойства но я вижу свойства refusal null Давайте спросим что такое refusal N так What Так давайте так что что такое refusal N указывает на то что у ассистента нет отказа на запрос пользователя обычно рел может использоваться когда Ассистент должен отказать в выполнении запроса из ограничений Например если запрос нарушает правила использования или этические нормы когда л имеет значение на это означает что отказа нет и Ассистент может выполнить запрос То есть это означает что мы получили корректный ответ от ассистента от нашего ТБО в виде модели вот что знат
так-то бы нел ранее так здесь так Я не вижу так Нет не вижу Ладно но снова таки вы всегда можете получить дополнительную информацию от того же чатбот если вам что-то непонятно в процессе взаимодействия с сервером API Итак мы закончим этот урок сейчас как бы и дальше мы продолжим И я покажу вам как интегрировать Open API Ke в собственно говоря приложение node.js потому что сейчас если мы закроем И откроем приложение снова я имею в виду vs Code то из переменных среды исчезнет вот этот ключ но это мы попробуем В начале следующего урока Итак я думаю что
понятно что здесь происходит и как работать с ответом от сервера допустим путём итерации по массиву ответов и Choice mess содержит объекты которые по сути являются ответами от ассистента потому что мы работаем сейчас с текстовой моделью для этого мы Обращаемся к completions видите Open API Open ai Chat completions если мы напишем здесь Open Open ai так openai Chat точка Так здесь я вижу completions так если напишем openai то так здесь есть Audio видите есть embeddings есть Files есть images вот используя разные разные свойства объекта openai мы можем обращаться к разным моделям openai использовать разные эндпоинты то
есть для текстового общения мы использовали с вами чат Chat completions и принципе для свойства чат есть только completions видите то есть других вариантов здесь нет tion точка И здесь есть один метод Create видите создать по сути ответ на запрос пользователя вот как мы это сделали вот здесь так Давайте удалим это и после перерыва поговорим детальне о том как интегрировать ключ в приложение [музыка] nodejs уже взаимодействовали с API программно используя вот такой скрипт JavaScript Но мы с вами загружали ключ openai API в переменные среды используя командную строку и мы использовали экспорт на Linux либо же macos
как указано вот здесь в этом гайде либо же на Windows вы использовали Set X но сноки мы с вами убедились в том что если мы закроем редактор кода давайте это сделаем просто закрываем редактор кода и откроем его снова так File Open recent Так давайте я найду эту папку так Desktop Open ai Open и Давайте попробую ещё раз выполнить этот код открою терминал так я перейду в папку node и здесь Введу noe example mgs можно использовать T для автозавершение команды и я немедленно увижу ошибку Open API Ke environment variable is missing То есть сейчас у нас
нет доступа к ключу API и если я раскомментировать сохраним изменения и выполним код ещё раз так да ошибка возникает вот здесь на этапе создания экземпляра класса openai То есть если мы хотим увидеть список переменных среды нам нужно подвинуть вот эту строку выше можно это сделать зажатой клавишей ALT на Windows и на Mac и далее клавиши вверх и вниз сохраню изменения и Давайте выполним код ещё раз И вот выше я вижу что значение process env Open ai apq - это undefined видите это означает что такой переменной среды сейчас нет И нам нужно снова её экспортировать вот
так как указано здесь в терминале потому Чтобы избежать Вот таких экспортом Каждый раз когда вы выполняете код особенно если вы допустим решили запустить это приложение на сервере где-то то есть допустим вы создаёте свой API сервис для клиентов которые будут через ваш сервер взаимодействовать с API То есть вы будете посредником тогда вам в любом случае следует интегрировать ключ API в ваше приложение nodejs и вот в этом уроке мы поговорим об этом Давайте перейдём на сайт npmjs где мы с вами нашли пакет openi и вот здесь в примере уже есть обращение к собственно говоря ключу Open API
так написано что при создании экземпляра мы можем передать вот такой объект Мы это с вами также смотрели так а я оставил здесь вывод в консоль нет Я убрал вывод в консоль давайте я верну вывод в консоль как было ранее и закомментировать вот такой объект он опциона знак вопроса говорит об этом и в нём могут быть свойства Base URL API и так далее То есть здесь в этом примере указано одно свойство API и значение вот такое process Open API То есть в принципе можно обращаться через точку к этому ключу А можно используя квадратные скобки и в
них строка Open ai API Но это равносильно вот такому обращению То есть если у вас в объекте JavaScript А вот это process inv - это объект JavaScript свойство имеет текстовое название как вот это Open API то можно обращаться через точку Так но здесь в этом примере у нас нет интеграции Open apq в само приложение так здесь вообще нет опций так здесь тоже самое то есть в принципе вот это равносильно тому что мы ничего не указываем вообще при создание экземпляра то есть здесь так и написано and can be То есть это можно опустить это значение по
умолчанию то есть по умолчанию при создании экземпляра происходит чтение значения Open API из переменных среды из process env Так ну здесь почему-то нет примера того как загрузить этот ключ в переменные среды то есть видите они видимо считают либо программисты все это знают как бы э либо это не сильно важно так допустим Вы не знаете как это сделать Давайте спросим у того же ТБО кстати говоря можем спрашивать используя наш сервис API При желании но снова таки мы с Вами очень экономные и мы с вами экономим токены потому Давайте напишем запрос здесь так to Ну могу писать
на русском так как как интегрировать интегрировать интегрировать ключ Open apq в приложение node JS в переменные среды так Ну так Ну ну и не хочет реагировать как-то чатбот на меня вообще так Ну давайте перейдём в чат gpt playground допустим здесь так и вот шаги которые нужно выполнить для того чтобы интегрировать этот ключ в приложения Создайте фай в коренем каталоге нашего проекта и добавить вот такую строку Open API и далее после знако равно нужно указать наш ключ далее нужно установить npm Pet который поможет загрузить переменные из FV при запуске нашего приложения и нам нужно этот пакет
инсталлировать с помощью команды npm Install и далее нам нужно собственно говоря да вот это делается Вот таким образом то есть мы импортируем из пакета dov и выполняем config но здесь указан synxis require Мы же используем с вами импорт и Давайте здесь укажем ну вот видите Мне не нравится общение Здесь в плейграунд Так давайте всё-таки так что происходит здесь у меня в этой вкладке Я не могу понять почему не отправляются запросы так regenerate так ещё раз так Ладно О наконец-то так Ну тоже самое но уже в отформатированном виде так можно найти этот пакет на npm так
dov так вот этот пакет так dov также очень популярный пакет 32 млн скачиваний в неделю и Он очень простой на самом деле то есть создаётся просто текстовый файл то вот с таким содержимым из одного файла Вы можете загрузить много разных переменных среды в прос env и дальше Просто в protes env у вас доступны будут все необходимые свойства без необходимости использовать вот эти команды в терминале Каждый раз то есть таким образом Мы настроим С вами наше приложение так можно использовать импорт так. env config то есть мы будем использовать импорт потому что мы уже используем импорт вот
здесь это синтаксис и6 потому что в nodejs исторически использовались другие модули и синтаксис с вызовом функции require Мы же здесь используем импорт потому будем использовать импорт вот таким образом Давайте начнём с инсталляции пакета перейдём в терминал убедитесь в том что вы находитесь в папке node Вы можете всегда перейти на один уровень выше используя CD две точки перейти обратно в node используя CD noe то есть вот так навигация работает и в powershell используя команду CD CH directory Итак здесь у нас уже есть файл package Jon и в этом файле у нас напоминаю есть список зависимостей нашего
приложения а пока что в списке только один пакет openi и сейчас мы добавим ещё одну зависимость это как раз пакет dov вот этот пакет и мы его инстал в проекте польз npm Install и далее dov Вот так и это приведёт снова таки к загрузке этого пакета с npmjs у этого пакета нет своих зависимостей то есть только один небольшой пакет то есть его задача очень простая взять. env и из него загрузить все переменные в обект process env Вы знаете что в объекте process env уже есть много других переменных среды такие как путь К папке проекта и
другие То есть мы с вами анализировали содержимое process env и вот задача dov просто Дописать туда ещё переменные которые будут прочитаны из файла то пока что мы такой файл ещё не создали мы пока только инсталлировать пакет dov и сейчас в файле Pack Jon у нас появилась ещё одна зависимость видите то есть теперь у нас две зависимости и в папке node modul у нас пакет Вот он видите так хорошо пакет мы инсталлировать и импорт так импорт выполняется вот таким образом так ипор и далее config можно просто скопировать эту строку отсюда и вставить сюда Если я сохраню
изменения то форматирует эту строку и заменит одинарные кавычки на двойные Потому что так мы настроили его изначально да То есть это дефолтное поведение PR на самом деле но я лично предпочитаю использовать одинарные кавычки Но это никакой роли не играет Главное чтобы вы использовали либо одинарные везде либо двойные везде то есть не следует смешивать их так Вот так мы импортируем do env config и теперь нам нужно создать файл то env в папке node Итак New File то env так и называем его именно точка env Вот так и далее в этом файле мы просто добавляем пары то
есть название ключа и далее значение для ключа у нас будет только одна переменная из среды то есть наш ключ API и всё Можно перейти обратно в пошаговую инструкцию так Open iiq знак равно и далее после знака равно будет наш ключ предусмотрительно я скопировал ключ как и вы в отдельном файле API txt он находится вне папки видите То есть он не относится к нашему приложению JS скору отсюда ключ и вставим его как значение для Open AP тут смотрите тут можно добавлять значение в двойных кавычках как указано в этом примере видите можно указывать без двойных кавычек если
у вас в значениях есть допустим пробел либо спецсимволы Я рекомендую использовать двойные кавы можно без них то есть у нас в ключе как бы Есть ну у меня в ключе допустим знак подчёркивания тире вот и не знаю для того чтобы работало всё корректно лучше всё-таки добавлять двойные кавычки Вот так и в них внутри уже добавлять значение вот так давайте вот так сделаем с двойными кавычками сохраним изменения в файле точ evv Вот так и закроем этот файл и теперь давайте давайте пока [музыка] закомментировать пакет env импортируем config причём мы импортируем не какую-то переменную а именно NV
config и это приведёт автоматически То есть это приводит к тому что выполняется код в dov config А этот код загружает переменные то есть загружает текстовый File env берёт из него все названия вот эти значениями и добавляет их в process env то есть нам не нужно импортировать что-либо как мы импортируем допустим Open ai из openai то есть нам Ничего из этого пакета не нужно кроме того чтобы просто выполнить часть кода в этом пакете и всё а какой код мы можем посмотреть можно навести курсор мыши вот сюда с зажатой клавишей Ctrl на Windows либо же Command на
Mac и можно кликнуть сюда так не переходит почему-то туда э так можно посмотреть в принципе код по-другому так dovin config вот по сути выполняется вот этот файл видите Так ну он выполняет по цепочке fil Main вот он и вот в этом файле описано как загружаются данные из файла но в детали вдаваться снова таки не будем так Давайте сохраним изменения перейдём в терминал и выполним здесь код так вернёмся в истории к команде node Example mgs выполняем код и я уже вижу здесь ключ свой ключ API То есть он теперь доступен снова в Прим я не делал
вот это то что мы делали ранее то есть эс ключ вручную в терминале и вы не делали этого но теперь у нас ключ доступен в переменных среды через объект process То есть это объект который доступен в приложении nodejs всегда можно посмотреть содержимое всего объекта process Давайте поменяем на process выполним код и я снова таки вижу весь объект с многими свойствами такими которые видел ранее сноки содержимое у вас будет отличаться конечно же у вас будет другой набор этих свойств в этом объекте То есть это воспринимаете как начальную конфигурацию начальные вводные данные для приложения в данном случае
приложение node.js и вот в конце я вижу ключ Можно перейти в точка и добавить ещё один какой-то допустим ключ либо давайте так тест и здесь будет значение допустим 1 2 3 сохраню изменения выполню код ещё раз и вижу в конце тест 1 2 3 то есть Видите вот это также было загружено в процес inv и стало переменной среды Но учитывайте что все значения воспринимаются как строки то здесь я написал число Но это строка на самом деле в объекте как и все другие значения то есть значения переменных среды - это строки и Если вам нужны числа
в вашем приложении то Вы уже должны Как бы программно конвертировать значения переменных среды в числа если вам это нужно но здесь снова таки везде указаны как строки и также здесь мы видим строку вот так легко используя пакет dov можно загружать переменные из файла то env в process env Давайте удалим этот тест и удалим также пустую строку то есть оставим только одну строку в этом файле то выполним код ещ раз и видим Open API и в принципе после этого нам ничего больше не нужно делать в этом приложении мы можем просто раскомментировать этот блок кода вот так
закомментировать процес inv Так у нас здесь Было Open API я оставлю Так и мы можем снова выполнить этот запрос с теми же настройками Давайте выполним его ещ раз читаем смешные истории о программистах Note Example mgs Так ну и я снова получаю собственно говоря два ответа в массиве choices Ну и также мы выводим весь объект completion с информацией о нашем запросе то есть Сколько было токенов использовано то есть 40 токенов это в запросе 62 токена в ответе всего 102 токена было использовано так так программист забыл исправить баги код сам начал шутить вызывая смех всей команды и
радость на проекте так сделали перерыв потом запутались кто из них уже начал работать вместо кода начали писать шутки Да смешно просто сейчас упаду со стула хорошо И вот таким таким образом мы с вами реализовали доступ к ключу Open причём явно мы этот ключ в этом файле не добавляли то есть мы не указывали Что Ключ Вот такой-то то есть мы могли бы сделать как смотрите Давайте перейдём обратно в пакет так в принципе мы можем сделать как допустим смотрите мы можем перед созданием экземпляра создать переменную const Open API и значение просто беру из API Вот так и
Вставляю сюда строки то есть пара двойных кавычек и Вставляю ключ Вот так и далее при создании экземпляра Я указываю здесь объект Так давайте я уберу круглые скобки указываю круглые скобки указываю фигурные скобки далее API это опционально свойство в этом объекте опции двоеточие и значение будет Open A То есть это значение переменной Open вот так можно сделать видите тогда ключ У нас явно прямо в этом файле но я вам сказал ещё раз говорю что в таком виде файлы сохранять в приложении крайне нежелательно То есть это ну не то что нежелательно Это запрещено вообще логикой то есть
Ваши ключи должны находиться вне файла вашего приложения то есть вот так делать нельзя То есть я даже вот так нарисую вот здесь вот вот так делать Так где красный вот так делать нельзя то есть так не делают то есть ключи не сохраняют в файлах непосредственно Хотя так приложение будет работать без даже вот этого dov это можно закомментировать как бы и можно выполнить запрос Давайте выполним запрос вот так будет работать то есть ошибку мы не получим Всё мы получаем е смешные шутки о программистах смех был заразительны видите но так делать нельзя потому вот это Мы отсюда
убираем этот объект и убираем вот этот ключ отсюда вот так добавляем обратно импорт вот так как это было на момент того когда мы запускали уже наш код собственно говоря после добавления но тепер возникает же бы с этим фам в НМ же есть этот ключ правильно то есть что делать с этим файлом его как-то сохранять в приложении или нет Он же у нас находится в нашей папке правильно Так вот ответ очень простой Если вы пишете приложение nodejs допустим у себя на компьютере локально то при сохранении этого приложения допустим на Если вы настраиваете также git систему контроля
версии для отслеживания изменений в вашем проекте то файлы должны игнорировать гитом то есть Вы не должны добавлять вот эти файлы в репозиторий и не должны публиковать нигде То есть это должны быть скрытые файлы потому и название этого файла точка то есть точка Используется перед названием папок либо файлов для того чтобы показать что это должны быть скрытые файлы и вот когда выпустим это приложение переносите на какой-то сервер и там запускаете это приложение то вы на сервере вручную должны создать вот такой файл в него добавить openi и добавить значение вашего ключа и запустить после этого приложение уже
на вашем сервере А код в этом файле будет в таком виде в котором он есть сейчас то есть здесь ключа никакого нет то есть вот как следует работать с переменными среды и ключами и другими параметрами доступа которые следует вручную указывать на том сервере Где вы разворачивается приложение и вот Давайте в следующем уроке я покажу вам как настроить систему контроля версии git для нашего проекта и как сделать так чтобы git игнорировал вот этот файл то evv и также мы добавим инструкцию касательно того как создавать вот этот файл для тех Кто впервые будут буду будет разворачивать наше
приложение где-то у себя на сервере либо локально неважно но мы как разработчики должны дать другим людям инструкции касательно того как добавить ключ API для того чтобы приложение заработало Итак давайте сделаем это после перерыва только что мы обсудили то как правильно загружать ключ для взаимодействия с API это касается не только openai API но и любых других сервисов из Fila env в объект process env в приложении nodejs для этого мы инсталлировать npm Pet do env подключили его вот таким образом это привело к загрузке всех данных из filv вы protes env и теперь вот Open A apq стал
доступен в process То есть это объект со всеми переменными среды для нашего приложения No JS и у нас приложение работает как и ранее и нам нет необходимости добавлять в терминале переменную среды Каждый раз когда мы запускаем приложение То есть это уже работает автоматически путём загрузки переменных среды из И вот теперь я покажу как настроить систему контроля версии it так чтобы git игнорировал вот эти файлы то env и вы должны были вручную создавать эти файлы на сервере допустим Где вы разворачивает так можно найти как инсталлировать git в интернете git доступен для разных операционных систем macos Windows
Linux unix и здесь можно скачать инсталляционный фа и в терминале Вы можете проверить доступен ли у вас git видя команду git мими version и у меня git инсталлировать вот в этот пункт Меню Source Control и сейчас напоминаю у нас в редакторе кода открыта папка openai то есть вся папка в которой мы реализуем разные проекты То есть сейчас у нас есть пока одна подпапка noe есть также фай AP txt так вот Я предлагаю инициализировать git во всей этой Папке openai то есть у нас всё содержимое этой папки будет под под контролем системы контроля версии git Итак
переходим в Source Control и нажимаем просто initialize repository снова таки после того как вы инсталлировать git если он у вас был не инсталлировать имя пользователя и давай я покажу как это сделать так downloads может здесь есть Так так Source repository так здесь Давайте спросим быстрее у ТБО how to config [музыка] git Так ну я забыл что он как-то не сильно хорошо работает сегодня у меня так то есть необходимо настроить имя пользователя и пароль так setup git configuration вот необходимо ввести две команды вот Первая команда Ну они в принципе видны здесь так давайте я так можно
как-то выбрать вариант два так так так так так так одним словом вот Первая команда config - - Global User name Далее указываете в двойных кавычках ваше имя указываете Вот именно в двойных кавычках имя допустим пробел фамилия и далее gitconfig - - Global User email указываете свой email если у Вас уже есть аккаунт на github то я Рекомендую вам указывать тот же email который вы используете для аккаунта на github Ну и ваше имя таким образом вы настраиваете информацию для для Гита и информация о вас и о вашем имей будет добавляться к каждому коммиту который вы создаёте
в рамках Гита то есть git позволяет вам время от времени в вашем проекте создавать коммиты это скажем так снапшоты либо снимки вашего проекта в определённый момент времени и таким образом вы можете отслеживать все изменения в вашем проекте и потом вы можете опубликовать ваш репозиторий git который вы создали локально как мы сейчас работаем локально с репозиторием который мы не создали пока но сейчас создадим и вы сможете его опубликовать в Интернете для того чтобы другие разработчики допустим могли скачать этот репозиторий как в принципе мы с вами Вот нашли допустим репозиторий Open он находится на UB и он
публичный видите то есть и любой включая вас может скачать этот репозиторий себе локально и выполнять любые действия с ним настроить git вот таким образом ввести вот эти две команды то есть делаете Это в терминале на случае если вы впервые используете git и потом проверите эти настройки так так git config list то есть для этого используется Вот такая команда gitconfig мими list давайте это сделаем и я вот вижу мои настройки видите то есть вот моё имя пользователя и вот мой email эти данные добавляются гитом к каждому я делаю у себя на компьютере нажимаем чтобы закрыть этот
вывод буква на клавиатуре так нажимаем и был инициализирован репозиторий но пока что мы кнопку comit здесь не нажимаем это очень важно и смотрите как только мы нажали я вижу что все папки в папке Open включая подп подс пок фа видите и в терминах git это означает что git пока не отслеживает изменения в этих файлах но он видит эти файлы в нашей рабочей директории А в терминах git то что мы видим вот здесь это Рабочая директория вот э по-английски directory и git нам по сути предлагает сейчас создать кот и добавить в репозитории ВС абсолютно включая AP
txt и включая содержимое папки node modules то есть видите он предлагает добавить репозитории более 1000 файлов Но мы с вами говорили о том что в репозитории git не следует сохранять какие-либо ключи пароли имена пользователей и так далее То есть мы должны игнорировать содержимое файла а также в нашем случае содержимое файла aptt потому что дали с вами этот файл просто временно как бы чтобы там сохранять ключ потому мы должны в корне нашего проекта в папке openai создать файл и назвать его тока git так то git ignore вот так появляется иконка Гита Назовите файл именно так то
git ignore нажимаем Enter и теперь в этом файле мы можем указать какие файлы и папки git должен игнорировать И следовательно они не попадут в репозитории Если вы опубликует проект у себя github профиля то там не будет этих файлов и папок которые вы будете игнорировать так вот первым делом мы можем указать здесь файлы то так и пишем здесь то сохраняем изменения в этом файле и немедленно мы увидим что. подсвечивается серым то есть git уже не хочет добавить его в репозитории То есть он его игнорирует также для нашего проекта Давайте добавим ещё и API Key то txt
который мы также будем игнорировать сохраняем изменения видите файл также стал серым также в приложениях JavaScript рекомендуется игнорировать папку node modules потому что вы всегда можете её пересоздать введя команду npm Install потому что у нас есть вся информация о необходимых пакетах вот в этом файле package Jon и в этом файле package Log Jon в котором есть точные версии всех пакетов которые были инсталлировать пакет Add types noe и вот версия этого пакета вот другие пакеты AB Controller версия 300 и так далее вот эти файлы должны находиться в репозитории вот эти два но не папка node modules она
нам не нужна потому мы можем далее давайте это сделаем ниже Добавить папку modul и мы можем явно указать что это папка добавив СШ в конце видите Mod сохраняем изменения и теперь node modul полностью будет игнорировать м видите что бы там не происходило в этой папке Мы можем с вами быстро пересоздать папку node modul смотрите сес у на есть много разных подпапок Windows у вас будет папка scripts мы можем удалить папку node modules правой правой кнопкой мыши кликаем выбираем Delete папка была удалена открываем терминал я нахожусь в папке node сейчас видите Если вы не в ней
перейдите в неё и введите команду просто npm Install Вот так и эта команда приведёт к инсталляции всех пакетов которые уже были у нас до этого в папке node modules Согласно вот этим двум файлам То есть это воспринимаете конфигурационные файлы для нашего приложения в целом то есть они указывают Какие npm пакеты нужны нашему приложению и я вижу Что было добавлено 24 пакета и в папке Mod появились снова те же подпапки которые были до этого и наше приложение снова будет работать как и ране Вот потому Mod также следует игнорировать и теперь после Вот таких изменений вфа у
всего фай предлагает види вот эти четыре файла Example mgs Pack J package J и сам gign собственно говоря то есть. gign должен быть в репозитории и вот используя git мы с вами игнорируем файлы в которых находятся важные данные логины пароли в нашем случа это ключ API Но в нашем приложении мыж писать Что необходимо создать фай env с ключом и вот для таких целей обычно создают файл который называется то env sample Вот так и вот этот файл то env sample должен находиться в репозитории видите он подсвечивается как unt то есть он не находится в файле G
ignore и вот в этом файле мы можем продублировать то что находится вот здесь в то файле так я возьму только вот эту часть вот так перейду в точ sample Вот так и здесь в двойных кавычках я напишу Open A API Ke вот так сохраню изменения и вот если вы увидите вы либо другой разработчик увидит вот этот файл NV sample он пойм что необходимо создать можно добавить нажимаем Windows либо же com Ma и здесь указываем F and All val то есть Заполните все значения для переменных среды потому что в будущем вы сможете допустим добавлять другие значения
здесь к примеру значение будет Допустим продублируйте содержимое этого файла то sample задаёте и заполняете все вот эти значения то есть указываете ваш ключ API для openai указываете username для базы данных к примеру пароль для базы данных и так далее так я уберу Эти две строки Вот так и оставлю комментарий Create NV File and Fill All val то есть Заполните все значения то есть вот так вы по сути даёте инструкции касательно того что необходимо сделать чтобы приложение заработало и конечно При желании можно добавить ещё read MD F с инструкциями касательно того как пускать приложение Как заполнять
переменные среды и так далее но сейчас это делать не будем то есть достаточно в принципе одного файла точ env sample но здесь явно нашего ключа нет здесь инструкции касательно того как создать файл env и что туда необходимо записать то есть вот это общепринятый подход э к работе с различными важными данными такими как ключи пароли и так далее вот так выглядит наш файл то GE ignore игнорируем. игнорируем API txt и игнорируем node modules то есть я пока ставлю этот текстовый файл для себя Потому что мы с вами будем его ещё использовать наш ключ в других проектах
Python к примеру Итак Теперь мы можем создать comit переходим в Source Control у нас здесь отобразятся все файлы которые мы создавали с вами и которые попадут в репозиторий git проверяем чтобы здесь не была точка файла либо же файла API txt и чтобы не было папки node modules и здесь мы можем Создать сообщение для комита Итак давайте добавим сообщение initial nodejs Open ai App Application То есть у нас пока приложение состоит просто из одного файла на самом деле но у нас есть package Jon У нас есть папка node modules То есть это в принципе полноценное приложение
nodejs то есть дальше Вы можете создавать новые файлы с расширением mgs каждый файл - это отдельный модуль JavaScript Вы можете импортировать из одного модуля экспортировать точнее вы можете экспортировать из одного модуля импортировать в другие модули и так далее То есть настраивать уже более сложные приложение пока что у нас всё в одном фай Example mgs Но это основа любого приложения JavaScript похожим образом поступают и для других языков программирования в плане работы с переменными среды но переменные среды загружаются по-разному в разных приложениях используются разные библиотеки для этих целей но принцип похож то есть переменные не находятся то
есть какие-то ключи не находятся в самих файлах приложения они загружаются в приложени в момент старта приложения с отдельных файлов как мы сделали ф Итак давайте создадим текст будет initials Open Application то есть первая версия приложения nodejs и я вижу что пять файлов помечены как Contract Давайте нажмём comit меня спросит git хочу ли я добавить все изменения в staging Area потому что в are это промежуточная зона перед добавлением файлов давайте выберем Yes и кот был создан то есть Всё теперь наше приложение находится под контролем Гита Мы работаем в Ветке Main это ветка указана здесь снизу видите
Main и вот это облако говорит о том что мы можем опубликовать наши изменения на github Если у вас есть github профиль то есть При желании вы это можете сделать сейчас это делать не буду То есть пока что я оставлю этот репозиторий только как локальный репозиторий у себя на компьютере Но если я перейду в Source Control снова и перейду здесь в коммиты я увижу первый комит который я сделал initial node.js Open Application это текст этого комита для того чтобы вы видели то же самое что вижу я то есть список коммитов список ветвей здесь и так далее
в Source Control Я рекомендую вам инсталлировать расширение которое вы можете найти здесь видите просто git так Я закрою FG ignore и инсталлировать расширение которое называется gitlens вот первое расширение и git history - это второе расширения вот эти два расширения Я рекомендую вам инсталлировать чтобы у вас была максимальная полная информация касательно отслеживания изменений в вашем проекте но Также вы можете открыть терминал и там посмотреть допустим информацию касательно Гита мы можем ввести здесь git status и я увижу что я нахожусь в Ветке Main и изменений для того чтобы создать ещё один комит нет то есть working 3
Clean Это означает что наша Рабочая директория то что мы видим вот здесь синхронизирована полностью с репозиторием git если я внесу изменения какие-то из этих файлов допустим перейду в example mgs раскомментировать что git теперь видит что в этом файле есть изменения и эти изменения я могу также закоммитить создать ещё один снимок моего проекта и git status показывает мне что файл Example mgs был изменён видите modified но я не буду создавать комит сейчас я думаю что смысл понятен то есть по мере работы с нашим проектом мы с вами будем создавать ещё дополнительные коммиты Давайте вернёмся Да я
могу снова раскомментировать допустим сохранить изменения и смотрите я могу перейти в Source Control и вот здесь возле этого файла который помечен Как modif я могу нажать вот на эту стрелку discard ches смотрите нажимаю CH и содержимое этого файла меняется на то содержимое которое было до внесения мной изменений то есть видите эта строка становится снова закомментировать закроем Ile Example mgs и мы с вами инициализировать г переходим в Source Control переходим здесь в tags и здесь нажимаем плюс и тег у нас будет называться V100 так как называется самая первая версия нашего приложения V100 нажимаем Enter и сообщение
будет initial nodejs Open A API Application то есть вот так то есть текст для тега можно указывать такой же как и для комита к примеру Но обычно не для каждого комита создают теги но я буду делать это обычно для каждого комита чтобы вам было удобнее При желании перемещаться между разными версиями проекта потому что теперь я могу нажать вот здесь на ветке Main и я увижу также и теги в списке если у вас будет Допустим много тегов вы сможете увидеть их в этом списке и кликнув на тег вы сможете перейти в определённую версию проекта очень просто
то есть тег указывает на определённый комит Вот это э начало хэша начало ID того комита который я сделал то есть я могу перейти в комит вот сюда найти вот этот комит который я сделал вот он и вот кстати говоря показано что было изменено в этом коммите то есть буква A означает что были добавлены эти файлы видите то G ignore был добавлен Example mgs был добавлен и так далее так и я могу навести курсор мыши так здесь я вижу только Copy message так Но если я наведу курсор мыши вот на три точки я увижу 2b c965
то есть то же самое что я вижу когда я перехожу в Tex точнее Вот сюда я вижу 2 BC 965 видите То есть это начало идентификатора комита то есть тег указывает на комит и ветка также указывает на комит сейчас у меня только один комит но по мере создания новых коммитов ветка будет перемещаться на следующие коммиты то есть ветка Main указывает всегда на последний комит который вы сделали то есть вот так работает гит а V1 останется на этом же месте То есть он будет указывать на этот комит который мы сделали только что то есть он не
будет перемещаться потому Когда вы буде ваш проект у вас теги будут оставаться в прошлом как бы и вы сможете перемещаться в предыдущей версии проекта используя тег так Это то что касается настройки Гита мы с вами создали комит перед этим мы инициализировать с вами git в нашем проекте Open ai в папке Open ai и это на самом деле привело к созданию скрытой папки Давайте её найдём так в папке Open ai в терминале вы можете написать LS но LS вам не покажет собственно говоря скрытые папки А вот если вести LS - La на Mac либо Linux то
вы увидите скрытую папку то git вот она на Windows Так давайте я Введу вот эту команду а How in Windows Windows Power Shell так на Windows LS - Force от большой буквы То есть если вы хотите увидеть скрытые папки и файлы на Windows в терминале powershell то добавляете минус Force либо же Get the children Get Child item - Force в powershell так вот видите скрытая папка git и там находятся файлы уже репозитория то есть Там будут находиться все версии наших файлов там сохраняются также комит и так далее У меня есть отдельный курс по гиту то
есть кто хочет детальнее понять как работает гит Добро пожаловать на мой курс по гиту для этого курса Я думаю что в принципе Достаточно того что мы с вами сделали то есть Мы инициализировать репозиторий git создали комит и по мере работы с проектом Вы можете создавать комит дальше создавать теги время от времени в важных моментах развития вашего проекта и При желании можете опубликовать ваш на github то есть связать локальный репозитории с публичным репозиторием хотя на github можно создавать также и приватные репозитории которые доступны только вам так хорошо отлично На этом мы этот урок заканчиваем с вами
и дальше мы продолжим работу собственно говоря с API потому что главная тема этого курса - это конечно же API и взаимодействие с разными моделями пока что мы с вами взаимодействовали только с текстовой моделью кото называется comple то есть завершение текста и формирование нового текста Итак давайте после перерыва [музыка] продолжим Итак Мы закончили с этим примером в котором мы написали код в файле Example mgs и мы выполняли этот код с помощью интерпретатора noe JS и мы использовали модель completion то есть ту модель которая завершает написание определённого текста и мы давали определённый системный ввод То есть это
настройка модели для того чтобы ответы генерировать Согласно вот этих вводных данных от нас ну а то что передаётся уже от пользователя передаётся вот в таких объектах указывая роль User и мы использовали модель при этом модель можно изменять сейчас у меня используется модель gpt 4o Mini далее можно указать максимальное количество токенов которые выдаёт модель за один раз при этом в этом числе также учитываются и вводные токены То есть те данные которые вы передаёте в модель число n указывает количество тех вариантов которые генерируют модель и например вот в этом виде в массиве completion choices будет два элемента
и мы по ним можем провести рацию Используя метод массива for each и для каждого результата выполнить определённые действия то есть мы в данном случае выводим в консоль Choice message где message - это объект и Давайте перейдём обратно в гайд который мы с вами использовали и посмотрим что здесь указано далее В принципе далее идт секция Next steps То есть это самый базовый пример использования моделей для формирования текста и мы с этим с вами поэкспериментировать и далее Есть предложение использовать другие модели такие как Text to Speech Speech To Text генерация изображений Image Generation и так далее Но
прежде чем переходить к другим задачам Я хотел бы немного оптимизировать этот код чтобы он стал более скажем так и во-первых мы с вами знаем что могут возникать ошибки Например если вы не загрузили ключ API либо допустим сервер не отвечает либо другие ошибки то есть вот на этом этапе на этапе взаимодействия с сервером либо на этапе формирования нового экземпляра класса openai могут возникать различные ошибки и нам следует корректным образом реагировать на ошибки Давайте допустим перейм который вы должны были создать сами у себя и Добавить сюда ваш ключ как значение для Open AP и Давайте Просто закомментировать
этот код снова Так давайте перейм в термина Так у меня откры терминала я один из них Уда нахожусь в папке Open необходимо перейти в папку noe в которой находится Example mgs вот этот файл Давайте выполним его используя интерпретатор node Итак node Example mgs И вот я вижу вот такую ошибку то есть Open Error openv Miss то есть нет переменной среды и Давайте реагирование на подобные ошибки но Давайте посмотрим где именно возникает эта ошибка Давайте допустим я раскомментировать свою работу то есть мы выходим из приложения Давайте ещё раз повторим выполнение кода посмотрим выше и я вывода
process Open здесь не вижу то есть возникает Open A Error и допустим я не знаю как реагировать на подобные ошибки И для этого я могу допустим Взять этот код здесь нет моего ключа то есть я могу смело допустим передавать этот код в чатбот я перейду в Chat gpt и напишу вот здесь I handle errors such As и здесь я скопирую часть ошибки допустим вот так скопирую As how to do it properly То есть как корректным образом обрабатывать допустим вот такие ошибки то есть ошибки создания клиента здесь написано что нам следует добавить вот такую проверку перед
созданием клиента То есть перед тем как создавать экземпляр класса openai нам следует добавить вот такую проверку в блоке If То есть если у нас нет ключа То есть если не process inv Open apq знак восклицания это оператор не то тогда выводим в консоль информацию о том что ключ отсутствует и Выходим из приложения то есть process Exit выходит из программы то есть программа прекращает свою работу и до этой строки кода мы не доходим и единица означает завершения программы нулевой код - это корректный код завершения любой программы если код не нулевой то значит программа завершила свою работу
с ошибкой То есть если нет ключа API логично Что необходимо завершить программу с ошибкой И вот такую проверку мы можем добавить я скопирую вот эти три или четыре строки кода вместе с комментарием и добавлю Это ниже Вот здесь то есть мы проверяем если у нас openai apq в переменных среды Напоминаю что мы загружаем из файла то env все значения с ключами в файл в переменной среды то есть в обк process env И для этого мы используем npm Pet do env который мы с вами ранее установили Он есть в списке зависимост вот этот пакет D env
так вот мы добавляем вот такую проверку то есть Block If и в принципе я могу убрать этот комментарий потому что я думаю что исходя из вот этого сообщения абсолютно Понятно Что происходит в этом блоке то есть такой переменной среды либо нет либо её значение допустим undefined либо же пустая строка то есть какое-то ложное значение которое не подходит для взаимодействия с сервисами openai Ну а если в prot env есть свойство openai AP то есть У нас есть ключ то тогда мы переходим к следующим шагам то есть вот это условие будет ложным Мы не попадаем в этот
блок кода и продолжаем Следовательно создавать экземпляр класса openi и так далее отправлять запросы то что мы делали до этого ранее Давайте сохраним изменения и выполним ещё раз код и я уже вижу абсолютно другой результат то есть я вижу понятную мне ошибку и она говорит о том что нет ключа Open A AP и я могу допустим добавить ещё здесь информацию о том как собственно говоря добавить этот ключ и к примеру так Error Open Miss empty так Ну давайте здесь напишем обратный с N Please Add it так так Please Add ITV F то есть пожалуйста добавьте эту
переменную в Тофа сохраним изменения выполним код ещё раз и я уже вижу что мне необходимо сделать чтобы приложение начало работать То есть даже если я ранее не запускал это приложение допустим я скопирую себе на компьютер это приложение попытаюсь его выполнить но сразу увижу вот такую ошибку которая говорит о том что мне необходимо добавить Open API Ke ВТО inv File я открою содержимое репозитория допустим увижу Ага есть файл то inv sample посмотрю на него и увижу структуру. env то есть вот так любой сможет понять что необходимо сделать для того чтобы это приложение заработало Так ну и
этот комментарий в принципе тоже могу убрать Здесь также понятно что происходит то есть мы ходим из приложения и дальше код не выполняется Итак это мы подправить раскомментировать всё работает корректно как и ранее Потому что сейчас у нас в объекте process env есть свойство openai apik и мы можем формировать экземпляр класса openai и взаимодействовать с серверами теперь ошибка может возникнуть Вот на этом этапе когда мы взаимодействуем с серверами openai то есть сервер может вернуть нам ошибку также сервер может быть недоступен то есть много в принципе потенциальных ошибок может возникнуть и в таком случае рекомендуется вот этот
блок кода оборачивать в TR Catch и в блоке cch каким-то образом реагировать на ошибки которые потенциально могут возникать и Давайте возьмём этот блок кода перейдём обратно в чатбот и напишу здесь обра потенциальные ошибки которые могут возникать в этом блоке так вот пример то есть мы добавляем блок перемещаем весь код в этот блок включая даже перебор результатов которые мы получили от сервера А в блоке ч мы реагируем на ошибки и в этом блоке ч у нас будет доступ к ошибке и мы можем проверить именно ошибка возникает ошибка ответа от сервера тогда мы выводим допустим информацию о
том что возникла ошибка Open API Error Если же ошибка является экземпляром класса Open A Error то выводим вот такое сообщение Open Error в принципе как бы вот это можно объединить Хотя здесь просто отличается немного формат ошибки То есть если у нас в объекте ER есть свойство тогда мы можем вывести Ну как бы я вот такую длинную строку здесь не писал бы как бы потому что не факт что у объекта respon будет свойство Data у него будет свойство Error а у него будет свойство mess То есть можно просто вывести в принципе ошибку в консоль то есть
вместо вот этих всех If else и так далее просто вывести ошибку в консоль А давайте перед тем как добавлять блок TR Catch попробуем каким-то образом сделать так чтобы у нас возникла вот здесь ошибка Давайте допустим я напишу вместо mess mess к примеру Вот так mess и проверим как на это отреагирует сервер Давайте выполним код так и я получаю Вот такой результат так возникла ошибка которую нам вернул сервер Bad request код ошибки 400 и далее описание ошибки то есть видите если я ошибся здесь сервер мне отвечает что возникла ошибка ошибки которые начинаются на 400 - это
ошибки клиента то есть клиент ошибся Не сервер То есть клиент ошибся и неправильно сформировал запрос потому если вы видите любую ошибку которая начинается на 400 это ваша ошибка ваша ошибка обращение к серверу если возникла ошибка на сервере то код ошибки будет начинаться на пять то есть 500 501 и так далее ты сое - это ошибки клиента и здесь сразу как бы в ответе от сервера есть подсказка То есть вы передали медж Возможно вы имели в виду Messages то есть видите сервер пытается Вам подсказать где возникла ошибка и вот собственно говоря вывелся ответ от сервера то
есть код ответа 400 это заголовки http заголовки которые нам передал сервер и он нам передал ответ в формате Jon то есть вот вот этот текст ошибки мы получили по сути из ответа от сервера и далее есть также и другие заголовки которые добавил сервер и в ответе я вижу также Вот объект Error Вот и как раз в нём есть сообщение о ошибке видите сообщение далее тип ошибки M то есть в каком параметре запроса возникла ошибка то есть вот то есть отсутствует параметр который является обязательным и приложение Наше nodejs завершило снова таки свою работу некорректно и приложение
выбросило ошибку по-английски throw eror То есть если вы видите вот такой вывод здесь в консоли Это означает что эта ошибка не была обработана в приложении То есть она просто была выброшена приложением и на этом приложение закончило свою работу Итак для того чтобы реагировать на подобные ошибки нам следует обернуть вот этот блок кода в Block Try Catch и в принципе вот это также можно добавить в Block Try Почему Потому что если возникла ошибка Вот на этом этапе нам не следует переходить вот к этим шагам не следует выводить в коль completion и не следует перебирать choices потому
что у нас не будет значения для completion здесь возникнет ошибка потому Весь вот этот блок кода мы должны вырезать Давайте выделим его нажмём Ctrl X на Windows либо же Command X на Mac напишем Block Try можно написать Try просто и выбрать выпадающем списке Try Catch Вот так и вставить вот между двойными фигурными скобками вот здесь то что мы вырезали Вот так и здесь мы можем в блоке Catch вывести просто ошибку в консоль cons Error и здесь напишем ER вот так сохраним изменения при этом здесь я оставлю всё ещё mess вместо messes то есть ошибка будет
присутствовать и Давайте снова выполним код очистим терминал выполняем и я уже вижу в принципе тот же результат ту же ошибку но она уже не выбрасывается как раннее приложения то есть мы её выводим в консоль вот здесь в этом блоке то есть эта ошибка считается уже обработанной то есть Сравните результаты вывода сейчас мы ошибку видим в таком виде ранее мы видели ошибку вот в таком виде то есть вот Это была необработанная ошибка сейчас же это обработанная ошибка и При желании можно вывести также допустим детали ответа от сервера в принципе можно попробовать Вот это реализовать Давайте посмотрим
есть ли у нас здесь в ошибке respon так так есть Error Так ну я здесь не вижу так eror instance of Open eror выводим Error M так eror eror M так err так но нам нужно обратиться не ну-ка Давайте проверим так Давайте напишем здесь ai Error Вот так То есть если ошибка - это экземпляр класса Open ai Error то тогда давайте выведем консоль так console Error выведем Error то message Давайте посмотрим на результат так перейдём обратно в терминал выполним код так и да вижу собственно говоря информацию о конкретной ошибке То есть у нас получается есть
доступ к Error mess вот в таком виде можно в принципе так написать если у нас ошибка это экземпляр Open выводим Error M иначе иначе так так Ну можем в принципе так сделать El впе Ну напишем там Open Error я не буду вот этот блок использовать потому что сильно длинный путь Я бы так не делал мы просто проверим является ли ошибка экземпляром класса Open A Error и выведем её вот таким образом запятая здесь так иначе conso Error some Error ured Вот так и далее выведем Также Error message вот так в принципе можно было бы это сделать
в одной строке кода без If else просто выводить разные текстовые блоки вот здесь так давайте покажу как это сделать в принципе и посмотрим оставим мы так или нет Так давайте так сделаем console Error и здесь напишем Вот это я скопирую отсюда вставлю сюда то есть если errance Open дали знак вопроса я использую тернарный оператор в JavaScript то тогда будет получается вот такая строка иначе будет Вот такая строка вот таким образом и вот это я могу закомментировать пока Давайте да Error instance of Error и после запятой необходимо также добавить так запятая Error message вот так сохраняю
изменения prer отформатирую этот вывод То есть можно вот так сделать То есть мы в любом случае выводим Error message но перед этим мы выводим разный текст либо такой текст если у нас Error - это экземпляр класса Open Error Иначе просто some Error ured то есть вот это равносильно вот этому так давайте выполним код так Note Example mgs Ну и вижу ту же ошибку что и ранее но теперь у нас есть префикс видите Open ai Error то есть нет у нас необходимого параметра Messages так вот таким образом можно реагировать на ошибки Ну давайте я чтобы вас
не сильно запутывать оставлю вот собственно говоря то что было до этого я думаю что If El более понятно и При желании Вы можете адаптировать вот эти блоки то есть реакцию на разные ошибки подругому Итак мы обернули вот этот блок кода в итем сам теперь реагируем на потенциальные ошибки которые могут возникать в процессе взаимодействия с сервером теперь так как мы формируем здесь в этом примере В этом файле вот такие два объекта в этом массиве и у нас есть контент для системы и есть также контент пользователя мы можем для удобства использования вот этого файла вынести вот эти
значения в отдельные переменные и мы их можем создать здесь Давайте создадим здесь переменную используя const и здесь будет System знак подчёркивания точнее давайте так System Content то есть в JavaScript принято использовать Camel Cas нотацию То есть все слова слитно первое слово с маленькой буквы последующее с большой буквы и здесь у нас будет Вот это давайте выделим Вот этот текст я его просто вырежу отсюда и вставлю вот здесь и сюда Так давайте перенесём запятую сюда и здесь значением для Content будет Вот так и аналогичным образом Мы поступим с этим текстом Давайте вырежем его отсюда и здесь
будет Давайте User Content Вот так и здесь создаём переменную User Content и значение будет Вот это сохраним изменения И вот так перед блоком TR мы создаём по сути значение для вот этих переменных и в дальнейшем м будет изменять вот этот блок кода Если вы хотите поменять допустим контент для системы либо же сам запрос от пользователя то есть допустим хотим поменять давайте давайте изменим э так кратко а Старайся отвечать кратко так так не более не более п слов так и здесь я допустим напишу напиши историю о себе допустим так сохраним изменения Давайте выполним Код Да и
давайте уже изменим медж на mess то есть у нас уже будет корректный запрос и Давайте выполним код EX mgs и собственно говоря я получаю уже корректный ред из вот этих запросов то есть вот первый вариант ответа И вот второй вариант ответа Итак мы немного оптимизировали этот код вот этот вывод в консоль я оставлю для вас чтобы вы знали что Open AP находится в объекте process env Если вы всё сделали корректно и и Кроме этого мы обернули вот этот код ч и это нам позволяет реагировать на ошибки которые потенциально возникают вот здесь на этапе взаимодействия с
сервером То есть это может быть как как ответ от сервера с кодом ошибки четыр сотый Либо пятисотый так и допустим ошибка сети если допустим нет интернета к примеру то есть любые ошибки которые потенциально возникают здесь и скажу что если ошибка возникает вот здесь то мы не доходим вот до этих строк кода Так давайте я это также зако потому что нам весь объект колише в принципе не нужен Но при желании вы сможете всегда его раскомментировать и посмотреть структуру всего ответа от сервера главное что нам нужно - это собственно говоря результат то есть ответ непосредственно от сервера
то есть сообщение от сервера Итак в блоке cch мы реагируем на потенциальные ошибки и это в принципе всё касательно оптимизации вот этого блока кода Ну и перед созданием экземпляра класса openi Мы создали вот такой блок кода где мы проверяем есть ли у нас ключ Open если нет мы выводим в консоль ошибку и также Выходим из приложения с не нулевым кодом приложения то есть код оди в принципе можно указывать любой другой код отличный от нуля Вот так мы немного оптимизировали File Example mgs Давайте перейдём в Source Control и я создам comit Error handling in EX mgs
вот так то есть мы добавили обработку ошибок в Example mgs Ну и также вынесли в отдельные переменное System Content и User Content так я скопирую Вот этот текст из комита для того чтобы добавить его в тег и создам также тег следующий тег будет Допустим v110 То есть я изменю мирную версию это вторая часть версии вот здесь первая часть - это Ma основная версия вторая - это Minor version вот эта часть а вот это ч версия в принципе можно было бы обновить ч версию То есть это не сильно большое изменение но я изменю минор ную версию
так и добавлю сообщение для тега то же самое что и для комита и создам тег тег был создан v110 Так отлично хорошо Это мы с вами реализовали то есть мы немного оптимизировали этот пример и далее Я хотел бы ещё поговорить с вами о параметрах запросов о которых мы детально не говорили ранее а именно вот об этих параметрах и я думаю что мы воспользуемся для этих целей плейграунд а не нашим приложением но возможно и посмотрим как добавляются вот эти параметры в запросе в нашем приложении Итак давайте поговорим вот об этих параметрах настройки обращений через API в
следующем уроке [музыка] мы с вами поработали уже с разными моделями для получения текстовых ответов то есть для этого мы использовали completion API и мы взаимодействовали с системой причём можно настраивать систему под ваши конкретные запросы Ну и также мы передавали различные запросы от пользователя Ну и конечно же мы поговорили о разных опциях включая такие опции Как температура Top frequency penalty и presence penalty и теперь давайте вернёмся обратно в документацию и перейдём к использованию других моделей так давайте-ка я открою ещё раз Chat completion и посмотрим Возможно мы что-то с вами упустили касательно генерации текста так System R
User выбор модели Так мы с вами использовали разные модели и с моделями Конечно же можно взаимодействовать используя интерактивный playground так построение запросов PROMT engineering Guide Да мы с вами не говорили детальнее о подходе в формировании собственно говоря запросов и вот здесь есть ссылка на PROMT engineering то есть в секции Best practices лучшие практики есть рекомендации касательно написания запросов для чат-бота в принципе это касается как использования API так и использование Chat gpt напрямую и здесь есть стратегии касательно получения лучших результатов но я сейчас не хотел бы детально останавливаться на этих стратегиях Возможно мы к ним вернёмся
немного позже и обсудим их сейчас я хотел бы перейти с вами вс-таки к обсуждению моделей и взаимодействие с другими моделями на практике так информация о User mess System Messages это мы с вами выполняли Assistant Messages то есть сообщения которые приходят от ассистента и которые вы можете передавать Далее в последующих запросах для сохранения контекста То есть можно передавать цепочку сообщение от пользователя ответ от ассистента снова сообщение от пользователя и так далее и уже в следующем ответе от ассистента будут приниматься во внимание все предыдущие сообщения включая ответы от ассистента так контекст Так ну собственно говоря это является
контекстом оптимизация выводов точность цена задержка Так ну вы знаете что чем быстрее ответ от модели тем дороже это будет стоить Чем больше готовы ждать тем дешевле будут обходиться запросы даже есть возможность использовать batch pricing То есть если вы отправляете много запросов зараз и вам не Сильно критично чтобы ответы были получены немедленно То есть вы готовы подождать Так ну если продолжать тему генерации текста то здесь есть ссылки на примеры собственно говоря формирования запросов То есть prompt examples это находится в секции resources prompt examples здесь есть много разных примеров использования текстовой модели для корригированный данных для определения
сложности выполнения функций для получения ключевых слов из текста и так далее То есть много разных примеров для работы с текстом но снов таки давайте пока отложим обсуждение этих примеров и перейдём собственно говоря к Так давайте вернёмся обратно в Quick Start и посмотрим на следующие шаги которые мы с вами можем выполнить Итак давайте дальше перейдём к генерации изображений то есть Image Generation и вы знаете что в Open ai используется модель dy текущая версия третья Но конечно же будут появляться и более новые версии более функциональные и вы можете взаимодействовать с этой моделью напрямую и Кроме этого если
вы Работаете С Chat gpt то в НМ уже интегрирована поддержка генерации изображений через ту же модель да То есть вы взаимодействует через web интерфейс с какой-то из моделей например 4o 4 Mini и так далее И при этом Chat gpt использует при необходимости другую модель Да так так так так давайте посмотрим слева Ну смотрите здесь слева также есть в пунктах меню Image Generation то есть после Tex Generation в секции capability capabilities возможности и давайте-ка я открою эту ссылку Image Generation и открою эту Image Generation Да переход в одно и то же самое место То есть это
секция capabilities возможности и генерация изображений Итак давайте начнём обсуждение того как работать с API для генерации изображений и мы с вами продолжим использовать собственно говоря nodejs и JavaScript и мы будем использовать собственно говоря те знания которые вы уже имеете то есть то как подключать ключ API Как запускать файлы JavaScript Как получать ответы и так далее То есть это мы с вами продолжим делать так Какие возможности Есть у моделей для генерации изображений во-первых создание изображений с нуля на основании текстовых запросов То есть это называется Text to Image модель то есть конвертация текста в изображение Ну конечно
же это самый популярный вариант получения изображений далее есть возможность редактирования изображений То есть когда у вас есть уже готовое изображения Вы можете заменять части этого изображения на другие снова таки описывая то как именно вы хотели бы изменить определённую часть изображения создание вариаций существующего изображения но здесь написано что пока что вот эти варианты поддерживаются второй версией этой модели снов таки на текущий момент всё будет улучшаться и оптимизировать в будущем но в целом Первое - это генерация изображения на основании текста второе - это редактирование изображений этих изображений и третье - это получение вариантов определённого изображения И начнём
мы с генерации изображений И для этого существуют отдельные эндпоинты именно для генерации изображений имеется в виду эндпоинты на стороне Open ai для обращения к ним но если вы взаимодействует с Open ai используя какие-то библиотеки то по факту нпои от вас скрыты то есть вот здесь в этом коде Мы не видим непосредственно ссылки по которой происходит обращение клиента Но это находится внутри библиотеки то есть эти эндпоинты и эту информацию можно найти Допустим можно нажать Ctrl и навести курсор мыши на функцию Create перейти внутрь модуля уже там где описаны типы для функции Create и далее по цепочке
Можно попробовать найти собственно говоря где Где находятся эндпоинты либо же можно прямо зайти в node modules найти так Open ai пакет то есть каждый пакет npm - это на самом деле отдельная программа которая состоит как и любые программы из папок файлов и допустим у этого npm пакета есть свой файл package json видите в котором описаны зависимости для этого пакета и так далее То есть есть файлы Index GS в корне Index GS Index mgs и так далее Так ну мы можем попробовать быстро поискать здесь так helpers resources так helpers resour так либо же можно так так
так так Help так Internal quy string так так набор классов с их типами так можно знаете ещё как сделать можно на github github так github Open ai можно зайти в этот репозиторий на github и поискать здесь так точнее так давайте на npm Open ai так перейдём на npmjs.com так вот Open ai так Вот ссылка на этот пакет это называется пакет не не пакет точнее а github репозиторий называется Open ai node потому что есть много разных репозиториев на github от компании Open ai и здесь вот мы видим ту же структуру те же файлы и папки видите
которые мы только что с вами проанализировали Вот здесь в папке node modules то есть тоже самое видите bin helpers Internal lip так так необходимо наверное сменить здесь ветку так v410 так не знаю какая ветка опубликована на npm если честно Так Next так Ну давайте перейдём в Master в основную ветку потому что содержимое может немного отличаться на npm и здесь на github потому что на npm Вы можете публиковать определённую ветку определённую версию вашего приложения Так ну здесь Давайте поищем а ну-ка endp [музыка] endp Так может здесь endp endp так endp так так так Open так completion
так это в read файле описано видите Так а где непосредственно находится сам этот endp где он указан так Ну можно поискать так endp endp можно поискать Chat completions А ну-ка давайте так Chat completions Chat completions вот так то есть поищем Где в текстовых файлах встречается Chat completions так это снова таки markdown File completions GS Chat completions and Show One Match так Index TS так вот Вот собственно говоря эндпоинты находятся в src Index TS Это здесь я вижу так вот есть po запрос вот используя такой endpoint то есть он этот endpoint находится в файле resources Chat
completions То есть это как раз тот путь на сервере по которому мы Обращаемся для взаимодействия с completion API Ну и таким же образом используется Вот ещё endp встречается видите Chat completions end Point для получения eding то есть для кодирования текста в виде в виде векторного набора чисел так V completions это наверное предыдущий endp и так далее То есть я думаю что смысл понятен То есть я хотел вам показать что информация о х присутствует непосредственно в библиотеках которые мы с вами используем То есть вам не нужно вручную указывать По какому пути вы хотите обращаться на стороне
API сервера то есть мы просто используем библиотеку и всё Ну и ранее мы с вами обсуждали Какие эндпоинты используются для разных моделей и это можно найти так resources libraries так rate limits так Model selection так А ну-ка я здесь поищу endpoint так Model and Point compatibility так А ну-ка давайте откроем это В отдельной вкладке Да вот список нпои на текущий момент то есть вот такой endpoint можно использовать для разных моделей вот этот endp для модели Whisper One вот этот endpoint для TTS TTS HD Вот это основной end который мы с вами использовали в предыдущих секциях
то есть end и только что мы нашли где этот endp находится непосредственно допустим в библиотеке npm которую мы с вами использовали вот end для взаимодействия с текстом Ну и для моделей дали даль вот для работы с изображениями так хорошо О эндпоинт генерировать изображения так в дали 3 вот такие возможные расширения поддерживаются в в API То есть вы можете указывать расширение вот таком виде в таком виде либо в таком виде И к сожалению пока что не поддерживаются изображения большего разрешения Но даже генерация таких изображений в принципе обходится не сильно-то дёшево На мой взгляд То есть около
д центов каждое изображение вот такого формата вот эти будут обходиться дороже по умолчанию изображение генерируется в обычном качестве у в запросах Для получения более детализированного изображения Ну и написано что квадратные изображение стандартного качества генерируются быстрее всех То есть вы можете запрашивать одно изображение в одном запросе для текущей модели даз в бух моделях это буде этого так а вот для предыдущей модели можно запрашивать до 10 изображений используя параметр N То есть пока что модель 3 поддерживает только генерацию одного изображения Ну и вот пример собственно говоря получения изображения то есть вызывается метод generate таким же образом как
и Ранее Вы должны создать экземпляр класса Open ai То есть у вас будет доступ к переменной Open ai это объект далее мы обращались к свойству чат этого объекта для получения Chat completion то есть для завершения текста сейчас же мы будем обращаться к свойству images и у этого свойства есть ряд методов в том числе метод generate и если вы вызываете этот метод то будет происходить обращение уже к другому эндпоинт о которых мы только что говорили для генерации изображений Ну и далее вы указываете модель которая вас интересует prt то есть текст который будет конвертирова в изображение количество
изображений и размерность изображений то есть Сай Ну и после этого если генерация прошла успешно вы получаете НС и в этом объекте будет как и Для текста информация о количестве использованных токенов и далее там будет это будет массив и допустим для модели 2 там может быть несколько объектов каждый объект будет описывать отдельное изображение и таким образом мы Обращаемся к первому элементу в массиве Дета и это снова таки будет объектом и используя точка URL мы Обращаемся к определённому свойству этого объекта а URL будет содержать ссылку на изображение То есть это просто ссылка на изображение в интернете далее
Вы можете скачать Это изображение сохранить его локально допустим это снова таки Также можно сделать программно используя и node J и Python и любые другие языки программирования которые поддерживаются и которые имеют некоторые внешние библиотеки для взаимодействия с Open Хотя даже если библиотек нет для какого-то языка Вы можете написать логику взаимодействия с то есть в этом нет никаких проблем Вот пример кода на Python для выполнения той же задачи для генерации изображения Так давайте вернёмся к No JS так здесь есть ссылка на то что нового появилось в модели дали 3 так так так так это я уже перел
на другую страницу так последняя модель на теку момен Да почему кстати говоря называется дали дали - это комбинация от Уолли - это персонаж известного мультфильма который собирал мусор на планете после того как на планете не осталось людей и и дали да который рисовал картины то есть дали ли и Дали то есть вот такая комбинация то есть робот - это как бы м описание того что такое openi собственно говоря и подчёркивание того что изображение генерируется роботом а дали понятно что это один из самых известных и уважаемых художников в мире Вот такая комбинация так э так при
переходе от дали два в дали три эндпоинты не изменились для обращения То есть вы просто указываете Какую модель вы хотите использовать для тех же эндпоинт так новые параметры Да появилась появился параметр модель для эндпоинт то есть ранее когда была только одна модель дали два модель была по умолчанию такая сейчас же можно указывать так появился ещё один параметр стиль можно указывать Natural или vvd то есть стиль генерации изображений так пока что только два так гиперреалистичные изображение это vit стиль Natural More Natural более натуральные гипер реальные изображения Так а здесь vivid написано ещё более драматичное изображение default
VV то есть по умолчанию VV стиль так Quality Старт или HD мы об этом только что поговорили Ну и другие параметры - это промт то есть текстовый запрос от пользователя максимальная длина 1000 символов и я рекомендують как можно более точным в описании того что вы хотите получить от от моделе по генерации изображений количество изображений для дали пока что только один поддерживается сайз размер генерируемых изображений вот такие варианты начиная от вот такого небольшого квадрата и заканчивая прямоугольниками вот такого размера такого либо такого то есть либо горизонтальный либо вертикальный прямоугольник Так ну информат то есть можно либо
получить ссылку на изображение либо же указать b64 J То есть можно получить изображение в бинарном формате который можно сразу использовать в вашем приложении то есть изображение будет закодировано в тексте Так ну и так идентификатор конечного пользователя который поставляется библиотеками я думаю что автоматически так новые функции новые возможности дали три так PROMT rewriting то есть переписан запроса для оптимизации Так ну здесь есть ссылка на детали того что появилось нового в дали 3 ну и здесь примеры изображений и соответствующие собственно говоря текстовые текстовые запросы для получения этих изображений можете посмотреть на качество генерируемых изображений в дали 3
Так ну и вот собственно говоря сравнение сравнение качества стандартное качество и HD качество то есть здесь явно видно что больше деталей было сгенерировано по сравнению со стандартным качеством так standart qu ofb так Ну это ещ один пример стандартного качества и качество Так ну и далет поддерживает вот такие новые разрешения которые не поддерживались предыдущей моделью Ну предыдущая модель снова таки она доступна для использования она может генерировать больше изображений быстрее но меньшего разрешени так так вот примеры Так это у нас стандартное качество это у нас HD качество то есть видно что здесь больше деталей так снов таки
это прямоугольное изображение уже снов таки одни и те же пром использовались для получения результатов Но сноки это HD качество это стандартное качество Ну если у вас удовлетворяет стандартное качество то нет необходимости запрашивать HD изображение потому что для генерации HD изображения используется больше токенов конечно же так это приме можно генерировать иконки допустим так svg так примеры иконок которые генерирует эта модель Так так ну здесь необходимо было конвертировать jpg в svg используя либо же программу допустим же одну из многих библиотек для разных языков программирования есть в друго это очень простая Задача В принципе для любых языков программирования
генерация логотипов так вот H так вот тоже но разные стили и стиль то есть по умолчанию используется так вот текстовый запрос кони провост логотипов можно загрузить своё изображение свой логотип и далее указать как мы хотим изменить этот логотип то есть какие допустим вариации Может предложить модель и вот вариации вот этого логотипа так тату Можно также генерировать так стикеры вот примеры стикеров Minec SK так скины для Майнкрафта скин и так далее То есть можно выполнять очень много разных задач с моделью на текущий момент третьей версии моделью по генерации изображений так использование в веб-дизайне то есть вот
по полноценной страницы которые можно потом уже верстать так текстуры э шрифты видите то есть абсолютно широкий спектр возможностей это статья в которой описаны особенности дали 3 Так ну и собственно говоря давайте сейчас рвёмся и после перерыва уже приступим к отправке запросов поработаем с разными текстовыми вводами и по экспериментируем с генерацией изображений и прежде чем переходить Далее давайте-ка для интерес посмотрим сколько мы с вами использовали кредитов скажем так перейдём в биллинг в и здесь я вижу что за время предыдущих уроков Я использовал 4 цента пополнял изначально я счёт на 10 долларов То есть это текущее использование
сервиса openi Итак давайте после перерыва перейдём к собственно говоря получению [музыка] изображений Теперь давайте вместе на практике потренируемся генерировать изображени при этом конечно же мы будем делать это программно потому что в плейграунд дали и отправить запрос на генерацию изображений возможно в будущем этот функционал добавится Итак давайте вернёмся в capabilities Image gener и перейдём к примеру генерации изображения Итак Вот пример и и мы его уже обсудили в предыдущем уроке то есть мы здесь отправляем запрос используя openai images и генерируем изображение выбирая определённую модель и здесь указываем текстовый запрос для конвертации текста в изображение и также указываем
размер изображения и далее здесь мы просто получаем ссылку на сгенерировано изображение причём ссылка сохраняется определённое время если я не ошибаюсь 1 час где-то здесь Да urls Will expire After an Hour То есть вы должны либо скачать изображение на протяжении одного часа либо допустим сразу получить изображение в формате Base 64 то есть в текстовом формате и далее Вы можете выполнять разные действия с этим изображения уже локально после его получения с сервера openi и я предлагаю сгенерировать изображение загрузить его сохранить потом отправить запрос на получение дополнительных вариантов этого изображения и возможно также мы потренируемся изменять изображение то
есть выполнять редактирование изображения и это возможно На текущий момент только в предыдущей модели дали 2 Ну я думаю что появится такая же возможность и в дали 3 очень скоро Итак давайте начнём и мы будем работать с тем же проектом который мы с вами создали ранее и на текущий момент у нас в папке есть по сути только один файл JavaScript Example mgs и я конечно же сохраню все файлы в этом проекте для того чтобы вы При желании могли перейти в определённый файл и выполнить запрос но для того чтобы продолжать далее нам немного Нужно привести в порядок
наш проект nodejs потому что мы будем добавлять новые файлы JavaScript здесь в этой папке и я предлагаю первым делом сделать следующее Давайте перейдём в потому что я вижу что есть некоторые изменения в этом файле Example mgs Если вы хотите отменить изменения которые вы делали без сохранения в репозитории git можно просто здесь нажать вот на эту стрелку discard changes Отмените изменени discard changes и я вижу что я вернулся к предыдущей версии этого файла то есть там где n было 2 и там где были другие значения для переменных System contenter Content само содержимое файла я оставлю то
есть в этом файле мы с вами тренировались отправлять запросы к текстовой модели и здесь можно выбирать различные модели как предыдущие так и актуальные То есть вы можете допустим здесь просто поставить пару фигурных пару двойных кавычек точнее Вот так Давайте ещё раз мол далее кавычки и здесь вы увидите список всех поддерживаемых моделей Допустим можно выбрать gpt 35 turb но на текущий момен рекомендуется использовать эту модель Вместо неё следует использовать gpt 4o Mini и конечно для того чтобы видеть актуальный список всех опций для всех параметров Вы должны регулярно обновлять npm пакет который вы используете то есть вот
npm пакет openi текущая версия Вот такая и вам время от времени рекомендуется обновлять его давайте-ка я посмотрю Какая версия доступно На текущий момент npm Open ai потому что это важно не только для использования текстовых моделей но и в принципе всех моделей потому что в каждой библиотеке есть функционал по взаимодействию с разными моделями и текстовыми и для генерации изображений и другими Итак давайте вернёмся перейдём на openai npm и и здесь я вижу всё ту же версию в принципе 4711 которая инсталлировать Так ну давайте я покажу как обновлять версию потому что я думаю что это будет полезно
в принципе вам в будущем потому что вам следует регулярно обновлять версии библиотек которые вы используете у себя и давайте сделаем так давайте в папке noe установим одну из предыдущих версий и потом обновим до самой последней версии Итак для того чтобы установить предыдущую версию Нам необходимо сделать следующее то есть нам не нужно в принципе удалять папку и не нужно изменять Pack J то есть мы в папке node выполняем следующее npm Install Open далее символ Add и после символа Add Вы можете указать одну из предыдущих версий можно кликнуть вот здесь на списке версий так я вижу что
так curent так 4711 текущая версия опубликована 4 дня назад Вот предыдущей версии 471 71 Давайте допустим я инсталира 580 она была опубликовано 2 месяца назад так 4580 в таком случае я после Add пишу 4580 да Но перед тем как это делать давайте-ка Я пока скрою терминал и перейду в node modules и здесь перейду в папку Open ai и открою файл package Jon здесь так так так где он так вот P Jason и в этом файле указана версия этого npm пакета openi то есть видите совпадает с той версией которая указана у меня на текущий момент в
моём файле package Jason то есть в описании моего проекта 4711 А так Давайте ещё раз откроем Packet Jon Вот вот эта версия и теперь давайте вернёмся в терминал и Инста более старую версию допустим 4580 Давайте выполним инсталляцию и вы должны сейчас увидеть что у вас изменится вот эта запись в файле package Jason видите изменилась на 4580 и если выполнить Ту же самую операцию которую мы только что выполняли то есть перейти снова в Open ai и здесь открыть package Jason то я уже увижу 4580 то есть вот так npm заменил предыдущую версию которая была в папке
node modules на другую то есть на версию 4580 и в моём файле Pack J я вижу вот такую запись и для тех кто не знаком с форматом записей То есть это вот этот символ каретки означает что в нашем проекте потенциально поддерживаются любые изменения вот этой части то есть минорной версии вот этого пакета и ч версии Но если изменяется основная версия то наш пакет не будет с новой версией И на что это влияет сейчас мы с вами посмотрим как можно обновить вот эту версию до последней которая удовлетворяет вот этому требованию и допустим Когда мы будем проходить
с вами процесс обновления и к примеру на момент обновления будет доступна Пятая версия уже Open ai то автоматически npm не установит эту версию То есть вы должны вручную её инсталлировать вот таким образом то есть указывая явно что Да я хочу установить новую основную версию Потому что если вы инсталлировать риски связанные с этим у вас просто просто ваше приложение может перестать работать если вы инсталлировать на работоспособность других программ которые зависят от вашего пакета Итак мы установили предыдущую версию 4580 и Теперь давайте давайте обновим npm пакет до последней версии как это делать Так давайте Здесь введём э
ну допустим я не знаю как это делать Давайте перейдём в чат gpt и здесь напишу How how to update npm Packet to the latest version То есть как обновить npm пакет до последней доступной версии так ещё раз так можно использовать npm Install команду то есть ту которую мы использовали до этого но с помощью Вы можете установить абсолютно любую версию более старую более новую какую угодно но при этом npm всегда добавляет вот такой префикс символ каретки который подразумевает что ваше приложение совместимо с более новыми верси но всеми кроме изменённых maor версий так npm update можно использовать
для того чтобы обновить все пакеты до последних версий можно npx npm Check updates выполнить То есть можно проверить обновление вот таким образом так you can Если вы хотите инсталлировать новые версии вопреки вот этим правилам то есть допустим если вышла основная версия новая основная версия Пятая версия openai Вы можете ввести вот эту пару команд и тогда npm инсталлировать версии без учёта вот этих требований вот этого правила ещё есть другое правило с вот таким символом Тильды и в таком случае мы говорим что наше приложение Должно обязательно работать с версией 458 но здесь версия может быть любая то
есть допустим четвёртая Пятая и так далее То есть мы поддерживаем изменени pch версии такой же символ позволяет обновлять вот эту и вот эту версию так Ну давайте введём просто команду npm update и посмотрим что произойдёт так npm update так ничего не изменилось так removed packages CH One package VAB так здесь версия не изменилась То есть как видите одной команды N было недостаточно так additional Tips Давайте напишем npm update npm update CH то есть ничего не изменилось так N Con так А ну-ка давайте npm update минус Минус Help так npm upgrade update Global допустим я не
понимаю ответа вот ТБО То есть он мне предлагает использовать всё-таки npx npm Check updates То есть это какой-то сторонний npm пакет который хочу использовать так how to update npm package так npm update - G update глобальных пакетов npm outdated updating packages так переходим на сайт npm так npm update npm updated так Jon снова рекомендация использовать npm update так а ну-ка Давайте попробуем npm upgrade так ничего не изменилось Up to Date написано то есть видите новая версия для пакета Open ai не обнаруживается хотя есть на текущий момент более новая версия вот такая и допустим я не
понимаю что происходит так npm так npm Up так Legacy какая-то устаревшая версия так Давайте напишем так npm Open обм один пакет openi так ничего не изменилось так ещё раз откроем всё ещё 4580 здесь написано Но если я перейду в папку node modules так в пакет Open ai вот он открою здесь package Jon вот я здесь увижу на самом деле последнюю версию то есть в файле Pack Jon ничего не меняется Когда вы выполняете npm но при этом инсталира удовлетворяет вот этим требованиям которые вы описали в файле package Jon так ещё раз Где наш файл package J
так вот наш файл Packet Jon то есть эта строка не изменяется пока вы вручную явно не ведёте npm Install с инсталляцией конкретной версии то есть но npm update приводит к тому что на самом деле версия обновляется до последней которая удовлетворяет вот этому правилу и если зайти в package Log Jon и поискать здесь Open ai то я увижу на самом деле последнюю версию которая доступна на текущий момент 4711 то есть вот так работает обновление npm но снова таки если мы хотим явно последнюю версию и не меньше тогда необходимо использовать команду npm Install далее Open ai Open
ai и далее 4711 Я укажу на текущий момент либо уже укажу latest вот так и это тогда приведёт к изменению файла package Jon видите то есть здесь вот это правило изменилось ну это по сути ручная реин определённой версии npm пакета но снова таки ключево ключевой момент в том что если выходит более новая основная версия какого-то внешнего пакета допустим Пятая версия то вы должны в любом случае использовать npm Install самостоятельно npm update не обновит пакеты в папке node modules до последней допустим основной версии Это то что касается обновления версии и кроме обновления версии Давайте выполним следующее
Давайте ещё переименуй Example mgs на completion mgs потому что мы здесь использовали с вами модель то есть для завершения текста Вот так и в принципе давайте знаете что ещё сделаем Давайте Вот это вынесем в отдельный модуль потому что мы будем обращаться теперь к openai в других файлах JavaScript и я думаю что имеет смысл вынести вот эту логику в отдельный модуль для того чтобы мы могли переиспользовать её в других местах в других модулях нашей программы и Давайте создадим здесь папку в папке node под папку и назовём её допустим utils уты и здесь в этой папке Давайте
создадим новый файл под названием чек Check API вот так напишем mgs и в этот файл давай вынесем вот эту логику так Check API Ke и мы это обернётся без параметров и внутри функции Я вставлю то что я скопировал то есть и protos env Open API key и так далее и нам необходимо экспортировать эту функцию из этого модуля чтобы мы могли её импортировать вот здесь в этом модуле и в других модулях которые мы будем с вами создавать и Для этого необходимо использовать ключевое слово exp и Если Вы планируете Так что в этом модуле будет только одна
функция Check API Ke то можно её экспортировать по умолчанию Export default и далее название функции Check API Ke вот так Давайте сохраним изменения в этом модуле то есть вот таким образом Мы создали здесь функцию Check API Ke и мы её экспортируем внутри этого модуля Как и во всех модулях nodejs есть доступ к process env то есть ничего не нужно импортировать здесь дополнительно то есть доступ есть то есть process - это глобальный объект в node.js который доступен везде во всех файлах JavaScript так Export default Check API Ke и Давайте закроем этот модуль и теперь вот здесь
вместо вот этого Давайте всё это удаляем нам нужно импортировать вот эту функцию Check API Ke из этого модуля Check API Key можно сделать как можно написать просто Check API Key так Нет не распознаёт Не видит Intel SN что есть такой модуль Так давайте так import далее пишем Check API Key From и далее в двойных кавычках будет utils так точнее Вот так то SL utils то есть мы указываем относительный путь к вот этому файлу в папке utils то есть то SL utils то есть видите Inter видит что есть такая папка utils далее с Check API Ke
mgs то есть вот таким образом мы импортируем функцию Check API Ke из вот этого модуля который Мы создали с вами самостоятельно и далее нам нужно просто вызвать эту функцию Точнее я прошу прощения не чек с большой буквы а чек с маленькой буквы потому что это не класс Я очень извиняюсь за допущенную ошибку это больше опечатка как бы то есть функция называется с маленькой буквы То есть это не класс и модуль называется с маленькой буквы потому Здесь также с маленькой буквы и и так ниже перед созданием экземпляра класса Open ai мы должны С вами вызвать функцию
Check apq вот так просто То есть просто вызываем эту функцию а всю остальную логику она уже реализует внутри себя Если Open API недоступен в объекте Press inv то мы выводим консоль ошибку и завершаем работу приложения то есть то же самое что мы делаем в принципе делали ранее но в этом конкретном файле так э и теперь Давайте попробуем выполнить собственно говоря этот файл Давайте м не давайте знаете как Давайте зайдём в точка in закомментировать completion mgs То есть node completion mgs я всё ещё нахожусь в папке node Итак выполняем этот файл и я вижу ошибку то
есть ошибка Open API environment is missing и мы собственно говоря вышли из приложения process Exit Так давайте вернёмся к ключу который у нас должен быть в файле и выполним код ещ раз и мы должны обратиться уже собственно говоря к текстовой модели gpt 4o Mini Так давайте выполним код и я получаю уже корректный результат то есть всё работает как и ранее то есть вот таким образом мы в нашем приложении node.js вынесли в отдельный модуль вот эту функцию которая проверяет наличие ключа API аналогичным образом можно вынести в отдельный модуль и создание экземпляра класса Open ai То есть
это можно делать в каждом отдельном файле completion mgs Image Generation mgs допустим embeddings mgs который мы будем создавать далее А можно делать так как мы это делали ранее как бы То есть можно либо выносить в отдельный модуль либо не выносить в отдельный модуль но мы в дальнейшем будем выполнять в принципе отдельные файлы Независимо то есть completion mgs мы выполняли только что напрямую и также мы будем выполнять mgs допустим и так Ну я вот думаю так и Check API openi так Ну давайте давайте вынесем это в отдельный модуль Давайте в папке utils создадим новый файл Open
mgs вот так то есть назовём его просто Open и туда мы вынесем собственно говоря вот эту так в принципе мы можем вынести вот всю эту логику туда то есть всю вот эту логику которая у нас сейчас есть вот здесь включая загрузку и переменных среды из файла то мы можем вынести в Open mgs то есть смотрите Я просто вырезаю ВС это отсюда и Вставляю сюда у нас openai mgs находится в одной папке с Check API Ke mgs Потому здесь я убираю utils вот так то есть будет просто Check API mgs то есть мы всё ещё импортируем
функцию Check API из другого модуля для того чтобы проверить есть ключ или нет и далее создаём новый экземпляр класса openai и нам необходимо этот экземпляр класса openai экспортировать Давайте экспортируем его по умолчанию Export default и и далее будет Open ai вот так в принципе можно сократить Вот это и написать Export default вот так New Open ai то есть мы экспортируем по умолчанию экземпляр класса openai так и теперь нам необходимо импортировать этот экземпляр класса openai который мы так у нас здесь ещё Ир openai Error был так eror instance Open Error Так ну нам необходимо оставить этот
импорт в фа completion mgs вот этот импорт Open нам не нужен но Open Error мы будем всё ещё использовать в блоке Catch Вот здесь мы проверяем Какая именно ошибка возникла при взаимодействии А вот здесь нам этот ипор Open Error не нужен То есть мы импортируем только ла Open из Open сохраняем изменения проверяем ключ как и ранее тиру экземпляр класса Open ai и так Ну вот эту строку как бы можно ставить здесь Но она на самом деле не сильно относится к созданию экземпляра класса openai то есть загрузка переменных среды это обычно делают в главном файле приложения
но так как у нас главного файла приложения нет как бы у нас будут просто отдельные скрипты в разных файлах то давайте пока оставим это здесь как бы но на самом деле Вот это не относится к этому этому модулю так Ну давайте импортировать экземпляр класса openai так import Open ai и смотрите если я пишу просто Open ai то vscode распознаёт что есть м Open ai который экспортируется из utils Open ai видите я могу просто нажать Tab и vscode за меня завершит написание этой строки этого импорта то есть мы импортируем экземпляр уже созданный экземпляр класса openai из
openai mgs то есть вот таким образом Давайте сохраним изменения и выполним ещё раз код так выполним ещё раз код Ну я не буду закомментировать ключ openi в То есть у нас ключ доступен и всё работает как и ранее так и Давайте вот этот ко Log я ещё Перенесу отсюда так вырежу отсюда сохраню изменения и Перенесу сюда так Check AP Ну вот так сноки чтобы вы знали что у нас ключ Open API должен находиться в объекте process env вот так потому что мы явно здесь нигде его не указываем при создании экземпляра класса Open ai Хотя это
можно сделать То есть вы знаете что так давайте круглые скобки пара фигурных скобок То есть можно явно это указать здесь API Ke и значение будет process env Open ai API Ke То есть можно явно это сделать но это то что выполняется и по умолчанию неявно То есть как бы нет необходимости это указывать при создании экземпляра потому я этот коло принесу просто сюда вот так и Давайте ещё одну проверку так Ну на самом деле не надо проверок потому что я просто коло перенёс в другой модуль Вот так мы скажем так подготовили немного наше приложение чтобы мы
могли дальше переиспользовать Вот эту логику чтобы мы не дублировали это в каждом отдельном файле и проверка ключа Open у нас в отдельном моду также и мы это сделали в папке utils и Давайте создадим сейчас собственно говоря comit так Ну давайте-ка наверное я ещё быстро создам rmi MD файл для нашего приложения nodejs мы попросим чатбот написать этот файл так readm так MD File Вот так и здесь нужно просто Описать как выполнять определённые файлы такие как completion mgs и как собственно говоря использовать inv ключ Так давайте я просто попробую знаете как сделать я возьму сделаю скриншот вот
этого без API Вот так и загружу скриншот собственно говоря в чат gpt Так так давайте-ка я возьму это скриншот Так ну Так давайте тогда так ещё раз так вот так и unable tolo screenshot так Давайте ещё раз так вот загружается скриншот и я напишу I I MD file For The node Application to to insert Open to insert API Ke in the env File and to Launch separate separate scripts completion mgs IM давайте-ка Как мы назовём с вами файл для генерации изображений так completion mgs для генерации изображений мы будем с вами использовать images Ну давайте создадим
images images images mgs images mgs так Ну достаточно в принципе using node interpreter то есть Мы выполняем эти скрипты Так ну что ж такое regenerate так nos так так то есть видите он написал мне вывод уже отформатированный А мне нужен вывод в формате собственно говоря генерации ответа на текущий момент чат gpt форматирует как бы вот такие блоки автоматические потому что они находятся в тройных обратных кавычках и это то что используется в формате Mar Вот так и я как бы такой трюк как бы делаю я говорю что repl три обратных кавычки with допустим три знака вопроса
Вот так и тогда я заменю снова три знака вопроса на три обратных кавычки Сейчас посмотрим что мы получим так так снова таки тоже самое так Run No output in txt Block Да кстати говоря видите он распознал корректно изображение которое я загрузил со структурой файлов и папок так всё равно А output Everything As Everything As Text то есть видите всё равно из-за того что у него форматирование у самого основано на markdown он выводит это всё уже в формате HTML скажем так а do it Starting Так может как-то другой формат Starting output так Code Block О вот
Теперь наконец ему легче стало так хорошо вот теперь я возьму скопирую Вот это всё вставлю rmi MD и это уже формат markdown то есть видите знаки решёток для разных заголовков разного размера так setting Up environment Так теперь мне необходимо заменить три знака вопроса на три обратных кавычки вот так заменяю везде сохраняю изменения И теперь я могу скопировать путь к rmi MD кликаю правой кнопкой мыши выбираю Copy path вот так скопировать путь и открою этот readm File в новой вкладке веб-браузера и я уже вижу отформатированный markdown фай но у меня такое форматирование работает благодаря тому что
у меня есть расширение markdown Viewer если его у вас нет macd View так View Chrome То есть вы должны его установить Вот найдите это расширение Mark VI вот оно и оно позволяет форматировать md вот в таком виде то есть нужно выбрать тему Вот моя тема Water Dark размер Full и также нужно в Advanced options разрешить доступ к локальным файлам видите File Access то есть Разрешите доступ у себя также вот таким образом и тогда у вас также будут отображаться markdown файл давайте прочтём так так Создайте точ NV файл можно создать файл путём копирования inv sample то
есть видите он распознал что у нас есть inv sample потому что я предоставил скриншот структуры нашего проекта добавить ключ так тут только здесь не API Key а Open ai API так зайду сюда в MD так CD Open ai Open ai API Key your API Ke Here так replace with actual API Key так хорошо Давайте сохраним изменения обновим здесь страницу так Open AP Всё верно Так выполнение скриптов допустим выполнение скрипта completion mgs то есть используем команду noe completion mgs для выполнения скрипта images mgs допустим noe images mgs но пока что у нас такого скрипта нет но
в следующем уроке мы начнём создания этого файла то есть в этом уроке Я решил как бы выполнить такую подготовительную работу так ну и в конце ещ раз указано что необходимо убедиться что есть необходи необходимые переменные среды так А ну-ка ещё добавлю Add also npm Install Step то есть Нужно же ещё инсталлировать все зависимости используя npm так это нужно сделать где-то после наверное проверки evv файла Хотя здесь видите указано Это в самом начале так Ну хорошо давайте я скопирую Вот это dep инсталляция зависимостей так будет вторым шагом insert AP то есть здесь будет второй третий шаг
Вот так и выше будет первый шаг depend и здесь я также заменю три знака вопроса на три обратных кавычки вот так npm Install То есть Вам нужно в папке в той Пап где мы с вами MD File выполнить npm Install первым делом так хорошо давайте обновим здесь readm MD File Project name А здесь будет nodejs node JS Project for interaction with Open ai API сново таки я пишу на английском как бы во-первых чтобы не переключаться между языками и во-вторых я всегда на всех моих курсах говорю что вы должны улучшать свои знания английского языка Потому что
как вы видите вся документация для всех проектов на английском языке потому я крайне Рекомендую вам всегда улучшать ваш навик навыки английского языка по возможности так Project for interaction with Open API так bri description так А ну-ка of Pro То есть в принципе мы написали уже как бы F для нашего приложения так Open ви я Уточняю так так Ну давайте скопирую эту строку вставлю здесь Open Ну вроде как бы всё нормально Давайте сохраним изменения обновим здесь так Ну вот короткое описание так config то есть требования JS необходимо инсталлировать так фа создать npm скопировать sample в env
заменить Open AP на ваш ключ выполнение скриптов в принципе как бы так inv sample Давайте чтобы это было всё так как мы указали в inv sample я вот это скопирую и вставлю вот здесь Open AP и здесь я напишу что нужно заменить Open AP Наре ключ так Давайте ещё раз обновим так вот так your Open API Ke так выполнение скриптов используя node вот так хорошо Это мы с вами сделали Так мы поговорили с вами о обновлении пакетов о команде npm update которая обновляет пакеты до последних версий которые удовлетворяют собственно говоря тому что описано файле package
Jon но непосредственно Ile package Jon кон NP update не изменяет Если вы хотите чтобы файл изменился вот здесь вам нужно использовать npm Install и установить вручную более новую версию это мы с вами обсудили Мы также добавили readmi MD File и также мы вынесли в два отдельных модуля функционал проверки наличия ключа openai API и также мы вынесли в отдельный модуль создани экземпляра класса openai Почему так стоит делать потому что если допустим вы пишете более сложное приложение в котором будет возможность допустим генерации изображений и формирования текста и использования других моделей openai и это можно будет делать в
процессе работы одного приложения то я Рекомендую вам создавать экземпляр класса openi то есть скажем так клиента для взаимодействия с серверами openi в одном месте и переиспользовать его в разных местах это как раз то что мы делаем здесь то есть мы создаём экземпляр класса Open в этом модуле экспортируем его и теперь этот экземпляр могут использовать другие модули при этом Каждый раз он не будет пересоздать при импорте этого модуля то есть создание экземпляра выполняется однократно но снов таки в нашем случае Мы выполняем отдельные файлы такие как completion mgs напрямую используя node потому Для нас это не сильно
актуально но всё равно я показал вам как провести рефакторинг это касается не только JavaScript но и любых других языков программирования так и теперь время создать собственно говоря comit Так давайте перем в Source посмотрим что мы с вами изменяли Так мы переименовали Example mgs на comp mgs но сейчас я вижу что EX mgs помечен как то есть как будто это новый файл и здесь явно не видно что файлы были переименованы на самом деле фай был переименован для того чтобы увидеть что файл реально был переименован вам необходи свить эния [музыка] All CH и тогда я увижу что
completion mgs был просто переименован видите Index то есть теперь git увидел что в репозитории уже есть такой файл с таким содержимым и мы просто изменили название этого файла так можно просмотреть снова таки что произошло в completion mgs Мы не только его переименовали но и убрали вот эти строки кода и добавили Ну оставили только вот эти то есть импортируем экземпляр класса Open из другого модуля вот путь к модулю добавили RM MD - это полностью новый файл вот содержимое этого файла Check API Ke - это новый модуль новый файлы видите буква A означает что этот файл был
добавлен в икс indx Edit То есть когда вы добавляете изменения в staged changes git уже создаёт объекты в репозитории git то есть вот эти файлы уже находятся в репозитории it И вам осталось только создать comit то есть указатель на новое дерево объектов то есть эти файлы снова таки уже находится в репозитории и Open mgs это также новый файл который находится в папке utils То есть это модуль в который мы создаём с вами экземпляр класса Open и экспортируем его по умолчанию из этого модуля чтобы мы могли в других модулях его использовать так Ну давайте здесь напишем
сообщение для комита то есть мы провели по Су MD fore давайте так for nos Project то есть мы провели и добавили File для приложения nodejs потому что у нас F находится в папке node видите то есть в корне у нас находится G ignore Ну и временный файл и AP который конечно же мы игнорируем то есть я не добавляю его в репозиторий то есть там я сохраняю просто временно свой ключ Так давайте вернёмся в Source Control и нажимаем commit но перед этим я скопирую сообщение так commit и я добавлю тег э так тег будет V1 20.0
То есть я изменил минор ную версию То есть была версия 1.0 следующий будет 1.0 так здесь будет сообщение создаём тег так хорошо тег был создан вот он v120 и теперь каких-либо изменений более в проекте нет И у нас всё готово чтобы продолжать и начинать работу уже с другими моделями снова таки мы могли бы это не делать но так как мы уже с вами начали программировать то я хотел бы вам показать как это делается более Правильно Потому что это не описано Вот в этих примерах то есть здесь просто блоки кода которые вы должны использовать чтобы взаимодействовать
с моделями Но как это делать более Правильно мы обсуждаем с вами также так я вижу что какие-то расширения стоит обновить Давайте нажмём просто Restart extensions и без перезагрузки самого приложения vscode vscode перезапустить собственно говоря конкретное расширение Да кстати говоря вот одно из основных расширений которое работает по умолчанию и оно доступно сразу же при инсталляции Visual Studio Code так почему-то не сработало Restart extensions так ещё раз давайте так Ну теперь всё в порядке и как раз это приложение позволяет показывать много подсказок которые мы с вами видим в процессе использования допустим того же npm пакета Open ai
вот этого npm пакета То есть когда мы здесь вот ставим просто двойные кавычки и видим варианты которые предлагает нам собственно говоря Intell Sense это происходит благодаря тому что у нас есть вот это расширение которое смотрит на на типы для определённых параметров и подсказывает нам потенциальные значения Так давайте вернёмся к тому что было gpt 4o Mini хорошо на этом мы этот урок заканчиваем и в следующем уже приступим к созданию файла images mgs для того чтобы генерировать изображения и сохранять Их у нас в нашем приложении nodejs И вот теперь после небольшого рефакторинга нашего приложения node JS пришло
время приступить к взаимодействию с моделью дали для генерации изображений И для этого Давайте создадим в папке node File с названием images mgs как мы с вами запланировали в предыдущем уроке и Давайте посмотрим как мы взаимодействуем с openai в файле completion mgs то есть мы импортируем openai Error из пакета openai и импортируем экземпляр класса openai из нашего модуля который Мы создали в пап utils в файле openai mgs то есть вот здесь мы создаём экземпляр класса openai и экспортируем его по умолчанию из этого модуля похожим образом я предлагаю поступить собственно говоря и в images mgs То есть
можно скопировать вот эти две строки вставить в images mgs и далее Давайте перейдём в гайд на официальном сайте в документации capabilities и далее IM Generation генерация изображений и Вот пример кода в котором мы будем использовать модель дали 3 вот текстовый запрос и мы должны получить ссылку на изображение в ответе можем скопировать этот пример и вставить его ниже и Давайте здесь после модели укажем просто пару двойных кавычек и на текущий момент я вижу две опции далее два и далее три я буду использовать дали 3 и Давайте здесь напишем Ну можно это вынести также в отдельную переменную
как мы это делали в в completion mgs можно вот здесь выше создать переменную const prompt и далее будет э допустим Ну я напишу мм bloger setup with Notebook and Camera то что перед собой вижу то и попрошу изобразить скажем так так и здесь будет То есть можно написать в jav скрипт вот так промт двоеточие промт если так не так промт если у нас есть переменная промт вот так а можно в таком случае сократить просто до названия свойства вот так прот То есть можно опустить двоеточие и прот если название переменно и название свойства в объекте JavaScript
это объект совпадают так количество Но это количество по умолчанию это максимальное количество которое поддерживается моделью да 3 на текущий момент в будущем я думаю что будет поддерживаться больше изображений за один запрос имеется в виду генерация разных изображений в одном API запросе и Давайте ниже выведем консоль respon можно написать так вот так и так dat URL Ну давайте также ниже выведем консоль Image так Image URL вот так так отправляем запрос давайте-ка посмотрим какие методы доступны для объекта images то есть пишем images далее ставим точку и я вижу Create variants создание вариантов Edit редактирование и generate то
есть это то что мы в принципе с вами обсудили из официальной документации то есть всё это описано здесь то есть вот редактирование пока что только дали два поддерживается и варианты Итак начнём собственно говоря с создания то есть генерации generate так модель выбрали размер изображения выбрали посмотрим на respons и посмотрим на ссылку для изображения так Image URL так Давайте сохраним изменения и выполним этот код Да пока что мы ошибку не обрабатываем никак Если она возникнет в этом блоке потому давайте пока просто выполним код так node images images mgs так я нахожусь в папке Open нужно перейти
вначале в папку node так change directory node и здесь будет node images mgs так выполняем код напоминаю что в файле env уже есть собственно говоря ключ API который мы используем для взаимодействия сервисами Вот мой ключ у вас должен быть ваш ключ как вы видите процесс генерации изображения происходит не быстро так iml так iml А нужно же использовать А почему здесь в примере кода не указано Con либо L для IM URL то есть неверный пример ято это упусти здесь Давайте посмотрим лище не отправлять запрос потому что вот в объекте respon я вижу URL на самом деле
Вот он так то есть мы можем использовать его из этого запроса то есть смотрите Что такое respon resp - это объект Вот он в котором есть Так давайте-ка я вот этот терминал удалю предыдущий значит в этом объекте есть свойство created есть свойство Data то есть Data - это массив и в этом массиве есть один объект вот этот объект значит массив начинается вот здесь и заканчивается Вот здесь в этом объекте есть два свойства revised PROMT и URL то есть видите модель расширила скажем так мой текстовый запрос вот этот в начале перед тем как отдавать текст в
модель регенерации изображений и ви то есть видите в центре должен быть ноутбук так то есть новые идеи ожидаются то есть умная камера то есть детализация полностью того что должно быть на изображении Хотя я написал очень простой запрос то есть вот по факту Как выглядел финальный запрос для модели и Вот ссылка на изображение я могу скопировать эту ссылку потому что мы не добавили зде imur и далее уже iml вот так должно быть но чтобы не отправлять лишний запрос давайте пока закомментировать [музыка] текущий момент изображения хося вот по такому пути то есть blob Core Windows net то
есть главный домейн здесь Windows net далее Privat и далее указана ссылка и в принципе мы можем просто взять эту ссылку перейти в браузер и посмотреть доступно ли это изображение прямо в браузере нажимаем Enter и да изображение Как вы видите доступно в принципе Это означает что на протяжении одного часа Это изображение будет доступно в принципе всем Потому что видите только чтобы браузер не просил меня вводить какие-то ключи логины пароли то есть изображение просто доступно как блоп то есть просто как объект в хранилище изображений и я могу это изображение Загрузить сейчас сохранить у себя на компьютере но
давайте сделаем это программно то есть сохраним изображение в собственно говоря в нашем проекте и Давайте создадим здесь папку images но я предлагаю не создавать её вручную А написать скрипт который будет добавлять изображение в папку и допустим я не знаю как это сделать То есть как взять ссылку скачать по ссылке изображение и сохранить её в определённой папке в приложении node.js переходим в чатбот и задаём вопрос Open так да in the images Folder in mys App to do it То есть как сохранить изображение в папке так resp Data Open в принципе я дал достаточно контекста здесь я
думаю что даже не нужно брать наш код и вставлять его как бы Так ну видите он продолжает использовать три знака вопроса вместо обратных кавычек Потому что раньше я просил при написании readm файла заменять три обратных кавычки на три знака вопроса чтобы я мог скопировать текст и вставить его в markdown файл то есть видите чат gpt отталкивается от предыдущего контекста но это не сильно важно как бы э то есть мне предлагается установить пакет exos и FS но FS - это как бы встроенный модуль в node.js его не нужно инсталлировать отдельно то есть этот модуль доступен в
JS и так а вот exos необходимо инсталлировать Хотя можно обойтись и без exos так exos po Так ну почему-то здесь не указано что я что нужно использовать пакет npm Open и здесь указан пример Как отправить просто напрямую запрос по определённому ту видите то есть явно указывается Open жений V1 imag Generations это то чего мы не видим здесь Потому что мы использовали библиотеку Open ai все эндпоинты находятся там внутри мы с вами ранее это анализировали так ну и здесь также добавляется headers об headers autorisation и добавляется ключ API видите который берётся из process env API то
есть нам вот это не нужно мы и так уже отправляем запрос вот в таком виде используя Open Поэтому вот это для нас неактуально Но снова таки вот так можно отправить любой запрос на openi используя ваш ключ авторизации и указать что вы хотите получить ответ в формате Jon без внешнего npm пакета Open ai а использую допустим exos либо же есть в nodejs встроенная функция fch для получения данных Так ну вот что нас интересует Image URL мы получаем так Image response download Image то есть загружается изображение используя тот же exos то есть просто вызываем функцию aios и
передаём объект то есть указываем URL Method Get response Type Stream то есть сервер отправляет изображение в виде потока и далее указываем где мы хотим сохранить собственно говоря изображение то есть используя path который импортируем из встроенного модуля path формируем путь для изображения File path и далее используем Writer для того чтобы создать поток для записи файла то есть всё происходит с помощью потоков получаем поток от сервера и записываем его в файл так Date Now то есть добавляем ещё дату в названии изображения То есть у нас по сути изображение будет называться исходя из даты но давайте-ка посмотрим что
у нас здесь есть в изображении так ну-ка я ещё раз открою терминал Так у нас нет вообще где-то имени файла который был сгенерирован То есть у нас есть ряд параметров запроса ST так А ну-ка я разобью для начала вот этот URL То есть я хочу посмотреть какие там параметры запроса есть Может там где-то есть что-то похожее на название изображения либо идентификатор изображения который мы могли бы использовать в качестве имени файла То есть я бы не хотел использовать дату для имени файла Так ну заканчивая обзор этого кода то есть мы создаём Wi для записи файла и
далее направляем respon Data то есть мы берём ответ от сервера когда Мы скачиваем уже изображение Обращаемся к свойству Data и вызываем Pipe с помощью Pipe в nodejs один поток направляется в другой поток то есть мы берём поток с данными изображения от сервера и направляем его в поток wr который Мы создали вот здесь то есть Мы создали и таким образом один поток от сервера переправиться в поток для записи данных в файл и мы присваиваем результат вот здесь wr и в No есть понятие событий и когда закончится процесс записи в файл возникнет событие Finish то есть и
мы сможем отреагировать на это событие вот таким образом то есть мы в вот таким образом можем привязать определённые функции к определённым событиям то есть мы создаём Event listener то есть слушателя событий и когда Writer выдаст событие Finish мы вызовем вот эту функцию и мы здесь просто выведем консоль сообщение что изображение было сохранено по такому-то пути если же возникнет ошибка записи в файл то мы вызовем вот эту функцию и напишем что возникла ошибка сохранения изображения То есть это то как можно работать с потоками в nodejs А ну-ка я спрошу Можно ли это переписать используя fch чтобы
не использовать exos use и вставлю вот этот код который я хочу переписать используя так сноки так модель обладает знаниями на момент конца 2023 года то почему-то мне не предлагается использовать встроенный fch давайте-ка тогда поищем так nodejs use fch down down images то есть использование fch для загрузки изображений так can Down API Так ну Видите вот старый ответ то есть JS не имела встроенной поддержки но сейчас уже Note то есть начина с 18 версии уже поддерживается это то есть видите можно использовать просто функцию видите так то здесь мы вручную создаём путь directory Ну принцип такой же
видите создаём поток для записи фай выва пере ссылку так res await finished readable From Web res Body то есть мы используем readable который мы импортируем из Stream и формируем поток на основании ответа от сервера берём rest Body и направляем используя Pipe в поток для записи данных в файл то есть здесь логика такая же но видите мы явно должны создать поток readable Stream то есть поток на чтения данных от сервера и потом направить его в вот сюда так Down Ну это мы делаем отдельное функции Вот и потом мы можем вызывать эту функцию многократно для того чтобы
просто указать ссылку для скачивания изображения и название файла в который мы хотим записать изображение так так так как-то хотел бы попроще это сделать не ВС равно видите да то есть направляем данные в поток на запись Ну давайте воспользуемся так как снова таки поддерживается в JS так ссылка у нас есть и она будет активна на протяжении часа но сначала я хотел бы распарсить как я говорил вот эти параметры запроса Так давайте здесь напишем можно в принципе не уточнять потому что из контекста ТБО понимает что мы говорим о JS так вот используем встроенный модуль URL так Ну
давайте сделаем это быстренько то есть прямо в этом же файле мы добавим импорт из пакета urur так ur так давайте сделаем это здесь будет Вот так нет я хочу все параметры А вот так можно сделать Я хочу получить все параметры запроса Вот и далее ниже Давайте вым в Вот так это мы оставляем за комментированный то есть нам не нужно сейчас отправлять запросы на новые изображение это также могу закомментировать так нам нужно просто пока конвертировать вот этот Image URL так чтобы мы получили как бы quy давайте посмотрим Да кстати говоря мы с вами в принципе можем
выполнять код используя Code Run это расширение я не помню говорил я вам ранее о НМ или нет так cun То есть можно выполнять и JavaScript Code Java Python и так далее если это расширение у вас не инсталлировать его и тогда у вас здесь справа появится Вот эта кнопка для выполнения кода то есть вместо того чтобы каждый раз заходить нам в терминал и в терминале вводить команду node и далее указывать название файла который мы хотим выполнить мы можем просто там где открыт файл текущий которую мы хотим выполнить нажать на эту кнопку выполнения но здесь так возникла
ошибка почему-то не был а здесь же нам нужно так Open Open так хотя мы импортируем здесь Open так ещё раз так Почему возникла э ошибка Так у нас же есть так так так так Ну ладно давайте с этим Ну хотел бы сразу разобраться с этим Так эта ошибка возникает вот из этой строки То есть если мы закомментировать Ир Так давайте заменим здесь и и URL From и далее будет URL вот так то есть мы используем синтаксис и шестых импортом и экспортом давайте так сейчас выполним и я уже вижу объект с параметрами запроса так касательно той
ошибки которая Возникала когда Мы выполняем по сути модуль utils Open Давайте разберёмся с этим позже то есть видите не загружаются переменные среды из файла evv Хотя в файле evv У меня есть необходимый необходимый ключ снова таки это происходит если я выполняю код с помощью Code Runner давайте к этой проблеме позже вернёмся А пока просто закомментировать код Вот так и я получаю вот такой объект То есть это все параметры запроса для вот получение этого изображения с сервера так Image png так Skid skt ID идентификатор изображения так sks skv сигнатура так Ну я не знаю Здесь нет
ничего подходящего чтобы нам можно было использовать для для названия изображения на самом деле нечего нам отсюда взять на самом деле Да кстати говоря Если вы впервые используете Code Runner то я Рекомендую вам перейти в настройки settings здесь найти настройки Code Runner и убрать точнее поставить галочку Code Runner Clear previous output очищать предыдущий вывод и так execut Map вам не нужно трогать так Save File before Run можете поставить галочку автоматически сохранять изменения файле перед запуском Code Runner и снять галочку Show execution message Хотя я могу так А ну-ка давайте я поставлю пока врем на эту галочку
Show execution message и так Show execution M Вот так и Давайте ещ раз я раском вот эту строку чтобы попытаться всё-таки понять быстро так noe images mgs то есть да выполняется Вот такая команда noe и далее весь путь к файлу images mgs но почему-то не происходит чтение из evv файла Ладно давайте вернёмся к этому позже так Давайте выполним ещё раз код и вот так по умолчанию работает cod Run То есть он показывает команду которая выполняется и далее указывает код выхода из процесса то есть нулевой код означает что всё прошло успешно но перед этим мы видели
код оди Когда возникла ошибка Когда мы вышли из процесса благодаря благодаря вот этой строке process Exit 1 1 когда мы проверяем наличие Open так хорошо я понял что как бы нечего нам взять из этой ссылки для названия потому я предлагаю формировать название изображения исходя из промтайм функцию которая будет формировать название изображения исходя из текста но Давайте допустим возьмём какую-то часть допустим первой два либо три слова соединим их используя к примеру знаки подчёркивания и добавим PNG потому что формат изображений png и это будем использовать в качестве названия для файла Так давайте с этого начнём так Create
a function a function which Will Make Image Image File name From the prompt I want to make it Maximum максимально 20 символов давайте так максимально 25 und L Так давайте так и Я вставлю пример промт Вот то есть то что я указал при запросе и вот ци так Ну давайте Просто я пока возьму вот эту функцию gener F и вставлю прямо здесь так это мне не нужно то есть Fun gener F PROMT L und Так ну у нас может быть ситуация когда какое-то слово будет обрезано посредине но давайте пока так попробуем так generate F name
так generate fil name Давайте укажем здесь prompt и Давайте присвоил name Вот так и выведем консоль conso Log fil name Вот так и ниже мы с вами Так давайте quy PRS уберём это нам уже не нужном также не нужно то есть мы не будем использовать параметры запроса для того чтобы формировать название изображения пока значение для Image URL оставим здесь Но помните что у нас изображение доступно только один час Ну это конкретное которые мы сгенерировать уже но мы всегда можем отправить Новый запрос на генерацию нового изображения потому может не спешить скажем так так fil name так
Ну давайте посмотрим как у нас будет сформировано название для файла так Promt Так ну расширение у нас же не будет добавлено Так а у нас всегда будет png или нет в ответе Так а здесь где-то у нас есть png png Да есть у нас png видите А вот в принципе название изображения которое сгенерировал на сервере видите так png А как у нас до этого предлагалось сформировать название файла выше так PNG указы видите здесь то есть мы не смотрели на на расширение того файла который был сгенерирован на серверах openai давайте-ка спросим дали png or jpg так
wep png jpg cre Так давайте так давайте так чтобы было всё более-менее правильно мы посмотрим на формат вот здесь так png вот у нас есть здесь вот такой quy parm то есть параметр запроса Image png и есть у нас расширение файла также Вот здесь в имени файла который мы скачивали в ответе от в ответе от модели у нас здесь нет каких-либо метаданных о изображении То есть у нас есть просто cre видите и Data То есть у нас нет где-то поля в котором сохранялось бы указание на то это png файл либо jpg и так далее Потому
нам нужно взять как бы расширение отсюда всё-таки и зря я удалил как бы парсинг этого URL так А ну-ка если я отменю изменения Так давайте вернёмся всё-таки к query PRS давайте-ка выполним этот код ещё раз так My URL not Def так quy PRS Image URL А здесь конечно же так я не всё отменил то есть вот так My URL выполним код так вот у нас значение вот такое есть видите но снова таки в будущем формат этой ссылки может измениться на самом деле Понимаете в чём дело Но вот здесь всегда будет я думаю что название файла
плюс расширение для скачивания изображения так Давайте напишем здесь I want I want to get Image extension From such URL to append it to the File name how to do it То есть как взять Вот эту вот эту часть как бы вот и понять Какое расширение файла так так так так Split то The last After URL Ага То есть у нас путь к файлу будет так давайте qu не использовать А здесь напишем cons My далее точка И здесь есть ВиДи есть ли здесь сразу расширение так to string username нет видите расширение сразу нет файла непосредственно то
есть есть у нас pathname то есть путь на сервере Давайте выполним этот код можно использовать комбинацию клавиш которая указана вот здесь видите когда Мы выполняем Run Code вот комбинация клавиш на Mac я могу использовать её это Alt Ctrl N на Windows Используйте вашу комбинацию клавиш так вот кстати говоря я вижу название для файла который которые мы генерируем в функции generate f видите то что мы с вами и предвидели то есть идёт обрезка где-то посередине слова Ну в целом название файла соответствует тому что я хотел сделать То есть слова разделённые знаками подчёркивания так и вот полный
путь собственно говоря к файлу видите и в конце У нас есть здесь расширение То есть это путь к файлу на сервере и что нам предлагается дальше так разделить используя точку Так и последний элемент то есть мы разбиваем вот эту строку используя точку для данного примера мы получим два элемента у массиве Вот первый элемент будет И вот второй элемент в массиве и мы берём второй элемент используя Pop и метод Pop в JavaScript возвращает результат то есть мы присваиваем результат переменной extension и у нас будет extension так Ну в принципе я считаю что нормальный вариант получения расширения
для изображения Давайте возьмём эту фун IM и добавим её вот здесь ниже либо выше Неважно как бы то есть у нас есть функция по генерации имени файла вот здесь и есть функция по получению расширения для изображения на основании ссылки то есть видите мы должны передать Просто ссылку и мы получаем расширение для изображения так если возникла ошибка на этапе парсинга вот здесь где-то то мы попадаем вло выводим ошибку неправильный URL и возвращаем N вместо расширения из этой функции Get Image extension Давайте протестируем как бы у нас есть URL вот здесь это я могу удалить Вот так
Итак у нас есть URL Image URL мы передаём URL в вызове Get Image extension передаём здесь IM URL и приво результат переменной EX Вот так и Давайте выведем консоль cons Log Test extension вот так так ещё раз вот содержимое функции Get IM extension то есть конечно если вы будете делать это всё вместе со мной Я надеюсь что вы делаете всё вместе со мной то конечно же чатбот будет вам отвечать по-другому и предложенные функции Бут выглядеть по-другому если вы хотите чтобы всё было как Вы можете просто переписывать мои функции как бы либо же использовать ответы чатбот
у вас Главное чтобы логика сохранялась то есть название переменных могут быть другие как бы но главное чтобы на выходе Вы получили то что я получаю как бы то есть мы хотим получить расширение изображения исходя из Юла мы должны его получить Давайте протестируем это выполним Код так я вижу png вот отлично и теперь вот эту функцию Get Image extension мы должны как бы внедрить вот в эту функцию по генерации имени файла ну-ка я посмотрю сделал ли уже этот чат или нет так не сделал то есть мы должны так F F gener F так я возьму вот
эти две функции так вставлю сюда F From the with extension то есть может нам стоит также изменить и название первой функции потому что сейчас оно называется А мы теперь будем формировать по сути имя файла плюс расширение на основании вот этой функции Get imens [музыка] функцию так PROMT URL а передаётся ещё и URL сюда в эту функцию Ну логично как бы то есть мы передаём и PROMT который мы используем вот допустим вот такой PROMT и URL так convert The prom to lower Case Spaces with und Так что мы здесь Ага То есть записываем добавляем вызова функции
Get Image extension передаём туда дальше URL который мы принимаем здесь в этой функции и если у нас есть extension то дописывай extension после точки Иначе просто возвращаем Base fil name без расширения видите То есть если мы смогли получить расширение файла мы возвращаем его если не смогли всё равно функция старается как бы вернуть какой-то использую скажем так рабочий вариант рабочий ответ который мы могли бы использовать дальше для названия файла потому что в принципе мы можем создать файл и без расширения Так давайте возьмём это как бы вот эти две строки Допиши вот сюда вот так так ну
этот мы убираем То есть если у нас extension то есть мы используем тернарный оператор то тогда возвращаем вот такую строку это шаблонная строка JavaScript то есть мы формируем новую строку исходя из Base F это у нас B F должно быть Вот здесь теперь видите bas F Мы выполняем то же самое что делали до этого дописывай extension и возвращаем уже имя файла с расширением иначе возвращаем Base filen так Get Image extension URL и тут добавляем также URL конечно же То есть у нас уже будет два параметра в этой функции prompt и URL А так generate fil
name Ну смотрите вот эти комментарии Все я могу убрать как бы потому что это и так понятно что здесь происходит то есть не нужно использо комментарии описывать код который сам себя и так описывает то есть не нужно это делать как бы вот этот комментарий в принципе можно оставить чтобы описать в целом Что вы делаете дальше для чего это вы делаете Это можно даже добавить перед функцией то есть описание функции непосредственно а всё остальное как бы не нужно И вот этот комментарий также не нужен То есть исходя из названия функции так понятно что мы здесь делаем
мы получаем для изображения передавая URL то есть абсолютно всё понятно И здесь также Понятно Мы возвращаем полное название файла включая расширение если есть расширение если нет возвращаем просто базовое имя файла всё не нужно усложнять так ну здесь этот комментарий в принципе я могу оставить для тех кто не сильно знаком с JavaScript чтобы было понятно что здесь происходит потому что как бы здесь код сам себя не описывает для тех кто снова таки не знаком с JavaScript так хорошо есть такие две функции у нас вот эта функция эта функция generate fil name и теперь давайте протестируем так
вот у нас есть вызов generate fil name и теперь нам нужно передать не только PROMT но и URL потому Давайте я вот это возьму вырежу отсюда передвинули о не нужен и здесь в вызове функции generate fil name мы должны передать второй аргумент это позиционные Аргументы и мы видим это здесь при вызове функции то есть мы должны передать PROMT видите и URL причём Как будет называться переменная которую мы передаём второй вот здесь вызове функции не имеет значения то есть мы просто указываем здесь Image URL то есть главное чтобы мы передали значение в функцию generate filename так
и выводим консоль то есть мы вызываем только эту функцию F это вызывается внутри этой функции видите причём в принципе мы можем оставить объявление этой функции позже этой функции потому что в JavaScript работает специальный механизм который как бы поднимает все функции вверх даже если находятся позже допустим место использования е Ну сейчас проверим как бы таква выполним код то есть мы просто вызываем generate fil name так выполним код используя Code Runner и я уже получаю как бы полное название для файла отлично Таким образом мы получаем название для файла так и и и давайте давайте чтобы немножко вам
упростить работу чтобы вы не набирали как бы весь этот код самостоятельно сейчас создам как бы промежуточный комит Причём я возьму Вот это всё вот это изображение Я просто вырежу как бы и здесь напишу your Image URL вот так то есть мы здесь можем протестировать функцию generate filename сохраним изменения и я перейду в Source Control создам здесь comit и напишу function which generates generates Image Image File name Вот так и также здесь в этом коммите будет закомментировать наверное я вот это по двину выше на случае если вы захотите сначала сгенерировать изображение у вас здесь будет так
URL Ну если вы раскомментировать эту строку то вам нужно закомментировать вот эту строку Я думаю что с этим вы справитесь самостоятельно как бы давайте Я сохраню изменения вот в таком виде function IM F и мы по сути добавили новый файл IM mgs вот Единственное изменение в нашем репозитории это также видно здесь видите буква Ю unt И я создам промежуточный комит сейчас так Yes и также добавлю тег v121 То есть я изменю только ч версию То есть это как бы небольшое изменение пока что это ещё не финальная версия работающего работающего JavaScript файла так и здесь будет
так Нет я не скопировал сообщение из комита так так так так function which generates давайте я перепишу function which generates imag File name Так давайте создадим тег так тег был создан отлично и Давайте рвёмся и дальше продолжим как бы собственно говоря в нашем приложении вот здесь Итак я перед тем как сделать паузу вставлю ещё раз ссылку на моё изображение с которым я работаю но не знаю успеем ли мы закончить Весь процесс э на протяжении часа или нет но я приступлю немедленно к записи следующего урока после небольшого перерыва [музыка] так только что я не на запись
скажем так немного потратил времени чтобы попытаться решить проблему с cod Runner и проблема на самом деле которая у нас Возникала при запуске ранее происходит из-за того что из файла env не загружаются переменные среды и Напоминаю что ранее мы с вами делаем вот такую проверку в Check API Ke mgs и я для теста перенёс э как бы Ир env config в этот файл images mgs И решил посмотреть на значение process env Open eep если я выполняю код вот так используя Code Runner Я получаю undefined видите То есть это означает что переменные не загружаются из файла env
Я предполагаю что это из-за того что мы используя Code Runner выполняем по сути вот такую команду где указывается вот такой полный путь к исполняемому файлу images mgs видите и скорее всего что. в таком случае ищется вот здесь в корне этого пути и потому так как его невозможно найти он не подгружается и потому переменно Open недоступно в проте Я попытался задать вопрос как бы ТБО но я не получил работающего результата То есть можно переписать импорт вот таким образом этоже работает то есть вместо импорта Dot NV config вот так сделать то же самое Я получаю undefined то
есть не могу прочесть Open apik так Make sure inv в корне проекта но можно попробовать скопировать ещё inv реально в корень проекта как бы так так P вот так в корень проекта ну-ка давайте сейчас попробуем выполнить код Э так Так давайте перейдём в imes mgs снова так выполняю О теперь получил собственно говоря ключ то есть смотрите будет работать тогда когда у вас точка inv будет в корне проекта вот здесь но снова таки так как мы пишем с вами приложение nodejs и точка NV должен быть внутри папки node а не вне папки node то как бы
я не хотел бы переносить точкой NV вне попки noe но видите как бы Нашёл сейчас решение этой проблемы То есть можно оставить точко inv вне папки node Если хотите чтобы Вы могли использовать Code Runner Для более быстрого запуска определённых файлов и тогда мы можем вернуться к тому что было вернёмся к импорту openi вот эту строку я закомментировать три кода vs Code то сейчас уже ошибок не должно возникать То есть у нас вот этот файл Check AP kmjs функция в нём выполнится корректно то есть и у нас не будет ошибки давайте-ка проверим это вот видите нет
ошибки то есть всё в порядке Мы можем здесь в этой функции вывести ещё в Коль process env openai API Ke выполняем код так так так А мы должны же выполнить images mgs а не этот файл выполняем images mgs и собственно говоря видим результат вывода в консоль вот здесь так всё в порядке так ещё раз images mgs выполняем а нужно было выполнить images mgs видите я обрадовался что нашёл решение этой проблемы То есть всё работает без проблем то есть вы можете просто вынести точ NV файл в корень проекта как бы и тогда сможете выполнять э и
images mgs и completion mgs без проблем используя Code Runner Давайте выполним completion mgs допустим где мы импортируем openai из модуля Open ai mgs а в нём Мы выполняем вот эту проверку наличие Open API Key А так давайте перейдём в completion mgs выполним так выполняется всё отлично получаю ответ от Open API Open ai севера то есть снова таки Либо выполняете как вот советует чатбот как мы делали ранее определённые файлы напрямую используя интерпретатор node то есть Заходите в терминал и делаете как мы делали до этого то есть переходите в папку node и далее node и допустим images
mgs либо completion mgs Давайте выполним images mgs напрямую images mgs так imes mgs так Прошу прощения код был выполнен получай результат пока что это название просто файла с расширением то есть либо так выполняете либо переносите точ и в корень проекта просто скопируйте временно но так снова таки не следует делать потому что у нас приложение изолировано в папке No должно быть и мы только сделали вот эту копию только чтобы сделать хорошо как бы Коране чтобы он выполнял напрямую вот так Итак это было отступление касательно того как исправить ошибку Code Runner и Давайте в следующем уроке уже
продолжим делать то что мы делали до этого то есть загрузим изображение мы уже формируем название для файла и нам осталось сохранить файл собственно говоря внутри допустим папки images в папке node Давайте этим займёмся далее [музыка] Итак Теперь вы можете выполнять вот эти отдельные файлы images mgs либо completion mgs используя Code Runner Если вы просто скопировали файл то env в корень проекта то есть теперь у меня есть два файла то NV вне папки node и в папке node но снов таки это как бы временное решение чтобы просто работал cod Run чтобы мы могли выполнять файлы быстрее
но FV должен находиться в папке node потому что приложение nodejs особенно в продакшене всегда выполняются используя node а не Code Runner Code Runner - Это только для этапа разработки не более чтобы стить выполнение разных фав потому если выхо выполнять используя cod Run скопируйте просто то NV из папки node в то NV вне папки node в корне нашего проекта в корне папки openai и тогда вы сможете выполнять любой файл допустим completion mgs используя Code Runner вот получаем ответ Ну и При желании можно скрыть Вот эти системные сообщения от Code Runner но можно их и оставить чтобы
смотреть С каким кодом завершилось выполнение того или иного файла и теперь Давайте продолжим и нам с вами осталось в images mgs так Я закрою вот эти файлы осталось в images mgs реализовать сохранение файла мы уже формируем имя файла Да кстати говоря мы с вами не переименовали функцию на [музыка] давайте это сделаем так и там где мы вызываем эту функцию А мы вызываем её сейчас здесь также перемену функцию то есть мы получаем название файла с расширением Ну и давайте так давайте я уже по привычке открываю терминал Давайте выполним этот код и получаем название изображения так мне
каже что ужение доступно как бы а ну-ка давайте я протестируют ли оно или нет перейду в браузер так уже недоступно э то есть видите час прошёл пока мы с вами говорили о посторонних темах скажем так ну не посторонних всё это связано как бы но это изображение у меня уже недоступно но сейчас как бы закончим код по сохранению файла по сохранению изображения в файл и Запроси новое изображение Ничего страшного что это недоступно так так так так так давайте вернёмся туда где мы обсуждали собственно говоря А у меня же здесь осталось Это изображение видите я вкладку не
закрыл потому я могу сохранить Это изображение если мне оно сильно нравится вот так так значит нам осталось с вами сохранить изображение мы можем создать поток и мы можем использовать встроенную функцию нет необходимости использовать exos Хотя exos позволяет сделать более удобным способом что ли А ну-ка давайте вернёмся к примеру с использованием exos для для сохранения файла так это всё обсуждения которые касались создания функции для формирования названия так здесь Stream pipeline так так так Stream pipeline Так мы создаём используя promisify pipeline Так pipeline мы импортируем из Stream так здесь readable импортируется From Web Pipe но я не
знаю что как бы проще снова таки у разработчиков всегда есть несколько вариантов решения одной и той же задачи Ну давайте я сделаю так раз я уже решил цию я буду е использовать так Допустим вот из этого ответа Так давайте импортировать FS Так нам нужно импортировать FS Так так ну можно в принципе вот это использовать То есть почему бы нет должно работать так так давайте добавим имр используем вот здесь для того чтобы распарсить имя то есть получить путь к файлу и из него получить потом png Потому это оставляем только я подвинула были внешние импорты а потом
внутренние импорты и сюда ниже Я вставлю так но нам нужно это переписать используя импорт можно быстро попросить чатбот это сделать using Я вставлю вот эти три строки как бы так скопирую так ипор FS из FS import readable то есть вот таким образом в node JS и в JavaScript в целом импортируются дефолтные экспорты а вот таким образом именованные экспорты то есть если в каком-то пакете есть именованные экспорты то вам нужно импортировать их вот так в фигурных скобках и тогда таким образом вы можете импортировать и другие именованные и именованные экспорты допустим writable также есть в этом модуле
и это именованный экспорт и тогда вот эти названия должны совпадать с теми названиями которые есть в модуле Так мы импортируем похожим образом мы импортируем Fin из prom так импортируем как и ранее Open это экземпляр класса Open из нашего модуля уже так мы можем свернуть пока эту функцию свернуть эту функцию то есть вот нажав на эти стрелки так у на остатся Так давайте перем вот сюда так создаём поток так Body так IM URL Так ну вот этот URL уже как бы нерабочий потому я его просто удаляю Нам нужно будет запросить новый новоя изображение так Потому здесь
будет так оставим так IM URL это будет Вот это это мы сохраняем так можем вывести в Вот это создаём wr Stream Так давайте я вот это всё скопирую вставлю сюда так await fetch здесь будет Image URL то есть мы должны обратиться по ссылке которую нам предоставляет Open ai то есть после нашего запроса на создание изображения мы получим ссылку на изображение и обратимся к ней используя fch Так мы здесь создаём поток но здесь нам нужно указать полный путь к файлу и мы формируем путь к файлу вот здесь использую generate File name with extension но это только
название файла расширение А нам нужен полный путь и Давайте вот вернёмся к тому как здесь в примере генерируется полный путь так давайте я найду так вот как это делается и как это следует делать в nodejs то есть в JS есть доступ к переменной два знака подчеркивания и содержит путь к текущему модулю который выполняется и используя DIR name мы можем сформировать новый путь допустим для изображений и мы с Вами договорились о том что мы будем сохранять изображение в папке images то есть мы создадим папку images причём это сделано будет автоматически сейчас вручную мы ничего не делаем
но эта папка images будет находиться в папке node вот здесь На ряду с папкой utils и node modules потому вот так следует формировать новый новый путь для для файла так F Pa pa Join Но вот на этом месте мы должны вызвать функцию для создания имени файла то есть вот эту функцию которую мы подготовили уже потому перед перед этим перед созданием собственно говоря потока для записи в файл мы должны так так давайте я переименую здесь [музыка] на можно на F Вот так и перед этим будет Вот так так и вот это я могу уже собственно говоря
так давайте я вот это скопирую название файла которое было предложено изначально мне ТБО я формирую название файла с расширением используя функцию которую мы с вами написали то есть функция generate fil name with extension вот эту так вот это я могу удалить Вот так так и мы создаём wr Stream так File path ну здесь вот мы можем оставить в принципе File PA то есть название переменной имеется в виду путь к файлу то есть PA вот так Да можно кстати говоря посмотреть что такое de name давайте это сделаем временно То есть можно вот это всё закомментировать пока
быстро Вот так и здесь я выведу в консоль conso Log и здесь выведу DIR name Давайте выполним код используя Code Runner так да что же такое name Да это вот другая проблема с которой мы сейчас лкм как бы если мы используем ешеы модули то dirname недоступно так dirname is not define давайте я передам это сообщение так FS я посмотрю понадобится нам вот это или нет FS Stream pipeline так а ну-ка чтобы я потом снова не искал этот блок кода Stream pipeline pipel Так может использовать кстати говоря Stream pipel давайте я пока скопирую вот эти части
Может я так здесь нужно так и import promisify From util и так pel и и IMP pipel можно нажать Tab вот так но нам нужен модуль Да здесь используется модуль Stream так finished Stream promises давайте я пока это оставлю как бы здесь так создание Stream Promise так ниже это сделаем Stream Stream pipeline точнее создаётся Вот так и я скопирую вот эту строку я посмотрю Либо так мы сделаем Либо так как указано вот здесь используя finished Так давайте я пока это Так ну я добавлю просто здесь пока И закомментировать всё И нам нужно сейчас понять как
нам вместо использования dirname в и шестых модулях обратиться к пути так просто я скопирую вот эту ошибку de name is not defined вот сюда То есть можно использовать формируется вот так то есть мы можем пересоздать как бы но нам нужен только по сути и потому pa6 Mod то есть что в целом нам следует сделать чтобы сформировать путь к файлу Аналогично тому как мы хотели сделать вот вот так да то есть F PA То есть как В целом следует формировать путь adjust так Ну да предлагается видите использовать что в принципе не сильно удобно так А здесь
как формируется просто то есть без DIR вообще так можно использовать относительные пути как бы без чаще используется как бы вот здесь как раз пример использования относительного пути видите то есть мы просто указываем название файла и это такой файл будет создан прямо там где находится этот модуль вс-таки нет рекомендуется использовать для гибкости и точности То есть можно вот так формировать и далее путь так давайте так Давайте ещё поищем в интернете атель Ну смотрите Я вс-таки рекомендую вам пользоваться Stack Overflow Для более точных ответов на ваши вопросы так так начиная с версии 2011 можно просто вот так
делать да ame так А вот в предыдущих версиях JS следует делать так как предложил чатбот на самом деле То есть если у вас версия noe J старше Двадцатый как бы а я Рекомендую вам использовать версию старше Двадцатый вот у меня 20 1111 На текущий момент но можно обновить до более новой то можно просто использовать dirname вот так а так name так вот ещё есть такой вариант так 2021 как бы ну да вот это то что нам предложил чатбот как бы я не хотел бы формировать относительные пути на самом деле если честно хотя это можно сделать
потому что могут возникать ошибки при при выполнении файлов в разных средах скажем так то есть лучше формировать полные пути потому Давайте всё-таки воспользуемся вот этой информацией которую видите нам чатбот не выдал как бы но я нашёл эту информацию здесь и это популярный ответ видите потому можно взять Вот отсюда так так раском я снова сверну эти функции чтобы у нас было больше пространство и здесь я вот так сделаю и давайте сейчас выводим вым консоль так cons вот так мне снова придётся закомментировать чтобы я лишний раз не отправлял запросы как бы но я могу пока вот это
только закомментировать чтобы мы не отправляли запрос на Open вот ши токе так и выполним код так вот видите результат вывода DIR то есть полный путь к текущему модулю Temp Code Run F так Ну это же не то что нам нужно так нам нужно так Ну сноки я не знаю заработает ли это корректно если мы будем использовать Code Runner так А почему создался временный файл Temp Code Runner File так давайте-ка я выполню чтобы не разбираться с этим конем я выполню используя node так я в папке node node images mgs так и вот я вижу вот Такой
путь А вот собственно говоря вот этот путь Я прошу прощения то есть это другой вывод и в Code Runner по идее также должен нет в cod Run Я почему-то не вижу результата выполнения вот этой команды cons de name так а вот здесь я вижу вот Такой путь users Demo Desktop Open A node То есть это путь к папке node в который находится вот этот модуль images mgs вот что нам нужно и мы возьмём этот путь Допиши к нему images дальше Вот здесь будет images название папки images и уже внутри images мы будем создавать отдельные файлы
для каждого изображения то есть вот таким образом мы сформируем путь отлично давайте это сделаем так Итак dirname у нас уже есть Давайте удалим этот cons Log и вот здесь вот здесь у нас будет File path path Join то есть мы формируем полный путь как мы только что обсудили здесь будет DIR name далее папка images и далее название файла включая расширение файла и это будет полный путь к файлу который мы хотим создать потом создаём поток для записи в файл Stream так далее нам нужно посмотреть ели вообще так а ну-ка здесь я прокручування [музыка] IM URL мы
проверяем есть ли у нас вообще корректный ответ от сервера видите если у нас не Image respon о То есть если нам сервер скажем так вернул какую-то ошибку то мы выбрасываем ошибку используя throw New Error То есть это означает что мы не смогли загрузить изображение вот такую проверку я бы добавил конечно же и это нам следует сделать вот здесь то есть мы давайте так здесь будет не Body а Image response вот так так здесь мы создаём поток далее У нас обращение к серверу используя Image URL так ach и ниже будет If not Image resp то есть
выбрасываем ошибку Fail to Down Image и также мы в выводе здесь укажем случай Если по каким-то причинам мы не смогли загрузить изображение то есть вот это абсолютно рекомендуемая провел проверка то есть нам не следует начинать процесс записи в файл если у нас собственно говоря в ответе от сервера какая-то ошибка есть какой-то код потому что вот допустим только что Мы проверяли доступность изображения вот можно кстати говоря протестировать я возьму эту ссылку на изображение уже это изображение недоступно вот если открою в в браузере эту ссылку я получу ошибку и я могу посмотреть собственно говоря что мне сервер
ответил давайте я обновлю здесь находясь на вкладке Network так обновлю Так ну вот собственно говоря Get запрос видите и если я перейду в headers так requ URL вот код видите смотрите есть вот ошибка ОТР и мы можем протестировать на самом деле как это выглядит в программе сейчас то есть я просто скопирую этот URL который у меня был и здесь я так IM URL вот здесь выше оставив вот эту часть закомментировать своё изображение Можете написать здесь что-то другое просто-напросто вот какой-то набор других символов чтобы получить такую же ошибку как у меня сейчас возникнет и протестируем вот
эту строку сейчас так давайте выполним так Ну давайте выполним использу mgs так так нам нужно импортировать ещ потому что мы Обращаемся зде к для формирования пути То есть это встроенный в модуль Так давайте ещ раз выполним MS так Ну это мы игнорируем Event так PA ви как images то есть путь сформирован корректно как бы но нет такого файла Ну с этим Давайте позже разберёмся как бы давайте пока вот это закомментировать то есть Видите вот мы выбросили с вами только что ошибку вот здесь Thor FA Down IM то есть мы не смогли загрузить изображение и можно
вывести в консоль в целом объект IM respon Вот так и посмотреть что там находится Давайте выполним код ещё раз так вот Большой объект и в м есть ряд свойств Давайте прокрути выше То есть это весь ответ от сервера так но здесь явно Мы не видим как бы всех доступных свойств то есть допустим Мы не видим здесь значение для О так потому что это необычный объект JavaScript это экземпляр определённого класса так тус Вот видите тус есть 403 aborted fse Type default Ну можем вывести Image resp то есть значение вот такого свойст и это мы можем закомментировать
пока просто вот так выполним код так видите то есть имеет значение то есть какая-то ошибка ответа от сервера то есть мы не смогли загрузить изображение потому вот такую проверку следует оставить как бы но я вот думаю если мы выбросим здесь ошибку вот так то появится необработанная ошибка так не удалил то есть появится необработанная ошибка которая приведёт к остановке приложения в целом э то есть я думаю стоит ли это так оставлять в таком виде или нет так Ну давайте пока оставим как бы чтобы это явно было прямо здесь у нас что мы проверяем ответ от сервера
и если мы не смогли загрузить изображение выбрасываем ошибку и на этом работа приложения заканчивается Так теперь продолжаем нам нужно разобраться с ошибкой которая возникает здесь она возникает скорее всего из-за того что у нас папка images отсутствует здесь давайте-ка выполним ещё раз код кстати говоря А ну-ка давайте я выполню с польз Code Runner так TH Error No such File directory Да возникла эта ошибка здесь а ну-ка я закомментировать а если я выделяю часть кода то cun выполняет только эту часть Поэтому нужно курсор поставить вне кода где-то и выполнить Код Да всё работает используя также и Code
Run То есть в принципе можно это код выполнять с помощью CDE Run так хорошо хорошо Так давайте раскомментировать [музыка] дам ему ошибку которая возникает Так давайте выполним код так так то есть возник возникло сообщение события eror так IM то есть видите то что я только что сказал есть изображение некуда поместить потому что папка imag отсутствует так вот как мы можем изменить так есть фемку для и далее проверяем если такая папка уже есть точнее если её нет то есть если не FS EX Sync то есть мы синхронным образом проверяем Есть ли такая папка images directory если
её нет мы её создаём Make directory то есть вот как можно создать папку При этом если здесь есть не только папка но и под папки допустим images да дата допустим какая-то Если вы хотите раскладывать изображение по под папкам то тогда recursive True создаст также и подпапки у нас только одна папка images и в ней будут находиться изображения но можно ставить эту опцию чтобы вы знали что можно создать также и вложенные папки автоматически Так значит давайте скопирую вот эту часть и далее У нас уже будет формирование пути к файлу File path так давайте-ка это сделаем вот
здесь Итак images directory path Join то есть снова формируем путь уже К папке если папки нет создаём её и далее мы уже Вот вместо вот этого можем использовать на самом деле images directory потому что у нас уже есть путь к Папке то есть видите здесь images directory и Потому здесь пишем images images directory вот так запятая то есть вот таким образом мы формируем уже путь к файлу это путь к папке это путь к файлу в этой папке images directory И вот теперь ошибки не должно уже быть давайте-ка выполним этот файл и посмотрим создастся ли папка
images Так давайте выполним файл так папка images появилась видите и в ней даже появился файл смотрите bloger Set with Notebook png но ОТК этого файла Так почему появился файл если мы ничего пока ещ не загружали на самом деле так paam то есть мы подготовили получается поток для записи файл Вот на этом этапе как раз наверное и создался файл собственно говоря но нам нужно удалить файл если мы не смогли загрузить собственно говоря данные Так давайте скорую вот эту сть перейду сюда так I See Now that images Folder is created and also File is created Inside should
We Delete This File If We are not able to download download File From Image URL то есть нам следует удалить этот файл так так так так попытка скачать файл да Видите оборачивается это всё в в блок Try чтобы у нас Не появлялись необработанные ошибки То есть сейчас у нас появляется необработанная ошибка Вот на этом этапе то что мы тестировали так а всё верно то есть мы создаём здесь поток на запись по поле того как мы пытаемся скачать изображение абсолютно логично То есть сейчас мы видите делаем это до вызова видите потому у нас файл и появился
здесь а логично это делать после попытки скачать изображение точнее здесь мы просто получаем ответ от сервера а скачивание изображения происходит Используя это не изображение должны получить само изображение из Body из B ответа и это делается используя поток это очень важный момент который мы как бы не затронули ещё потому потому потому давайте так давайте перенесём я смотрю имеет ли смысл нам так можем сформировать в принципе до этого А вот поток нам нужно создать ниже я подвинула више Alt вот сюда подвис после вызова ч мы создаём поток и Давайте всё-таки да оберн это в блок TR Catch
то есть полностью всё Error downloading Image Error так Del The то есть видите можно е дополнительно добавить удаление файла если мы создавали его ранее то есть вот мы сейчас создали файл но я не думаю что нужно добавлять вот этот блок нам как бы он будет лишним просто мы сейчас вручную удалим этот файл и проверим появится Он снова или нет но он не появится как бы уже Потому здесь мы формируем как и ранее путь к папке здесь путь к файлу а вот здесь Давайте создадим BL Try я как бы не хочу просто копировать блоки кода из
Chat gpt потому что вы пишите код вместе со мной и потому я показываю Как проводить рефакторинг Согласно того что мы с вами делаем И вот это всё мы сейчас возьмём и перенесём в Block Try вот так Catch Error так File to download Image Catch Error Ну и здесь просто выведем в консоль ошибку то есть вот так conso Error Error downloading Image то есть ошибка загрузки изображения и теперь вот эта ошибка которую мы здесь генерируем в случае если у нас не Image respon о То есть если что-то не в порядке с ответом от сервера мы вот
эту ошибку поймаем вот здесь и вот эта ошибка новый экземпляр класса eror попадёт в это в значение вот этой переменной R и мы просто выведем ошибку в консоль То есть это уже будет обработанная ошибка так Давайте сохраним изменения в этом файле удалим вручную этот файл Ctrl Backspace на Windows если я не ошибаюсь либо же Command Delete на Mac и папку images Также можно удалить чтобы проверить заодно создание ещё раз папки images она создастся вот на этом этапе если такой папки ещё нет так ну Давайте проверим выполним код так выполняется появилась папка images но она пустая
внутри ничего нет И мы получили абсолютно адекватную ошибку видите То есть это уже обработанная ошибка и она появилась вот здесь в этом блоке видите текст Error downloading Image текст Есть здесь и также текст Есть здесь то есть это подтверждает то что мы попали в этот блок и конечно же если мы с вами получили ошибку от сервера то мы вот до этих шагов Не доходим потому что мы выбрасываем ошибку здесь код останавливается до этих строк мы не доходим просто-напросто попадаем в блок вот сюда так хорошо так так что нам осталось с вами сделать Finish так создаём
поток на запись путь к файлу у нас уже есть с Вами Мы с вами это проверили Это полный путь к файлу в папке imes то есть абсолютный путь он так IM resp Body pam Так а как это делалось в этом примере так не в этом так Я закрою эту вкладку так Finish readable From Web Body pam но на мой взгляд вот так как бы лучше IM resp IM response A то есть мы берм тело запроса То есть если у на всё в порядке коректно но мы ещ можем как бы проверить тип ответа то есть это
изображение или нет и только тогда записывать его в before [музыка] fck То есть как мы можем проверить что сервер нам отвечает изображением что-то другое Так так всё остаётся также как и было до этого так эта проверка остаётся так Content Type то есть смотрите мы смотрим на Content Type в заголовке ответа от сервера то есть мы берём ответ от сервера Image resp и смотрим ели в заголовке у нас Content Type который начинается на Image видите то есть после IM находится уже расширение файла PNG и так далее То есть вот таким образом мы можем проверить возвращает ли
нам сервер вообще изображение Я думаю что логично добавить такую проверку так Content ty Ну можем оставить комментарии в принципе чтобы у нас были Логические блоки уже здесь то есть это мы делаем также перед Check абсолютно логичная проверка если ули Type вообще отсутствует значение допустим его undefined либо Nal Ну допустимый вариант - это string либо Nal видите То есть если допустим Content Type это Nal то тогда мы выбросим ошибку вот такую то есть ссылка не на изображение а на что-то другое и мы здесь в ошибке выведем собственно говоря что именно содержит эта ссылка так Check If
The response is an Image Давайте добавим ещё комментарий так то есть вот у нас логичные блоки первый блок попытка загрузить изображение Если всё в порядке сервер ответил О мы проверяем тип контента это и или нет Если и идём дальше то есть не выбрасываем ошибку если не тогда выбрасываем ошибку и останавливаемся Так ну и потом Дава комен чтобы сноки логичные бло второй и третий запись потока в файл Итак мы с вами уже почти закончили как бы так это мы взяли с ответа на Overflow но мы решили сделать вот так с вами IM Body P то есть
мы берём тело запроса и направляем его собственно говоря в и так здесь уки Я бы подождал наверное окончания процесса потому что иначе как бы если мы делаем вот так то тогда мы вызываем ppe это асинхронная операция и когда-то позже она закончится как бы и в итоге мы закончим выполнение вот всего этого кода то есть мы добавим реакции на события Finish и Error но этот код закончится и позже после окончания работы этого кода Мы увидим что завершился процесс записи файл то есть вот это мне как бы не нравится в этой реализации вот здесь в этом примере
мы ожидаем вот на этой строке пока мы не закончим процесс записи давайте-ка я вот этот блок кода возьму вставлю здесь I want toit until Finish Operation using A То есть я хочу ожидать окончание процесса записи в файл так можно использовать Stream promises да finished function то есть всё-таки видите мы приходим к тому решению которое я нашёл на Stack Overflow то есть Вот ait finished то есть мы так Wait For The Stream to Finish но всё равно остаётся IM resp Body pable From Web так нет Вот так я не хочу оставлять как бы Finish to wr
Stream или может так можно поступить а не знаю как лучше сделать если честно Так Wait Не давайте всё-таки так сделаем await finished readable From Web Pipe Stream давайте я скопирую Вот это и здесь у нас будет await так A Finish в принципе то что и было как бы ait Fin readable From Web далее здесь будет у нас не Body а будет wr извиняюсь Image response IM respon Body то есть мы берём ответ который мы получили вот здесь и если все проверки пройдены успешно мы Поток формируем Поток на основании Body и направляем его в Вот так
и ожидаем завершения этого процесса так вот это нам уже не нужно я прошу прощения что эти строки так долго были видны как бы здесь Возможно это немного запу но сноки мы постепенно проводили фарин всех этих блоков всех шагов так Так где у нас Мы импортируем из так Finish нам нужно pel так pel нам не нужно то есть это Я копировал как бы Так на всякий случай потому вот эти две строки нам не нужны вот так так мы импортируем так ВМ приме если мы успешно завершили процесс записи в файл то вот здесь в конце мы можем
сообщить об этом cons точ так так Ну давайте cons И здесь будет succ нание изображения А название изображения У нас есть Так Ну давайте вынесем Вот это в отдельную переменную так iml так давайте вот здесь я создам переменную Con F можно with extension можно вот будет File name вот так сохраню изменения немного оптимизировали вот эту часть теперь у нас две строки вместо трёх и у нас теперь есть доступ к названию файла fil name и мы можем написать Вот здесь что мы успешно завершили так я уберу лишний пробел здесь здесь будет File name successfully saved Image
и здесь будет просто название файла Хотя можно при желании указать полный путь к файлу включая название папки images Ну давайте оставим только название файла Вот так и вот вроде как уже наконец мы с вами завершили Я думаю реализацию процесса записи файл так создаём поток на запись Create Stream вызываем finished readable From Web то есть видите мы здесь не добавляем с вами какие-либо функции которые будут вызываться Когда будут возникать события в процессе записи в файл то есть мы с вами Вот это делали видите то есть мы просто использовали ш И это всё реализовано там Если возникнет
ошибка допустим рвётся поток который мы получаем либо ещё какая-то другая ошибка то она попадёт вот сюда в этот блок cch и мы до этого сообщения с вами просто-напросто не дойдём Так ну вроде как всё Давайте сохраним изменения и протестируем уже потом подведём итоги так как мы можем протестировать для начала есть пока что неработающая ссылка у меня Давайте с неработающей ссылкой ещё раз выполним код так [музыка] Running так получаю ошибку загрузки изображения видите всё в порядке Всё работает корректно И вот теперь пришло время удалить эту ссылку и раскомментировать новое изображение уже так промт я оставлю таким
же функции по формировании названия изображения оставляем здесь то есть вроде всё в порядке так оставим как бы оставим IM URL и далее мы используем IM URL для формирование полного пути к файлу То есть - это полный путь к файлу Так ну и Давайте чтобы у нас эксперимент полностью как бы был чистым удалим папку Ино говоря выполним код что сейчас всё заработает выполняем код так происходит запрос на изображение процесса генерации изображения мы с вами не видим он скрыт от нас так всё ещё ожидаем так секунд 10 Мы ждали и получаем ответ created Это идентификатор изображения Я
так понимаю так вот путь к изображению PNG это всё находится в объекте вот расширенное собственно говоря описание того что мы хотим получить этот промт был сгенерирован автоматически перед генерацией изображения на сервере уже и у нас в этом объекте есть два свойства и URL так вот ещё раз ссылка на изображение То есть это ВС результаты наших уже косогов и вво успешно сохранили изображение Давайте его посмотрим images bloger setup вот прекрасное изображение которые мы с вами получили так отлично давайте давайте знаете что давайте сделаем перерыв сейчас после перерыва подведём итоги того что мы с вами реализовали попробуем
ещё сгенерировать парочку изображений посмотрим как они сохраняются и возможно внесём некоторые коррективы в в этот собственно говоря скрипт Итак Давайте займёмся этим после перерыва