Amikor megkéred a post-trained LLM-et, hogy osszon el két számot egymással
Posted by szarazbaklava@reddit | programmingHungary | View on Reddit | 34 comments

Mit gondoltok erről?
Én személy szerint egy edge-case náci vagyok, szóval engem nem zavar, sőt… Csak így lehet kicsit drága lesz vibe code-olgatni
De azért érdekes, miket élhetett át ez a modell
Source: https://x.com/karpathy/status/1976077806443569355?s=46
In-Whisky@reddit
Most mit mondjak erre? Ha véletlenül nullával kell osztania a drága ipari PLC-nek PLC error és összefossa magát, egy párszáz forintos PIC mikrkontroller visszaad nulla értéket és megy tovább. Melyik a jobb?
ern0plus4@reddit
Eredetileg azt akartam írni, hogy az osztásnál mindig csekkolni kell az osztót nullára, de aztán eszembe jutott, hogy már volt olyan eset a praxisomban, amikor éppenhogy nem... A bytebeat playeremben követtem el ezt, lásd divnz() és modnz() function-öket.
Mi a bytebeat? Röviden: az input a t, az idő, másodpercenként 44100x nő, és ennyiszer meghívjuk a function-t, ami egy egyszerű képlet. Amit ez a function visszaad (egy byte, levágjuk a fölét), azt audio sample-ként értelmezzük, "rárakjuk a hangszóróra". Meglepően egyszerű képletekből meglepően értelmes "zenék" jönnek ki. Mindjárt a sima "t" egy szépen zengő upramp saw, ugye, a folyamatosan növő érték alsó byte-ja. Az 1/t pedig egy dobütés, az exponenciális zuhanás eleje byte-ra megvágva "random" értékeket ad, aztán a long tail nem csinál semmit.
persicsb@reddit
A nulla esetén van egy hibád, amit észre nem veszel addig, amíg valami félre nem csúszik, akár sokkal később, mint maga a hiba. Utána meg nyomozd ki, hol ment félre valami, sok sikert.
In-Whisky@reddit
Értelmezhetetlen lesz az eredmény, tehát észreveszed a hibát és nem kell teleírni egy rakás feltétellel a programot.
Ráadásul olykor nem is hiba, például amikor a hibás/hibátlan darabok arányát kell százalékban kiiratni sokszor és lehet teleifezni, hogy nehogy véletlenül nullába szaladjon mert akkor leáll az egész gyártósor és nem felejtő memóriában tárolt adatokkal a gép újraindítása sem segít. :).
nulloid@reddit
...most jol ertem, hogy a draga ipari PLC-k mellett ervelsz?
In-Whisky@reddit
Éppen aztí rtam le, hogy mekkora szar, amiért errorba fagy egy osztás miatt. WTF.
nulloid@reddit
Ah, ertem. Sorry, osszezavart nehany dolog:
Pl. hogy irtad, hogy a PIC siman 0-val ter vissza, kesobb pedig "es lehet teleifezni, hogy nehogy veletlenul nullaba szaladjon, mert akkorl eall az egesz gyartosor" -> en ebbol azt vontam le, hogy a 0 rosszabb, mint a crash.
Vagy hogy "ertelmezhetetlen lesz az eredmeny, tehat eszreveszed a hibat" - a 0 nekem nem tunik ertelmezhetetlennek, de a crash igen. Ez nekem megint a PLC-k melletti ervnek tunt.
Nem vagyok se PIC se PLC magus, ugyhogy nem tudtam megfeleloen ertelmezni.
In-Whisky@reddit
Pedig egyszerű, ha osztásról van szó és 0 az eredmény, akkor vagy nulla lett osztva, vagy nullával lett osztva PIC esetében, ami kezelhető.
Ok_Aide140@reddit
sot, js Infinity-t ad vissza. Vagy -Infinity-t.
Krendrian@reddit
INF/NAN a legtöbb nyelvben akkor lehet ha a floating point exceptionök ki vannak kapcsolva.
JSnél nem tudom hogy van, igazából nem lepődnék meg, ha itt bekapcsolni se lehetne.
Ok_Aide140@reddit
van nan es van ket inf. nullaval osztasnal infeket kapsz, ha a matematikai operatoraidat szar inputra alkalmazod, akkor meg nan-t. Dynamicallly typed, interpretalt nyelv.
Horror-Indication-92@reddit
Annak mi értelme van, hogy az egyik ifben NaNt adunk vissza, a következőben meg ha NaN az eredmény, akkor None-t?
HK-65@reddit
Ha már Python, a második lépés nem idiomatikus, Pythonban nem szokás type checkelni.
Például simán működhetne built-in Decimalokra, de így nem fog.
atleta@reddit
Azert megneznem a promptot, amire ez lett a valasz. Ahogy ugy altalaban az osszes ilyen "hulye az AI" **es** az osszes haszontalan "mekkerdeztem a zejajt, es azt mondta, hogy" tipusu tartalom eseten is.
fcserepkei@reddit
Nem tudom, de jól leköveti a corporate ‘risk avoidance’ vibeot. 🙃
fcserepkei@reddit
Nem tudom, de jól leköveti a corporate ‘risk avoidance’ vibeot. 🙃
fcserepkei@reddit
Nem tudom, de jól leköveti a corporate ‘risk avoidance’ vibeot. 🙃
pver297@reddit
Viccnek elég jó, az r/ProgrammingHumor ellenne vele pár hétig.
Produktív kódnak nettó hülyeség. Ismerni kell hogy mire van esély hogy megtörténjen és azt kell lekezelni.
ody42@reddit
itt valószínűleg nem a model a hülye, hanem a promptban van valami (pl. nagyon figyelj oda, hogy ne hibázz és tökéletes legyen a kód, vagy valami hasonló baromság) ami miatt ilyen kódot ír.
persicsb@reddit
Az van általában a promtpban, hogy legyen bőbeszédű. Ha lyukat beszél a hasadba, akár kódban, akár normál szövegben, jobban el fogod hinni, hogy igaza van.
bajuh@reddit
Nekem is gyanús ez az "extraordinary caution". Még a nevében is benne van hogy nem ordinary.
belabacsijolvan@reddit
a "to avoid disaster" ugy hangzik, mintha a promptbol lenne.
az outputoknal (nyilvan) hajlamos visszaterni a prompt megfogalmazasahoz es a "disaster" nem szakiranyu kifejezes.
Ok_Aide140@reddit
na ez az ami total baromsag.
kexy@reddit
Teljesen jó 😄
Ok_Aide140@reddit
"LLM welfare petition"
faszsag.
Ok_Aide140@reddit
pontosan ilyen dolgokra kurva jo az llm. nekem tetszik. safediv.py
ody42@reddit
Sonnet:
write a python function that divide two numbers and returns the result
PandaGeneralis@reddit
Az a vicc, hogy még ez is két felesleges sorral kezdi, mivel az
a / b
magától is dobZeroDivisionError
-t.mark_kovari@reddit
tőlem?
ody42@reddit
Gemini 2.5 pro, ugyanez a prompt:
pannon-pixie@reddit
Instant több probléma is van ezzel a kóddal, amit nagyon hamar fel lehet ismerni, és fura, hogy az AI ilyet alapvetően elkövet. Szerintem ha ráijesztenél promptban, hogy amúgy ez faszság, azonnal tudná. Ott kezdődik, hogy import van a függvényen belül, régen pythonozgattam aktívan, nem tudom, mi változott azóta, de kevés drágább dolog van annál, mint minden függvényhívásnál importálni. Ugyanez igaz a logging.basicConfig-re is: amennyire tudom, erősen antipattern, több okból is, köztük a teljesítmény miatt. Ezzel instant hatalmasat lehet nyerni, ha kiviszed a függvényből.
Az abs(a) > sys.float_info.max/2 és az abs(b) < sys.float_info.epsilon feltételek minden hívásnál lefutnak, pedig nincs rájuk szükség. A Python lebegőpontos osztás önmagától is inf értéket ad túlcsordulás esetén, és csak nullával osztáskor dob hibát. Az epsilon-ellenőrzés ráadásul nem is helyes módszer az alulcsordulás vizsgálatára tetszőleges nagyságrendű értékeknél, szóval ezeket az elágazásokat nyugodtan el lehet hagyni.
Mind a math.isnan(result), mind pedig a not math.isfinite(result) meghívása felesleges, mert duplán végzik el ugyanazt az ellenőrzést. Az isfinite önmagában is lefedi mind a NaN, mind a végtelen (inf) értékeket.
Az osztás műveletet try/except blokkba csomagolni, majd traceback.format_exc()-ot hívni, amikor kivétel történik, rendkívül költséges művelet. Ha a nullával osztás elég gyakran előfordul ahhoz, hogy számítson a teljesítmény szempontjából, érdemes előtte egy gyors ellenőrzést végezni.
És még lehetne sorolni, de itt meguntam. Ez nem „edge case-náciság” vagy hasonló kötözködés, hanem nettó butaság, több check igazából csak a kerék újrafeltalálása. Amúgy, ahogy említettem, szerintem az AI is tudja ezt: kíváncsiságból rákérdeztem, hogyan optimalizálná a kódot, és pontosan ugyanazokat a problémákat hozta fel, mint én, sőt olyat is, amit elfelejtettem, például az f-string használatát loggolásnál. Az f-string ugyanis akkor is kiértékelődik, amikor a loggolás ki van kapcsolva, ami teljesen felesleges CPU-ciklus pazarlás, ezért is érdemes paraméterezett loggolást használni. Végtelenségig lehetne ragozni, de a végkövetkeztetés egyszerű: az AI csak annyira okos, amennyire a felhasználója.
GM8@reddit
Furcsa, hogy ennyi energiát tettél egy nyilvánvalóan agyament értelmetlen kód elemezgetésébe. The joke is on you?
Highborn_Hellest@reddit
Amikor életemben először interviewztam akkor input szanitáció hiánya miatt kaszáltak el.
No-Interaction-2724@reddit
Igazából arról aki megkérdezi hogy kell elosztani két számot, joggal feltételezhető hogy nem ismeri az adattípusokat, a nullával osztásos edge caset, stb. Szóval a válasz abszolút kielégítő, minden lényeges információt tartalmaz ami segíthet a kérdezőnek.