Dobici:
- Sposobnost automatizacije inženjerskog proračuna, upravljanja jedinicama i obrade podataka pomoću Python koda koji pokreće AI
- Mogućnost potvrđivanja AI koda pomoću provjere jedinica, testiranja poznatih rezultata i rubnih slučajeva
- Sposobnost stjecanja navike izrade ponovljivih, sljedivih i verzijama kontroliranih dokumenata računa
U mašinstvu, isti proračun se radi iznova i iznova: naprezanja porodice delova, snaga pumpe za niz radnih tačaka, tabele svojstava pri različitim temperaturama. Ručno ovo raditi je sporo i sklono greškama. Python (programski jezik koji se lako uči sa bogatim bibliotekama za inženjering) automatizuje ove iteracije; To čini račun ponovljivim, sljedivim i kontroliranim verzijama. Umjetna inteligencija (AI) Python je nevjerovatno brz u generiranju koda: pretvaranje formule u funkciju, dodavanje upravljanja jedinicama, čitanje podataka, crtanje grafikona. Ali ovdje postoji opasna zabluda: samo zato što kod radi bez grešaka ne znači da se pravilno izračunava. AI kod može tiho vratiti netačne rezultate zbog pogrešne konverzije jedinica, pogrešne formule ili u rubnim slučajevima, a program će nastaviti raditi bez ikakvih grešaka. Zato je svaki inženjerski kod proizveden sa AI; Ispitni ulazi sa poznatim rezultatima su nepouzdani bez verifikacije provjerom jedinice (veličine) i pokusom rubnih slučajeva. U ovoj jedinici ćete naučiti kako bezbedno postaviti automatizaciju Python naloga sa AI.
Zašto kodni račun? Sljedivost i reproduktivnost
Ručni proračun je jednokratan; Kada se unos promijeni, to se radi od nule i međukoraci se gube. Proračun urađen u kodu je kao dokument: ulazi, formule i izlazi su jasno napisani; promijenite unos i dobijete novi rezultat u roku od nekoliko sekundi; Uz kontrolu verzija (kao git), može se pratiti "šta sam izračunao s kojom vrijednošću na koji datum". Ovo je neprocjenjivo u smislu kontrole i odgovornosti. Ali ova moć zavisi od ispravnosti koda; Pogrešan kod proizvodi pogrešan rezultat, također ponovljivo i brzo.
Savjet: Napišite test za svaku računsku funkciju sa poznatim istinitim rezultatom pored nje (assert u Pythonu). Na primjer, vaša funkcija naprezanja bi trebala dati 28,1 MPa u poznatom uzorku. Ovaj test vas odmah upozorava ako nešto pokvarite kada promijenite kod u budućnosti. Inženjerski kod koji nije testiran je neprovjereni račun.
Upravljanje volumenom: najčešći izvor greške
U inženjerskom kodu većina grešaka dolazi iz jedinica: N sa kN, m sa mm, Pa sa MPa, koje se mogu zbuniti faktorom od 1000 ili 1.000.000. Postoje dvije odbrane. Prva je disciplina: odabir sistema jedne jedinice od početka (npr. N, mm, MPa) i pretvaranje svih ulaza u njega i dodavanje jedinica nazivima varijabli (dužina_mm, sila_N). Drugi je alat: biblioteka poput pint nosi jedinice unutar koda i hvata nedosljednu operaciju kao grešku.
Pristup
Kako to funkcionira
Prednost
Disciplina imenovanja
kao sila_N, dužina_mm
Jednostavno, bez zavisnosti
jednostruki sistem
Sve je pretvoreno u N-mm-MPa
Jednostavnost, brzina
pint biblioteka
Pomera jedinicu po promenljivoj
Automatski hvata nedosljednost
Test poznatih rezultata
referenca sa tvrdnjom
Hvata grešku formule/jedinice
Oprez: Konverzija jedinica možda nedostaje ili nije tačna u kodu generisanom AI-om i kod će i dalje "raditi". Na primjer, ako je promjer mm, a očekuje se da će površina biti m², rezultat će odstupiti 1.000.000 puta, ali program neće dati grešku. Prije pokretanja koda, komentirajte jedinice ulaza i izlaza; zatim dajte rezultat poznatim primjerom.
Korak po korak: kod računa koji se može provjeriti AI
- Pojasnite problem i sistem jedinica. Ulazi, izlazi, jedinice.
- Generirajte funkciju. Pojedinačni odgovorni, interpretativni, ujedinjeni.
- Dodajte poznate rezultate testa. Tvrdite referentnim primjerom.
- Isprobajte rubne slučajeve. Nula, negativan, vrlo veliki/mali ulaz.
- Uradite provjeru jedinice. Da li jedinica izlaza odgovara onome što se očekuje?
- Dokument i verzija. Pretpostavke, izvor, datum; sljedivost s git-om.
Prompt koji generiše funkcije i testove
Uloga: Iskusni Python programer koji piše inženjerske proračune. Zadatak: Napisati funkciju koja izračunava maksimalni napon savijanja u konzolnoj gredi pravokutnog poprečnog presjeka. Ulaz: F (N), L (mm), b (mm), h (mm). Izlaz: sigma (MPa). Konvencija: Sistem jedinica N-mm-MPa; komentirajte jedinicu svakog unosa. Pravilo: koristite I = b*h^3/12 i sigma = M*c/I; komentarišite korake. Pravilo: Dodajte test sa POZNATIM REZULTATOM: sigma ~28,1 MPa za F=500,L=300,b=20,h=40; Provjerite sa assert (mala tolerancija).
Prompt o statusu ivice
Dodajte provjere rubnih slučajeva gornjoj funkciji:- Ako su b, h ili L nula ili negativni, dajte značajnu grešku (povećajte ValueError).- Komentirajte ako postoji problem prekoračenja/preciznosti sa vrlo velikim/malim ulazima. Također dodajte još 3 različita test ulaza i napišite očekivani rezultat; objasniti rezultate na način da ih mogu provjeriti ručno.
Upit za sigurnost jedinice (pinta).
Jedinični siguran isti račun sa bibliotekom 'pint'. Neka su ulazi definirani u jedinicama (npr. 500 * ureg.njuton). Pretvorite izlaz u MPa i odštampajte ga. Dodajte mali primjer koji pokazuje kako pint ne uspijeva kada se dobije unos s pogrešnom jedinicom.
Prompt za provjeru koda
Kritikujte moj kod za inženjerski proračun ispod iz perspektive pregleda koda, ne slažete se sa mnom. Konkretno: da li je konverzija jedinica ispravna, da li je formula tačna, da li su uzeti u obzir ivični slučajevi (nula, negativni), da li su testovi zaista potvrdni? Za svaki nalaz napišite kako ga popraviti.[code]
Slaba prompt / jaka prompt
Slab upit:
Napišite Python kod za proračun stresa.
Nema izbora jedinica, formula, ulaznih definicija i testova; AI generiše kod koji radi, ali nije verifikovan i čija jedinica je nepoznata.
Snažan upit:
Napišite funkciju naprezanja savijanja u konzolnoj gredi. Ulaz F(N), L(mm), b(mm),h(mm); izlazna sigma (MPa). Sistem N-mm-MPa, navedite svaku jedinicu u komentaru. Dodajte test sa poznatim rezultatima (F=500, L=300, b=20, h=40 → ~28,1 MPa, potvrditi). Dajte grešku na nultom/negativnom ulazu. Interpretirajte rubne slučajeve.
Drugi prompt zahtijeva sistem jedinica, formulu, ulaze, test i rubne slučajeve; To čini kod provjerljivim.
Tri mini kućišta (po brojevima)
Slučaj 1 - Greška tihe jačine zvuka. Kalkulacija površine koju proizvodi AI uzima prečnik u mm i daje mm² sa pi*d**2/4, ali sledeći red ga stavlja u formulu koja očekuje m²; Kod radi bez grešaka i daje stres 1.000.000 puta manji. Kada inženjer pokrene test sa poznatim rezultatom (assert abs(sigma-28.1)<0,5), test eksplodira i greška je uhvaćena. Da nije bilo testa, pogrešan rezultat bi neprimijećen ušao u izvještaj. Lekcija: radni kod ≠ ispravan kod.
Slučaj 2 - Pad u rubnom stanju. U kodu koji petlja za familiju delova, debljina h=0 se upisuje u jednom redu; Kada je I = b*h**3/12 = 0, sigma = M*c/I daje podjelu nultom greškom. Zahvaljujući kontroli if h<=0: raise ValueError koju dodaje AI, kod se zaustavlja sa smislenom porukom i ne proizvodi inf. Lekcija: unaprijed rukujte rubnim slučajevima.
Slučaj 3 - Dobitak ponovljivosti. Inženjeru je trebalo pola dana da ručno izračuna snagu pumpe za 40 različitih radnih tačaka. Napisana u AI, skripta čita CSV, izračunava snagu za svaku liniju i potvrđuje poznatu tačku sa assert-om, smanjujući rad na ~2 minute i zapisujući rezultate u datoteku koja se može pratiti. Kada se unos promijeni, cijela tabela se ažurira svake sekunde. Lekcija: provjerena automatizacija je brza i pouzdana.
Uobičajene greške
- Zabluda "Radilo = ispravno": Misliti da je kod koji radi bez grešaka ispravan.
- Ne pisanje testova: oslanjanje na kod bez referentnog testa sa poznatim rezultatom.
- Dvosmislenost jedinica: Ostavljanje ulazno/izlaznih jedinica neinterpretiranim, preskakanje konverzije.
- Ignoriranje rubnih slučajeva: tiha greška ili pad na nultom/negativnom ulazu.
- Nedokumentiranje izvora/pretpostavke: Ne zapisivanje izvora i pretpostavke korištene formule.
- Bez verzioniranja: Ostavljanje naloga kao jednokratne datoteke bez da se može pratiti (git).
Ukratko
- Python čini inženjersko računanje ponovljivim, sljedivim i kontroliranim verzijama.
- AI je veoma brz u generisanju koda; Ali činjenica da kod radi bez grešaka ne znači da računa ispravno.
- Svaki kod treba biti validiran kroz testiranje poznatih rezultata, provjeru jedinice i rubne slučajeve.
- Jedinične greške su najčešći i najpodmukiji izvor grešaka; Odbrana po sistemu jedne jedinice, nomenklaturi ili pint.
- Potvrđena automatizacija štedi vrijeme i daje samopouzdanje; Neprovjereni kod je opasan.
Zadatak aplikacije
Odaberite ponavljajući inženjerski proračun (kao što je napon, snaga pumpe, toplotno opterećenje). Napišite Python funkciju u AI koja vrši ovaj proračun; Komentirajte jedinicu svakog ulaza i izlaza i dodajte test potvrđivanja s poznatim rezultatom. Pokrenite test i vidite da li prolazi. Zatim izvršite još dvije provjere: pokušajte s rubnim slučajem (nula ili negativan ulaz) da provjerite da li kod vraća značajnu grešku i ručno navedite jedinicu izlaza u primjeru. Ako je moguće, imajte i verziju sigurnu za jedinicu proizvedenu u litri. Na kraju, dodajte pretpostavke proračuna, izvor formule i datum u kod kao kratak naslov i napišite zašto ovaj kod još uvijek zahtijeva odobrenje inženjera.
kontrolna lista
- [ ] Ulazne i izlazne jedinice su jasno dokumentirane u kodu; odabran je jednostruki sistem.
- [ ] Test (assert) sa poznatim rezultatom je dodat i prošao.
- [ ] Pokušan je barem jedan rubni slučaj (nula/negativan); Kod je dao značajnu grešku.
- [ ] Jedinica izlaza je data u ručnom primjeru (bez pretpostavke "radio = ispravno").
- [ ] Izvor formule, pretpostavke i datum navedeni u kodu.
- [ ] Račun se može pratiti/pratiti; konačno odobrenje prepušteno je inženjeru.