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
ื™ื™ืฆื•ื ืงื•ื‘ืฅ HAR ืœื˜ืงืกื˜ ื‘ืขื‘ืจ ื›ืฉื”ื™ื™ื ื• ืฆืจื™ื›ื™ื ืœื›ืชื•ื‘ ืกืงืจื™ืคื˜ ืฉื™ื‘ืฆืข ืชื”ืœื™ื›ื™ื ืฉืื ื—ื ื• ืžื‘ืฆืขื™ื ื™ื“ื ื™ืช ื‘ื“ืคื“ืคืŸ ื”ื™ื™ื ื• ืคื•ืชื—ื™ื ืืช ื›ืœื™ ื”ืคื™ืชื•ื—, ืžืกืชื›ืœื™ื ื‘ื‘ืงืฉื•ืช ืฉื™ื•ืฆืื•ืช ื•ื‘ืชืฉื•ื‘ื•ืช ื•ืœืคื™ ื–ื” ืžืงื•ื“ื“ื™ื ืืช ื”ืกืงืจื™ืคื˜. ื”ื™ื•ื ื›ืฉ AI ื™ื›ื•ืœ ืœืขืฉื•ืช ืืช ื”ื‘ื ื™ื™ื” ื‘ืฉื‘ื™ืœื ื• ื›ืœ ืžื” ืฉืื ื—ื ื• ืฆืจื™ื›ื™ื ื–ื” ืœื”ืงืœื™ื˜ ืืช ื” Session ื•ืœื™ื™ืฆื ืืช ื›ืœ ื”ื”ื•ื“ืขื•ืช ื‘ืชื•ืจ ื˜ืงืกื˜ ื›ื“ื™ ืฉื ื•ื›ืœ ืœืชืช ืœ AI ืœืชืจื’ื ืื•ืชืŸ ืœืคืงื•ื“ื•ืช curl ืื• ืœื›ืชื•ื‘ ืžื”ืŸ ืกืงืจื™ืคื˜. ื”ื‘ืขื™ื” ื”ื™ื—ื™ื“ื” - ื“ืคื“ืคื ื™ื ืœื ืžื™ื™ืฆืื™ื Session ืฉืœื ืžื˜ืื‘ network ื‘ื›ืœื™ ื”ืคื™ืชื•ื— ืœืงื•ื‘ืฅ ื˜ืงืกื˜. ืื™ื–ื” ืžื–ืœ ืฉืื ื—ื ื• ื™ื•ื“ืขื™ื ืคื™ื™ืชื•ืŸ. ื–ื” ื”ืกืงืจื™ืคื˜:
import re
import json
from haralyzer import HarParser, HarPage
with open('demo.har', 'r', encoding='utf8') as f:
    har_parser = HarParser(json.loads(f.read()))

data = har_parser.har_data

for page in har_parser.pages:
    print(f"Page URL: {page.url}")

    for entry in page.entries:
        print("---\n\n")
        print("Request URL: ")
        print(entry.request.url)
        print("Request method: ")
        print(entry.request.method)
        print("Request Headers: ")
        print(entry.request.headers)
        print("")
        print("Response Headers: ")
        print(entry.response.headers)
        print("")
        if 'content' in entry.response:
            print("Response Body: ")
            print(entry.response['content'].get('text'))
ืžืชื•ืš ื›ืœื™ ื”ืคื™ืชื•ื— ืฉืœ ื”ื“ืคื“ืคืŸ ืืชื ื ื›ื ืกื™ื ืœื˜ืื‘ Network, ืฉื•ืžืจื™ื ืืช ื›ืœ ื”ืชืงืฉื•ืจืช ืœืงื•ื‘ืฅ HAR ืขื ื›ืคืชื•ืจ ืฉื ืจืื” ื›ืžื• ื—ืฅ ืœืžื˜ื” ื•ืื– ืžืคืขื™ืœื™ื ืืช ื”ืกืงืจื™ืคื˜ (ืขื ืชื™ืงื•ืŸ ืฉื ื”ืงื•ื‘ืฅ) ื›ื“ื™ ืœืงื‘ืœ ืืช ื›ืœ ื”ื‘ืงืฉื•ืช ื•ื”ืชืฉื•ื‘ื•ืช ืฉื”ื•ืคื™ืขื• ื‘ื˜ืื‘ Network. ืืช ื›ืœ ื”ืคืœื˜ ืžืขืชื™ืงื™ื ื•ืžื“ื‘ื™ืงื™ื ืœื—ืœื•ืŸ ืฉืœ AI ื•ื”ื•ื ื›ื‘ืจ ื™ื›ืชื•ื‘ ืœื›ื ืžื–ื” ื›ืœ ืกืงืจื™ืคื˜ ืฉืชืจืฆื•. ื˜ื™ืค ืœืžืชืงื“ืžื™ื - ื›ื“ืื™ ืœื”ื•ืกื™ืฃ ื‘ืชื—ื™ืœืช ื”ืœื•ืœืื” ื“ื™ืœื•ื’ื™ื ืขืœ url-ื™ื ืœื ืจืœื•ื•ื ื˜ื™ื ืœืžืฉืœ:
if entry.request.url.endswith('.jpg'): continue

ToCode
1 419
ืกื“ืจ ืคืจื™ื˜ื™ื ื‘ SQL ื›ืฉืื ื™ ืžื•ืฉืš ืžื‘ืกื™ืก ื ืชื•ื ื™ื ืืช ื›ืœ ื”ืฉื™ืจื™ื ื‘ืžืขืจื›ืช:
select * from songs;
ืœืคื™ ืื™ื–ื” ืกื“ืจ ื”ื ืžื’ื™ืขื™ื? ื”ืื ืื ื™ ืžืฆืคื” ืœืกื“ืจ? ื•ืื™ืš ืœื•ื•ื“ื ืฉื”ื ื™ื’ื™ืขื• ื‘ืกื“ืจ ืฉืื ื™ ืฆืจื™ืš? 1. ื‘ืœื™ ืœื›ืชื•ื‘ order by ื”ืฉื™ืจื™ื ื™ื›ื•ืœื™ื ืœื—ื–ื•ืจ ื‘ื›ืœ ืกื“ืจ. ื”ืจื‘ื” ืคืขืžื™ื ื‘ืคื™ืชื•ื— ื”ื ื™ื’ื™ืขื• ืœืคื™ ื”ืกื“ืจ ื‘ื• ื”ื ื ื•ืฆืจื• ื•ื‘ืคืจื•ื“ืงืฉืŸ ืœืคื™ ืกื“ืจ ืืงืจืื™ ื›ืœืฉื”ื•, ืจืง ื›ื™ ื”ื ื™ื›ื•ืœื™ื. 2. ืื ื™ืฉ ื”ืจื‘ื” ืฉื™ืจื™ื ื•ืœื ืื›ืคืช ืœื›ื ืžื”ืกื“ืจ, ืœื”ื•ืกื™ืฃ order by ื™ืื˜ ืืช ื”ืฉืื™ืœืชื” ื•ื™ื“ืจื•ืฉ ื™ื•ืชืจ ื–ื™ื›ืจื•ืŸ. ื•ืขื›ืฉื™ื• ืœืฉืืœื” - ื”ืื ื›ื“ืื™ ืœื›ืชื•ื‘ order by ื‘ื›ืœ ืฉืื™ืœืชื” ืจืืฉื™ืช ื‘ืžืขืจื›ืช (ื›ืœื•ืžืจ ืœื ื‘ืžืฆื‘ ืฉื” select ื‘ืชื•ืš where)? ืื ื™ ืžื•ื“ื” ืฉืื—ืจื™ ืฉื‘ื™ืœื™ืชื™ ื”ืฉื‘ื•ืข ื›ืžื” ืฉืขื•ืช ื‘ืฉื‘ื™ืœ ืœื”ื‘ื™ืŸ ืฉื’ื™ืื” ืฉื ื‘ืขื” ืžืฉืื™ืœืชื” ื‘ืœื™ order ืื ื™ ืžืชื—ื™ืœ ืœื—ืฉื•ื‘ ื‘ื—ื™ื•ื‘ ืขืœ ื”ืื•ืคืฆื™ื”. ืžื” ื“ืขืชื›ื?

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

ToCode
1 419
ืื ื™ ืœื ืžืืžื™ืŸ ืฉ PHP ืงื™ื‘ืœื• ืืช ื”ืื•ืคืจื˜ื•ืจ ื”ื–ื” ืœืคื ื™ื ื• ื›ื‘ืจ ื”ืจื‘ื” ื–ืžืŸ ืฉื™ืฉ ื”ืฆืขื” ืขืœ ื”ืฉื•ืœื—ืŸ ืœืื•ืคืจื˜ื•ืจ Pipe ื‘ JavaScript. ื–ื” ื™ืจืื” ื›ืš:
value |> foo(%)
ืื• ื‘ืฉื™ืจืฉื•ืจ ืืจื•ืš ื™ื•ืชืจ:
[1, 2, 3]
|> %.filter(x => x % 2 === 0)
|> %.map(x => x * 4)
|> %.join(' ')
|> console.log(%)
ืื• ืืคื™ืœื•:
return links
  |> Object.keys(%).map(function (rel) {
    return '<' + links[rel] + '>; rel="' + rel + '"';
  })
  |> link + %.join(', ')
  |> this.set('Link', %);
ื•ื‘ื–ืžืŸ ืฉืื ื—ื ื• ื›ื‘ืจ ืฉื ื™ื ืžืกืชื›ืœื™ื ืขืœ ื”ื”ืฆืขื” ืœ Pipe Operator, ื•ืžืชื•ื•ื›ื—ื™ื ื‘ืื™ื–ื” ืชื—ื‘ื™ืจ ื‘ื“ื™ื•ืง ืœื”ืฉืชืžืฉ ื”ื—ื‘ืจื™ื ื‘ PHP ืจืฆื• ืงื“ื™ืžื” ืขื ืžื™ืžื•ืฉ ืคืฉื•ื˜ ื•ืขื•ื‘ื“:
$result = "Hello World"
    |> strtoupper(...)
    |> str_shuffle(...)
    |> trim(...);
ื‘ื ื™ื’ื•ื“ ืœื”ืฆืขื” ืฉืœ JavaScript, ื‘ PHP ืื•ืคืจื˜ื•ืจ ื”ืฆื™ื ื•ืจ ืžืงื‘ืœ ืจืง ืคื•ื ืงืฆื™ื•ืช ืฉื™ื›ื•ืœื•ืช ืœืงื‘ืœ ืคืจืžื˜ืจ ื™ื—ื™ื“ ืื‘ืœ ื‘ืชืžื•ืจื” ื”ื ื•ื™ืชืจื• ืขืœ ืกื™ืžืŸ ื”ืื—ื•ื–.

ToCode
1 419
ื ื™ืกื•ื™ OpenRouter ืž Python ืื•ืคืŸืจืื•ื˜ืจ ืžืกืคืง ื’ื™ืฉื” ืœื”ืžื•ืŸ ืžื•ื“ืœื™ื ืžืกื—ืจื™ื™ื ื•ืžื•ื“ืœื™ ืงื•ื“ ืคืชื•ื— ื“ืจืš API ืื—ื“, ืžืกืš ืชืฉืœื•ื ืื—ื“ ื•ืžืกืš ืื—ื“ ื‘ื• ืืคืฉืจ ืœืจืื•ืช ืืช ื”ืคืขื™ืœื•ืช ื•ื”ืขืœื•ื™ื•ืช. ื–ื” ืžืื•ื“ ื ื•ื— ื›ืฉืจื•ืฆื™ื ืœืฉื™ื ืœื‘ ื›ืžื” ืขื•ืœื” ื›ืœ ื” AI ื”ื–ื” ื•ื’ื ืœื—ืกื•ืš ื›ืกืฃ ื‘ืืžืฆืขื•ืช ื’ื™ื•ื•ืŸ ื‘ืžื•ื“ืœื™ื. ืืคืฉืจ ืœื”ื™ืจืฉื ื›ืืŸ: https://openrouter.ai/ ื•ื’ื ืœื“ื‘ืจ ืขื ื”ืžื•ืŸ ืžื•ื“ืœื™ื ืžืชื•ืš ืžืžืฉืง ื” Web ืฉืœื”ื, ืื‘ืœ ืื ื™ ืจื•ืฆื” ืœื”ืจื™ืฅ ื ื™ืกื•ื™ ืžืชื•ืš ืคื™ื™ืชื•ืŸ ื›ื“ื™ ืœืชืช ืœื›ืžื” ืžื•ื“ืœื™ื ืœืขื ื•ืช ืœืื•ืชื” ืฉืื™ืœืชื”. ื”ืชื—ืœืชื™ ืขื ื”ืงื•ื“ ื”ื‘ื:
import asyncio
from agents import Agent, Runner
from agents.extensions.models.litellm_model import LitellmModel
import os

async def main():
    models = [
        "openrouter/moonshotai/kimi-k2",
        "openrouter/z-ai/glm-4.5",
        "openrouter/cognitivecomputations/dolphin-mistral-24b-venice-edition:free",
        "openrouter/inception/mercury"
    ]

    for model in models:
        agent = Agent(
            name="Assistant",
            model=LitellmModel(model=model),
            instructions="You only respond in haikus.",
        )

        print(f"Model: {model}")
        result = await Runner.run(agent, "Tell me about recursion in programming.")
        print(result.final_output)
        print("---")

if __name__ == "__main__":
    asyncio.run(main())
ื”ืงื•ื“ ืžืฉืชืžืฉ ื‘ืกืคืจื™ื™ืช OpenAI Agents SDK ืื•ืชื” ืื ื™ ืžืื•ื“ ืžื—ื‘ื‘ ื•ืžื‘ืงืฉ ืž-4 ืžื•ื“ืœื™ื ืœื”ืกื‘ื™ืจ ื‘ืฉื™ืจ Haiku ืžื”ื™ ืจืงื•ืจืกื™ื”. ืืœื” ื”ืชืฉื•ื‘ื•ืช ืฉืงื™ื‘ืœืชื™:
Model: openrouter/moonshotai/kimi-k2
Function calls itself
Each step unpeels a layer
Base case stops the fall
---

Model: openrouter/z-ai/glm-4.5
Function calls itself
To solve a smaller problem
Base case stops the loop

Code within the code
Stack grows deeper with each call
Until base is found

Divide and conquer
Breaking problems into parts
Solve the simplest
---

Model: openrouter/cognitivecomputations/dolphin-mistral-24b-venice-edition:free
A function calls itself,
Looping back in endless dance,
Chasing its own tail.

Base case breaks the spell,
Else infinite descent,
Stack overflow lovers.

Elegant solutions,
Complex problems simplified,
Beauty in repetition.

But beware the trap,
Unchecked, it can drive you mad,
Like rabbits in a field.

Fibonacci, trees,
Recursion's grace is seen,
In patterns endless woven.

So with care and caution,
Wield this tool, and watch it grow,
A tapestry of code.
---

Model: openrouter/inception/mercury
Function calls itself,
In layers it goes UNCer hands depthHappyLe Finding to end.
ืกืš ื”ื›ืœ ื—ื•ืฅ ืžืžืจืงื•ืจื™ ื›ื•ืœื ื”ื™ื• ื‘ืกื“ืจ. ืžื‘ื—ื™ื ืช ืขืœื•ื™ื•ืช ื“ื•ืœืคื™ืŸ-ืžื™ืกื˜ืจืœ ื”ืœื ืžืฆื•ื ื–ืจ ื”ื•ื ื‘ื—ื™ื ื ืื– ื‘ืจื•ืจ ืฉื”ื•ื ื”ื›ื™ ืžืฉืชืœื ืื‘ืœ ื‘ื›ืœ ืžืงืจื” ื ืฆื˜ืจืš ืœื‘ื“ื•ืง ืืช ื–ื” ืขืœ ื‘ืงืฉื•ืช ื™ื•ืชืจ ืžืฉืžืขื•ืชื™ื•ืช. ืื™ื–ื” ืžื•ื“ืœื™ ืงื•ื“ ืคืชื•ื— ืืชื ื”ื›ื™ ืื•ื”ื‘ื™ื? ื•ืื™ืš ืืชื ื ื™ื’ืฉื™ื ืืœื™ื”ื?

ToCode
1 419
ื—ื™ื‘ื•ืจ Rails ืœ Langfuse ืื•ืžื ื AI ืœื ื™ื•ื“ืข ืœืกืจื‘ ืื‘ืœ ื”ื•ื ื‘ื”ื—ืœื˜ ื™ื›ื•ืœ ืœืกื‘ืš ืืช ืขืฆืžื• ืœืชื•ืš ืœื•ืœืื•ืช ืื™ื ืกื•ืคื™ื•ืช ืื• ืœื”ื“ืคื™ืก ืงื•ื“ ืฉืœื ืขื•ื‘ื“ ืื• ืขื•ื‘ื“ ืจืง ื‘ื—ืœืง ืงื˜ืŸ ืžื”ืžืงืจื™ื. ื›ื‘ืจ ื”ื™ื™ืชื™ ืžืขื“ื™ืฃ ืฉื”ื™ื” ืคืฉื•ื˜ ืื•ืžืจ "ืื ื™ ืœื ื™ื•ื“ืข". ื”ืืชื’ืจ ืฉืœื ื• ื”ื™ื” ื•ื ืฉืืจ ืœืžืฆื•ื ืืช ื”ื“ืจืš ืœื”ื’ื™ืข ืœืžื‘ื ื™ื ืฉืื ื—ื ื• ืจื•ืฆื™ื, ื’ื (ื•ื‘ืžื™ื•ื—ื“) ื›ืฉืื™ืŸ ืคื™ืชืจื•ืŸ ืžื“ืฃ ื‘ืจืฉืช. ื‘ื“ื•ื’ืžื” ื”ื™ื•ื ื‘ื™ืงืฉืชื™ ืœื—ื‘ืจ ืืคืœื™ืงืฆื™ื™ืช Rails ืœ langfuse ื›ื“ื™ ืœืขืงื•ื‘ ืื—ืจื™ ืงืจื™ืื•ืช API ืœืžื ื•ืขื™ AI. ืงืœื•ื“ ืขื ื” ืฉืื™ืŸ ื—ื™ื‘ื•ืจ ืžื•ื‘ื ื” ื•ื”ืฆื™ืข ืœื›ืชื•ื‘ ืžืฉื”ื• ื‘ืขืฆืžื• ื•ื–ื” ืœื ืขื‘ื“ ื‘ื›ืœืœ. ืื– ืขื‘ืจืชื™ ืœืชืช ืœื• ืจืžื–ื™ื, ืชื—ื™ืœื” ื”ืžืฆืืชื™ ืืช ื”ืงื•ื“ ืฉืžืฉืชืžืฉ ื‘ืื™ื ื˜ื’ืจืฆื™ื”:
def ask_ai
  Langfuse.trace("extract_lyrics", attributes: {
     "gen_ai.request.model" => "gemini-2.5-pro-preview-06-05",
     "gen_ai.system" => "Gemini"
  }) do |tracer|
    chat = RubyLLM.chat(model: 'gemini-2.5-pro-preview-06-05')
    response = chat.ask("hello")
    tracer.trace(response)
  end
end
ื‘ื™ืงืฉืชื™ ื’ื ืœื”ืฉืชืžืฉ ื‘ืžืžืฉืง ื” OpenTelemetry ืฉืœ Langfuse ืขื‘ื•ืจ ื”ืžื™ืžื•ืฉ ื•ืกื™ืคืงืชื™ ืงื™ืฉื•ืจ ืœื“ืฃ ื”ืชื™ืขื•ื“ ืฉืœื”ื ืขืœ ืžืืคื™ื™ื ื™ ื” OpenTelemetry ื”ื“ืจื•ืฉื™ื ื›ื“ื™ ืœืชืขื“ ืฉื™ื—ื”. ื”ืชื•ืฆืื” ื”ื™ืชื” ืงื•ื“ ืœื ื ื•ืจื ืฉื’ื ืขื‘ืจ ื‘ื›ืœ ื”ืžืงืจื™ื ืฉื‘ื“ืงืชื™:
require 'opentelemetry-api'

module Langfuse
  class TracerWrapper
    def initialize(span)
      @span = span
    end

    def trace(llm_response)
      # Customize based on RubyLLM / OpenAI / Gemini format
      if llm_response.respond_to?(:model)
        @span.set_attribute("gen_ai.response.model", llm_response.model)
      end

      if llm_response.respond_to?(:content)
        content = llm_response.content

        # Set the completion content according to GenAI semantic conventions
        @span.set_attribute("gen_ai.completion.0.role", "assistant")
        
        if content.is_a?(Hash)
          # For structured responses, store as JSON string
          @span.set_attribute("gen_ai.completion.0.content", content.to_json)
        elsif content.is_a?(String)
          @span.set_attribute("gen_ai.completion.0.content", content)
        end
      end

      if llm_response.respond_to?(:usage)
        usage = llm_response.usage
        @span.set_attribute("gen_ai.usage.prompt_tokens", usage.prompt_tokens)
        @span.set_attribute("gen_ai.usage.completion_tokens", usage.completion_tokens)
        @span.set_attribute("gen_ai.usage.total_tokens", usage.total_tokens)
      end
    end
  end

  def self.trace(name, attributes: {}, &block)
    tracer = OpenTelemetry.tracer_provider.tracer('langfuse)
    tracer.in_span(name, attributes: default_attributes.merge(attributes)) do |span|
      yield TracerWrapper.new(span)
    end
  end

  def self.default_attributes
    {
    }
  end
end

ื•ืงื•ื‘ืฅ ื”ืื™ืชื—ื•ืœ config/initializers/opentelemetry.rb:
require 'opentelemetry/sdk'
require 'opentelemetry/exporter/otlp'
require 'base64'

public_key = Rails.application.credentials.langfuse[:pk]
secret_key = Rails.application.credentials.langfuse[:secret]

auth_token = Base64.strict_encode64("#{public_key}:#{secret_key}")

exporter = OpenTelemetry::Exporter::OTLP::Exporter.new(
  endpoint: "https://us.cloud.langfuse.com/api/public/otel/v1/traces",
  headers: { "Authorization" => "Basic #{auth_token}" },
)

span_processor = OpenTelemetry::SDK::Trace::Export::SimpleSpanProcessor.new(exporter)

OpenTelemetry::SDK.configure do |c|
  c.add_span_processor(span_processor)
end

ToCode
1 419
ืœื ืžืฉืชืžืฉ ื‘ืคืจื™ื™ืžื•ื•ืจืง ื™ืฉ ืžืคืชื—ื™ื ืฉืœื ืžืฉืชืžืฉื™ื ื‘ืคืจื™ื™ืžื•ื•ืจืง ื›ื™ ืื™ืŸ ืœื”ื ื›ื— ืœืœืžื•ื“ ืžืฉื”ื• ื—ื“ืฉ, ื›ื™ ืžื™ ื”ื–ื™ื– ืืช ื”ื’ื‘ื™ื ื” ืฉืœื™, ื›ื™ ื”ื›ื™ ืคืฉื•ื˜ ื–ื” ื”ื›ื™ ื˜ื•ื‘ ื•ืื ื™ ืžืขื“ื™ืฃ ืœื”ืกืชื“ืจ ืขื ื”ื‘ืขื™ื•ืช ืฉืื ื™ ืžื›ื™ืจ. ืื—ืจื™ื ื›ื‘ืจ ื”ืฉืชืžืฉื• ื‘ื›ืœ ื”ืคืจื™ื™ืžื•ื•ืจืงื™ื ื•ืื—ืจื™ ืœื™ืžื•ื“ ืžืขืžื™ืง ืฉืœ ื”ื‘ืขื™ื” ื•ื›ืœ ื”ืคื™ืชืจื•ื ื•ืช ื”ื‘ื™ื ื• ืžื” ื“ืจืš ื”ืขื‘ื•ื“ื” ื”ื˜ื•ื‘ื” ื‘ื™ื•ืชืจ ืขื‘ื•ืจื. ื‘ืžืงื•ื ืœื‘ื—ื•ืจ ืคืจื™ื™ืžื•ื•ืจืง ืงื™ื™ื ืฉื™ื™ืชืŸ ืคื™ืชืจื•ืŸ ื—ืœืงื™ ื”ื ื‘ื ื• ืคื ื™ืžื™ืช ื‘ืžืขืจื›ืช ืฉืœื”ื ืืช ื”ืกื˜ื ื“ืจื˜ื™ื ื•ื”ืื—ื™ื“ื•ืช ืฉื”ื ืฆืจื™ื›ื™ื. ื”ืžืฉืคื˜ "ืื ืืชื” ืœื ืžืฉืชืžืฉ ื‘ ORM ืืชื” ืžื•ืฆื ืืช ืขืฆืžืš ื‘ื•ื ื” ืื—ื“" ืขื“ื™ื™ืŸ ื ื›ื•ืŸ, ื’ื ืื ื”ื˜ื›ื ื•ืœื•ื’ื™ื” ื•ื”ืคืจื™ื™ืžื•ื•ืจืง ื”ืฉืชื ื•. ื•ื”ืœืงื— ืžื”ืžืฉืคื˜ ื”ื–ื” ื”ื•ื ืœื ืœื”ืฉืชืžืฉ ื‘ืคืจื™ื™ืžื•ื•ืจืง ื‘ื›ืœ ืžื—ื™ืจ, ืืœื ืฉื›ื“ืื™ ืœืœืžื•ื“ ืœืขื•ืžืง ืžืกืคืจ ืคืจื™ื™ืžื•ื•ืจืงื™ื ื›ื“ื™ ืœื”ื‘ื™ืŸ ืืช ื”ื‘ืขื™ื” ืœืคื ื™ ืฉืžื—ืœื™ื˜ื™ื ืœื ืœื”ืฉืชืžืฉ ื‘ืคืจื™ื™ืžื•ื•ืจืง ื•ืœื‘ื ื•ืช ืคื™ืชืจื•ืŸ ื‘ืขืฆืžื ื•.

ToCode
1 419
ืฉืœื•ืฉื” ื“ื‘ืจื™ื ืฉืื”ื‘ืชื™ ื‘ืกืคืจื™ื™ืช RubyLLM ืจื•ื‘ื™ ื”ื™ื ืชืžื™ื“ ื”ืฉืคื” ื”ืื—ืจื•ื ื” ื‘ืžืกื™ื‘ื”. ื›ืฉ OpenAI ื”ื•ืฆื™ืื• Agents SDK ื”ื ืฉื—ืจืจื• ื’ื™ืจืกื” ืœืคื™ื™ืชื•ืŸ ื•ืื—ืจืช ืœื˜ื™ื™ืคืกืงืจื™ืคื˜. ื’ื ืœื ื’ื’ืจืฃ ื–ืžื™ืŸ ืœืคื™ื™ืชื•ืŸ ื•ื˜ื™ื™ืคืกืงืจื™ืคื˜ ื•ื›ืš ืจื•ื‘ ืžื•ื—ืœื˜ ืฉืœ ื”ืกืคืจื™ื•ืช ื‘ืชื—ื•ื. ืกืคืจื™ื•ืช ืจื•ื‘ื™ ืœืขื‘ื•ื“ื” ืขื AI ืœื ื”ื™ื• ืžืกืคื™ืง ืžืชื•ื—ื–ืงื•ืช, ืืžื™ื ื•ืช ืื• ื’ืžื™ืฉื•ืช. ืœืคื—ื•ืช ืขื“ ืœืื—ืจื•ื ื”. ืกืคืจื™ื™ืช RubyLLM ื‘ื•ืœื˜ืช ืžื™ื“ ืขื ืชื™ืขื•ื“ ืžืฆื•ื™ืŸ ื•ืžืคื•ืจื˜, ืจื™ืคื• ืžืชื•ื—ื–ืง ื•ืชืžื™ื›ื” ืจื—ื‘ื” ื‘ืืงื•ืกื™ืกื˜ื. ืืœื” ืฉืœื•ืฉื” ื“ื‘ืจื™ื ืฉืื”ื‘ืชื™ ื‘ืžื™ื•ื—ื“ ื‘ืกืคืจื™ื™ื”: ื”ืชื—ืœื” ืงืœื” ื–ื” ื›ืœ ืžื” ืฉื”ื™ื™ืชื™ ืฆืจื™ืš ื‘ืฉื‘ื™ืœ ืœืฉืœื•ื— ืฉืืœื” ืœ AI:
chat = RubyLLM.chat
response = chat.ask "What is Ruby on Rails?"
puts response.content
ื›ืžื• ืฉื›ื‘ืจ ืžืงื•ื‘ืœ ื‘ืขื•ืœื ื”ื–ื”, ืžืคืชื— ื” API ื ืœืงื— ืื•ื˜ื•ืžื˜ื™ืช ื“ืจืš ืžืฉืชื ื” ืกื‘ื™ื‘ื”. ื‘ืฉื‘ื™ืœ ืœืงื‘ืœ ืชืžื•ื ื” ืžืกืคื™ืง ืœื›ืชื•ื‘:
image = RubyLLM.paint("A photorealistic red panda coding Ruby")
ืชืžื™ื›ื” ืžื•ื‘ื ื™ืช ื‘ Async ื–ื” ื”ื™ื” Deal Breaker ืžื‘ื—ื™ื ืชื™ ื‘ื›ืœ ืกืคืจื™ื™ืช ืจื•ื‘ื™ ืฉื‘ื“ืงืชื™ ืขื“ ืขื›ืฉื™ื•. ื”ื‘ืขื™ื” ืขื ืชืงืฉื•ืจืช ืขื AI ื”ื™ื ืฉืจื•ื‘ ื”ื–ืžืŸ ืืชื” ืžื—ื›ื” ืœื˜ื•ืงื ื™ื ืฉืœ ื” AI ืื‘ืœ ืขื“ื™ื™ืŸ ืฆืจื™ืš ืœื”ื—ื–ื™ืง ืืช ื›ืœ ื”ื—ื™ื‘ื•ืจื™ื ืคืชื•ื—ื™ื ื‘ืฉื‘ื™ืœ ืฉื”ืกื˜ืจื™ืžื™ื ื’ ื™ืขื‘ื•ื“. ืžื‘ื ื” ืงืœืืกื™ ืฉืœ Threads ืœื ื™ื›ื•ืœ ืœืขืžื•ื“ ื‘ืขื•ืžืก ืžื”ืกื•ื’ ื”ื–ื” ื•ืื ื—ื ื• ืฆืจื™ื›ื™ื ื ื™ื”ื•ืœ ืฉืœ ื›ืœ ื”ื—ื™ื‘ื•ืจื™ื ื”ืืœื” ื‘ืžืžืฉืง ืืกื™ื ื›ืจื•ื ื™, ื›ืœื•ืžืจ ืฉื”ืฉืจืช ื™ื›ื•ืœ ืœื˜ืคืœ ื‘ื”ืžื•ืŸ ืฉื™ื—ื•ืช ืขื AI ื‘ื• ื–ืžื ื™ืช. ืžื” ืฉื™ืคื” ื›ืืŸ ื–ื” ืฉืื—ืจื™ ืฉืžืกื™ื™ืžื™ื ืืช ื”ืกื˜ืืค ื”ืืกื™ื ื›ืจื•ื ื™ ืืคืฉืจ ืœื”ืžืฉื™ืš ืœื›ืชื•ื‘ Jobs ื‘ื“ื™ื•ืง ื›ืžื• ืฉื”ื™ื™ื ื• ื›ื•ืชื‘ื™ื ืจื’ื™ืœ ื‘ Rails, ื•ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™ ืžืจื™ืฅ ื”ืžืฉื™ืžื•ืช ื”ืืกื™ื ื›ืจื•ื ื™ ื™ืจื™ืฅ ืืช ื”ื’'ื•ื‘ื™ื ื‘ืชื•ืš ืœื•ืœืื” ืืกื™ื ื›ืจื•ื ื™ืช. ื–ื” ื”ืงื•ื“ ืžื“ืฃ ื”ืชื™ืขื•ื“ ืฉืœื”ื:
* Keep your existing adapter as default *
config.active_job.queue_adapter = :solid_queue  # or :sidekiq, :good_job, etc.

* Base class for all LLM jobs *
class LLMJob < ApplicationJob
  self.queue_adapter = :async_job
end

* LLM jobs inherit the async adapter *
class ChatResponseJob < LLMJob
  def perform(conversation_id, message)
    # Runs with async-job - perfect for streaming
    response = RubyLLM.chat.ask(message)
    # ...
  end
end

* Regular jobs use your default adapter *
class ImageProcessingJob < ApplicationJob
  def perform(image_id)
    # Runs with solid_queue - better for CPU work
    # ...
  end
end
ืื ื—ื ื• ืžืงื™ืžื™ื ืฉื ื™ Queue Adapters, ืื—ื“ ื–ื” Good Job ื”ืจื’ื™ืœ ืขื‘ื•ืจ ื”ื’'ื•ื‘ื™ื ื”ืกื™ื ื›ืจื•ื ื™ื™ื ื•ื”ืฉื ื™ ื”ื•ื Async::Job ืขื‘ื•ืจ ื”ื’'ื•ื‘ื™ื ืฉืœ ื” AI. ืงื•ื“ ืงืจื™ื ื•ืงืœ ืœื”ืจื—ื‘ื” ื”ืกืคืจื™ื” ื‘ื ื•ื™ื” ื‘ืชื•ืจ ืกืคืจื™ื™ืช Ruby ื•ื”ืื™ื ื˜ื’ืจืฆื™ื” ืขื ืจื™ื™ืœืก ื”ื™ื ืกื•ื’ ืฉืœ "ืงื•ืžื” ืžืขืœ" ื•ื›ื•ืœื” ื›ืชื•ื‘ื” ื‘ืงื•ื‘ืฅ ืื—ื“. ืงืœ ืžืื•ื“ ืœื”ื—ืœื™ืฃ ื—ืœืงื™ื ื‘ืื™ื ื˜ื’ืจืฆื™ื” ืขื ืจื™ื™ืœืก ืื• ืืคื™ืœื• ืœื›ืชื•ื‘ ืืช ื›ืœ ื”ืื™ื ื˜ื’ืจืฆื™ื” ื”ื–ืืช ื‘ืขืฆืžื ื• ื›ื“ื™ ืœื”ืชืื™ื ืœืžืขืจื›ืช ื•ืœืฉื™ื˜ืช ื”ืขื‘ื•ื“ื” ืฉืœื ื•. ืื—ืช ื”ื“ื•ื’ืžืื•ืช ืžื”ืชื™ืขื•ื“ ืžื“ื‘ืจืช ืขืœ ืžืชื™ ืฉื•ืžืจื™ื ื‘ DB ื”ื•ื“ืขื” ื—ื“ืฉื”. ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ื‘ืื™ื ื˜ื’ืจืฆื™ื” ื”ืงื™ื™ืžืช ื”ื™ื ืœืฉืžื•ืจ ืืช ื”ื”ื•ื“ืขื” ืœืคื ื™ ืฉ AI ืžืชื—ื™ืœ ืœืขื ื•ืช ื›ื“ื™ ืฉื™ื”ื™ื” ื™ื•ืชืจ ืงืœ ืœืขืฉื•ืช Streaming. ื‘ืชื™ืขื•ื“ ื™ืฉ ื“ื•ื’ืžื” ืื™ืš ืœืฉื ื•ืช ืืช ื–ื” ื•ืœืฉืžื•ืจ ืืช ื”ื”ื•ื“ืขื” ืจืง ื›ืฉื›ื‘ืจ ื™ืฉ ืชื•ื›ืŸ ื›ื“ื™ ืฉืืคืฉืจ ื™ื”ื™ื” ืœื”ื•ืกื™ืฃ ื•ื•ืœื™ื“ืฆื™ื” ื‘ DB. ื‘ืขื‘ื•ื“ื” ืฉืœื™ ืขื ื”ืกืคืจื™ื” ื”ื™ื™ืชื™ ืฆืจื™ืš ืœืกื ืŸ ื—ืœืง ืžื”ื”ื•ื“ืขื•ืช ืœืคื ื™ ื”ืฉืœื™ื—ื” ืœ AI ื•ืœื”ื•ืกื™ืฃ Metadata ืœื”ื•ื“ืขื•ืช, ืฉื ื™ ื“ื‘ืจื™ื ืฉื”ืฆืœื—ืชื™ ืœืขื“ื›ืŸ ืžืื•ื“ ืžื”ืจ ื•ืจืง ื“ืจืš ื”ืžื ื’ื ื•ืŸ ืฉืœ ื™ืจื•ืฉื”. ืกืš ื”ื›ืœ ืžืื•ื“ ืื”ื‘ืชื™ ืืช ื”ืกืคืจื™ื”. ื›ืŸ ืฆืจื™ืš ืœื”ื’ื™ื“ ืฉืื ื—ื ื• ืขืœ ืงืจืงืข ืžืื•ื“ ืœื ื™ืฆื™ื‘ื”, ืื ื™ ื‘ื˜ื•ื— ืฉืขื•ื“ ื™ื”ื™ื• ืฉื™ื ื•ื™ื™ API ื•ื™ืฉ ื“ื‘ืจื™ื ื‘ืฆื•ืจืช ื”ืคืขื•ืœื” ื”ื™ื•ื ืฉืื ื™ ืœื ืื•ื”ื‘ - ืœื“ื•ื’ืžื” ื”ื‘ื—ื™ืจื” ืฉืœื”ื ืœืฉืžื•ืจ ืืช ื” System Prompt ื‘ DB ื’ื ื‘ืชื•ืจ ื—ืœืง ืžื”ืฉื™ื—ื”. ืื‘ืœ ื‘ืืงื•ืกื™ืกื˜ื ืฉืœ ืจื•ื‘ื™ ื•ืจื™ื™ืœืก ืื ื™ ื‘ื˜ื•ื— ืฉื”ื™ื ืชื–ื›ื” ืœื”ืฆืœื—ื”.

ToCode
1 419
ื”ืชืกื›ื•ืœ ืฉืœ AI ื•ืชื—ื•ืฉืช ืžืกื•ื’ืœื•ืช ื›ืœื™ AI ื”ื™ื•ื ืžื ืกื™ื ืœืขื ื•ืช ืขืœ ืฉื ื™ ืฆืจื›ื™ื ื‘ื•-ื–ืžื ื™ืช: ื”ื ืžื ืกื™ื ืœื—ืกื•ืš ืœื ื• ื–ืžืŸ ื‘ืžืฉื™ืžื•ืช ืื•ืชืŸ ืื ื—ื ื• ืžืกื•ื’ืœื™ื ืœืขืฉื•ืช ืœื‘ื“, ื•ื’ื ืœืขืฉื•ืช ื‘ืฉื‘ื™ืœื ื• ื“ื‘ืจื™ื ืฉืื ื—ื ื• ืขื“ื™ื™ืŸ ืœื ื™ื•ื“ืขื™ื ืื• ืœื ืจื•ืฆื™ื ืœื“ืขืช ืื™ืš ืขื•ืฉื™ื. ื•ื›ื›ื” ืื ื™ ื™ื›ื•ืœ ื‘ืชื•ืจ ืžืชื›ื ืช ืœื”ื™ืขื–ืจ ื‘ AI ื›ื“ื™ ืœืขืฉื•ืช Boostrap ืœื›ืœ ื” Boilerplate ืฉืœ ืคืจื•ื™ืงื˜ ื—ื“ืฉ ืฉืื ื™ ื™ื•ื“ืข ืœื‘ื“ ืื™ืš ืœื›ืชื•ื‘ ืื‘ืœ ื‘ืคืจื•ืžืคื˜ ืื—ื“ ื—ืกื›ืชื™ ืฉืขื”-ืฉืขืชื™ื™ื ืฉืœ ื”ืงืœื“ื”, ื•ื‘ืื•ืชื• ื›ืœื™ ืื ื™ ื™ื›ื•ืœ ืœืชืจื’ื ื“ืฃ ืชื™ืขื•ื“ ืžืกื™ื ื™ืช ื•ืœืงื‘ืœ ื’ื™ืจืกื” ืฉืœื ื”ื™ืชื” ืžื‘ื™ื™ืฉืช ื”ืจื‘ื” ืžืชืจื’ืžื™ื ืื ื•ืฉื™ื™ื. ืœืื•ืจืš ื–ืžืŸ ื•ืฉื™ืžื•ืฉ ื‘ AI ืžืชื›ื ืชื™ื ืžื“ื•ื•ื—ื™ื ืขืœ ืชื—ื•ืฉืช ืฉื—ื™ืงื” ื•ื—ื•ืกืจ ื”ื ืื” ืžื”ืงื•ื“. ื—ืœืง ืžื”ื’ื•ืจืžื™ื ืœืชื—ื•ืฉื” ื”ื•ื ื‘ืœื‘ื•ืœ ื‘ืชื—ื•ืฉืช ื”ืžืกื•ื’ืœื•ืช. ื›ืฉืื ื™ ืžืฉืชืžืฉ ื‘ AI ื’ื ืœื“ื‘ืจื™ื ืฉืื ื™ ื™ื•ื“ืข ืœืขืฉื•ืช ื›ื“ื™ ืœื—ืกื•ืš ื–ืžืŸ ื•ื’ื ืœื“ื‘ืจื™ื ืฉืื ื™ ืœื ื™ื•ื“ืข ืœืขืฉื•ืช ื›ื“ื™ ืœื—ืกื•ืš ื–ืžืŸ ืœื™ืžื•ื“, ืœืื•ืจืš ื–ืžืŸ ืื ื™ ืขืœื•ืœ ืœืฉื›ื•ื— ืžื” ื–ื” ืžื”. ื‘ืชื›ื ื•ืช ื–ื• ืืคื™ืœื• ื‘ืขื™ื” ื™ื•ืชืจ ืจืฆื™ื ื™ืช ื›ื™ ื›ืชื™ื‘ืช ืงื•ื“ ื”ื™ื ืœื ื›ืžื• ืจื›ื™ื‘ื” ืขืœ ืื•ืคื ื™ื™ื. ื–ื• ืžื™ื•ืžื ื•ืช ืฉื ืขืœืžืช ืžื”ืจ ื•ืื ืฉื™ื ืฉืžืคืกื™ืงื™ื ืœื›ืชื•ื‘ ืงื•ื“ ื‘ืืžืช ืžื’ืœื™ื ืฉืขื ื”ื–ืžืŸ ื’ื ื›ื ื™ืกื” ืงื˜ื ื” ืœืงื•ื“ ื™ื›ื•ืœื” ืœื”ื™ื•ืช ืžืืชื’ืจืช. ื›ืฉืžืชื›ื ืช ืื• ืžืชื›ื ืชืช ืคืจื•ื ื˜ ืื ื“ ืžืกืชื›ืœื™ื ืขืœ AI ืžื ืกื” ืœื™ืฆื•ืจ ื“ืฃ HTML ื•ืชืžื™ื“ ื™ื•ืฆืจ ื“ืฃ ืžื›ื•ืขืจ, ื”ื”ืชืขืงืฉื•ืช ืฉืœ ื—ืœืงื ืœื ืœื”ื™ื›ื ืก ืœืงื•ื“, ืœื ืœื›ืชื•ื‘ ืืช ื”ืฉืœื“ ืื• ืœื”ื›ื ื™ืก ืชื™ืงื•ื ื™ื ืจืง ื›ื“ื™ "ืœื”ืชืืžืŸ ืขืœ ืขื‘ื•ื“ื” ืขื AI" ืœื“ืขืชื™ ืœื ื”ื’ื™ื•ื ื™ืช. ืœื”ืกืชื›ืœ ืขืœ AI ืžื’'ื ืจื˜ ืงื•ื“ ื’ืจื•ืข ืฉื•ื‘ ื•ืฉื•ื‘ ืœื ื”ื•ืคืš ืื•ืชืš ืœื™ื•ืชืจ ืžื™ื•ืžืŸ ืขื AI, ืืœื ืจืง ืœืคื—ื•ืช ืžื™ื•ืžืŸ ืขื ืงื•ื“. ื”ื“ืจืš ืงื“ื™ืžื” ื”ื™ื ืœื ืœื–ืจื•ืง ืืช ื›ืœ ืžื” ืฉืœืžื“ื ื• ืืœื ืœื”ืฉืชืžืฉ ื‘ืžื” ืฉืœืžื“ื ื• ื›ื“ื™ ืœื‘ื ื•ืช ืžื•ืฆืจื™ื ื˜ื•ื‘ื™ื ื™ื•ืชืจ ื‘ืขื–ืจืช AI. ื™ื•ื“ืขืช ืœื›ืชื•ื‘ ืืช ื” HTML ืฉืืช ืฆืจื™ื›ื” ื‘ืฆื•ืจื” ื ื›ื•ื ื” ืกืžื ื˜ื™ืช? ืžืฆื•ื™ืŸ, ื›ืชื‘ื™ ืื•ืชื•, ื•ืื ืืช ื™ื•ืชืจ ืžื”ื™ืจื” ืž AI ืชื›ืชื‘ื™ ืื•ืชื• ื‘ืœื™ AI. ื”ืžืฉื—ืง, ื•ื”ืืชื’ืจ, ื”ื•ื ืœืžืฆื•ื ืืช ื”ื“ื‘ืจื™ื ืฉ AI ื™ื›ื•ืœ ืœื›ืชื•ื‘ ื™ื•ืชืจ ืžื”ืจ ืžืžืš ื•ืœืฉืœื‘ ื›ื•ื—ื•ืช ื›ื“ื™ ืœื™ื™ืฆืจ ืžืขืจื›ื•ืช ื˜ื•ื‘ื•ืช ื™ื•ืชืจ ื•ืžื”ืจ ื™ื•ืชืจ. ื“ื•ื’ืžืื•ืช: 1. ืื—ืจื™ ืžื™ืžื•ืฉ ืคื•ื ืงืฆื™ื” ืื• ืงืœืืก ืืคืฉืจ ืœืชืช ืœ AI ืœื›ืชื•ื‘ ืขืœ ื–ื” Code Review ื›ื“ื™ ืœืงื‘ืœ ืจืขื™ื•ื ื•ืช ืœืฉื™ืคื•ืจ. 2. ืื—ืจื™ ืฉื™ื ื•ื™ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื” AI ื™ื›ื•ืœ ืœืจื•ืฅ ืขืœ ื”ืงื•ื“ ื•ืœืขื“ื›ืŸ ืžืกืžืš ืืจื›ื™ื˜ืงื˜ื•ืจื”. 3. ืœืคื ื™ ืจื™ืคืงื˜ื•ืจื™ื ื’ ื” AI ื™ื›ื•ืœ ืœืจื•ืฅ ืขืœ ื”ืงื•ื“ ื‘ืฆื•ืจื” ื™ื•ืชืจ ืžื“ื•ื™ืงืช ืžื—ื™ืคื•ืฉ ื˜ืงืกื˜ื•ืืœื™ ื›ื“ื™ ืœื”ืจืื•ืช ืœื™ ืžื” ื”ื•ืœืš ืœื”ื™ื•ืช ืžื•ืฉืคืข. 4. ืฉื™ื ื•ื™ API ืฉืžืฉืคื™ืข ืขืœ ืจื›ื™ื‘ื™ ืฆื“ ืฉืจืช ื•ืฆื“ ืœืงื•ื— ื”ื›ืชื•ื‘ื™ื ื‘ืžืกืคืจ ืงื‘ืฆื™ื ื™ื›ื•ืœ ืœื”ื™ื•ืช ืžื˜ื•ืคืœ ืžื”ืจ ื™ื•ืชืจ ืขืœ ื™ื“ื™ AI. 5. ืžื™ืžื•ืฉ ืคื•ื ืงืฆื™ื” ืœืคื™ Spec ื‘ืžื™ื•ื—ื“ ืื ื”ื™ื ื ื™ื’ืฉืช ืœ APIs ื—ื™ืฆื•ื ื™ื™ื ืื• ืขื•ืฉื” ืฉื™ื ื•ื™ื™ื ืžื‘ื ื™ื™ื ื‘ Data. ืื– ื›ืŸ ืชื ื• ืœ AI ืœืขื‘ื•ื“ ื•ืชืขื–ืจื• ืœื• ื›ืฉืฆืจื™ืš. ืชืกื›ื•ืœ ื•ื”ืจืฆื” ื—ื•ื–ืจืช ืฉืœ ืฉืื™ืœืชื•ืช ืœื ื™ืขื–ืจื• ืœ AI "ืœืœืžื•ื“" ืืœื ืจืง ื™ื’ืจืžื• ืœื›ื ืœืฉื›ื•ื—.

ToCode
1 419
ื‘ื•ืงืจ ื˜ื•ื‘ ืžื–ื›ื™ืจ ืฉืขื•ื“ ืจื‘ืข ืฉืขื” ื‘ืฉืขื” 10:00 ื ืชื—ื™ืœ ื•ื•ื‘ื™ื ืจ ืขืœ ื›ืชื™ื‘ื” ื•ื”ืขืœืื” ืœืื•ื•ื™ืจ ืฉืœ ืฉืจืช MCP ืžื•ื–ืžื ื™ื ืœื”ืฆื˜ืจืฃ ื‘ืœื™ื ืง: ืงื™ืฉื•ืจ ืœื–ื•ื: https://tinyurl.com/tocodeai