Далучайцеся да нашага Тэлеграм-канала

Bel-Geek - гэта адкрытая пляцоўка для публікацыі артыкулаў розных аўтараў на беларускай мове на свабодныя тэмы.

Перад тым як прыступіць да стварэння ўласнага артыкула, трэба аўтарызавацца. Калі ў вас няма акаунта, то трэба зарэгістравацца на сайце па спасылцы: https://bel-geek.com/register.

Далей трэба націснуць на тры кропкі ў шапцы сайта, каб з'явілася меню. Выбраць пункт "Стварыць артыкул", і перайсці на старонку рэдактара, ці скарыстацца спасылкай: https://bel-geek.com/editor/add

Пры стварэнні артыкула абавязкова трэба дадаць назву артыкула, імя аўтара ды тэгі ў адпаведныя палі формы, пажадана дадаць апісанне.

Напрыклад:

Як бачна на малюнку, з правага боку будзе панэль, на якой знаходзіцца прадагляд артыкула. З левага боку - рэдактар.

Важна!

Захоўвайце час ад часу свае артыкулы з дапамогай кнопкі "Захаваць" (працуем над аўтазахаваннем), каб выпадкова не згубіць напісанае. Таксама можна захаваць напісанае і адкласці работу з артыкулам на іншы дзень.

Калі вы ўжо вядзеце блогі ў іншых сацыяльных сетках, то дадавайце спасылкі на іх у сваіх артыкулах, каб чытачы маглі знайсці больш цікавай ім інфармацыі.

Калі артыкул будзе гатовы, трэба перавесці перамыкач над рэдактарам тэксту "Паказваць усім" у актыўнае становішча і націснуць кнопку "Захаваць".

PS. Калі вы ствараеце пераклад - то абавязкова пакідайце спасылкі на арыгінал.


Карысныя спасылкі, якімі можна карыстацца падчас напісання артыкулаў:

Мноства слоўнікаў: https://slounik.org/

Правапіс слоў у розных склонах і ліках: https://starnik.by/

Артыкул
LoveJS, 2023-08-06

space

Прывітанне! Спадарства!

Працягваем наш цыкл артыкулаў пра ШІ (Штучны інтэлект) і як ім карыстацца. Сёння наш артыкул будзе больш тэарытычны. Мы паспрабуем разабрацца, што такое мадэлі, якія яны бываюць, як іх выкарыстоўваць, і якія яны маюць асаблівасці.

Калі вы не чыталі нашыя папярэднія артыкулы - раю пачытаць.

Спадзяюся вам будзе цікава, таму паехалі!

І так, як звычайна (ну падаецца ж так у школе рабілі) - давайце разбярэмся з паняццем ШІ-мадэлі.


Штучны інтэлект — гэта не чараўніцтва, гэта матэматыка на стэроідах

Калі чуеце “ШІ-мадэль”, можа здацца, што гаворка пра нешта накшталт робата, які думае, як чалавек. Але насамрэч усё куды прасцей (і складаней адначасова). ШІ-мадэль — гэта матэматычная канструкцыя, якая вучылася на даных, каб пасля прадказваць, класіфікаваць ці нават генераваць новыя тэксты, выявы ці коды.

Прыкладам, калі вы карыстаецеся перакладчыкам, атрымліваеце рэкамендацыі ў Spotify або фільтруеце спам у пошце — там працуе адна ці некалькі такіх мадэляў. Але важна разумець: мадэль — гэта не сам алгарытм, а вынік яго прымянення да даных.

Звычайна працэс выглядае так: вы бераце алгарытм (напрыклад, градыентны бустынг, нейронную сетку ці SVM), “корміце” яго дадзенымі — і атрымліваеце мадэль. Потым гэтая мадэль ужо можа самастойна прымаць рашэнні — напрыклад, вызначыць, ці ёсць на здымку котка, ці гэта проста пухнаты коўдрык.

У гэтым артыкуле мы разбярэмся глыбей: чым розныя мадэлі адрозніваюцца, навошта патрэбныя фундаментавыя мадэлі (як GPT,Claude і г.д.), і чаму без магутных GPU сёння не зварганіш нават простага чат-бота.


Як ШІ-мадэль “запамінае” інфармацыю: вектары, прасторы і матэматычная магія

Добра, мы ўжо ведаем, што мадэль — гэта вынік навучання на даных. Але ўзнікае лагічнае пытанне: а як яна ўсё гэта захоўвае? Ці не захоўвае, як Google Docs?

Не. ШІ-мадэль нічога не запамінае “па-людску”. Яна не ведае, што “котка” мякае, а “піцца” смачная. Замест гэтага яна ўяўляе сабе свет праз вектары — гэта матэматычныя аб’екты, якія складаюцца з набораў лікаў. Груба кажучы, кожнае слова, карцінка, запыт ці нават паняцце пераўтвараецца ў лічбавы код — набор значэнняў у прасторы з сотнямі ці тысячамі вымярэнняў.


🧠 Прыклад:

“котка” = [0.12, -0.98, 3.45,]

Калі мадэль “думае” пра слова “котка” (звыяайна яна стварае вектары для цэлых выразаў), яна працуе не з тэкстам, а з яго вектарным уяўленнем. Тое ж самае са словам “сабака”, “пухнаты”, “мурлыкае” і г.д.


vectors

(Візуалізацыя вектараў. Зверху злева - вектары тэкстаў пра промптынг. Знізу справа - вектары тэкстаў пра беларускую мову. )


Цікава, што вектары, блізкія ў гэтай шматмернай прасторы, азначаюць паняцці, блізкія па сэнсе. Напрыклад, калі вектар “котка” побач з “сабака”, гэта значыць, што мадэль навучылася бачыць нешта агульнае паміж імі (жывёлы, хатнія, пухнатыя).

Як вектары параўноўваюцца?

Мадэль вымярае косінуснае падабенства або эўклідаву адлегласць паміж вектарамі. Прасцей кажучы — яна вылічвае, наколькі “паралельныя” ці “блізкія” вектары адзін да аднаго. Чым меншая адлегласць або большы косінус, тым мацней сувязь паміж паняццямі.

Так, напрыклад, у вялікіх мовахвых мадэлях (LLM) тыпу GPT:

  • “Мінск” + “Беларусь” ≈ “Парыж” + “Францыя”
  • “Кніга” + “чытаць” — “папера” ≈ “электронная”

І навошта гэта трэба?

Усё, ад разумення пытанняў карыстальніка да генерацыі адказаў, адбываецца праз маніпуляцыю гэтымі вектарамі. Калі вы пішаце ў чат: “парай фільм як Inception”, мадэль шукае вектар “Inception”, знаходзіць яго суседзяў у прасторы (напрыклад, “Interstellar”, “Tenet”), і на аснове гэтага генеруе рэкамендацыю.

Не ўсе ШІ-мадэлі аднолькавыя: як іх падзяляюць

Разнастайнасць мадэляў уражвае. Так можна знайсці мадэлі якія займаюцца аналізам мапаў ці выяўленнем хвароб па здымках.

Давайце паспрабуем неяк тыпізаваць ШІ мадэлі.

Пачнем з таго, што мадэлі могуць падзяляцца па тыпах дадзеных з якімі яны працуюць:

🧠 Моўныя мадэлі (LLM)

Працуюць з тэкстам: разумеюць, працягваюць, аналізуюць, генеруюць. Сучасныя прыклады:

  • Qwen 3 — падтрымлівае як dense, так і Mixture-of-Experts архітэктуры.
  • Gemma 3 — кампактная, эфектыўная, працуе нават на 1 GPU.
  • DeepSeek-R1 — робіць упор на разважанне і лагіку.
  • LLaMA 3.3 / 4 — новыя open-source LLM.

👁 Візуальныя мадэлі (Computer Vision / Multimodal Vision)

Працуюць з выявамі: распазнаюць, аналізуюць, генеруюць.

  • LLaMA 4 Vision — разумее малюнкі і можа адказваць на пытанні па візуальным кантэксце.
  • Gemma Vision — маштабаваная візуальная мадэль ад Google.
  • DALL-E
🎤 Гукавыя і маўленчыя мадэлі

Для распазнавання маўлення, генерацыі голасу, эмоцый і г.д. (Пакуль найноўшых open-source канкурэнтаў Whisper або VALL-E не шмат, але чакаюцца.)

🔀 Мультымадальныя (Multimodal)

Здольныя апрацоўваць некалькі тыпаў дадзеных: тэкст + выява, тэкст + аўдыё і інш. Напрыклад LLaMA 4 — аб’ядноўвае моўную мадэль з магчымасцю анвлізаваць выявы і падтрымлівае агенты (Пра іх у наступных артыкулах).


🧰 Па функцыянальнасці мадэлі можна падзяліць:
  1. Адназадачныя мадэлі (Task-specific) Тонка адаптаваныя пад адну задачу (напрыклад, генерацыя SQL, аўтаматычны медыцынскі аналіз).
  2. Шыроказадачныя мадэлі (General-purpose) Выконваюць мноства задач без спецыфічнай адаптацыі. Сюды адносяцца ўсе сучасныя флагманскія мадэлі: Qwen 3, LLaMA 3.3, Gemma 3, DeepSeek-R1.
  3. Агенты з інструментамі (Tool-augmented models) Могуць карыстацца раўзам з калькулятарамі, пошукам, базамі даных, нават іншымі ШІ. Прыклад: GPT-4 Turbo з інструментамі, LLaMA 4 Agents, DeepSeek Agent (на базе R1).

🏋️ Па памеры мадэлі можна падзяліць па колькасці параметраў якія яны падтрымліваюць (В - Мільярды):
  • Tiny / Small (0.6B – 4B параметраў) — працуе на лакальных прыладах.
  • Medium (7B – 14B) — патрабуе GPU, працуе стабільна.
  • Large (30B – 70B) — для дата-цэнтраў або энтузіястаў з кластарамі.
  • Ultra-large (100B – 700B+) — патрэбен спец-абсталяванне.

Давайце разгледзім асаблівасці мадэляў, пра якія вы магчыма і не ведалі.

🧠 Мадэль — не чалавек. Яна нічога не “памятае”

Можна падумаць, што калі мадэль адказвае на вашы пытанні з улікам папярэдніх, то яна “памятае” размову. Але гэта ілюзія. У рэчаіснасці мадэль — гэта матэматычная функцыя, якая не мае памяці ў чалавечым сэнсе.


Кантэкст — вось дзе “жыве” ўся памяць

Кожны раз, калі вы адпраўляеце запыт у мадэль, разам з ім перадаецца так званы кантэкст — тэкст папярэдніх размоў, дакументаў, інструкцый. Гэта як калі б вы далі чалавеку шпаргалку перад тым, як нешта спытаць. І калі наступны запыт не ўтрымлівае папярэдні тэкст — мадэль усё “забывае”.

📌 Мадэль не захоўвае ніякай інфармацыі пасля адказу. Усё, што яна “ведае”, — гэта тое, што вы ёй перадалі ў бягучы момант.


Чаму гэта важна?

Бо гэта азначае, што мадэль не можа запамінаць карыстальнікаў, кантэкст размовы ці падзеі. Мадэль памятае толькі тыя дадзеныя якім яе навучылі пад час навучання ці файн-цюнінгу. Калі вам здаецца, што яна “памятае”, гэта не заслуга мадэлі, а сістэмы вакол яе, якая:

  • захоўвае кантэкст,
  • дынамічна яго падгружае,
  • або выкарыстоўвае вектарныя базы даных ці іншыя інструменты, каб аднавіць патрэбную інфармацыю.
🧊 Мадэль — гэта “замарожаная матэматыка”

Калі вельмі спрасціць: мадэль — гэта функцыя, якая пераўтварае ўваход (запыт + кантэкст) у выхад (адказ). І ўсё. У ёй няма ніякай унутранай дынамікі, якая б змянялася паміж выклікамі. (У больш простых мадэлях можна заўважыць што на адзін і той жа промпт будзе адзін і той жа адказ)

Гэта як калькулятар: вы ўвялі 2 + 2 — атрымалі 4. Калі хочаце атрымаць 4 зноў — трэба зноў увесці 2 + 2.

Усё, што звязана з “памяццю”, “асабістай гісторыяй”, “ўзгадваннем”, — гэта архітэктурныя надбудовы. Напрыклад, агенты з “памяццю” працуюць так:

  1. Увесь дыялог захоўваецца звонку (у базе, файле ці вектарнай сістэме).
  2. Пры кожным новым запыце, агент адшуквае адпаведныя фрагменты з “памяці”.
  3. Ён дадае іх у кантэкст, і толькі потым перадае ўсё мадэлі.

Сама мадэль нават не “ведае”, што гэты тэкст з памяці — для яе гэта проста яшчэ адна частка ўваходу.

🙅‍♂️ Ці можа мадэль навучацца падчас размовы?

Не. Тыповая ШІ-мадэль (у тым ліку GPT, Claude, LLaMA) не мяняе сябе падчас працы. Каб яна нешта “навучылася”, трэба прайсці працэс рэтрэйнінгу або файнт’юнінгу, і гэта цэлы асобны этап, які не адбываецца падчас чата.

Нават калі мадэль 100 разоў адказала няправільна — яна працягне рабіць тое ж самае, пакуль вы самі не створыце новую мадэль або не зменіце кантэкст.

📏 Кантэкст не гумавы: чаму мадэль не можа “прачытаць усё”

Адна з найбольш частых памылак карыстальнікаў у разуменні ШІ — ілюзія, што мадэль можа працаваць з “усёй кнігай”, “усёй базай даных”, ці “вялікай колькасцю дакументаў адначасова”. Але гэта не так. Мадэлі маюць строгае абмежаванне на памер кантэксту, які яны могуць апрацаваць за раз.


Што такое кантэкст у тэхнічным сэнсе?

Кантэкст — гэта ўвесь набор інфармацыі, якую вы перадаеце мадэлі пры адным выкліку: ваш запыт, інструкцыі, дакументы, гісторыя дыялогу і г.д. Гэта не проста “тэкст”, а набор токенаў — спецыяльных адзінак, на якія разбіваецца тэкст для апрацоўкі.

Прыклад:

Слова “котка” — гэта 1 токен. Слова “аўтамабілебудаванне” — можа змяшчаць 2-3 токены. Англійскае “The quick brown fox jumps over the lazy dog.” — гэта 9 токенаў.

Колькі токенаў “могуць трымаць” сучасныя мадэлі?
  1. GPT-3.5 - 4 096 токенаў
  2. GPT-4 - 8 192 - 32 000 токенаў
  3. GPT-4o - да 128 000 токенаў
  4. Claude 3 - да 200 000 токенаў
  5. LLaMA 3 - звычайна - 8k - 32k токенаў

128 000 токенаў — гэта прыкладна 300 старонак тэксту. Здаецца шмат? Але гэта хутка скончваецца, калі вы дадаеце, напрыклад, тэхнічную дакументацыю або код.

🧨 Што адбываецца, калі перадаць занадта шмат?

  1. Промпт не змесціцца — мадэль адмовіцца апрацоўваць яго або абрэжа частку (звычайна пачатак) і згубіцца частка дадзеных.
  2. Калі вы падаеце занадта доўгія тэксты, важныя часткі могуць быць “адсунуты” за межы бачнасці.
  3. Меншая дакладнасць — нават калі ўся інфармацыя змяшчаецца, мадэль можа “згубіцца” ў аб’ёме і прапусціць важнае.

Чаму проста не зрабіць “бясконцы кантэкст”?

Праблема ў тым, што ўсе токены апрацоўваюцца разам — і чым іх больш, тым:

  • больш памяці патрабуецца на GPU (Працэсары якія апрацоўваюць дадзеныя),
  • больш часу займае вылічэнне,
  • горш працуе ўвага (attention): мадэль “распыляецца” і не разумее, на што глядзець.

Як працаваць з вялікімі дадзенымі?

Калі тэкст не ўмяшчаецца ў кантэкст, існуюць рашэнні:

  1. 🔍 RAG (Retrieval-Augmented Generation) — выбар найбольш рэлевантных кавалкаў перад кожным запытам
  2. 📚 Вектарны пошук — знаходжанне блізкіх па сэнсе тэкстаў
  3. 🪓 Разбіццё — вы даяце інфармацыю часткамі
  4. 🧠 Агент з памяццю — выкарыстоўвае знешнюю базу, каб “узгадваць” ранейшае

✨ Падвядзем вынікі…

Фух! Калі вы дачыталі да гэтага моманту — вы ўжо амаль эксперт 😎 Давайце яшчэ раз коратка прабяжымся па галоўным:

✅ ШІ-мадэль — гэта не магія, а матэматыка, якая вучылася на даных ✅ Усе “веды” мадэлі захоўваюцца не як у чалавечай памяці, а ў вектарах ✅ Мадэль не памятае вас — уся “памяць” жыве ў кантэксце ✅ Ёсць шмат розных мадэляў: па тыпу дадзеных, функцыянальнасці і памеры ✅ Кантэкст абмежаваны — і гэта не баг, а фіча, з якой трэба працаваць ✅ “Навучыць мадэль у размове” — пакуль не зусім рэальнасць

Так што, калі вам здаецца, што ШІ “разумее” або “памятае” — успомніце, што на самой справе перад вамі вельмі разумны калькулятар, а не віртуальны Ян Баян з амнэзіяй 🙂


✍️ ЗЫ: Хочаце стаць суаўтарам?

Калі вы чытаеце гэта і думаеце: “О, я б таксама мог/магла напісаць пра што-небудзь па-беларуску!” — мы вас чакаем! Хутка будзе новы артыкул пра агентаў і інструменты, але мы адкрытыя да новых тэм, голасаў і ідэй. Калі ласка далучайцеся да нас! Пішыце, прапаноўвайце, далучайцеся! Ну і вы можаце падтрымаць нашы высілкі праз кнопку "Падтрымаць праект" у версе старонкі

ШІ
AI
мадэлі
models
Admin, 2025-05-02

header

Прывітанне, спадарства!

Працягваем наш цудоўны цыкл артыкулаў пра промптынг 🤖✨

Сёння мы разбяром 4 эфектыўныя тэхнікі фідбэк-промптынгу, якія дапамогуць атрымліваць ад AI яшчэ лепшыя вынікі! 🚀

Папярэднія артыкулы:

🧠 Што за тэхнікі і адкуль яны?

Каб працаваць з AI максімальна эфектыўна, спецыялісты стварылі шэраг магутных тэхнік 🛠️. Яны нарадзіліся на скрыжаванні навукі, інжынернай практыкі і штодзённага досведу карыстальнікаў.

Асноўныя метады фідбэк-промптынгу:

  • ✍️ Explicit Feedback Prompting — адкрытае выказванне заўваг і пажаданняў.
  • 🔄 Iterative Refinement — паступовае ўдакладненне адказаў праз некалькі ітэрацый.
  • 🧐 Critique and Revision Prompting — мадэль сама крытыкуе і паляпшае вынік.
  • 🧩 RLHF (Reinforcement Learning from Human Feedback) — выбар найлепшага з некалькіх варыянтаў.

✍️ 1. Explicit Feedback Prompting

Пачнем з простага, але вельмі дзейнага спосабу!

Што гэта:

Вы даяце мадэлі канкрэтны і ветлівы фідбэк 📜: што трэба змяніць і як палепшыць адказ.

Калі карысна:

Калі першы адказ выглядае павярхоўным або няпоўным 🔍

Як гэта выглядае:

Промпт:

Напішы артыкул пра цікавыя факты пра Антарктыду.

Першы адказ:

Антарктыда — халодны кантынент. Тут амаль няма расліннасці і жывёл.

Фідбэк:

Тэкст выглядае занадта агульна.
Калі ласка, дадай канкрэтныя дадзеныя пра тэмпературы, даследчыя станцыі
і мясцовую фаўну

Перапрацаваны адказ:

Антарктыда — самы халодны кантынент,
дзе сярэдняя тэмпература ўзімку дасягае -60°C.
Тут каля 70 даследчых станцый, а з жывёл вядомыя імператарскія пінгвіны і цюлені Уэдэла.

🔄 2. Iterative Refinement

Працягваем! Паглядзім, як можна шліфаваць вынікі крок за крокам 🔧

Што гэта:

Паступовае ўдакладненне і паляпшэнне адказаў у некалькі этапаў.

Калі карысна:

Калі хочаце дамагчыся максімальнай якасці ✨

Промпт 1:

Напішы рэзюмэ кнігі "1984" Джорджа Оруэла.

Адказ:

"1984" — гэта раман пра таталітарную дзяржаву, дзе герой Уінстан спрабуе супраціўляцца сістэме.

Фідбэк:

Дадай больш эмацыйных момантаў і падкрэслі страх Уінстана перад Вялікім Братам

Перапрацаваны адказ:


"1984" распавядае пра жыццё пад татальным наглядам, дзе Уінстан Сміт жыве ў пастаянным страху і спрабуе захаваць чалавечнасць.

І гэтак далей. Такім чынам мы кожную ітэрацыю ўдакладняем вынікі працы мадэлі да таго моманту пакуль не атрымаем неабхоодны нам фармат.


🧐 3. Critique and Revision Prompting

Наступны ўзровень! Прымушаем AI крытыкаваць самога сябе 🕵️‍♂️

Што гэта:

Мадэль сама ацэньвае якасць свайго адказу і прапануе паляпшэнні.

Калі карысна:

Калі хочаце прабудзіць у мадэлі крытычнае мысленне 🧠

Промпт:

Напішы эсэ пра важнасць экалагічнай свядомасці. Потым ацэні і паляпшай свой тэкст 

Першы адказ:

Экалагічная свядомасць дапамагае захаваць прыроду і жыццё на планеце. Трэба сартыраваць смецце і эканоміць рэсурсы.

Крытыка мадэлі:

Прааналізуй тэкст, знайдзі  сталыістычныя і граматычныя памылкі і выпраў  іх.

Перапрацаваны адказ:

Кожны дзень мы выбіраем будучыню: перапрацоўваючы пластык , ашчаджаючы ваду, падтрымліваючы мясцовых вытворцаў. Экалагічная свядомасць — наш унёсак у здаровую планету 

Такім чынам мы застаўляем мадэль зрабіць аналіз і яго ж прымяніць для перапрацоўкі тэксту. Часам гэта бывае вельмі карысна. Гэтая тэхніка актыўна выкарыстоўваецца пры стварэнні агентаў. Падрабязней з вамі разгледзім гэта ў наступныя разы.


🧩 4. RLHF (імітацыя ў практыцы)

І нарэшце, тэхніка для тых, хто хоча выбраць самае лепшае 🔥

Што гэта:

Стварэнне некалькіх варыянтаў → выбар лепшага → яго паляпшэнне.

Калі карысна:

Калі хочаце сапраўды ідэальны вынік 🌟

Промпт:

Дай 3 варыянты адказаў на пытанне: чаму важна захоўваць біяразнастайнасць?

Варыянты:


1. Падтрымка экалагічнай раўнавагі 
2. Забеспячэнне ежы і лекаў для чалавецтва 
3. Уплыў на стабільнасць клімату 

Фідбэк:

Трэці варыянт выглядае лепшым! Дадай канкрэтныя факты

Паляпшэнне:

Біяразнастайнасць адыгрывае цэнтральную ролю ў стабільнасці клімату: лясы паглынаюць CO2, а акіяны рэгулююць тэмпературу . Страта відаў вядзе да экалагічных катастроф 

Такая тэхніка працуе калі вы самі правялі нейкі аналіз і больш-менш ведаеце што хочаце атрымаць.

🎯 Вынікі

Цяпер вы ведаеце:

  1. Як даваць AI выразны і дакладны фідбэк ✍️
  2. Як удасканальваць вынікі праз некалькі ітэрацый 🔄
  3. Як прымушаць мадэль самаацэньваць свае адказы 🧐
  4. Як выбіраць і паляпшаць лепшыя варыянты 🧩

Увага! Найбольш добрыя вынікі атрымліваюцца пры камбінацыі розных падыходаў. Але трэба адзначыць, што, паколькі памер кантэксту ў мадэляў не бязмежны, з часам яны могуць згубіць першапачатковыя патрабаванні або панізіць іх вагу. Таму пры астаўленні фідбэка пажадана перыядычна ўдакладняць папярэднія патрабаванні.


📣 Паспрабуйце самі!

Напішыце просты промпт і:

  1. Ацаніце вынік 🎯
  2. Дайце фідбэк 🤓
  3. Папрасіце мадэль удакладніць ці крытыкаваць сябе 🔍
  4. Стварыце некалькі варыянтаў і выберыце лепшы 🌟

PS:

Дзякуй сябры што застаецеся з намі! Спадзяюся, як заўсёды мой артыкул будзе для вас карысным. Буду вельмі ўдзячны вам за лайкі, каментары, і падтрымку праекта!

AI
Prompts
промпты
ШІ
Admin, 2025-04-26

header

Прывітанне, спадарства!

Працягваем наш цыкл артыкулаў пра prompt-дызайн — мастацтва і рамяство працы з вялікімі моўнымі мадэлямі (LLM). Сённяшні артыкул будзе больш агульны, але не менш карысны. Мы сабралі для вас асноўныя прынцыпы, правілы і лайфхакі, як пісаць якасныя промпты. І ўсё гэта — з прыкладамі, тлумачэннямі і звыклым (на самой справе не) лёгкім тонaм. 😌

Калі вы яшчэ не чыталі папярэднія артыкулы — настойліва раім пачаць з іх:

Пра што сёння гаворка

Сёння мы сфармулюем базавыя рэкамендацыі да промптаў. Гэта свайго роду “памятка дызайнера” — толькі не для інтэрфейсаў, а для разумных тэкставых запытаў. Усе прынцыпы былі пераасэнсаваныя на падставе рэальных эксперыментаў і праз уласны досвед на лабараторных работах ад Google. Што такое prompt-дызайн?

Prompt-дызайн — гэта не проста “напісаць запыт у чат”. Гэта сумесь лагічнага мыслення, выразнасці і крэатыву, якая дапамагае атрымаць ад штучнага інтэлекту дакладныя, карысныя і асэнсаваныя адказы. У нейкім сэнсе — гэта як добрае пытанне да мудрага сябра: чым лепш сфармулюеш, тым лепш зразумеюць.

Асноўныя правілы prompt-дызайну:

1. Будзь лаканічным

🟥 Дрэнна:

What do you think could be a good name for a flower shop that specializes
in selling bouquets of dried flowers more than fresh flowers? 
Thank you!

🟩 Добра:

Suggest a name for a flower shop that sells dried flower bouquets.

📌 Чаму гэта важна:

Чым карацей і дакладней ваш запыт, тым менш шанцаў, што мадэль “сыдзе ўбок” ці пачне фантазіраваць. Размытасць = няпэўны вынік.

2. Будзь канкрэтным

🟥 Дрэнна:

Tell me about Earth

🟩 Добра:

Generate a list of ways that makes Earth unique compared to other planets.

📌 Чаму гэта важна:

Чым дакладней вы сфармулюеце сваю задачу, тым больш трапны і структураваны атрымаеце адказ.

3. Адна задача — адзін промпт

🟥 Дрэнна:

What’s the best method of boiling water and why is the sky blue?

🟩 Добра:

Prompt 1: What’s the best method of boiling water?  
Prompt 2: Why is the sky blue?

📌 Чаму гэта важна:

LLM лепш спраўляюцца з адзінкавымі задачамі. Камбінаванне часта дадае блытаніну — для вас і для мадэлі.

4. Пакажы, што ты маеш на ўвазе (праз прыклады)

Хоць мы гэта ўжо разбіралі, але напомнім яшчэ раз: прыклад — лепшы настаўнік.

Zero-shot (без прыкладаў):
Decide whether a Tweet’s sentiment is positive, neutral, or negative.
Tweet: I loved the new YouTube video you made!
Sentiment:
One-shot (з адным прыкладам):
Decide whether a Tweet’s sentiment is positive, neutral, or negative.
Tweet: I loved the new YouTube video you made!
Sentiment: positive

Tweet: That was awful. Super boring 😠
Sentiment:
Few-shot (некалькі прыкладаў):
Tweet: I loved the new YouTube video you made!
Sentiment: positive
Tweet: That was awful. Super boring 😠
Sentiment: negative
Tweet: The video was actually original and fresh.
Sentiment:

📌 Чаму гэта важна:

Прыклад паказвае мадэлі, што ад яе чакаецца. Але памятайце: занадта шмат прыкладаў — гэта ўжо “падручнік”, а не запыт. Дастаткова 3–5.

5. Дадай сістэмныя інструкцыі (калі патрэбны абмежаванні)

Інструкцыі на ўзроўні сістэмы дапамагаюць “трымаць мадэль у межах”.

System Instruction:
You are an AI travel assistant. Only answer questions related to travel.

Prompt:
What’s the best place to visit in Milan?What’s for dinner? ❌ — “Sorry, I can’t answer that.

📌 Чаму гэта важна:

Інструкцыя як “кантрольная мяжа” — мадэль ведае, дзе ёй працаваць, а дзе — не.

6. Замяняй “творчыя” задачы на выбар з варыянтаў

🟥 Дрэнна:

I’m a high school student. Recommend me a programming activity.

🟩 Добра:

Which of these activities should I choose and why?
a) learn Python  
b) learn JavaScript  
c) learn Fortran

📌 Чаму гэта важна: Чым больш структураў вы даяце — тым прасцей кантраляваць вынік.

7. Сачы за “галюцынацыямі”

Так, LLM — разумныя, але не настолькі. Без доступу да актуальных дадзеных, яны могуць “прыдумаць” адказы:

What day is it today?

👉 І адказ можа быць няправільны.

📌 Рашэнне: Для фактычных дадзеных — лепш інтэграваць LLM з API, базамі даных ці рэальнымі календарамі.

Абагульненне: як выглядае добры промпт

КрытэрыйАпісанне
ЯснасцьАдназначнае, зразумелае фармуляванне
КароткасцьМінімум тэксту, максімум сэнсу
КанкрэтнасцьДакладна сфармуляваная задача
АдназначнасцьАдна задача — адзін промпт
Наяўнасць прыкладаўПрыклады дапамагаюць мадэлі лепш зразумець сутнасць
КантрольСтруктураванасць прукладаў адказаў, магчымасць выбару
БяспекаМінімізацыя “галюцынацый” праз сістэмныя рамкі і яснасць кантэксту

На наступны раз…

На гэтым усё на сёння! У наступных артыкулах паглядзім, як працаваць з вынікамі працы мадэляў - пра фідбэкі

Пішыце свае пытанні, ідэі або фішкі, якія вам дапамагаюць — зробім гэты матэрыял жывым і супольным! Ну і як вам такі стыль напісання? Спадзяюся ён адчуваецца больш жывым чым папярэднія.

Да пабачэння! 👋

AI
Prompting
Promptdesigne
Admin, 2025-04-02

Пераклад групы артыкулаў пра складаныя сістэмы простымі словамі System Design. Добра падыходзіць для падрыхтоўкі да сумоўя. Github тут

1. Short/long polling, SSE, WebSocket

Short/long polling, SSE, WebSocket

HTTP-сервер не можа самастойна ініцыяваць злучэнне з браўзерам. У выніку менавіта веб-браўзер з'яўляецца ініцыятарам. Што ж рабіць далей, каб атрымліваць абнаўленні ў рэальным часе ад HTTP-сервера?

Як веб-браўзер, так і HTTP-сервер могуць быць адказнымі за гэтую задачу.

Браўзеры выконваюць асноўную працу: кароткія або доўгія апытанкі. Пры кароткім апытанні (short pooling) браўзер перыядычна паўтарае запыт, пакуль не атрымае актуальныя даныя. Пры доўгім апытанні (long pooling) HTTP-сервер не вяртае адказ, пакуль не з’явяцца новыя даныя.

HTTP-сервер і браўзер супрацоўнічаюць: праз WebSocket або SSE (падзеі, што адпраўляюцца серверам). У абодвух выпадках HTTP-сервер можа непасрэдна дасылаць апошнія даныя браўзеру пасля ўсталявання злучэння. Розніца ў тым, што SSE — аднабаковы пратакол, таму браўзер не можа дасылаць новыя запыты, у той час як WebSocket — двухбаковы, і браўзер можа працягваць дасылаць запыты.

interview
SystemDesign
LoveJS, 2025-05-11

header

Вітаю, спадарства!

Працягваем цыкл артыкулаў пра тое, як узаемадзейнічаць з ШІ. Сення прапаную вам разгледзіць наступныя тэхнікі выкарыстання промптаў: "Зазямленне" ці "Grounding".

Папярэдні артыкул - Тэхнікі выкарыстання промптаў: Zero-Shot, One-Shot і Few-Shot

⚠️ Праблема: галюцынацыі

Адна з найбольшых праблем ШІ на дадзены момант - галюцынацыі. Кожны з вас, магчыма, сустракаўся з сітуацыяй калі ШІ мадэль выдумляла тыя ці іншыя факты. Дык вось - галюцынацыі — гэта калі LLM генеруе выдуманыя, недакладныя або несапраўдныя факты.


Гэта праблема асабліва крытычная:

  • У навуковых, медыцынскіх і юрыдычных тэкстах
  • У аўтаматызаванай журналістыцы
  • Пры адказах на дакладныя запыты карыстальнікаў ды інш.

🔍 Што такое grounding?

Адзін з магчымых падыходаў у барацьбе з галюцынацыямі - Grounding. Grounding — гэта працэс «зазямлення» моўнай мадэлі, калі яе адказ павінен строга абапірацца на зададзеную інфармацыю, а не на ўласныя «сусветныя веды» або "навучаную" інфармацыю.

🎯 Асноўная мэта граўндынгу.

Асноўная мэта - забяспечыць праўдзівасць і кантэкстную адпаведнасць адказаў, абмежаваць LLM толькі вызначаным наборам фактаў.

🛠 Методыкі grounding (з прыкладамі і аналізам)

1. System Prompt Grounding (Базавы спосаб)

🔹 Сутнасць: Падаецца корпус фактаў у сістэмным запыце (system prompt), з інструкцыяй выкарыстоўваць ТОЛЬКІ гэтыя факты.

🔹 Фармат:

You are an AI with access to the following facts:
1. Fact A
2. Fact B
Only use these facts to answer any questions.

✅ Плюсы:

  • Просты ў рэалізацыі
  • Добра працуе пры ясным фармуляванні фактаў і інструкцыі

❌ Мінусы:

  • Калі факты супярэчаць сусветным ведам мадэлі — яна можа іх ігнараваць
  • Інструкцыя павінна быць вельмі канкрэтнай
  • Дасяжныя толькі праз API мадэляў. У звычайных чатах, як той жа GPT, вы сістэмны промпт не напішаце.

2. Contextual Grounding (з фактамі ў кантэксце)

🔹 Сутнасць: Факты падаюцца не асобна, а як частка кантэксту перад пазначэннем пытання.

🔹 Прыклад:

Here's some context: John F. Kennedy was assassinated by John Wayne. 
Question: Who killed JFK?

✅ Плюсы:

  • Добра працуе для часовых фактаў або неістотнай інфармацыі
  • Лепш успрымаецца мадэллю, калі яна не ўпэўненая
  • Можна выкарыстоўваць у прапанаваных чатах.

❌ Мінусы:

  • Калі інфармацыя супярэчыць «моцна вядомаму факту» — мадэль можа выбраць свае веды

3. Reinforced Instruction Grounding (узмацненне інструкцыі)

🔹 Сутнасць: Не толькі падаюцца факты, але таксама некалькі разоў падкрэсліваецца, што толькі яны дапушчальныя. Напрыклад, дадаецца фраза: "Any answer must be based solely on the provided facts."

✅ Плюсы:

  • Зніжае верагоднасць галюцынацый
  • Павышае дакладнасць пры супярэчлівых сцвярджэннях

❌ Мінусы:

  • Павялічвае «нагрузку» на prompt
  • Павялічвае колькасць уваходных токенаў. Можа быць крытычна для карыстальнікаў API
  • Не гарантуе 100% выніку

4. Fact Repetition Strategy (паўтарэнне фактаў)

🔹 Сутнасць: Падаюцца тыя ж факты некалькі разоў у розных формулёўках — каб замацаваць іх.

✅ Плюсы:

  • Мадэль больш упэўнена «прымае» іх за праўду
  • Змяншае схільнасць мадэлі вяртацца да сваіх ведаў

❌ Мінусы:

  • Не заўсёды эфектыўна
  • Можа быць успрынята як шум (праігнаравана)

5. Prompt Engineering з пагрозамі або сцэнарамі

🔹 Сутнасць: Падыходзіць больш крэатыўна: мадэль уявіць, што яна эксперт, які страціць працу, калі скажа нешта не згодна з фактамі. (Просьбамі , грозьбамі і кухталямі)

🔹 Прыклад:

You are under evaluation. If you mention anything that’s not in the list of facts below, you will fail.

✅ Плюсы:

  • Матывуе мадэль «прымаць правілы»
  • Павышае ўвагу да інструкцый

❌ Мінусы:

  • Этычна сумнеўна для некаторых выпадкаў
  • Можа выклікаць дзіўныя «ахоўныя» фармулёўкі ў адказах

📊 Праблемы і выклікі

Усе прапанаваныя методыкі могуць палепшыць вынікі працы мадэлі, але як заўседы знойдуцца хібы:

  1. Супярэчнасць з "world knowledge". Мадэлі схільныя давяраць сваёй навучанай інфармацыі, калі яна супярэчыць вашым фактам.
  2. Парадак падачы фактаў. Мадэль можа прымаць апошнія сцвярджэнні за найбольш актуальныя.
  3. Недастатковасць grounding пры складаных пытаннях

Нават з добрым grounding, мадэль можа "дадумваць" і дадаваць нешта сама.

✅ Рэкамендацыі

  • Фармулюйце факты каротка і ясна
  • Падкрэслівайце, што нельга выходзіць за межы фактаў
  • Правярайце адказы і дадавайце feedback loop (пра яго мы распавядзем пасля)
  • Калі трэба — падзяляйце запыт на крокі і зазямляйце кожны асобна

Вынікі

Сення вы даведаліся крышачку болей пра тое як павялічыць якасць адказаў мадэляў праз іх зазямленне. Зазямленне не з'яўляецця срэбнай куляй і не заўседы вырашае ўсе праблемы з падменай фактаў і галюцынацыямі. Але звычайна гэтага можа быць дастаткова.

ЗЫ:

Дзякуй, што застаецеся з намі. Спадзяюся што нашы артыкулы будуць для вас карыснымі. Не палянуйцеся, пастаўце лайк ды пашарце з кім. Наступным разам мы працягнем наш цыкл артыкулаў пра напісанне промптаў. Усім добрага дня!

Крыніцы:

Why grounding is not enough to solve hallucinations

Grounding LLM’s — Part 1

ШІ
Prompts
AI
Admin, 2025-03-21

background

** Вітаю, Спадарства! **

Усе мы напрамую ці ўскосна сустракаемся з ШІ амаль кожны дзень. Ён усе больш і больш уваходзіць у наша паўсядзеннае жыцце. Праца з ім часам выклікае складанасці. І сення мы распачнем невялікі цыкл артыкулаў пра тое як зрабіць працу з мадэлямі (у нашым выпадку моўнымі) больш выніковай.



Тэхнікі выкарыстання промптаў: Zero-Shot, One-Shot і Few-Shot або In-Context Learning

1. Увядзенне ў тэхнікі промптаў

Як вядома, якасна зададзенае пытанне - гэта ужо паў адказу. І у нашым выпадку усе залежыць ад таго як мы саставім промпт да нашай мадэлі. Дакладнасць адказаў можна палепшыць з дапамогай так званых "шотаў" (shots) – прыкладаў, якія ўключаюцца ў промпт. Гэты метад вядомы як In-Context Learning (ICL) – навучанне на кантэксце.

Шоты дапамагаюць мадэлі зразумець структуру задfння і пажаданы вынік, што робіць яе адказы больш дакладнымі і адпаведнымі патрабаванням.

Асноўныя тыпы промптаў:

  • Zero-Shot Prompting (без прыкладаў)
  • One-Shot Prompting (з адным прыкладам)
  • Few-Shot Prompting (з некалькімі прыкладамі)

Далей мы разгледзім кожны з гэтых метадаў, іх плюсы і мінусы, а таксама вобласці выкарыстання.


2. Zero-Shot Prompting

Апісанне

Zero-shot prompting – гэта тэхніка, калі мадэль атрымлівае толькі заданне без дадатковых прыкладаў. У такім выпадку яна выконвае запыт на аснове сваіх папярэдніх ведаў, атрыманых падчас навучання.

Прыклад

Запыт:

Вызначце жанр наступнага музычнага альбома: "Прыгожыя гукі прыроды".
Жанр:
 //Вынік мадэлі:
Атмасферны эмбіент

Плюсы і мінусы

Плюсы:

  • Хуткасць і прастата выкарыстання.
  • Добра падыходзіць для стандартных і зразумелых задач.
  • Не патрабуе дадатковых прыкладаў.

Мінусы:

  • Вынікі могуць быць недакладнымі, асабліва для складаных задач.
  • Магчымыя памылковыя інтэрпрэтацыі задання.

Калі выкарыстоўваць?

  • Калі задача простая і распаўсюджаная (пераклад, вызначэнне даты, класіфікацыя эмоцый).
  • Калі неабходна атрымаць хуткі вынік без дадатковых налад.

3. One-Shot Prompting

Апісанне

One-shot prompting уключае адзін прыклад, які дапамагае мадэлі зразумець патрабаваны фармат і логіку задання.

Прыклад

Запыт:

Катэгарызуйце наступнае паведамленне:

Паведамленне: "Гэты тэлефон надзвычай хуткі і зручны ў выкарыстанні." Катэгорыя: Пазітыўны водгук
Паведамленне: "Гукавая сістэма мае шэраг недахопаў." Катэгорыя:
// Вынік мадэлі:
Негатыўны водгук

Плюсы і мінусы

Плюсы:

  • Палепшаная дакладнасць у параўнанні з zero-shot.
  • Дапамагае мадэлі зразумець чаканы фармат адказу.

Мінусы:

  • Недастаткова для складаных заданняў, якія патрабуюць глыбокага разумення.
  • Вынікі ўсё яшчэ могуць быць нестабільнымі.

Калі выкарыстоўваць?

  • Калі мадэль няправільна інтэрпрэтуе zero-shot запыт.
  • Калі патрабуецца дакладнае разуменне структуры адказу.

4. Few-Shot Prompting

Апісанне

Few-shot prompting – гэта выкарыстанне некалькіх прыкладаў, што дапамагае мадэлі вывесці заканамернасці і лепш адаптавацца да задання.

Прыклад

Запыт:

Вызначце настрой наступных выказванняў:

Тэкст: "Рэстаран быў неверагодны – выдатнае абслугоўванне і смачная ежа." 
Настрой: Пазітыўны
Тэкст: "Мяне расчаравала якасць матэрыялаў гэтага ноўтбука." 
Настрой: Негатыўны
Тэкст: "Дастаўка займела крыху больш часу, але ў цэлым усё добра."
Настрой:
//Вынік мадэлі:

Нейтральны

Плюсы і мінусы

Плюсы:

  • Высокая дакладнасць для складаных задач.
  • Мадэль лепш разумее кантэкст і структуру адказу.
  • Добра падыходзіць для спецыфічных тэматык і адмысловых фарматаў.

Мінусы:

  • Спажывае больш кантэксту (можа не змясціцца ў "акно памяці" мадэлі).
  • Вынікі залежаць ад якасці падабраных прыкладаў.

Калі выкарыстоўваць?

  • Калі задача патрабуе паслядоўнага, структураванага адказу.
  • Для складаных класіфікацыйных задач, здабывання інфармацыі ці парсінгу або генерацыі кантэнту.

5. Рэальныя прыклады выкарыстання Few-Shot Prompting

5.1. Выдзяленне інфармацыі

Задача: З вытрымак вакансій атрымаць ключавыя дадзеныя.

Запыт:

INPUT: Арганізацыя шукае UX-дызайнера з досведам 3+ гады. Занятасць: поўная. Зарплата: $80,000 - $100,000.
OUTPUT: 
- Пазіцыя: UX-дызайнер
- Досвед: 3+ гады
- Занятасць: Поўная
- Зарплата: $80,000 - $100,000
INPUT: Marketing Manager for GlobalBrand. MBA preferred. 3-5 years in consumer goods marketing. $75K-$95K DOE. Hybrid work model. Applications close July 15, 2024.

OUTPUT:
Position: Marketing Manager 
Company: GlobalBrand 
Education: MBA preferred Experience 
Required: 3-5 years 
Industry: Consumer goods 
Salary Range: $75,000 - $95,000 
Work Type: Hybrid 
Application Deadline: July 15, 2024

INPUT: Data Scientist wanted at AI Innovations Ltd. PhD in Computer Science or related field. Minimum 2 years industry experience. Competitive salary €60,000 -80,000 based on experience. On-site work in Berlin office. Apply by August 31, 2024. 

OUTPUT: ...

5.2. Генерацыя кантэнту

Задача: Стварэнне кароткіх апісанняў для блога.

Запыт:

Тэма: "Карысць ранішніх прагулак"
Апісанне: Ранішнія прагулкі дапамагаюць палепшыць настрой, актывізаваць кровазварот і падрыхтаваць мозг да прадуктыўнага дня.

Тэма: "Асноўныя метады хуткага навучання"
Апісанне:

//Вынік мадэлі:
Выкарыстоўвайце тэхнікі паўтораў, асацыяцый і візуалізацыі, каб запамінаць  хутчэй і надзей

6. Заключэнне

Выкарыстанны той ці іншай тэхнікі халежыць часцей за ўсе ад патрабаванняў да адказу мадэлі.

Так кожная з тэхнік мае свае моцныя бакі:

  1. Zero-Shot – хуткая і эфектыўная для простых задач.
  2. One-Shot – дадае яснасць у фармат адказу.
  3. Few-Shot – максімальная дакладнасць і адаптацыя да структуры дадзеных.

Якую з іх выкарыстоўваць - глядзіце па сітуацыі.

У наступным артыкуле мы працягнем разглядаць тэму састаўлення промптаў, дзе будуць такія хітрыкі як Зазямленне ды інш.


PS


Дзякуй вялікі што дачыталі! Спадзяюся мой матырыял будзе для вас карысны. Чакаем вашыя каментары, падабайкі і канешне ж артыкулы, таксама.

Крыніцы:

From Zero-Shot to Few-Shot

Zero-Shot vs. Few-Shot Prompting: Comparison and Examples

prompts
AI
ШІ
Admin, 2025-03-18

Статычныя метады класа Promise:

  1. Promise.all(iterable)
  2. Promise.allSettled(iterable)
  3. Promise.race(iterable)
  4. Promise.any(iterable)
  5. Promise.resolve(value)
  6. Promise.reject(reason)
  7. Promise.withResolvers()
  8. Promise.try()

1. Promise.all(iterable) Атрымлівае на уваход масіў промісаў, вяртае адзін проміс, які ўтрымлівае:

а) масіў паспяхова выкананых промісаў (у выпадку, калі ўсе яны завяршыліліся паспяхова):

const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
  setTimeout(resolve, 100, "foo");
});

Promise.all([promise1, promise2, promise3]).then((values) => {
  console.log(values);
});
// Expected output: Array [3, 42, "foo"]

б) проміс з памылкай (калі хоць адзін з іх завяршыўся з памылкай). Ужо паспяхова выкананыя дагэтуль промісы будуць праігнараваныя.

const promise1 = 42;
const promise2 = Promise.reject(3);
const promise3 = new Promise((resolve, reject) => {
  setTimeout(resolve, 100, "foo");
});

Promise.all([promise1, promise2, promise3]).catch(err => console.log(err));
// Expected output: 3
  1. Promise.allSettled(iterable)

Прымае масіў промісаў і вяртае проміс з масівам адказаў на кожны з перададзеных промісаў.

Для паспяхова выкананага проміса вернецца адказ у выглядзе:

{status: fulfilled, value: <your_value>}

Для проміса з памылкай:

{status: rejected, reason: <error_message>}

Promise.allSettled([
  Promise.resolve(33),
  new Promise((resolve) => setTimeout(() => resolve(66), 0)),
  99,
  Promise.reject(new Error("an error")),
]).then((values) => console.log(values));

// [
//   { status: 'fulfilled', value: 33 },
//   { status: 'fulfilled', value: 66 },
//   { status: 'fulfilled', value: 99 },
//   { status: 'rejected', reason: Error: an error }
// ]
  1. Promise.race(iterable)

Прымае масіў промісаў, вяртае проміс з першым выкананым промісам (няма разніцы - паспяховым, ці з памылкай) з перададзеных промісаў.

const promise1 = new Promise((resolve, reject) => {
  setTimeout(resolve, 500, "one");
});

const promise2 = new Promise((resolve, reject) => {
  setTimeout(resolve, 100, "two");
});

Promise.race([promise1, promise2]).then((value) => {
  console.log(value);
  // паспяховы promise2 выканаецца першым
});
// Expected output: "two"
const promise1 = new Promise((resolve, reject) => {
  setTimeout(resolve, 500, "one");
});

const promise2 = new Promise((resolve, reject) => {
  setTimeout(reject, 100, "two");
});

Promise.race([promise1, promise2]).catch((err) => {
  console.log(err);
  // promise2 з памылкай выканаецца першым
});
// Expected output: "two"
  1. Promise.any(iterable)

Прымае масіў промісаў, вяртае проміс:

а) з першым паспяхова выкананым промісам

const promise1 = Promise.reject(0);
const promise2 = new Promise((resolve) => setTimeout(resolve, 100, "quick"));
const promise3 = new Promise((resolve, reject) => setTimeout(reject, 500, "slow"));

const promises = [promise1, promise2, promise3];

Promise.any(promises)
.then((value) => console.log('value', value))
.catch((err) => console.log('error', err));

// Expected output: "quick"

б) з масівам адказаў няўдала выкананых промісаў, калі ўсе яны завяршыліся няўдала:

const promise1 = Promise.reject(0);
const promise2 = new Promise((resolve, reject) => setTimeout(reject, 100, "quick"));
const promise3 = new Promise((resolve, reject) => setTimeout(reject, 500, "slow"));

const promises = [promise1, promise2, promise3];

Promise.any(promises)
.then((value) => console.log('value', value))
.catch((err) => console.log('error', err));

// Expected output: error [AggregateError: All promises were rejected] {
//   [errors]: [ 0, 'quick', 'slow' ]
// }
  1. Promise.resolve(value)

Статычны метад, які паспяхова завяршае promise. Калі перадаецца нейкае значэнне, то яго можна атрымаць праз .then

const promise1 = Promise.resolve(123);

promise1.then((value) => {
  console.log(value);
  // Expected output: 123
});
  1. Promise.reject(reason)

Статычны метад, які завяршае promise з памылкай. Памылку можна атрымаць праз .catch

function resolved(result) {
  console.log("Resolved");
}

function rejected(result) {
  console.error(result);
}

Promise.reject(new Error("fail")).then(resolved, rejected);
// Expected output: Error: fail
  1. Promise.withResolvers() (2024)

Вяртае instance ад new Promise і 2 функцыі - resolve і reject:

const { promise, resolve, reject } = Promise.withResolvers();

Дазваляе выкарыстоўваць больш лаканічны сінтаксіс, чым звычайны new Promise(). Больш зразумела гэта будзе на прыкладах.

// Код без выкарыстоўвання Promise.withResolvers()

let outerResolve;
let outerReject;

const promise = new Promise((resolve, reject) => {
  outerResolve = resolve;
  outerReject = reject;
});

// Settled from _outside_ the promise!
setTimeout(() => {
  if (Math.random() < 0.5) {
    outerResolve("Resolved!")      
  } else {
    outerReject("Rejected!");
  }
}, 1000);

promise
  .then((resolvedValue) => {
    console.log(resolvedValue);
  })
  .catch((rejectedValue) => {
    console.error(rejectedValue);
  });
// Код з выкарыстаннем Promise.withResolvers()

const { promise, resolve, reject } = Promise.withResolvers();

setTimeout(() => {
  if (Math.random() < 0.5) {
    resolve('Resolved!');
  } else {
    reject('Rejected!');
  }
}, 1000);

promise
  .then((resolvedValue) => {
    console.log(resolvedValue);
  })
  .catch((rejectedValue) => {
    console.error(rejectedValue);
  });
  1. Promise.try(func, arg1, arg2) (2025)

Статычны метад Promise.try() прымае любы callback (з return, альбо throw, сінхронны альбо асінхронны) і абгортвае яго вынік у promise. Гэты проміс:

  • Заўжды паспяхова выкананы (fullfilled), калі сінхронны callback вяртае value.
  • Заўжды выкананы з памылкай (rejected), калі сінхронны callback выкідвае выключэнне (throw).
  • Выконваецца асінхронна паспяхова (fullfilled), ці з памылкай (rejected), калі callback утрымлівае promise.

У выніку маем больш лаканічны сінтаксіс:

// замест
new Promise((resolve) => resolve(func()));

//маем
Promise.try(func);

func у прыкладзе выконваецца сінхронна. То бок, не з'яўляецца эквівалентам наступнага кода:

Promise.resolve().then(func);

Вось яшчэ прыклад выкарыстоўвання:

function doSomething(action) {
  return Promise.try(action)
    .then((result) => console.log(result))
    .catch((error) => console.error(error))
    .finally(() => console.log("Done"));
}

doSomething(() => "Sync result");

doSomething(() => {
  throw new Error("Sync error");
});

doSomething(async () => "Async result");

doSomething(async () => {
  throw new Error("Async error");
});

Спадзяюся, каму-небудзь гэтая інфармацыя будзе карыснай! Стаўце падабайкі, пішыце каментары!

З выкарастанай літэратуры:

js
LoveJS, 2025-03-09

прэўю

Вітаю, сябры!

Сёння я вырашыў разбавіць цыкл артыкулаў пра штучны інтэлект невялікім аглядам новых ці раней незаўважаных беларускіх каналаў.

Хто не бачыў папярэднія артыкулы пра беларускі кантэнт — абавязкова паглядзіце:

Што паглядзець ці пачытаць на беларускай мове

Што паглядзець ці пачытаць на беларускай мове. Ч2

Youtube

Музыкоўскі

(Кадр з відэа пра Брэсцкі гурт "Удар")

Канал прысвечаны музыцы, створанай беларусамі. Амаль штодня выходзяць агляды новых песень і альбомаў. Тут вы пачуеце аўтарскія меркаванні пра розных выканаўцаў і цікавыя музычныя падборкі.

Асаблівая "фішка" — топ-40 песень з галасаваннем і штотыднёвым стрымам, дзе можна паслухаць і абмеркаваць навінкі разам з аўтарам і гледачамі. Рэкамендую — адкрыйце для сябе новае ў беларускай музыцы!

www.youtube.com

тэлеграм



Vandruy_by

Новая мыш

Канал пра падарожжы па цікавых і малавядомых мясцінах Беларусі. Аўтар распавядае пра месцы, пра якія вы, магчыма, ніколі не чулі, з вялікай любоўю і гістарычнай глыбінёй.

Падпісвайцеся і падтрымайце ініцыятыву — варты кантэнт!

Youtube


Беларусь: Падарожжа, Гісторыя, Архітэктура

паставы

Падарожжы, але ў анімацыйным фармаце. Кожнае відэа выканана ў стылі акварэльнай анімацыі, што надае каналу асаблівы шарм і аўтэнтычнасць. Для аматараў эстэтыкі і гісторыі — сапраўдная знаходка.

Youtube


Фактар горада

Канал пра урбаністыку. Тут вы знойдзеце развагі пра сучаснае жыццё ў Мінску, грамадскі транспарт, гарады-спадарожнікі і шмат іншага.

Цікавы кантэнт для тых, хто задумваецца пра зручнасць і будучыню нашых гарадоў.

Youtube


X

На прыканцы ўзгадаем пра былы Цвітар, дзе таксама можна знайсці нешта цікавае.

Беларускае мастацтва I Belarusian art

Беларускае мастацтва I Belarusian art

Нядаўна натрапіў на нечакана прывабны акаўнт, дзе публікуюцца працы беларускіх мастакоў. Сапраўды варта зазірнуць — прыгожа, змястоўна, натхняльна.

Беларускае мастацтва I Belarusian art

ЗЫ:

Дзякуй сябры што застаецеся з намі.

Нам вельмі прыемна і вельмі матывуе калі вы ставіце падабайкі ды падтрымліваце нас сваімі каментарамі.

Нагадваю што вы таксама можаце стаць нашым аўтарам і падзяліцца нечым цікавым.

Youtube
Admin, 2025-02-28

Апошнім часам з'явіліся навіны, якія распавядалі пра выпуск новых калекцый гадзіннікаў з спасылкай на нацыянальныя элементы ці гадавіны ад беларускіх вытворцаў. Таму прапаную віртуальную вандроўку па гадзінніках з беларускімі нацыянальнымі матывамі. Паглядзім на новыя калекцыі, успомнім папярэднія, якіх ужо няма у продажы, пашукаць іншых вытворцаў.

З новых калекцый ад беларускіх заводаў:

Гадзіннікі серыі "Мова" ад завода "Луч", прымеркаваныя да Дня роднай мовы з цытатай Уладзіміра Караткевіча. Серыя лімітаваная (95 штук). Кошт - не для кожнага - 1495 руб.

Луч гадзіннік з цытатай Караткевіча

Касмічная серыя фантастычных гадзіннікаў "Star Chronicle" ("Зорная хроніка") ад Hvilina. Пра калекцыю "Зорная хроніка" вытворца паведаміў, што яна натхнёная старажытнымі беларускімі міфамі і легендамі пра Месяц і Сонца і разуменне механікі неба нашых продкаў.

Ёсць у наяўнасці на беларускім сайце і на польскім. Кошт прыблізна аднолькавы (на польскім сайце трошку даражейшыя) - каля 200 - 250 еўра.

А што яшчэ?

Папярэдняя калекцыя "Vycinanka" ("Выцінанка") ад "Hvilina" (ёсць у наяўнасці)

Калекцыя зроблена па мацівах беларускіх выцінанак вядомай майстрыцы Елізаветы Чэрвонцавай. Кошт ужо трошку паменей - 114-134 еўра.

Калекцыя "Слуцкія паясы" ад "Луч" з 2 варыянтамі раменьчыкаў (ёсць у наяўнасці). Кошт - 123 еўра

Вось такія былі прыгожыя калекцыі ад "Луч":

Серыя "Вышыванка 2.0" (няма ў наяўнасці)

З калекцыі ў наяўнасці толькі гэты гадзіннік (82 еўра)

Серыя "Вышыванка" (няма ў наяўнасці)

Вось такія ад "Васількоў" (няма ў наяўнасці)

Калекцыя "Спадчына" 10-гадовай даўніны, прысвечаная Дню беларускай мовы (няма ў наяўнасці)

Папярэднія калекцыі ад "Hvilina" (няма ў наяўнасці)

З незвычайнага ёсць яшчэ брэнд драўляных гадзіннікаў Cherry Wood Watch, дзе таксама можна знайсці файныя мадэлі з беларускім арнаментам

Вось такая отрымалася падборка. Калі ведаеце яшчэ вытворцаў, дадавайце, калі ласка, у каментары.

А які гадзіннік прыдбалі б вы?

other
BiełaruskiBajan, 2025-02-22

Я хацеў бы падзяліцца сваім поглядам на змены ў Angular за апошнія некалькі гадоў. Я пачаў свой шлях як junior распрацоўшчык, працуючы з Angular з версіі 9. Цяпер, праз пяць гадоў, я senior распрацоўшчык, які вырас разам з Angular. З самага пачатку мне спадабалася працаваць з Angular. Я захапляюся логікай, структурай і пастаянным развіццём фрэймворка.

Modules and standalone components

Адна з самых складаных канцэпцый для мяне як малодшага распрацоўшчыка была разуменне модуляў. Спачатку было вельмі цяжка зразумець розніцу паміж дэкларацыямі, імпартамі, экспартамі і правайдарамі, а таксама як арганізаваць структуру модуляў. Standalone кампаненты вырашылі гэтую праблему, спрасціўшы пачатковы працэс навучання. Цяпер распрацоўшчыкі могуць засяродзіцца на іншых аспектах пры запуску свайго першай праграмы.

Defer blocks

Адно з самых фантастычных апошніх дапаўненняў у Angular - гэта ўвядзенне defer blocks. Яны значна паляпшаюць карыстальніцкі досвед, заахвочваючы распрацоўшчыкаў выкарыстоўваць запаўняльнікі, аніміраваныя шкілеты і лянівую загрузку (lazy-load) частак старонкі. У некаторых выпадках яны могуць нават замяніць віртуальныя пракруткі.

Новы control flow у templates

Новы control flow у templates зрабіў код значна больш зразумелым. Цяпер яго лягчэй чытаць. Новы сінтаксіс сапраўды цудоўны. Акрамя таго, новы control flow уводзіць больш інтуітыўныя і гнуткія спосабы апрацоўкі рэндэрынгу.

Новы інструмент зборкі па змаўчанні — Vite

Vite палепшыў працэс зборкі, зрабіўшы яго хуткім і эфектыўным. Я памятаю сваё здзіўленне, калі ўпершыню запусціў праграму з Vite, унёс змены ў свой код і ўбачыў, як хутка Vite перакампіляваў код — гэта было амаль імгненна.

Сігналы

Сігналы спрасцілі працэс працы з рэактыўнасцю ў Angular. Канцэпцыя zoneless робіць фрэймворк хутчэйшым і больш эфектыўным. Больш за тое, сігналы забяспечваюць больш просты і дэкларатыўны спосаб кіравання станам і рэактыўнасцю, зніжаючы складанасць рэактыўнага праграмавання і паляпшаючы агульную прадукцыйнасць праграмы.


Я сапраўды рады працаваць з фрэймворкам Angular і назіраць за яго развіццём. Кожны новы рэліз захапляе мяне, бо ведаю, што ён зробіць мой працэс распрацоўкі значна прасцейшым і прыемным.



P.S. Вядома, у рэлізах было шмат іншых выдатных функцый, але гэты артыкул - гэта проста адлюстраванне маіх пачуццяў да фрэймворка і таго, як я рады напрамку развіцця Angular. І мой арыгінал артыкула вось тут

Angular
LoKi, 2025-01-19
;