uz
Feedback
ToCode

ToCode

Kanalga Telegramโ€™da oโ€˜tish

ื˜ื™ืคื™ื ืงืฆืจื™ื ืœืžืชื›ื ืชื™ื ืžืืช ื™ื ื•ืŸ ืคืจืง

Ko'proq ko'rsatish
1 419
Obunachilar
Ma'lumot yo'q24 soatlar
Ma'lumot yo'q7 kunlar
-430 kunlar
Postlar arxiv
ToCode
1 419
ื—ืฉื‘ืชื™, ื˜ืขื™ืชื™, ืœืžื“ืชื™. ืžื‘ื™ืŸ ื”ืฉืœื•ืฉื” ืจืง ื”ืื—ืจื•ืŸ ื”ื•ื ื‘ื—ื™ืจื” ื•ืœื›ืŸ ืจืง ื”ืื—ืจื•ืŸ ื”ื•ื ืงืฉื”. ืื™ ืืคืฉืจ ืœื ืœื—ืฉื•ื‘. ืžื’ื™ืœ ืฆืขื™ืจ ืžืื•ื“ ื™ืฉ ืœืื ืฉื™ื ืžื—ืฉื‘ื•ืช ืขืœ ื”ืขื•ืœื, ื”ื‘ื ื” ืžืกื•ื™ืžืช ืื™ืš ื“ื‘ืจื™ื ืขื•ื‘ื“ื™ื ื•ื“ืขื•ืช ื‘ืœื™ ืกื•ืฃ. ื•ืื™ ืืคืฉืจ ืœื ืœื˜ืขื•ืช. ื”ื“ืขื” ืฉืœื™ ืขืœ ื”ืขื•ืœื ืžื‘ื•ืกืกืช ืขืœ ื—ื•ื•ื™ื•ืช ื—ื™ื™ื, ื ื™ืกื™ื•ื ื•ืช, ื”ืกื‘ืจื™ื, ื“ื‘ืจื™ื ืฉืฉืžืขืชื™, ืจืื™ืชื™ ืื• ื˜ืขืžืชื™. ื”ื™ื ื™ื•ืชืจ ืžืกืคืจืช ืขืœ ืื™ืš ืื ื™ ืžื‘ื™ืŸ ืืช ื”ืขื•ืœื ืžืืฉืจ ืขืœ ืื™ืš ื”ืขื•ืœื ืขื•ื‘ื“. ื”ื”ื–ื“ืžื ื•ืช ืœืฆืžื™ื—ื” ืžื’ื™ืขื” ื›ืฉืื ื™ ืžื’ืœื” ืฉื˜ืขื™ืชื™. ื—ืฉื‘ืชื™ ืฉืคืจื•ื™ืงื˜ ืžืกื•ื™ื ื™ื”ื™ื” ื”ืฆืœื—ื” ืื‘ืœ ื”ื•ื ืœื ื”ื™ื”. ื—ืฉื‘ืชื™ ืฉื™ื™ืงื— ืœื™ ื—ื•ื“ืฉื™ื™ื ืœืžืฆื•ื ืขื‘ื•ื“ื” ืื‘ืœ ื‘ืกื•ืฃ ืœืงื— ื—ืฆื™ ืฉื ื”. ื—ืฉื‘ืชื™ ืฉ perl ืชื”ื™ื” ืฉืคืช ื”ืชื›ื ื•ืช ืฉืœ ื”ืขืชื™ื“ ื•ื‘ืกื•ืฃ ืคื™ื™ืชื•ืŸ ื”ื™ืชื”. ืขื›ืฉื™ื• ืžื”? 1. ืฉืœื‘ ืจืืฉื•ืŸ ื”ื•ื ืœืฉื™ื ืœื‘ ืฉื˜ืขื™ืชื™. ืœื ืจืง ื‘ืชื•ืš ื”ื˜ืขื•ืช ืืœื ื’ื ืื—ืจื™ื”. ื•ื•ืื• ื—ืฉื‘ืชื™ ืฉื™ื™ืงื— ืœื™ ื—ื•ื“ืฉื™ื™ื ืœืžืฆื•ื ืขื‘ื•ื“ื” ืื‘ืœ ื‘ืกื•ืฃ ืœืงื— ื—ืฆื™ ืฉื ื” ื•ื”ื ื” ื”ื’ืขืชื™ ืœืžืงื•ื ื—ื“ืฉ. ืžืขื ื™ื™ืŸ ืœืžื” ื˜ืขื™ืชื™ ื‘ื”ืขืจื›ื” ืฉืœื™ ืœืคื ื™ ื—ืฆื™ ืฉื ื”. 2. ืฉืœื‘ ืฉื ื™ ื”ื•ื ืœืฉืขืจ ืœืžื” ื˜ืขื™ืชื™ (ื•ื›ืŸ ื”ื ื” ื”ืจืงื•ืจืกื™ื”. ื’ื ื”ืฉืขืจื” ื–ื• ื™ื›ื•ืœื” ืœื”ื™ื•ืช ื˜ืขื•ืช). ื—ืฉื‘ืชื™ ืฉื™ื™ืงื— ืœื™ ื—ื•ื“ืฉื™ื™ื ืœืžืฆื•ื ืขื‘ื•ื“ื” ื—ืฆื™ ืฉื ื” ื›ื™ ืคืขืžื™ื ืงื•ื“ืžื•ืช ื–ื” ืžื” ืฉื–ื” ืœืงื—; ื›ื™ ื‘ื–ืžืŸ ืฉืขื‘ื“ืชื™ ืงื™ื‘ืœืชื™ ื”ืžื•ืŸ ื”ืฆืขื•ืช ืžืžื’ื™ื™ืกื™ื; ื›ื™ ื‘ืžืงื•ื ื‘ื• ืขื‘ื“ืชื™ ืœืคื ื™ ื”ืคื™ื˜ื•ืจื™ื ื›ื•ืœื ืจืง ืืžืจื• ื›ืžื” ืื ื™ ื™ื•ื“ืข ื”ื›ื™ ื˜ื•ื‘; ื›ื™ ื‘ืขื™ืชื•ืŸ ื›ืชื‘ื• ืฉื”ืฉื•ืง ื‘ืžืฆื‘ ื˜ื•ื‘ ืขื›ืฉื™ื•; ื›ื™ ืจืื™ืชื™ ื—ื‘ืจื™ื ืฉืžืฆืื• ืขื‘ื•ื“ื” ืชื•ืš ื—ื•ื“ืฉื™ื™ื ื‘ืฉื ื” ืฉืœืคื ื™ ื”ืคื™ื˜ื•ืจื™ื. 3. ืฉืœื‘ ืฉืœื™ืฉื™ ื–ื” ืื™ืคื” ืฉื“ื‘ืจื™ื ื ื”ื™ื™ื ืžืขื ื™ื™ื ื™ื. ืคื” ืื ื™ ืžื–ื”ื” ืžื” ื”ื”ื‘ื“ืœ ื‘ื™ืŸ ื”ื“ื‘ืจื™ื ืฉืจืื™ืชื™ ืœืžืฆื‘ ืฉืœื™ ืื• ื“ืงื•ื™ื•ืช ืฉืœื ืฉืžืชื™ ืœื‘ ืืœื™ื”ืŸ ื›ืฉื”ืกืชื›ืœืชื™. ืžืฉืคื˜ ื›ืžื• "ื—ืฉื‘ืชื™ ืฉื™ื™ืงื— ืœื™ ื—ื•ื“ืฉื™ื™ื ืœืžืฆื•ื ืขื‘ื•ื“ื” ื›ื™ ื‘ื–ืžืŸ ืฉืขื‘ื“ืชื™ ืงื™ื‘ืœืชื™ ื”ืžื•ืŸ ื”ืฆืขื•ืช ืžืžื’ื™ื™ืกื™ื" ื™ื›ื•ืœ ืœื”ื‘ื™ื ืœืžืกืงื ื” ืฉื”ืฆืขื•ืช ืžืžื’ื™ื™ืกื™ื ื”ืŸ ืœื ืžื“ื“ ื˜ื•ื‘ ืœื›ืžื” ื™ื”ื™ื” ืงืœ ืœืžืฆื•ื ืขื‘ื•ื“ื”, ืื• ืžื” ืฉื™ื•ืชืจ ืกื‘ื™ืจ ืฉืคืกืคืกืชื™ ืžืฉื”ื• ื‘ืื•ืชืŸ ื”ืฆืขื•ืช. "ื—ืฉื‘ืชื™ ืฉืงื™ื‘ืœืชื™ ื”ืžื•ืŸ ื”ืฆืขื•ืช ืจืœื•ื•ื ื˜ื™ื•ืช ืžืžื’ื™ื™ืกื™ื ืื‘ืœ ื‘ื‘ื—ื™ื ื” ื™ื•ืชืจ ืžืขืžื™ืงื” ืื ื™ ืžื‘ื™ืŸ ืฉื—ืœืง ื’ื“ื•ืœ ืžื”ืฆืขื•ืช ืืœื” ื”ื™ื• ื ื™ืกื™ื•ื ื•ืช ื”ื•ื ืื” ืื• ืžืฉืจื•ืช ืœื ืจืœื•ื•ื ื˜ื™ื•ืช". ื”ืœืžื™ื“ื” ื”ื™ื ืืคืงื˜ื™ื‘ื™ืช ื›ืฉื”ื™ื ืขื•ื–ืจืช ืœื™ ืœืงื—ืช ืฆืขื“ ืงื“ื™ืžื” ื•ืœื”ืกืชื›ืœ ืื—ืจืช ืขืœ ื”ืขื•ืœื. ืœืฉื™ื ืœื‘ ืœื“ืงื•ื™ื•ืช ืฉืงื•ื“ื ืคืกืคืกืชื™. ืœืฉื ื•ืช ืืช ื”ืื•ืคืŸ ื‘ื• ืื ื™ ืžืชื™ื™ื—ืก ืœืกื™ืžื ื™ื ื‘ืขื•ืœื. ืฆืขื“ ืงื“ื™ืžื” ื‘ื“ืจืš ืฉืื™ืŸ ืœื” ืกื•ืฃ.

ToCode
1 419
ื—ืฉื™ื‘ื”. ืžื™ืžื•ืฉ. ืžื•ื“ืœื™ื. ืืคื™ืœื• ืื ื ื™ืงื— ืžื•ื“ืœ ืœื ื—ื›ื ื‘ืžื™ื•ื—ื“ ื›ืžื• gpt5-mini ื•ื ื‘ืงืฉ ืžืžื ื• ืœื›ืชื•ื‘ ืžืฉื”ื• ืžืื•ืคื™ื™ืŸ ื”ื™ื˜ื‘ ืฉืื ื—ื ื• ื›ื‘ืจ ื™ื•ื“ืขื™ื ืื™ืš ืœื›ืชื•ื‘ ื•ืฉื›ืœ ื”ืชืฉืชื™ืช ื‘ืฉื‘ื™ืœื• ืžื•ื›ื ื” ื”ื•ื ื™ืฆืœื™ื— ื•ื›ื ืจืื” ื“ื™ ื˜ื•ื‘. ืœื“ื•ื’ืžื”: 1. ื”ื•ืกืฃ ืœืžืกืš ื”ืคืจื•ืคื™ืœ ืฉื“ื” ื—ื“ืฉ ืขื‘ื•ืจ ื›ืชื•ื‘ืช. (ื‘ืžืขืจื›ืช ืฉื›ื‘ืจ ื™ืฉ ื‘ื” ืžืกืš ืคืจื•ืคื™ืœ ื• flow ืฉืœ ืขืจื™ื›ื” ื•ืฉื“ื•ืช ืฉื ืฉืžืจื™ื ืžืชื•ืš ื”ืคืจื•ืคื™ืœ ื‘ื‘ืกื™ืก ื”ื ืชื•ื ื™ื ื•ืžื ื’ื ื•ืŸ ืžืชื•ืขื“ ืœืขื“ื›ื•ืŸ ื”ืกื›ื™ืžื” ื‘ื‘ืกื™ืก ื”ื ืชื•ื ื™ื). 2. ื”ื•ืกืฃ ืœืžืกืš ื”ืคืจื•ืคื™ืœ ืฉื“ื” ื—ื“ืฉ ืขื‘ื•ืจ ืชืžื•ื ืช ืžืฉืชืžืฉ. ื™ืฉ ืœืฉืžื•ืจ ืืช ื”ืชืžื•ื ื” ื‘ base64 ื‘ื‘ืกื™ืก ื”ื ืชื•ื ื™ื. 3. ื›ืชื•ื‘ ืชื”ืœื™ืš ืจืงืข ื—ื“ืฉ ืฉืคืขื ื‘ื—ืžืฉ ื“ืงื•ืช ืžื•ื•ื“ื ืฉืขื“ื™ื™ืŸ ื™ืฉ ืชืงืฉื•ืจืช ืœื‘ืกื™ืก ื”ื ืชื•ื ื™ื. (ื‘ืชื ืื™ ืฉื™ืฉ ื‘ืžืขืจื›ืช ืžื ื’ื ื•ืŸ ืฉื™ื•ื“ืข ืœื”ืจื™ืฅ ืชื”ืœื™ื›ื™ ืจืงืข ื•ื“ืจืš ืžืชื•ืขื“ืช ื‘ื” ื ื›ืชื‘ื™ื ืชื”ืœื™ื›ื™ ืจืงืข ื•ืžื•ื’ื“ื™ื ื–ืžื ื™ ืจื™ืฆื” ืœื›ืœ ืชื”ืœื™ืš). 4. ื”ื•ืกืฃ ื›ืคืชื•ืจ ืœืžืกืš ื”ื ื™ื”ื•ืœ ืฉืžืืคืก ืœืžืฉืชืžืฉ ืืช ื”ืกื™ืกืžื” (ื‘ื”ื ื—ื” ืฉื›ื‘ืจ ื™ืฉ ืคื•ื ืงืฆื™ื” ืœืื™ืคื•ืก ืกื™ืกืžื” ื‘ืžืขืจื›ืช). ืจื•ื‘ ื›ืœื™ ื” AI ืœื›ืชื™ื‘ืช ืงื•ื“ ื›ื‘ืจ ืžืฉืชืžืฉื™ื ื‘ืžื ื’ื ื•ืŸ ื›ื–ื”. ื”ื ื™ืชื ื• ืœืžื•ื“ืœ ื—ื›ื ืœื‘ื ื•ืช ืชื•ื›ื ื™ืช ืขื‘ื•ื“ื” ื•ืื– ืœืžื•ื“ืœ ืคืฉื•ื˜ ื•ืžื”ื™ืจ ื™ื•ืชืจ ื™ืชื ื• ืืช ื”ื—ืœืง ืฉืœ ื”ื›ืชื™ื‘ื”. ื•ื’ื ื”ืžื•ื“ืœื™ื ื”ื›ื™ ื—ื›ืžื™ื ืœื ืžืฆืœื™ื—ื™ื ืœื™ื™ืฆืจ ืคื™ืชืจื•ื ื•ืช ื™ืฆื™ืจืชื™ื™ื ื•ืชืฉืชื™ืชื™ื™ื ืœื‘ืขื™ื•ืช. ื”ื ืœื ื™ื›ื•ืœื™ื ืœื—ืฉื•ื‘ "ืžื—ื•ืฅ ืœืงื•ืคืกื”" ื›ื™ ืขื‘ื•ืจื ื”ืงื•ืคืกื” ืžื™ื™ืฆืจืช ืืช ื”ื—ืฉื™ื‘ื”. ื”ืžืฆื‘ ื”ื ื•ื›ื—ื™ ื–ื” ื”ืคืจื•ืžืคื˜ ื•ืœืคื™ื• ื”ื ื™ื•ื“ืขื™ื ืœื—ื–ื•ืช ืžื” ื™ื”ื™ื” ื”ื˜ืงืกื˜ ื”ื‘ื. ื›ืš ื ื•ืœื“ Workflow ื”ื—ืœื•ืžื•ืช ื‘ืขื‘ื•ื“ื” ืขื AI: ื‘ืŸ ืื“ื ื—ื•ืฉื‘, ื‘ืŸ ืื“ื ื‘ื•ื ื” ืชืฉืชื™ืช, AI ืžืžืžืฉ ืคื™ืฆ'ืจื™ื ืขืœ ื‘ืกื™ืก ืชืฉืชื™ืช ื–ื• ื›ื“ื™ "ืœื ืฆืœ" ื›ืžื” ืฉืืคืฉืจ ืืช ื”ืชืฉืชื™ืช, AI ื ืชืงืข ื•ืžืชื—ื™ืœ ืœืขืฉื•ืช ืฉื˜ื•ื™ื•ืช, ื‘ืŸ ืื“ื ื—ื•ืฉื‘ ื•ืžืจืขื ืŸ ืืช ื”ืชืฉืชื™ืช. ืžื” ืฉืžืฉืคืจ ืืช ื” Workflow ื”ื–ื” ื–ื” ืœื ืžื•ื“ืœื™ื ื™ื•ืชืจ ื˜ื•ื‘ื™ื ืืœื ืชืฉืชื™ืช ืงื•ื“ ื™ื•ืชืจ ื˜ื•ื‘ื” - ืงื•ื“ ืžืชื•ืขื“, ืžืกื•ื“ืจ, ืฉื‘ืจื•ืจ ืœ AI ื•ืœืื ืฉื™ื ืื™ืš ืœืžืžืฉ ืืช ื”ืคื™ืฆ'ืจ ื”ื‘ื. ื‘ Workflow ื”ื—ืœื•ืžื•ืช, ื”ื ืงื•ื“ื” ื‘ื” AI ื ืชืงืข ื•ืžืชื—ื™ืœ ืœืขืฉื•ืช ืฉื˜ื•ื™ื•ืช ื”ื™ื ืœื ื‘ืื’ ื”ื™ื ืคื™ืฆ'ืจ. ื”ื™ื ืœื ืžืฉื”ื• ืฉืฆืจื™ืš ืœืžื ื•ืข ืื• ืœื‘ืจื•ื— ืžืžื ื• ืื• ืœื—ืคืฉ ืžื•ื“ืœ ื—ื–ืง ื™ื•ืชืจ ืฉื›ืŸ ื™ืฆืœื™ื— ืœื”ืชื’ื‘ืจ ืขืœื™ื” ื•ืœื ืžืงื•ื ืฉื‘ื• ืฆืจื™ืš "ืœืฉื™ื™ืฃ ืงืฆืช ืืช ื”ืงื•ื“" ืฉืœ ื” AI ื‘ืฉื‘ื™ืœ ืฉื™ืขื‘ื•ื“. ื”ื ืงื•ื“ื” ื‘ื” AI ื ืชืงืข ื”ื™ื ืžื˜ืจืช ื”ืžืฉื—ืง. ื”ื™ื ื”ื”ื‘ื“ืœ ื”ืžื–ื•ืงืง ื‘ื™ืŸ ื‘ืŸ ืื“ื ืœ AI. ื‘ื ืงื•ื“ื” ื”ื–ืืช ืื ื—ื ื• ืคื•ืจื—ื™ื ื›ืžืชื›ื ืชื™ื ื•ืžืงื‘ืœื™ื ื”ื–ื“ืžื ื•ืช ืœื—ืฉื•ื‘, ืœื‘ื ื•ืช ื•ืœื™ื™ืฆืจ ืืช ื”ืขื•ืœื ืฉืœ ื”ืžืขืจื›ืช ืื•ืชื” ืื ื—ื ื• ื‘ื•ื ื™ื. ืžืชื›ื ืชื™ื ื˜ื•ื‘ื™ื ืžื—ืคืฉื™ื ืืช ื”ื ืงื•ื“ื” ื”ื–ืืช ื•ืฆื•ืžื—ื™ื ืžืžื ื”.

ToCode
1 419
ื˜ื™ืค ื•ื™ื - ืžืฆื‘ ืกื•ื›ืŸ ืขื opencode ืื•ื”ื‘ื™ื ืืช ื”ืžื—ื™ืจ ืฉืœ Github Copilot ื•ืืช ืžืฆื‘ ื”ืกื•ื›ืŸ ืฉืœื”ื, ืื‘ืœ ืื™ืŸ ืœื›ื ื›ื— ืœืฆืืช ืžื”ื˜ืจืžื™ื ืœ? ื‘ื™ืŸ ื›ืœ ื”ืจืขืฉ ืฉืœ ื›ืœื™ AI ืžืฆืืชื™ ื”ื™ื•ื ืื—ื“ ืžืžืฉ ืงืกื•ื ืœืฉืชืฃ. ื”ื•ื ื ืงืจื opencode ื•ืืœื” ื”ืชื›ื•ื ื•ืช ืฉืื ื™ ื”ื›ื™ ืื”ื‘ืชื™: 1. ืžืชื—ื‘ืจ ืœืงื•ืคื™ื™ืœื•ื˜ ื›ืš ืฉืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ื—ืฉื‘ื•ืŸ 10$ ื‘ื—ื•ื“ืฉ ื”ืงื™ื™ื ืฉืœื›ื ื‘ืฉื‘ื™ืœ ื”ืžื•ื“ืœื™ื (ื•ื™ื›ื•ืœ ื’ื ืœื”ืชื—ื‘ืจ ืœ ollama ืื ื™ืฉ ืœื›ื ืžื•ื“ืœ ืžืงื•ืžื™ ืื• ืœ Open Router ืื• ืœ together ai ืขื‘ื•ืจ ืขืจื™ืžื” ืขื ืงื™ืช ืฉืœ ืžื•ื“ืœื™ื ื‘ืขื ืŸ. ื•ื›ืŸ ื‘ืจื•ืจ ืฉื’ื ืœื›ืœ ื”ืžืกื—ืจื™ื™ื ื”ืจื’ื™ืœื™ื). 2. ืขื•ื‘ื“ ืžื”ื˜ืจืžื™ื ืœ ื‘ืกื’ื ื•ืŸ ืงืœื•ื“ ืงื•ื“ ืื• ืงื•ื“ืงืก. 3. ืžืชื—ื‘ืจ ืœ vim ื‘ืขื–ืจืช ืคืœืื’ื™ืŸ: https://github.com/NickvanDyke/opencode.nvim?tab=readme-ov-file ืื™ืš ื–ื” ืขื•ื‘ื“? ื‘ื™ื ืชื™ื™ื ืžืขื•ืœื”: 1. ื‘ืœื—ื™ืฆืช ื›ืคืชื•ืจ ืžืชื•ืš ื•ื™ื ื ืคืชื— ืคืื ืœ ืฉื™ื—ื” ืขื AI ื‘ืกื’ื ื•ืŸ ืชื™ื‘ืช ื”ืฆื“ ืฉืœ ืงื•ืคื™ื™ืœื•ื˜ 2. ื ื™ืชืŸ ืœืฉืื•ืœ ืฉืืœื•ืช ืขืœ ื”ืงื•ื“, ืœื‘ืงืฉ ืžื™ืžื•ืฉ ืฉืœ ืงื˜ืขื™ื ืงื˜ื ื™ื ืื• ืจื™ืคืงื˜ื•ืจ ื’ื“ื•ืœ ื™ื•ืชืจ. ื” opencode, ื›ืžื• ืงืœื•ื“ ืงื•ื“ ื›ื‘ืจ ืžื•ืฉืš ืืช ื”ื—ืœืงื™ื ืฉื”ื•ื ืฆืจื™ืš ื•ืžืขื“ื›ืŸ ืื•ืชื. 3. ื‘ืžื”ืœืš ื”ืžื™ืžื•ืฉ ืื•ืคืŸืงื•ื“ ืžื“ืคื™ืก ืœืชื™ื‘ืช ื”ืฆื“ ืืช ื›ืœ ื”ืงื•ื“ ืฉื”ื•ื ื›ื•ืชื‘. ื”ื•ื ื’ื ืžืจืื” ื›ืžื” ื”ืฉื™ื—ื” ืขืœืชื” ื•ื›ืžื” ื”ื•ื ืœืงื— ืžื” Context Window. 4. ืืคืฉืจ ืœื‘ื˜ืœ ืืช ื›ืœ ื”ืฉื™ื ื•ื™ื™ื ืขื ืคืงื•ื“ืช undo. ืžื•ืžืœืฅ ืขื“ื™ื™ืŸ ืœืฉืžื•ืจ ื”ื›ืœ ื‘ git ื›ืฉื” AI ื™ืฆืจ ืžืฉื”ื• ืฉืืชื ืื•ื”ื‘ื™ื. ืฉื ื™ ื“ื‘ืจื™ื ืฉืขื“ื™ื™ืŸ ืœื ืžืฆืืชื™ (ืื•ืœื™ ืขื“ื™ื™ืŸ ืื™ืŸ) ื–ื” ืื™ื ื˜ื’ืจืฆื™ื” ืื•ื˜ื•ืžื˜ื™ืช ืขื ื’ื™ื˜ ื‘ืกื’ื ื•ืŸ aider ืฉื›ืœ ืฉื™ื ื•ื™ ืื•ื˜ื•ืžื˜ื™ืช ื ื›ื ืก ืœืงื•ืžื™ื˜ ื•ืืคืฉืจื•ืช ืœืขืจื•ืš ื”ื•ื“ืขื•ืช ื™ืฉื ื•ืช ื›ื“ื™ ืœื ื•ื•ื˜ ืืช ื”ืฉื™ื—ื” ืœื›ื™ื•ื•ืŸ ืื—ืจ. ื›ืŸ ืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ undo ืขื“ ืฉืžื’ื™ืขื™ื ืœื”ื•ื“ืขื” ื”ื™ืฉื ื” ืฉืจื•ืฆื™ื ืœืขืจื•ืš ื•ืื– ืœืฉื ื•ืช ืื•ืชื” ืื‘ืœ ื–ื” ืงืฆืช ืคื—ื•ืช ื ื•ื— ืžื›ืคืชื•ืจ ื”ืขืจื™ื›ื” ืฉืœ VS Code.

ToCode
1 419
ืฉื“ื” reasoning ื‘ Structured Output ืฉื™ืžื• ืœื‘ ืœืงืœืืก ื”ื‘ื ืžืชื•ืš ื“ืฃ ืชื™ืขื•ื“ ืฉืœ openai ืฉืžืชืืจ ืชืฉื•ื‘ื” ืฉืœ ืกื•ื›ืŸ ืฉื‘ื•ื“ืง ืื ื‘ื™ืงืฉื• ืžืžื ื• ืขื–ืจื” ื‘ืฉื™ืขื•ืจื™ ื‘ื™ืช ื‘ื—ืฉื‘ื•ืŸ:
class MathHomeworkOutput(BaseModel):
    is_math_homework: bool
    reasoning: str

guardrail_agent = Agent( 
    name="Guardrail check",
    instructions="Check if the user is asking you to do their math homework.",
    output_type=MathHomeworkOutput,
)
ืงื•ื“ ื”ื“ื•ื’ืžื” ื”ืžืœื ืœื ื›ื•ืœืœ ืฉื•ื ื”ืชื™ื—ืกื•ืช ืœืžื™ื“ืข ืฉื ื›ืชื‘ ืœืชื•ืš reasoning. ื›ืŸ ื”ื ื‘ื•ื“ืงื™ื ืื is_math_homework ื”ื•ื ืืžื™ืชื™, ืื‘ืœ reasoning? ืืฃ ืื—ื“ ืœื ืžืกืชื›ืœ ืขืœื™ื•. ืื– ืœืžื” ื”ื•ื ืฉื? ืฉืœื•ืฉ ืกื™ื‘ื•ืช ื—ืฉื•ื‘ื•ืช ืฉื’ื ืื ื™ ืจืื™ืชื™ ื‘ืขื‘ื•ื“ื” ืขื ืกื•ื›ื ื™ื: 1. ืžื ื’ื ื•ืŸ Structured Output ืขื“ื™ื™ืŸ ืœื ืขื•ื‘ื“ ืžืกืคื™ืง ื˜ื•ื‘. ืกื•ื›ื ื™ื ืœืคืขืžื™ื ืœื ืžืฆืœื™ื—ื™ื ืœื”ื’ื™ื‘ ื‘ืœื™ ื˜ืงืกื˜ ื—ื•ืคืฉื™ ื•ืœื›ืŸ ื‘ืงืฉื•ืช ื‘ืœื™ ืฉื“ื” reasoning ื™ื›ื•ืœื•ืช ืคืฉื•ื˜ ืœื”ื™ืชืงืข. 2. ืืžื™ื ื•ืช - ื›ืฉืื ื™ ืžื‘ืงืฉ ืž LLM ื”ืกื‘ืจ ืœืžื” ื”ื•ื ืขืฉื” ืžืฉื”ื• ืื ื™ ืžืงื‘ืœ ืชืฉื•ื‘ื•ืช ื˜ื•ื‘ื•ืช ื•ืืžื™ื ื•ืช ื™ื•ืชืจ. 3. ืชื™ืขื•ื“ - ื›ืฉืงื•ืจืื™ื ืœื•ื’ื™ื ื•ืขื•ื‘ืจื™ื ืขืœ ืชืฉื•ื‘ื•ืช ืฉืœ ืกื•ื›ื ื™ื ื›ื“ื™ ืœื”ื‘ื™ืŸ ืžื” ืงืจื” ื‘ืชื•ื›ื ื™ืช ืฉื“ื” reasoning ื™ื›ื•ืœ ืœืฉืงืฃ ืœื ื• ืžื” ื’ืจื ืœืกื•ื›ืŸ ืœื”ื—ื–ื™ืจ ืชืฉื•ื‘ื” ืฉืœื ืฆื™ืคื™ื ื• ืœื” ื•ื›ืš ืœืชืช ืœื ื• ืืช ื”ืžื™ื“ืข ืœืชืงืŸ ืื• ืœืฉืคืจ ืืช ื”ืงื•ื“ ืฉืœื ื•. ื•ื˜ื™ืค ืœืกื™ื•ื - ื ื›ื•ืŸ ืœื”ื™ื•ื Structured Output ื–ื” ื‘ื“ื™ื•ืง ื“ื•ื’ืžื” ืœืคื™ืฆ'ืจ ืžืกื•ื’ "ื—ืฉื™ื‘ื” ืื•ืคื˜ื™ืžื™ืช" ืฉืžืžื—ื™ืฉ ืืช ื”ืคืขืจ ื‘ื™ืŸ ื”ื”ื™ื™ืค ืกื‘ื™ื‘ AI ืœืกื™ืคื•ืจ ื”ืืžื™ืชื™ ืฉืœื”ื ื•ืืช ื”ืงื•ืฉื™ ืœืคืชื•ืจ ื‘ืขื™ื•ืช ืฉืœ LLM-ื™ื ื‘ืืžืฆืขื•ืช ื”ื ื“ืกื”. ื‘ืฉื‘ื™ืœ ืฉื–ื” ื™ืขื‘ื•ื“ openai ื‘ื ื• ืฉื›ื‘ืช retry ื‘ืชื•ืš ื” API ืฉืœื”ื ื›ืš ืฉื›ืฉืื ื—ื ื• ืžื‘ืงืฉื™ื ืžื™ื“ืข ืžื•ื‘ื ื” ืžื” API ื‘ืขืฆื OpenAI ืคื•ื ื™ื ืœืžื•ื“ืœ ืฉื•ื‘ ื•ืฉื•ื‘ ืขื“ ืฉื”ื•ื ืžืกื›ื™ื ืœื”ื—ื–ื™ืจ ืืช ื”ืžื™ื“ืข ืœืคื™ ื”ืžื‘ื ื” ืฉื”ืขื‘ืจื ื•. ื”ืคื™ืชืจื•ืŸ ื”ื”ื ื“ืกื™ ื”ื–ื” ื ืฉืžืข ื˜ื•ื‘ ืขืœ ื”ื ื™ื™ืจ ืื‘ืœ ื‘ื™ื ืชื™ื™ื ื”ื•ื ืœื ืขื•ื‘ื“, ื•ื›ื•ืœื ืžืฉืชืžืฉื™ื ื‘ืคื™ืชื—ื™ ืžื™ืœื•ื˜ ื›ืžื• ืฉื“ื” reasoning (ื•ื’ื ื–ื” ืœื ืชืžื™ื“ ืขื•ื‘ื“). ื™ืฉ ืœื™ ื›ื‘ืจ ืฉืชื™ ืžืขืจื›ื•ืช ืฉื”ื•ืฆืืชื™ ืž Structured Output ื•ื”ืขื‘ืจืชื™ ืœืงืจื™ืื” ืจื’ื™ืœื” ืœืกื•ื›ืŸ ื•ืคื™ืขื ื•ื— ื™ื“ื ื™ ืฉืœ ื”ืคืœื˜ ื•ื‘ืฉืชื™ื”ืŸ ื”ืžืขื‘ืจ ืฉื™ืคืจ ืžืฉืžืขื•ืชื™ืช ืืช ื”ืชื•ืฆืื•ืช ื•ื’ื ืื™ืคืฉืจ ืœื™ ืœื’ื•ื•ืŸ ื‘ืžื•ื“ืœื™ื.

ToCode
1 419
ื—ื–ืจื” ืœื‘ื™ืช ื”ืกืคืจ. ื›ื™ืฃ. ืœื™ืžื•ื“ื™ ืชื›ื ื•ืช. AI. ื”ืจื‘ื” ื ื•ืฉืื™ื ื”ื™ื•ื ืœื›ื‘ื•ื“ ื”ื™ื•ื ื”ืจืืฉื•ืŸ ืœืœื™ืžื•ื“ื™ื. ื ื ืกื” ืœื—ื‘ืจ ืื•ืชื ื™ื—ื“. ื™ื•ืชืจ ืฉืืœื•ืช ืžืชืฉื•ื‘ื•ืช ื”ื™ื•ื ืื‘ืœ ืื•ืœื™ ื–ื• ื”ืชืงื•ืคื”. ื—ื–ืจื” ืœืœื™ืžื•ื“ื™ื ืื ื™ ื–ื•ื›ืจ ืืช ื”ื›ืื‘ ื‘ื›ืฃ ื”ื™ื“ ื‘ืกื•ืฃ ื™ื•ื ืœื™ืžื•ื“ื™ื. ืื ื™ ื–ื•ื›ืจ ืืช ืขืฆืžื™ ื™ื•ืฉื‘ ื‘ื›ื™ืชื”, ืžืงืฉื™ื‘ ื•ื›ื•ืชื‘. ื‘ื™ืช ื”ืกืคืจ ื ื•ืฆืจ ื›ื“ื™ ืœืœืžื“ ืื ืฉื™ื ืžื’ื™ืœ ืฆืขื™ืจ "ืื™ืš ืขื•ืฉื™ื ื“ื‘ืจื™ื ื›ืืŸ", ืื™ืš ืœื”ืงืฉื™ื‘ ืœืกืžื›ื•ืช, ืื™ืš ืœืขืฉื•ืช ื“ื‘ืจื™ื ื’ื ืื ืืชื” ืœื ืžื‘ื™ืŸ ืืช ื”ืžื˜ืจื” ืฉืœื”ื, ืžื” ื–ื” ื™ื“ืข ื•ืื™ืš ื™ื“ืข ืขื•ื‘ืจ ืžืžื‘ื•ื’ืจ ืœืฆืขื™ืจ, ืžื—ื›ื ืœืชืœืžื™ื“, ืžืžื•ืจื” ืœื™ืœื“. ื–ื” ืœื ืงื™ื™ื ื™ื•ืชืจ. ืžื•ืจื” ืฉืจื•ืฆื” ืœื”ืฆืœื™ื— ื”ื™ื•ื ืฆืจื™ืš ืœื”ื™ื•ืช ื™ื•ืชืจ ืžืขื ื™ื™ืŸ ืž ChatGPT. ืฆืจื™ืš ืœื”ืฉืงื™ืข ื‘ืžื•ื˜ื™ื‘ืฆื™ื” ื•ืฆืจื™ืš ืœื“ื—ื•ืฃ ืืช ื”ืชืœืžื™ื“ื™ื ืฉืœื• ืœืœืžื•ื“. ื—ื•ืžืจ ื”ืœื™ืžื•ื“ ื–ืžื™ืŸ ืœื›ื•ืœื. ื‘ืชื™ ืกืคืจ ืžื ืกื™ื ืœื”ืกืชื’ืœ ื•ืœืชืช ืœืชืœืžื™ื“ื™ื ืœื›ืชื•ื‘ ืขื‘ื•ื“ื•ืช ื•ืœื—ืงื•ืจ ื‘ืขืฆืžื. ืœืคืขืžื™ื ื–ื” ืขื•ื‘ื“, ืœืจื•ื‘ ืœื. ื”ืžื•ืจื™ื ื‘ืขืฆืžื ืœื ืžื‘ื™ื ื™ื ืžื” ื—ืฉื•ื‘ ื•ื›ื™ื•ื•ืŸ ื”ื™ื“ืข ื”ืชื”ืคืš. ื”ื™ืœื“ื™ื ื™ื•ื“ืขื™ื ืœื”ืฉืชืžืฉ ื‘ื›ืœื™ AI ื˜ื•ื‘ ื™ื•ืชืจ ืžื”ืžื•ืจื™ื ืฉืœื”ื. ื”ื™ืœื“ื™ื ื™ื•ื“ืขื™ื ืœืชืช ืœ AI ืœื›ืชื•ื‘ ืืช ื”ืขื‘ื•ื“ื” ื‘ืฉื‘ื™ืœื. ื”ื™ืœื“ื™ื ืžื‘ื™ื ื™ื ืื™ืš ืœืจืžื•ืช ืืช ื”ืžืขืจื›ืช ื›ื™ ื”ื ืžื‘ื™ื ื™ื ืฉื”ืžืขืจื›ืช ืžืจืžื” ืื•ืชื. ื”ืืชื’ืจ ืฉืœ ื‘ืชื™ ืกืคืจ ื”ื•ื ืœื—ื–ื•ืจ ืœืžื ื˜ืจื” ื”ื‘ืกื™ืกื™ืช, ืœืœืžื“ ืืช ื”ืฆืขื™ืจื™ื "ืื™ืš ืขื•ืฉื™ื ื“ื‘ืจื™ื ื›ืืŸ". ืœื ื‘ืกื™ืกืžื” ืืœื ื‘ื›ืœ ื”ืจื‘ื“ื™ื ืฉืœ ื”ืžืขืจื›ืช. ืื ื—ื ื• ืจื—ื•ืงื™ื ืฉื ื•ืช ืื•ืจ ืžืฉื. ืœื™ืžื•ื“ื™ ืชื›ื ื•ืช ืชืงื•ืคื” ืืจื•ื›ื” ื”ืืชื’ืจ ื‘ืœื™ืžื•ื“ื™ ืชื›ื ื•ืช ื”ื™ื” ืฉืชื•ื›ื ื•ืช ื ื”ื™ื• ืžืกื•ื‘ื›ื•ืช ืžื“ื™. ืื™ืŸ ืœื™ืœื“ ื“ืจืš ืœื›ืชื•ื‘ ืžืฉื—ืง ื˜ื˜ืจื™ืก ืฉื”ื•ื ื™ื”ื ื” ืœืฉื—ืง ื‘ื• ื›ื™ ื”ื•ื ื”ืชืจื’ืœ ืœืฉื—ืง ืคื•ืจื˜ื ื™ื™ื˜. ื”ืคืขืจ ื’ื“ื•ืœ ืžื“ื™. ื•ืื– ื”ื’ื™ืข AI. ืขื›ืฉื™ื• ืื•ืชื• ื™ืœื“ ื™ื›ื•ืœ ืœืœื›ืช ืœ base44 ื•ืœื‘ื ื•ืช "ืžืฉื”ื•". ื–ื” ื™ื›ื•ืœ ืœื”ื™ื•ืช ืžืฉื—ืง ืกื ื™ื™ืง ืื• ื˜ื˜ืจื™ืก ืื• ืชื•ื›ื ืช ืฆื™ื•ืจ ืื• ืืชืจ ืœื‘ื™ืช ื”ืกืคืจ ืื• ืžืขืจื›ืช ื“ืฃ ืงืฉืจ ืœื›ื™ืชื”. ืื‘ืœ ื’ื ืื ืื™ื›ืฉื”ื• ื”ืฆืœื—ืช ืœื›ืชื•ื‘ ืžืฉื—ืง ืฉื›ื™ืฃ ืœืฉื—ืง ื‘ื• ืขื“ื™ื™ืŸ ืœื ืœืžื“ืช ื›ืœื•ื ืขืœ ืชื›ื ื•ืช. ืงืจืืชื™ ืกืงื™ืจื” ืฉืœ ืžืชื›ื ืช ืฆืขื™ืจ ืฉืžืกืคืจ ืฉื”ื•ื ืœื•ืžื“ ืชื›ื ื•ืช ื›ื‘ืจ ืฉืœื•ืฉื” ื—ื•ื“ืฉื™ื ื•ืžืฆืœื™ื— ืœื‘ื ื•ืช ืžืขืจื›ื•ืช ื•ื•ื‘ ื‘ Django ื‘ืขื–ืจืช AI ื•ืžืจื’ื™ืฉ ืฉื”ื•ื ืžื‘ื™ืŸ ืืช ื›ืœ ื”ืงื•ื“ ืฉื›ืชื•ื‘ ืฉื ื•ื™ื›ื•ืœ ืงืฆืช ืœืฉื ื•ืช ื“ื‘ืจื™ื, ืื‘ืœ ืœื ื™ื•ื“ืข ืื™ืš ืœื”ืชื—ื™ืœ ืžืฉื”ื• ืžืืคืก ื•ืžื‘ืงืฉ ืขืฆื•ืช. ื”ืื ื–ื” ืฆืขื“ ืจืืฉื•ืŸ ื ื›ื•ืŸ ืœืœื™ืžื•ื“ื™ ืชื›ื ื•ืช? ืื ื™ ืœื ื‘ื˜ื•ื—. ืื ื‘ืชื™ ืกืคืจ ืฆืจื™ื›ื™ื ืœืœืžื“ "ืื™ืš ืขื•ืฉื™ื ื“ื‘ืจื™ื ื›ืืŸ" ืื– ื‘ืชื™ ืกืคืจ ืœืชื›ื ื•ืช ืฆืจื™ื›ื™ื ืœื”ืชืžืงื“ ื‘ื—ืฉื™ื‘ื”, ื‘ื”ื‘ื ืช ืžืขืจื›ื•ืช ืžื•ืจื›ื‘ื•ืช, ื‘ืืœื’ื•ืจื™ืชืžื™ื, ื‘ืืจื›ื™ื˜ืงื˜ื•ืจื”. ื‘ื‘ื ื™ื™ืช ืกื˜ื ื“ืจื˜ ืฉืœ ื”ื‘ื ื” ืฉื‘ืืžืช ืžืชืื™ื ืœืจืžืช ื”ื”ื‘ื ื” ื”ื ื“ืจืฉืช ืžืžืคืชื—ื™ื ืœืขืชื™ื“. ืชืงื•ืคื” ืืจื•ื›ื” ืฉื›ื ืขื ื• ืžืชื›ื ืชื™ื ืฆืขื™ืจื™ื ืฉืืคืฉืจ ืœื›ืชื•ื‘ ืžืขืจื›ื•ืช "ืžื”ืจ" ื•"ื‘ืงืœื•ืช" ืขื ื”ืคืจื™ื™ืžื•ื•ืจืง ื”ื ื›ื•ืŸ. ื“ื—ืคื ื• ื›ืœื™ื ืฉืœ ืชื›ื ื•ืช ื•ื™ื–ื•ืืœื™ ื›ื“ื™ ืœื”ื‘ื™ืŸ ืขืงืจื•ื ื•ืช ืฉืœ ืชื›ื ื•ืช ืชื•ืš ื›ื“ื™ ื‘ื ื™ื™ืช ื“ื‘ืจื™ื ื™ืคื™ื ืื• ื›ื™ืคื™ื™ื. ืื•ืœื™ ื”ื’ื™ืข ื”ื–ืžืŸ ืœื”ืคืจื™ื“, ืœืฉื™ื ืœื‘ ืฉืืคืฉืจ ืœื‘ื ื•ืช ืžื•ืฆืจื™ ืชื•ื›ื ื” ืžื“ื”ื™ืžื™ื ืขื AI ืื‘ืœ ื›ื“ื™ ืœืœืžื•ื“ ืชื›ื ื•ืช ื›ื“ืื™ ืœื”ืชื—ื™ืœ ืžืจืขื™ื•ื ื•ืช ืคืฉื•ื˜ื™ื ื•ืœื—ื‘ืจ ืื•ืชื ืœื“ื‘ืจื™ื ื’ื“ื•ืœื™ื ื™ื•ืชืจ. ืื•ืœื™ ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื—ื–ื•ืจ ืœ Lisp. ื‘ื™ื ื” ืžืœืื›ื•ืชื™ืช "ืœื ืžืืžื™ื ื™ื ืœื™? ืชืฉืืœื• ืืช ื” Chat" ื›ืœ ืฉื™ื—ื” ืขืœ ื‘ื™ื ื” ืžืœืื›ื•ืชื™ืช ื”ื™ื ื”ื˜ืขื™ื”. ืžื•ื“ืœ ืฉืคื” ื’ื“ื•ืœ ืœื "ื—ื•ืฉื‘". ื”ืžื™ื“ืข ืฉื”ื•ื ืžื“ืคื™ืก ืœื ืืžื™ืŸ ื•ืœื ืชืžื™ื“ ืงื•ื”ืจื ื˜ื™. ืœืฉืื•ืœ ืืช ื”ืฆ'ื˜ ื–ื• ื”ืžืœืฆื” ื˜ื•ื‘ื” ื›ืžื• ืœืœื›ืช ืœืงืจื•ื ื‘ืงืคื”. ืื ื™ ืžืืžื™ืŸ ื‘ืžื“ืข ื‘ื’ืœืœ ืฉืจืขื™ื•ื ื•ืช ืžื•ืจื›ื‘ื™ื ื‘ื ื•ื™ื™ื ืขืœ ื‘ืกื™ืก ืจืขื™ื•ื ื•ืช ืคืฉื•ื˜ื™ื ื™ื•ืชืจ, ื‘ื’ืœืœ ื”ื•ื›ื—ื•ืช ื•ื˜ื™ืขื•ื ื™ื ื•ื”ืกื‘ืจื™ื ื•ืคืจื“ื™ื’ืžื•ืช. ืื ื™ ืžืืžื™ืŸ ื‘ ChatGPT ื›ื™ ื”ื•ื ื›ื•ืชื‘ ืืช "ื”ืชืฉื•ื‘ื•ืช ื”ื ื›ื•ื ื•ืช". ืื‘ืœ ืžื” ืฉื•ื•ืช ื”ืชืฉื•ื‘ื•ืช ื”ื ื›ื•ื ื•ืช ื‘ืœื™ ื”ืžื‘ื ื” ืฉื”ื•ื‘ื™ืœ ืœื’ื™ืœื•ื™ื™ืŸ? ื•ืžื” ืื ื™ ืžืœืžื“ ืชืœืžื™ื“ ื‘ื™ืช ืกืคืจ ื›ืฉืื ื™ ืื•ืžืจ ืœื• ืœืฉืื•ืœ ืืช ื” Chat? ื‘ืชื™ ืกืคืจ ืฆืจื™ื›ื™ื ืœืœืžื“ ื™ืœื“ื™ื ืฆืขื™ืจื™ื "ืื™ืš ืขื•ืฉื™ื ื“ื‘ืจื™ื ื›ืืŸ". ื‘ืžืงื•ื ื–ื” ืื ื—ื ื• ืžืจื“ื“ื™ื ืืช ื”ืฉื™ื— ื•ืžื ืกื™ื ืœืœืžื“ ืื•ืชื ืื™ืš ืœืขื‘ื•ืจ ืžื‘ื—ืŸ ืฉืืฃ ืื—ื“ ืœื ืฆืจื™ืš. ื”ื•ืจื™ื, ื‘ื•ืื• ื ื ืฆืœ ืืช ื”ื™ื•ื ื”ืจืืฉื•ืŸ ืœืœื™ืžื•ื“ื™ื ื•ื ื“ื‘ืจ ืขื ื”ื™ืœื“ื™ื ืขืœ ืžื”ืคื›ืช ื”ืžื™ื“ืข, ืขืœ ื–ืžื™ื ื•ืช ื”ื™ื“ืข, ืขืœ ื”ื”ื‘ื“ืœ ื‘ื™ืŸ ืขื•ื‘ื“ื•ืช ืœื“ืขื•ืช, ืขืœ ื”ื—ื•ื‘ื” ืœื—ืคืฉ ืืช ื”ืืžืช, ืœื”ื˜ื™ืœ ืกืคืง, ืœื’ื‘ืฉ ื“ืขื”, ืœื—ื‘ืจ ืจืขื™ื•ื ื•ืช ืคืฉื•ื˜ื™ื ืœืชื™ืื•ืจื™ื•ืช ืžื•ืจื›ื‘ื•ืช. ื ื“ื‘ืจ ืขืœ ืื™ืš ืžื•ื“ืœ ืฉืคื” ื’ื“ื•ืœ ืขื•ื‘ื“, ืžืื™ืคื” ื” Chat ืœื•ืงื— ืืช ื”ืžื™ื“ืข, ืžื™ ืื™ืžืŸ ืืช ื” Chat. ื ืจืื” ืœื”ื ืื™ืš ื ื™ืกื•ื— ืฉื•ื ื” ืฉืœ ื”ืฉืืœื” ื™ื›ื•ืœ ืœื™ื™ืฆืจ ืชืฉื•ื‘ื” ืฉื•ื ื” ืœื’ืžืจื™. ื”ื ื”ื™ื• ืฆืจื™ื›ื™ื ืœืงืจื•ื ืœื–ื” "ืžื›ื•ื ืช ื™ืฆื™ืจืช ื˜ืงืกื˜ื™ื".

ToCode
1 419
ืฉื ื™ ืืชื’ืจื™ื ื—ื“ืฉื™ื ื‘ื›ืชื™ื‘ืช ืกื•ื›ื ื™ AI ื”ื™ื•ืช ื•ืžื•ื“ืœื™ ืฉืคื” ืื™ื ื ื“ื˜ืจืžื ื™ืกื˜ื™ื™ื ื•ืื™ื ื ืฆืคื•ื™ื™ื ืžืคืชื—ื™ื ืฉื›ื•ืชื‘ื™ื ืกื•ื›ื ื™ AI ืฆืจื™ื›ื™ื ืœื”ืชืžื•ื“ื“ ืขื ืฉื ื™ ืืชื’ืจื™ื ื™ื™ื—ื•ื“ื™ื™ื ืœืžืขืจื›ื•ืช ืืœื”: ื”ืจืืฉื•ืŸ ื”ื•ื ื›ืชื™ื‘ืช ื”ืคืจื•ืžืคื˜ื™ื. ืื ื—ื ื• ืจื’ื™ืœื™ื ืœื›ืชื•ื‘ "ืงื•ื“" ื›ืœื•ืžืจ ื˜ืงืกื˜ ื‘ืฉืคื” ืคื•ืจืžืœื™ืช ืื•ืชื• ืœื ื ื™ืชืŸ ืœืคืจืฉ ื‘ืžืกืคืจ ื“ืจื›ื™ื ื•ื”ืจืฆื” ืฉืœื• ื’ื•ืจืžืช ืœืžื—ืฉื‘ ืœื‘ืฆืข ืคืขื•ืœื•ืช ืœืคื™ ื”ืกื“ืจ ืฉืงื‘ืขื ื•. ื‘ื›ืชื™ื‘ืช ืกื•ื›ืŸ ื‘ื ื•ืกืฃ ืœืงื•ื“ ืื ื—ื ื• ื›ื•ืชื‘ื™ื "ืคืจื•ืžืคื˜" ืฉื–ื” ื”ื ื—ื™ื•ืช ื•ื”ืžืœืฆื•ืช ืœืื•ืชื” ืžื›ื•ื ื” ืœื ื“ื˜ืจืžื ื™ืกื˜ื™ืช. ืœืคืขืžื™ื ื” AI ื™ืงืฉื™ื‘ ืœื”ื ื—ื™ื” ืฉืœื ื•, ืœืคืขืžื™ื ื™ืชืขืœื, ืœืคืขืžื™ื ื™ื™ืชืงืข. ืคืจื•ืžืคื˜ ื”ื•ื ืœื ืงื•ื“ ืื‘ืœ ื”ื•ื ื’ื ืœื ื˜ืงืกื˜ ืฉืžื•ืฆื’ ืœืžืฉืชืžืฉ. ืคืจื•ืžืคื˜ ื”ื•ื ืกื•ื’ ืฉืœ ืงื•ื“: ืื—ืจื™ ืฉื™ื ื•ื™ ืคืจื•ืžืคื˜ ืฆืจื™ืš ืœื”ืจื™ืฅ ืžื—ื“ืฉ ืืช ื›ืœ ื”ื‘ื“ื™ืงื•ืช, ืื ื—ื ื• ืžืฉืคืจื™ื ืคืจื•ืžืคื˜ื™ื ื•ื›ืฉืžื—ืœื™ืคื™ื ืžื•ื“ืœ ืฆืจื™ืš ืœืขื“ื›ืŸ ืืช ื›ืœ ื”ืคืจื•ืžืคื˜ื™ื ืฉืœื ื• (ื‘ื“ื•ืžื” ืœืื•ืคืŸ ื‘ื• ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœืฉื“ืจื’ ืงื•ื“ ื›ืฉืื ื—ื ื• ืžื—ืœื™ืคื™ื ืคืจื™ื™ืžื•ื•ืจืง ืื• ืžื›ื•ื•ื ื™ื ืœืžืขืจื›ืช ื”ืคืขืœื” ืื—ืจืช). ืžืฆื“ ืฉื ื™ ื–ื” ืœื ืงื•ื“ ื›ืžื• ืฉืื ื—ื ื• ืจื’ื™ืœื™ื ืœื›ืชื•ื‘: ืคืจื•ืžืคื˜ ื˜ื•ื‘ ื›ื•ืœืœ ื“ื•ื’ืžืื•ืช ืžืขื•ืœื ื”ืชื•ื›ืŸ, ื›ื“ืื™ ืœื ื• ืœืฉืชืฃ ืืช ืžื ื”ืœื™ ื”ืžื•ืฆืจ ื‘ื›ืชื™ื‘ืช ื”ืคืจื•ืžืคื˜ื™ื ื•ืื•ืœื™ ื”ื”ื‘ื“ืœ ื”ื›ื™ ื’ื“ื•ืœ ื”ื•ื ืฉืคืจื•ืžืคื˜ ืœื ื™ื›ื•ืœ ืœื”ื™ื›ืฉืœ. ืœื ืžืฉื ื” ืžื” ื ื‘ืงืฉ ืชืžื™ื“ ื ืงื‘ืœ ืžื”ืžื•ื“ืœ ืžืฉื”ื•. ื”ื‘ื“ืœ ืฉื ื™ ื”ื•ื ื”ื‘ื“ื™ืงื•ืช. ืื ื—ื ื• ืจื’ื™ืœื™ื ืœื ืกื•ืช ืœื”ืจื™ืฅ ืืช ื”ืงื•ื“ ืฉื›ืชื‘ื ื• ื•ืœืจืื•ืช ืžื” ืงื•ืจื”. ืžื™ื˜ื™ื‘ื™ ืœื›ืช ืžืจื™ืฆื™ื ืืช ื”ืงื•ื“ ื‘ื›ืžื” ืกื‘ื™ื‘ื•ืช ืœืžืฉืœ ื‘ื›ืžื” ื“ืคื“ืคื ื™ื. ื‘ื›ืชื™ื‘ืช ืกื•ื›ื ื™ AI ืื ื™ ืžื•ืฆื ืฉืื—ืจื™ ื›ืœ ืฉื™ื ื•ื™ ืื ื™ ืฆืจื™ืš ืœื‘ื“ื•ืง ืืช ืื•ืชื• ื“ื‘ืจ 4-5 ืคืขืžื™ื ื›ื™ ื”ื”ืฉืคืขื” ื”ื™ื ืกื˜ื˜ื™ืกื˜ื™ืช ื•ืœื ืชืžื™ื“ ื ืจืื” ืืช ื”ืฉื™ื ื•ื™ ื‘ื”ืคืขืœื” ืจืืฉื•ื ื”. ื’ื ื‘ื“ื™ืงื•ืช ืื•ื˜ื•ืžื˜ื™ื•ืช ื”ื•ืคื›ื•ืช ืœื”ื™ื•ืช ืคื—ื•ืช ืืžื™ื ื•ืช - ื›ืŸ ื‘ื‘ื“ื™ืงื•ืช ื™ื—ื™ื“ื” ืื ื™ ืืฉืชืžืฉ ื‘ืชืฉื•ื‘ื•ืช ืžื•ื“ืœ ืดืฉืžื•ืจื•ืชืด ืจืง ื›ื“ื™ ืœืจืื•ืช ืื™ืš ื”ืงื•ื“ ืฉืœื™ ืžืชื ื”ื’, ืื‘ืœ ื‘ื‘ื“ื™ืงื•ืช ืงืฆื” ืœืงืฆื” ืงืฉื” ืœื”ื‘ื™ืŸ ืžื” ื–ื” "ื›ืฉืœื•ืŸ ื‘ื‘ื“ื™ืงื”". ืžืฉืชืžืฉื™ื ืฉืžื“ื‘ืจื™ื ืขื AI ืจื’ื™ืœื™ื ืœื–ื” ืฉื”ืฉื™ื—ื” ื”ื•ืœื›ืช ืœืžืงื•ื ืื—ืจ ื›ืœ ืคืขื ื•ืžื•ื›ื ื™ื ืœื”ื›ื™ืœ ืืช ื’ื•ืจื ื”ื”ืคืชืขื”. ืื™ืŸ ืœื ื• ืขื“ื™ื™ืŸ ืคืจื™ื™ืžื•ื•ืจืงื™ื ืœื›ืชื™ื‘ืช ื‘ื“ื™ืงื•ืช ืฉื™ื•ื“ืขื™ื ืœื”ื›ื™ืœ ืืช ื–ื” ื‘ืื•ืคืŸ ื“ื•ืžื”.

ToCode
1 419
encoded.map { |token| inv[token] }.join
  end

  class BytePairHash
    attr_accessor :vocab, :maxlen

    def initialize
      @maxlen = 1
      @vocab = (0..255).map(&:chr).each_with_index.to_a.to_h
    end

    def size
      vocab.size
    end

    def inverted
      vocab.invert
    end

    def encode_next_token(text)
      maxlen
        .downto(0)
        .find { |l| vocab.key?(text[...l]) }
        .then { |l| text[...l] }
        .then { |token| [vocab[token], text[token.length..]] }
    end

    def add_pair(pair)
      reverse_lookup = @vocab.invert
      new_token = reverse_lookup[pair[0]] + reverse_lookup[pair[1]]

      @maxlen = [@maxlen, new_token.length].max
      @vocab[new_token] = @vocab.values.max + 1
      [pair, @vocab[new_token]]
    end
  end

  class BPEHashBuilder
    attr_reader :bpe_hash

    def initialize(bpe_hash)
      @bpe_hash = bpe_hash
    end

    def extend_vocabulary(tokens)
      pair = tokens
             .each_cons(2)
             .tally
             .max_by { |(_, c)| c }
             .then { |(v, c)| c > 1 ? v : nil }

      bpe_hash.add_pair(pair) unless pair.nil?
    end
  end
end

def replace_all(tokens, new_pair, new_token)
  loop do
    index = tokens.each_cons(2).find_index(new_pair)
    break unless index

    tokens[index..index+1] = new_token
  end
end

vocab = Tokenizer::BytePairHash.new
builder = Tokenizer::BPEHashBuilder.new(vocab)
text = File.read('the-verdict.txt')
tokens = Tokenizer.encode(text, vocab)

loop do
  new_pair, new_token = builder.extend_vocabulary(tokens)
  break if new_pair.nil?

  replace_all(tokens, new_pair, new_token)
end

encoded = Tokenizer.encode('hello world', vocab)

pp encoded
pp Tokenizer.decode(encoded, vocab)
ืจื•ืฆื™ื ื‘ืฉื‘ื™ืœ ื”ืžืฉื—ืง ืœืžืžืฉ ื‘ืฉืคื” ืฉืืชื ืื•ื”ื‘ื™ื? ืืœ ืชืชื‘ื™ื™ืฉื• ื•ืฉืชืคื• ื‘ืชื’ื•ื‘ื•ืช ืืช ื”ืžื™ืžื•ืฉ ืฉื›ืชื‘ืชื ืื ื™ ืืฉืžื— ืœืจืื•ืช ื•ื‘ื˜ื•ื— ืฉืชืœืžื“ื• ืžื”ืชื”ืœื™ืš.

ToCode
1 419
ืžื” ื–ื” Byte Pair Encoder ืื ื—ื ื• ื™ื•ื“ืขื™ื ืฉืžื•ื“ืœ ืฉืคื” ื’ื“ื•ืœ ื”ื•ื ื‘ืกืš ื”ื›ืœ ืžื›ื•ื ื” ืฉื™ื•ื“ืขืช ืœื ื—ืฉ ื‘ืฆื•ืจื” ืžืื•ื“ ื˜ื•ื‘ื” ืžื” ื”"ืžื™ืœื”" ื”ื‘ืื” ื‘ื˜ืงืกื˜. ืื‘ืœ ื‘ื”ืงืฉืจ ืฉืœ ืžื•ื“ืœ ื”ืฉืคื” ืžื” ื–ื” ื‘ื›ืœืœ ืื•ืžืจ "ืžื™ืœื”"? ื•ืื™ืš ื”ืžื•ื“ืœ ื™ื•ื“ืข ืื™ื–ื” ืžื™ืœื™ื ื™ืฉ ื‘ืขื•ืœื? ื•ืื™ืš ื”ื•ื ืœื ืžืชื‘ืœื‘ืœ ื›ืฉืื ื™ ื›ื•ืชื‘ ืจืง ื—ืœืง ืžืžื™ืœื” ืื• ืžื™ืœื” ืฉืœื ืงื™ื™ืžืช? ื•ืžื” ื”ื ืื•ืชื ื˜ื•ืงื ื™ื ืฉืขื‘ื•ืจื ืื ื—ื ื• ืžืฉืœืžื™ื ื‘ืขื‘ื•ื“ื” ืขื ืžื•ื“ืœื™ ื”ืฉืคื”? ื”ื™ื—ื™ื“ื” ื”ื‘ืกื™ืกื™ืช ืื™ืชื” ืžื•ื“ืœ ืฉืคื” ื’ื“ื•ืœ ืขื•ื‘ื“ ื ืงืจืืช ื˜ื•ืงืŸ ื•ื‘ืคื•ืกื˜ ื–ื” ืืกื‘ื™ืจ ืžื” ื–ื” Byte Pair Encoder ื•ื’ื ื ื›ืชื•ื‘ ืื—ื“ ื‘ Ruby ื›ื“ื™ ืœื”ื‘ื™ืŸ ืื™ืš LLM ืจื•ืื” ืืช ื”ืขื•ืœื. ื”ื“ื‘ืจ ื”ืจืืฉื•ืŸ ืฉืืชื ืฆืจื™ื›ื™ื ืœื“ืขืช ื›ืฉื—ื•ืฉื‘ื™ื ืขืœ ืื™ืš LLM ืจื•ืื” ืืช ื”ืขื•ืœื ื”ื•ื ืฉ LLM ื”ื•ื ืžื›ื•ื ื” ืกื˜ื˜ื™ืกื˜ื™ืช ื•ืœื›ืŸ ื‘ืฉื‘ื™ืœ "ืœื ื—ืฉ" ืžื” ื”ืžื™ืœื” ื”ื‘ืื” ื”ื•ื ืฆืจื™ืš ืงื•ื“ื ืœื”ืคื•ืš ืืช ื”ืžื™ืœื™ื ืœืžืกืคืจื™ื ืจืฆื™ืคื™ื. ื”ืชื”ืœื™ืš ืฉื‘ื• ืื ื—ื ื• ื”ื•ืคื›ื™ื ืžื™ืœื™ื ืœืžืกืคืจื™ื ื ืงืจื Tokenization ื•ื›ืœ ืžืกืคืจ ืฉืžืชืงื‘ืœ ื ืงืจื ื˜ื•ืงืŸ. ืื– ืื™ืš ื”ื•ืคื›ื™ื ืžืฉืคื˜ ืœืื•ืกืฃ ืฉืœ ืžืกืคืจื™ื? ืจืขื™ื•ืŸ ืจืืฉื•ืŸ ืฉืœื ืขื•ื‘ื“ ื›ืœ ื›ืš ื˜ื•ื‘ ื”ื•ื ืœืจื•ืฅ ืขืœ ื”ืžื™ืœื™ื ื•ืœืชืช ืœื›ืœ ืžื™ืœื” ืžืกืคืจ ืืงืจืื™. ื ืฉืžื•ืจ ืืช ื”ืžืกืคืจื™ื ื”ืืœื” ื•ื‘ืคืขื ื”ื‘ืื” ืฉื ื™ืชืงืœ ื‘ืžื™ืœื” ื ืฉืชืžืฉ ื‘ืื•ืชื• ืžืกืคืจ. ื”ืžื™ืœื•ืŸ ืฉืžื—ื–ื™ืง ืืช ื”ืžื™ืคื•ื™ ืžื›ืœ ืžื™ืœื” ืœืžืกืคืจ ืฉืžืชืื™ื ืœื” ื ืงืจื ืื•ืฆืจ ื”ืžื™ืœื™ื. ื”ืจืขื™ื•ืŸ ื”ื–ื” ืœื ืขื•ื‘ื“ ื›ืœ ื›ืš ื˜ื•ื‘ ื›ื™ ื”ื•ื ืœื ืžืืคืฉืจ ืœืžื•ื“ืœ ืœืจืื•ืช ื—ืœืงื™ ืžื™ืœื™ื ืื• ืžื™ืœื™ื ื—ื“ืฉื•ืช, ื•ืœื ืžืืคืฉืจ ืœืžื•ื“ืœ ืœืจืื•ืช ืืช ื”ืงืฉืจ ื‘ื™ืŸ ืžื™ืœื™ื ืขื ืื•ืชื™ื•ืช ื“ื•ืžื•ืช. ืจืขื™ื•ืŸ ืฉื ื™ ืฉืœื ืขื•ื‘ื“ ื›ืœ ื›ืš ื˜ื•ื‘ ื”ื•ื ื”ืืคืฉืจื•ืช ื”ื”ืคื•ื›ื” - ื ื—ืœื™ืฃ ื›ืœ ืื•ืช ื‘ืžืกืคืจ (ืœืžืฉืœ ืขืจืš ื” ASCII ืฉืœื”) ื•ื ืืžืŸ ืืช ื”ืžื•ื“ืœ ืœื ื—ืฉ ืืช ื”ืื•ืช ื”ื‘ืื”. ื›ืฉืื ื—ื ื• ื‘ื•ื ื™ื ืื•ืฆืจ ืžื™ืœื™ื ืื ื—ื ื• ืจื•ืฆื™ื ืœืฉืœื‘ ื‘ื™ืŸ ืฉื ื™ ื”ืจืขื™ื•ื ื•ืช - ืžืฆื“ ืื—ื“ ืื ื—ื ื• ืจื•ืฆื™ื ืฉื›ืœ ืžื™ืœื” ืชืงื‘ืœ ืžืกืคืจ ื‘ืื•ืฆืจ ื”ืžื™ืœื™ื ื›ื“ื™ ืฉื”ืžื•ื“ืœ ื™ื•ื›ืœ "ืœืจืื•ืช" ืืช ืื•ืชื” ื”ืžื™ืœื” ื›ืœ ืคืขื ืฉื”ื™ื ืžื•ืคื™ืขื” ื‘ื˜ืงืกื˜. ืžืฆื“ ืฉื ื™ ืื ื—ื ื• ืจื•ืฆื™ื ืœืืคืฉืจ ืœืžื•ื“ืœ ืœื™ื™ืฆื’ ื’ื ืžื™ืœื™ื ืฉืœื ืจืื™ื ื• ืžืจืืฉ ื‘ืื•ืฆืจ ื”ืžื™ืœื™ื. ื”ื“ืจืš ืœืฉื™ืœื•ื‘ ื ืงืจืืช Byte Pair Encoding ื•ื–ื” ื ืจืื” ื›ืš: 1. ื ื•ืชื ื™ื ืœื›ืœ ืื•ืช ืžืกืคืจ, ืœืžืฉืœ ืขืจืš ื” ASCII ืฉืœื”. 2. ืœื•ืงื—ื™ื ืงื˜ืข ื˜ืงืกื˜ ืฉื™ืฉ ื‘ื• ื”ืžื•ืŸ ืžื™ืœื™ื. ืžืžื ื• ื ื‘ื ื” ืืช ืื•ืฆืจ ื”ืžื™ืœื™ื. ืžื—ืœื™ื˜ื™ื ื’ื ืขืœ ื’ื•ื“ืœ ืื•ืฆืจ ื”ืžื™ืœื™ื ื”ืจืฆื•ื™. 3. ืžื—ืคืฉื™ื ื‘ืงื˜ืข ืืช ื–ื•ื’ ื”ืื•ืชื™ื•ืช ืฉืžื•ืคื™ืข ื”ื›ื™ ื”ืจื‘ื” ืคืขืžื™ื. ื ื•ืชื ื™ื ืœื• ืžืกืคืจ ื•ืžื•ืกื™ืคื™ื ืื•ืชื• ื‘ืชื•ืจ "ืžื™ืœื”" ืœืื•ืฆืจ ื”ืžื™ืœื™ื. ืื—ืจื™ ื–ื” ืžื—ืœื™ืคื™ื ื›ืœ ืžื•ืคืข ืฉืœ ืื•ืชื• ื–ื•ื’ ื‘ื˜ื•ืงืŸ ื”ื—ื“ืฉ ืฉื™ืฆืจื ื•. 4. ื—ื•ื–ืจื™ื ืขืœ ื”ืชื”ืœื™ืš ืขื“ ืฉืื•ืฆืจ ื”ืžื™ืœื™ื ืžื’ื™ืข ืœื’ื•ื“ืœ ื”ืจืฆื•ื™. ืฉื™ืžื• ืœื‘ ืฉื”ืžื™ืœื™ื ืฉืื ื—ื ื• ื‘ื•ื ื™ื ื‘ืฆื•ืจื” ื”ื–ืืช ื™ื›ื•ืœื•ืช ืœื”ื™ื•ืช ื‘ืื•ืจืš 1 (ืื ืื•ืช ืžืกื•ื™ืžืช ืœื ืžื•ืคื™ืขื” ืืฃ ืคืขื ื‘ืชื•ืจ ื–ื•ื’ ืฉื—ื•ื–ืจ ืขืœ ืขืฆืžื•), ื‘ืื•ืจืš 2 ื•ื’ื ื™ื•ืชืจ ืืจื•ื›ื•ืช. ื ื™ืงื— ืœื“ื•ื’ืžื” ืืช ื”ื˜ืงืกื˜ ื”ื‘ื ืœืฆื•ืจืš ื‘ื ื™ื™ืช ืื•ืฆืจ ืžื™ืœื™ื:
aa aa bb aabb
ืื– ื‘ืื™ื˜ืจืฆื™ื” ื”ืจืืฉื•ื ื” ืื ื—ื ื• ืžื—ืœื™ืคื™ื ื›ืœ ืื•ืช ื‘ืžืกืคืจ. ื‘ืฉื‘ื™ืœ ื”ื“ื•ื’ืžื” ืื ื™ ืžื—ืœื™ืฃ ืืช a ื‘-1, ืืช b ื‘-2 ื•ืืช ืจื•ื•ื— ื‘-0:
[1, 1, 0, 1, 1, 0, 2, 2, 0, 1, 1, 2, 2]
ืขื›ืฉื™ื• ืื ื™ ืžื–ื”ื” ืืช ื”ืจืฆืฃ ืฉืžื•ืคื™ืข ื”ื›ื™ ื”ืจื‘ื” ืคืขืžื™ื ื–ื” ื™ื”ื™ื” 1,1 ืฉืžื•ืคื™ืข 3 ืคืขืžื™ื ื•ืœื›ืŸ ืื ื™ ื™ื•ืฆืจ ืžืกืคืจ ื—ื“ืฉ, ื”ืžืกืคืจ 4 ืฉืžื—ืœื™ืฃ ืืช 1,1:
[4, 0, 4, 0, 2, 2, 0, 4, 2, 2]
ื‘ืกื™ื‘ื•ื‘ ื”ื‘ื ื™ืฉ ืœื™ ื›ืžื” ืืคืฉืจื•ื™ื•ืช ืื ื™ ื™ื›ื•ืœ ืœื‘ื—ื•ืจ ืืช 4,0 ืฉืžื•ืคื™ืข ืคืขืžื™ื™ื, ืืช 0,4 ืฉืžื•ืคื™ืข ืคืขืžื™ื™ื ืื• ืืช 2,2 ืฉืžื•ืคื™ืข ืคืขืžื™ื™ื. ื‘ื•ืื• ื ื™ืงื— ืืช 4,0 ื•ื ื™ืชืŸ ืœื• ืืช ื”ืขืจืš 5:
[5, 5, 2, 2, 0, 4, 2, 2]
ืขื›ืฉื™ื• ืื•ืฆืจ ื”ืžื™ืœื™ื ืฉืœื ื• ื›ื‘ืจ ืžื•ืจื›ื‘ ืž:
" " - 0
a - 1
b - 2
aa - 4
"aa " - 5
ืฉื™ืžื• ืœื‘ ืฉื”ืžืกืคืจ 5 ื”ื•ื ื˜ื•ืงืŸ ืฉืžื™ื™ืฆื’ ื˜ืงืกื˜ ื‘ืื•ืจืš 3 ืชื•ื•ื™ื. ื”ื–ื•ื’ ื”ื‘ื ื”ื›ื™ ื ืคื•ืฅ ื”ื•ื 2,2 ืฉืžื•ืคื™ืข ืคืขืžื™ื™ื ืื– ื ืงืจื ืœื• 6 ื•ื ืงื‘ืœ:
[5, 5, 6, 0, 4, 6]
ื•ืžืคื” ื›ื‘ืจ ืื™ ืืคืฉืจ ืœื”ืžืฉื™ืš ื›ื™ ื›ืœ ื”ื–ื•ื’ื•ืช ืžื•ืคื™ืขื™ื ืจืง ืคืขื ืื—ืช. ืงื™ื‘ืœื ื• ืื•ืฆืจ ืžื™ืœื™ื ื‘ื• ื ื•ื›ืœ ืœื”ืฉืชืžืฉ ื›ื“ื™ ืœืงื•ื“ื“ ื›ืœ ื˜ืงืกื˜ ื—ื“ืฉ. ื›ืœ ืžื™ืœื” ืชื”ืคื•ืš ืœืžืกืคืจ ืื—ื“ ืื• ื™ื•ืชืจ ื•ืืคืฉืจ ืœืงื•ื“ื“ ื’ื ืžื™ืœื™ื ืฉืœื ื”ื•ืคื™ืขื• ื‘ืชื•ืจ "ืžื™ืœื™ื" ื‘ืื•ืฆืจ ื”ืžื™ืœื™ื ื”ืžืงื•ืจื™ ื›ืœื•ืžืจ ื’ื ืžื™ืœื™ื ื—ื“ืฉื•ืช. ื‘ืขื•ืœื ื”ืืžื™ืชื™ ื›ืžื•ื‘ืŸ ืฉื”ื˜ืงืกื˜ ืžืžื ื• ืื ื—ื ื• ื‘ื•ื ื™ื ืืช ืื•ืฆืจ ื”ืžื™ืœื™ื ืฆืจื™ืš ืœื”ื™ื•ืช ื”ืจื‘ื” ื™ื•ืชืจ ืืจื•ืš ื•ืœื”ื™ื•ืช ื›ืžื” ืฉื™ื•ืชืจ ื“ื•ืžื” ืžื‘ื—ื™ื ืช ืชื“ื™ืจื•ืช ื”ื•ืคืขืช ื”ืžื™ืœื™ื ืœื˜ืงืกื˜ ื”ืืžื™ืชื™ ืฉื”ืžื•ื“ืœ ื™ืฆื˜ืจืš ืœื ื—ืฉ. ื”ื™ื™ื ื• ืจื•ืฆื™ื ืฉื™ื”ื™ื• ื›ืžื” ืฉื™ื•ืชืจ ืžื™ืœื™ื ื‘ืื•ืฆืจ ื”ืžื™ืœื™ื ื•ืฉื™ื”ื™ื• ื›ืžื” ืฉืคื—ื•ืช ืžื™ืœื™ื ืฉื”ืžื•ื“ืœ ืœื ืžื›ื™ืจ. ืืชื ื™ื›ื•ืœื™ื ืœืจืื•ืช ื“ื•ื’ืžื” ืœื”ืžื—ืฉื” ื‘ืงื™ืฉื•ืจ: https://www.bpe-visualizer.com ื™ืฉ ื”ืจื‘ื” ืกืคืจื™ื•ืช ืฉืขื•ืฉื•ืช BPE ื•ื‘ืงื•ื ื˜ืงืกื˜ ืฉืœ ืขื‘ื•ื“ื” ื‘ื˜ื•ื— ื›ื“ืื™ ืœืงื—ืช ืกืคืจื™ื” ืงื™ื™ืžืช ืœื›ื–ื” ืงื™ื“ื•ื“. ืื ื™ ืžื™ืžืฉืชื™ ืื—ื“ ื‘ืฉื‘ื™ืœ ื”ืžืฉื—ืง ื‘ืจื•ื‘ื™ ื‘ื‘ื™ืฆื•ืขื™ื ื“ื™ ื’ืจื•ืขื™ื ื•ื–ื” ื”ืงื•ื“:
module Tokenizer
  def self.encode(text, vocab)
    remaining = text
    encoded = []
    until remaining.empty?
      token, remaining = vocab.encode_next_token(remaining)
      encoded << token
    end
    encoded
  end


  def self.decode(encoded, vocab)
    inv = vocab.inverted

ToCode
1 419
ื•ืืœื” ื‘ื“ื™ื•ืง ื“ื‘ืจื™ื ืฉืžืคืชื—ื™ื ืื ื•ืฉื™ื™ื, ืืคื™ืœื• ื’'ื•ื ื™ื•ืจื™ื, ืžืื•ื“ ื˜ื•ื‘ื™ื ื‘ื”ื. ื›ื‘ื ื™ ืื“ื ืื ื—ื ื• ื™ื•ื“ืขื™ื ืœืฉื™ื ืœื‘ ื›ืฉืขื•ื‘ื“ื™ื ืขืœื™ื ื•, ืื ื—ื ื• ืฉืžื™ื ืœื‘ ื›ืฉื“ื‘ืจื™ื ืœื ื”ื’ื™ื•ื ื™ื™ื, ืื ื—ื ื• ื™ื•ื“ืขื™ื ืœืฉืื•ืœ ืฉืืœื•ืช ื•ืœื”ื–ื™ื– ื“ื‘ืจื™ื ืœืžืงื•ื ื”ืžืชืื™ื ืœื”ื. ื’ื ืื ืื ื—ื ื• ืœื ืชืžื™ื“ ื–ื•ื›ืจื™ื ืื ืฆืจื™ืš ืœื›ืชื•ื‘ desc ืื• description ืื• ืื ื–ื” redirect ืื• redirect_to. ื”ื ื” ื”ื”ื–ื“ืžื ื•ืช ื‘ืขื‘ื•ื“ื” ืขื AI - ืœืงื‘ืœ ื’ื™ืจืกื” ืฉืœ ืคื™ืชืจื•ืŸ ืฉื”ื™ื ื˜ื™ื•ื˜ื”. ืœืฉืื•ืœ ืขืœื™ื” ืฉืืœื•ืช. ืœื”ื‘ื™ืŸ ืžื” ื”ืžืฉืžืขื•ืช ืฉืœ ื›ืœ ื‘ื—ื™ืจื” ื•ื‘ืกื•ืฃ ืœื”ื—ืœื™ื˜ ืขืœ ื”ืžื‘ื ื” ื”ื ื›ื•ืŸ ืขื‘ื•ืจ ื”ืžืขืจื›ืช ืฉืœื›ื. ื•ืื– ืœืขื“ื›ืŸ ืืช ืงื•ื“ ื”ืžืขืจื›ืช ื•ืืช ืงื‘ืฆื™ ื”ื”ื•ืจืื•ืช ืœืกื•ื›ืŸ ื›ื“ื™ ืฉืคืขื ื”ื‘ืื” ื”ืชืฉื•ื‘ื” ืชื”ื™ื” ืงืฆืช ื™ื•ืชืจ ืขืงื‘ื™ืช.

ToCode
1 419
ืฉื™ื ื•ื™ื™ื ืงื˜ื ื™ื ืฉืžืฆื˜ื‘ืจื™ื ื›ืœ ืขื•ื“ AI ืžืชืขืงืฉ ืœื™ื™ืฆืจ ืืช ืื•ืชืŸ ื‘ืขื™ื•ืช ื‘ืงื•ื“ ืฉื”ื•ื ื›ื•ืชื‘ ื•ื›ืœ ืขื•ื“ ืœืžืจื•ืช ื›ืœ ื”ื‘ืขื™ื•ืช ื”ื•ื ื—ื•ืกืš ืœื ื• ื–ืžืŸ ื›ื“ืื™ ืฉื ื›ื™ืจ ืืช ืื•ืชืŸ ืชื‘ื ื™ื•ืช ื•ื‘ืขื™ื•ืช ื ืคื•ืฆื•ืช. ื”ื ื” ืงื˜ืข ืงื•ื“ ืฉืงื™ื‘ืœืชื™ ืž AI:
class UserSelectionsController < ApplicationController
  before_action :require_login
  before_action :find_chat_and_message

  def create
    # Handle initial selection creation (if needed in the future)
    # For now, redirect to chat
    redirect_to chat_path(@chat)
  end

  def update
    # Use the service to handle the selection
    service = UserSelectionService.new(
      chat: @chat,
      message: @message,
      user: current_user
    )

    if params[:text_input].present?
      service.handle_selection(text_input: params[:text_input].strip)
    elsif params[:option_id].present?
      service.handle_selection(option_id: params[:option_id])
    else
      redirect_to chat_path(@chat), alert: "Invalid selection"
      return
    end

    redirect_to chat_path(@chat)
  rescue => e
    Rails.logger.error "UserSelection error: #{e.message}"
    Rails.logger.error e.backtrace.join("\n")
    redirect_to chat_path(@chat), alert: "Something went wrong"
  end

  private

  def find_chat_and_message
    @chat = current_user.chats.find(params[:chat_id])
    @message = @chat.messages.find(params[:message_id])
  rescue ActiveRecord::RecordNotFound
    redirect_to new_chat_path, alert: t('chat.not_found')
  end
end
ืœื ืฆืจื™ืš ืœื”ื›ื™ืจ ืจื•ื‘ื™ ื‘ืฉื‘ื™ืœ ืœืจืื•ืช ืืช ื”ื‘ืขื™ื•ืช: 1. ืคื•ื ืงืฆื™ื™ืช create ืจื™ืงื”. ืืคื™ืœื• ื”ื”ืขืจื” ืžืกื‘ื™ืจื” ืฉื–ื” ืจืง ื”ื›ื ื” ืœืขืชื™ื“. ื‘ืŸ ืื“ื ืœื ื”ื™ื” ืžืฉืื™ืจ ืื•ืชื”, AI ืคื•ื—ื“ ืœืžื—ื•ืง. 2. ื”ืคื•ื ืงืฆื™ื” ื”ืฉื ื™ื” update ืžืกืชื™ื™ืžืช ื‘ืคืงื•ื“ืช rescue ืฉื›ื•ืชื‘ืช ืœืœื•ื’ ืืช ื”ืฉื’ื™ืื” ื•ืžื—ื–ื™ืจื” ืœืžืฉืชืžืฉ ื”ื•ื“ืขื” Something went wrong. ืคื•ื ืงืฆื™ื™ืช find_chat_and_messag ืชื•ืคืกืช ืฉื’ื™ืื” ื•ืžื—ื–ื™ืจื” ืœืžืฉืชืžืฉ ื”ื•ื“ืขื” ืžืชื•ืš ืงื•ื‘ืฅ ื”ื”ื•ื“ืขื•ืช ื”ืžืชื•ืจื’ืžื•ืช. ื‘ืŸ ืื“ื ื”ื™ื” ื‘ื•ื—ืจ ื“ืจืš ืื—ืช ื•ืžืฉืชืžืฉ ื‘ื” ื‘ืฉืชื™ ื”ืคื•ื ืงืฆื™ื•ืช. ื›ืฉ AI ื›ื•ืชื‘ ืงื•ื“ ื”ื•ื ืœื ื™ื•ื“ืข ืžื” ื”ื•ื ื›ืชื‘ ืงื•ื“ื. 3. ื”ืคื•ื ืงืฆื™ื” require_login ืžื•ื•ื“ืืช ืฉื™ืฉ ืžืฉืชืžืฉ ื ื•ื›ื—ื™ ืžื—ื•ื‘ืจ. ื”ืคื•ื ืงืฆื™ื” find_chat_and_message ืžืฉืชืžืฉืช ื‘ืžืฉืชืžืฉ ื”ื ื•ื›ื—ื™ ื›ื“ื™ ืœื”ื’ื™ืข ืœืฉื™ื—ื”. ืื™ืŸ ื˜ืขื ืœืงืจื•ื ืœืฉืชื™ื”ืŸ ื›ื™ ื”ืฉื ื™ื™ื” ื›ื‘ืจ ื›ื•ืœืœืช ื’ื ืืช ื”ืœื•ื’ื™ืงื” ืฉืœ ื”ืจืืฉื•ื ื”. AI ืœื ื™ื›ื•ืœ ืœืจืื•ืช ืืช ื–ื”. 4. ื”ืคื•ื ืงืฆื™ื” update ื›ื•ืœืœืช ืฉื ื™ ืžื ื’ื ื•ื ื™ื ืœื˜ื™ืคื•ืœ ื‘ืฉื’ื™ืื•ืช, ื™ืฉ ืฉื if else ืฉืžื˜ืคืœ ื‘ืžืฆื‘ ื‘ื• ืœื ืขื‘ืจ ืคืจืžื˜ืจ ืฉื”ืคื•ื ืงืฆื™ื” ืฆื™ืคืชื” ืœืงื‘ืœ ื•ื’ื rescue ืฉืžื˜ืคืœ ื‘ื‘ืขื™ื•ืช ืื—ืจื•ืช. ื‘ืŸ ืื“ื ื”ื™ื” ืžื•ื•ื“ื ืฉืงื•ื“ ื”ื˜ื™ืคื•ืœ ื‘ืฉื’ื™ืื”, ื›ืœื•ืžืจ ื”ืงืจื™ืื” ืœ redirect_to ืชื•ืคื™ืข ืจืง ืคืขื ืื—ืช. 5. ื‘ืคื•ื ืงืฆื™ื” update ืงื•ื“ ื”ื˜ื™ืคื•ืœ ื‘ืฉื’ื™ืื•ืช ืžื˜ืคืœ ื‘ื›ืœ Exception. ื‘ find_chat_and_message ื™ืฉ ื˜ื™ืคื•ืœ ืจืง ื‘ ActiveRecord::RecordNotFound. 6. ื”ื˜ื™ืคื•ืœ ื‘ืฉื’ื™ืื•ืช ื”ื•ื ืชืžื™ื“ ืžืงื•ืžื™. ื›ืฉ AI ื›ื•ืชื‘ ืืช ืงื•ื“ ื”ื˜ื™ืคื•ืœ ื‘ืฉื’ื™ืื•ืช ื”ื•ื ืœื ื™ื›ื•ืœ ืœืฉื™ื ืœื‘ ืฉืืคืฉืจ ืœื›ืชื•ื‘ ืงื•ื“ ื˜ื™ืคื•ืœ ื‘ืฉื’ื™ืื•ืช ื‘ืžืงื•ื ื™ื•ืชืจ "ื’ื‘ื•ื”" ื‘ืฉืจืฉืจืช ื”ืงืจื™ืื•ืช ื›ื“ื™ ืœื›ืกื•ืช ื™ื•ืชืจ ืžืงืจื™ื. 7. ื”ืคื•ื ืงืฆื™ื” update ื›ื•ืœืœืช ืืช ื”ื‘ืœื•ืง ื”ื–ื”:
    if params[:text_input].present?
      service.handle_selection(text_input: params[:text_input].strip)
    elsif params[:option_id].present?
      service.handle_selection(option_id: params[:option_id])
    ...
ื”ืคื•ื ืงืฆื™ื” handle_selection ืฉืžื•ืคืขืœืช ืžืชื•ืš ื”ื‘ืœื•ืง ื›ื•ืœืœืช ืืช ื”ื‘ืœื•ืง ื”ื–ื”:
 def handle_selection(option_id: nil, text_input: nil)
    if text_input.present?
      handle_text_selection(text_input)
    elsif option_id.present?
      handle_option_selection(option_id)
    else
      raise ArgumentError, "Either option_id or text_input must be provided"
    end
  end
ืงื™ื‘ืœื ื• ืืช ืื•ืชื” ื‘ื“ื™ืงื” ื‘ืฉื ื™ ืžืงื•ืžื•ืช ืขื ืฉื ื™ ืžื ื’ื ื•ื ื™ ื–ืจื™ืงืช ืฉื’ื™ืื” ืฉื•ื ื™ื. ื‘ืŸ ืื“ื ื”ื™ื” ื›ื•ืชื‘ ื‘ update:
service.handle_selection(params)
ื•ื ื•ืชืŸ ืœ if ื”ืคื ื™ืžื™ ืœื‘ื“ื•ืง ืžื” ืขื‘ืจ, ืื• ืžืคืฆืœ ืืช ื”ืงื•ื“ ื‘ service ืœืฉืชื™ ืคื•ื ืงืฆื™ื•ืช ื•ืžื•ื•ืชืจ ืขืœ ื” if ืฉื. AI ืœื ื™ื•ื“ืข ืžื” ื”ื•ื ื›ื‘ืจ ื›ืชื‘ ืื– ื”ื•ื ืžืฉื›ืคืœ. ื›ืœ ื”ื‘ืขื™ื•ืช ื”ืืœื” ืœื ื™ื™ื—ื•ื“ื™ื•ืช ืœืจื•ื‘ื™ ื•ืœื ื™ื™ืคืชืจื• ืขืœ ื™ื“ื™ "ืงื‘ืฆื™ ื”ื•ืจืื•ืช ื˜ื•ื‘ื™ื ื™ื•ืชืจ" ืื• "ืžื•ื“ืœื™ื ื—ื›ืžื™ื ื™ื•ืชืจ". ืืœื” ื‘ืขื™ื•ืช ืžื•ื‘ื ื•ืช ื‘ืžื•ื“ืœื™ ืฉืคื” ื’ื“ื•ืœื™ื - ืงื•ื“ ืœื ืขืงื‘ื™, ืคื—ื“ ืœืžื—ื•ืง, ื—ื•ืกืจ ื™ื›ื•ืœืช ืœืจืื•ืช ืงืฉืจ ื‘ื™ืŸ ื—ืœืงื™ื ืฉื•ื ื™ื ื‘ืžืขืจื›ืช ื•ื‘ื—ื™ืจื” ืžื•ืฉื›ืœืช ื‘ืื™ื–ื” ื—ืœืง ื‘ืžืขืจื›ืช ืฆืจื™ืš ืœื›ืชื•ื‘ ื›ืœ ืžื ื’ื ื•ืŸ.

ToCode
1 419
ื”ื™ื•ื ืœืžื“ืชื™: ืคื•ื ืงืฆื™ื™ืช random ื‘ CSS ืื ื™ ืžื•ื“ื” ื›ืฉืฉืžืขืชื™ ืขืœ ื”ืคื™ืฆ'ืจ random ื‘ CSS ื”ืฉืืœื” ื”ืจืืฉื•ื ื” ืฉืœื™ ื”ื™ืชื” - ืžืกืคืจื™ื ืืงืจืื™ื™ื ื‘ CSS? ืœืžื”?? ืื‘ืœ ืื– ื”ื•ืจื“ืชื™ ืืช Safari Technology Preview ื”ื—ื“ืฉ ื•ื ื™ืกื™ืชื™ ืœืžืฉืœ ืืช ื”ื“ืžื• ืฉืœ ื”ื›ื•ื›ื‘ื™ื:
body {
  background: black;
}
.star {
   background-color: white;
   border-radius: 50%;
   aspect-ratio: 1/1; 
   width: random(2px, 10px, 1px);
   position: fixed;
   top: random(0%, 100%);
   left: random(0%, 100%);
 }

ืœื™ื ืง ืœืงื•ื“ืคืŸ: https://codepen.io/ynonp/pen/XJmYaae ื•ื‘ืืžืช ื™ืฉ ืžืฉื”ื• ื ื—ืžื“ ื‘ืจืงืข ืฉื›ืœ ืคืขื ื ื˜ืขืŸ ืขื ื›ื•ื›ื‘ื™ื ื‘ืžืงื•ื ืื—ืจ. ืžืฆื“ ืฉื ื™ - ืชืžื™ื›ืช ื“ืคื“ืคื ื™ื ืžืื•ื“ ื‘ืขื™ื™ืชื™ืช, ืื™ืŸ ืงื•ื ืฆื ื–ื•ืก ืขืœ ื”ืคื™ืฆ'ืจ ื•ืœื ื ืจืื” ืฉืžื™ืฉื”ื• ื—ื•ืฅ ืžืืคืœ ืจื•ืฆื” ืœื‘ื ื•ืช ืื•ืชื• (ืื™ืŸ ืืคื™ืœื• ืขืžื•ื“ ื‘ mdn ืื• ื‘ caniuse). ื›ืืŸ ื™ืฉ ืžื“ืจื™ืš ื“ื™ ืžืงื™ืฃ ืžื”ื‘ืœื•ื’ ืฉืœ ื•ื•ื‘ืงื™ื˜ ืขืœ ื”ืคื™ืฆ'ืจ ื•ื›ืœ ื”ื“ื‘ืจื™ื ื”ืžื“ืœื™ืงื™ื ืฉืืคืฉืจ ื™ื”ื™ื” ืœืขืฉื•ืช ืขื random ื™ื•ื ืื—ื“ ืื ื”ื•ื ื™ื™ื›ื ืก ืœื—ื™ื™ื ืฉืœื ื•: https://webkit.org/blog/17285/rolling-the-dice-with-css-random/ ืขื“ ืื– ื ืžืฉื™ืš ืœื”ื’ืจื™ืœ ืขืจื›ื™ื ื‘ืืžืฆืขื•ืช JavaScript.