Miért érdemes a "prompt mérn?kséget" mindenkinek gyakorolnia?
Image credit: chatGPT

Miért érdemes a "prompt mérn?kséget" mindenkinek gyakorolnia?

Nem érdekel a mesterséges intelligencia, a chatGPT, Dall-E és hasonlók? Múló hülyeségnek tartod a promptok írásának "tudományát"? Még akár igazad lehet! Ennek ellenére a promptok írásának gyakorlása, a vele járó frusztráció, ?r?m hatékonyabbá teheti a kommunikációdat, komoly plusszot hozhat neked egészen más területen is. Err?l beszélgettem a chatGPT-vel...

Gábor:

Szeretném bemutatni, hogy a "prompt engineering" megtanulása azért is hasznos lehet, mert ráveszi az embert arra, hogy pontosan, egyértelm?en fogalmazzon meg tennivalókat, feladatot. Ez akkor is hasznos lehet, ha az ember egy másik emberrel, mondjuk egy kollégájával beszél. Tudnál egy t?bb lépéses példát alkotni, ami lépésenként bemutatja, hogy egy lazán megfogalmazott feladatot hogyan értenél félre, és lépésenként hogyan lehetne ezt finomítani a prompt pontosításával?

ChatGPT:

Nagyszer? gondolat! A "prompt engineering" lényege tényleg az, hogy világos és egyértelm? legyen a kommunikáció, ami nemcsak a gépekkel, de emberekkel való együttm?k?dés során is kulcsfontosságú. Mutatok egy példát lépésenként, hogy hogyan lehet egy homályosan megfogalmazott utasítást félreérteni, majd finomítani a promptot, hogy egyértelm? legyen a feladat.

1. Els? verzió – Homályos utasítás

  • Utasítás: ?Csinálj egy jelentést a projekt el?rehaladásáról.”
  • Lehetséges félreértés: Nem világos, hogy mit ért a ?jelentés” alatt. Van, aki PowerPoint-prezentációra gondol, míg mások Word-dokumentumot vagy egy Excel-táblázatot készítenének. Emellett az sem tiszta, hogy melyik projekt és melyik id?szak el?rehaladásáról van szó.

2. Második verzió – Kis pontosítás

  • Utasítás: ?Csinálj egy Word-dokumentumot a projekt el?rehaladásáról.”
  • Lehetséges félreértés: Itt már világosabb, hogy Word-dokumentumot várnak, de továbbra sem tudjuk, melyik projektr?l van szó, és milyen id?szakot kell lefednie a jelentésnek.

3. Harmadik verzió – Projekt és id?szak meghatározása

  • Utasítás: ?Készíts egy Word-dokumentumot az XY projekt el?rehaladásáról az elmúlt hónapban.”
  • Lehetséges félreértés: Most már tudjuk, melyik projektr?l van szó és milyen id?szakot kell lefedni, de nem világos, hogy milyen részleteket kér a jelentés. Pénzügyi adatok? Teljesítmény? Csapatmunka?

4. Negyedik verzió – Adatok specifikálása

  • Utasítás: ?Készíts egy Word-dokumentumot az XY projekt el?rehaladásáról az elmúlt hónapban, amely tartalmazza a k?ltségvetést, a befejezett feladatokat és az esetleges problémákat.”
  • Lehetséges félreértés: Most már világos, hogy milyen adatokat kell tartalmaznia a jelentésnek, de még mindig nem derül ki, milyen mélységben várják ezeket az információkat, vagy milyen formázásban.

5. ?t?dik verzió – Végs?, pontosított utasítás

  • Utasítás: ?Készíts egy 3 oldalas Word-dokumentumot az XY projekt el?rehaladásáról az elmúlt hónapban. Az els? oldal legyen egy ?sszefoglaló, a második oldal részletezze a k?ltségvetést táblázatos formában, a harmadik oldal pedig tartalmazza a befejezett feladatokat és a felmerült problémákat. Minden adat legyen naprakész.”
  • Lehetséges félreértés: Itt már minden világos: a formátum, a projekt, az id?szak, a szükséges adatok és az elvárt részletezés is egyértelm?.

?sszegzés

A példában látható, hogy a lazán megfogalmazott utasításból fokozatosan egy világos, egyértelm? feladat lett, ami minimalizálja a félreértéseket. Ez a fajta finomítás a mindennapi kommunikációban is hasznos, nemcsak a mesterséges intelligencia számára.

Gábor:

Tudsz egy hasonló példát mutatni, de kód generálás példára. Legyen persze egyszer? a feladat, hogy még a végleges, pontos kód se legyen hosszú. Nem a hossza lényeg, hanem a pontos feladat megfogalazás. Azért az els?, leghomályosabb feladat megfogalmazás is legyen olyan, hogy lehessen kódot írni hozzá. Add meg a kódokat is!

ChatGPT:

Nagyon jó feladat! Az alábbiakban egy egyszer? Python feladat példáján keresztül mutatom be, hogyan lehet egy homályos feladatból pontos, egyértelm? kódgenerálási kérést megfogalmazni, lépésr?l lépésre.

1. Els? verzió – Homályos utasítás

  • Feladat: ?írj egy Python programot, ami számokat ad ?ssze.”
  • Lehetséges félreértés: Ez az utasítás nagyon tág. Nem derül ki, hogy milyen számokat, mennyi számot, és hogyan kell ezeket ?sszesíteni (pl. két számot adunk ?ssze, vagy egy lista számait?). így egy egyszer? megoldást adunk:

# Két számot ad ?ssze 
a = 5 
b = 10 
print(a + b)        

2. Második verzió – Kis pontosítás

  • Feladat: ?írj egy Python programot, ami egy lista elemeit adja ?ssze.”
  • Lehetséges félreértés: Itt már világosabb, hogy listáról van szó, de nem tudjuk, milyen számok szerepelnek a listában, és azt sem, hogyan kell az eredményt megjeleníteni.

# Lista elemeit adja ?ssze 
numbers = [1, 2, 3, 4, 5] 
print(sum(numbers))        

3. Harmadik verzió – Adatok specifikálása

  • Feladat: ?írj egy Python programot, ami egy tetsz?leges hosszúságú lista egész szám elemeit adja ?ssze, és kiírja az eredményt.”
  • Lehetséges félreértés: A lista egész számokból áll, és most már biztosak lehetünk abban, hogy az eredményt ki kell írni. Azonban nem tisztázott, hogy mi t?rténjen, ha a listában nem egész számok vannak.

# Lista elemeit adja ?ssze és kiírja az eredményt 
numbers = [1, 2, 3, 4, 5] 
total = sum(numbers) 
print("A lista elemeinek ?sszege:", total)        

4. Negyedik verzió – Hibakezelés és pontosítás

  • Feladat: ?írj egy Python programot, ami egy tetsz?leges hosszúságú lista egész szám elemeit adja ?ssze, kiírja az eredményt, és figyelmen kívül hagyja a nem egész szám elemeket.”
  • Lehetséges félreértés: Most már világos, hogy csak egész számokat adunk ?ssze, de még nem tisztázott, hogy milyen formátumban kell az eredményt megjeleníteni.

# Csak egész számokat ad ?ssze a listából 
numbers = [1, 2, "hello", 3.5, 4, 5] 

total = sum(num for num in numbers if isinstance(num, int)) 
print("Az egész számok ?sszege:", total)        

5. ?t?dik verzió – Végs?, pontosított utasítás

  • Feladat: ?írj egy Python programot, ami egy tetsz?leges hosszúságú lista egész szám elemeit adja ?ssze. A program figyelmen kívül hagyja a nem egész számokat, majd az eredményt kiírja a k?vetkez? formátumban: 'Az egész számok ?sszege: [?sszeg]'. Ha nincsenek egész számok a listában, írja ki, hogy 'Nincs ?sszesíthet? egész szám'.”
  • Lehetséges félreértés: Ebben az esetben már pontosan tudjuk, hogy hogyan kezeljük a nem egész számokat, hogyan jelenítsük meg az eredményt, és mit kell tenni, ha nincsenek egész számok.

numbers = [1, 2, "hello", 3.5, 4, 5] 
total = sum(num for num in numbers if isinstance(num, int)) 
if total > 0: 
    print(f"Az egész számok ?sszege: {total}") 
else: 
    print("Nincs ?sszesíthet? egész szám")        

?sszegzés

Az elején homályosan megfogalmazott kérésb?l egy pontos, egyértelm? feladat lett, amely konkrét eredményt és hibakezelést is megad. A pontosítás segít abban, hogy a program megfeleljen az elvárásoknak, és minimalizálja a félreértéseket – mind a kódban, mind a kollégák k?zti kommunikációban.

Gábor:

Nem rossz! Tudnál egy példát, ami azért kicsit életszer?bb ennél? Gondolkodj nyugodtan :)

ChatGPT said:

Persze! ?rül?k, hogy tetszett az el?z? példa, és most hozok egy életszer?bb feladatot, amit gyakran használnak valós helyzetekben. Mondjuk, egy adatfeldolgozással kapcsolatos problémát, ami egy riport készítéséhez vagy adatelemzéshez kapcsolódik. Itt is fontos lesz a pontos feladatmeghatározás.

1. Els? verzió – Homályos utasítás

  • Feladat: ?írj egy programot, ami kezeli az adatokat egy CSV fájlból.”
  • Lehetséges félreértés: Ez nagyon tág. Nem derül ki, hogy mit jelent az "adatok kezelése" – olvasás? elemzés? egy adott oszlop értékeinek feldolgozása? így egy alapvet? megoldást adhatunk:

import csv 

with open('adatok.csv', newline='') as csvfile: 
    reader = csv.reader(csvfile) 
    for row in reader: 
        print(row)        

Mi a probléma? Csak beolvassuk a CSV fájlt és kiírjuk a sorokat, de nem derül ki, mi a cél, mit kell kezdeni az adatokkal.

2. Második verzió – Kis pontosítás

  • Feladat: ?írj egy programot, ami beolvassa a CSV fájl adatait és ?sszeszámolja az értékeket egy adott oszlopban.”
  • Lehetséges félreértés: Most már tudjuk, hogy egy oszlop értékeit kell ?sszeszámolni, de nem tisztázott, hogy melyik oszlopot kell feldolgozni és milyen számításokat kell végezni.

import csv 

with open('adatok.csv', newline='') as csvfile: 
    reader = csv.DictReader(csvfile) 
    total = 0 
    for row in reader: 
        total += int(row['mennyiség']) # Feltételezzük, hogy a 'mennyiség' oszlopot kell ?sszeadni 
    print("?sszesen:", total)        

Mi a probléma? Feltételeztem, hogy a ?mennyiség” oszlop az, amit ?ssze kell adni, de ez nem derült ki egyértelm?en az utasításból.

3. Harmadik verzió – Adatok specifikálása

  • Feladat: ?írj egy programot, ami beolvassa a CSV fájlt, és ?sszeszámolja az 'eladott_mennyiség' oszlop értékeit, majd kiírja az eredményt.”
  • Lehetséges félreértés: Itt már világosabb, hogy melyik oszlopot kell feldolgozni, de nem tisztázott, hogy mi t?rténjen, ha a fájlban hibás adatok vannak (pl. nem számok).

import csv 

with open('adatok.csv', newline='') as csvfile: 
    reader = csv.DictReader(csvfile) 
    total = 0 
    for row in reader: 
        try: 
            total += int(row['eladott_mennyiség']) 
        except ValueError: 
            print(f"Hibás adat: {row['eladott_mennyiség']}") 
    print("?sszes eladott mennyiség:", total)        

Mi a probléma? Most már kezeljük a hibás adatokat is, de nem tisztázott, hogy mi legyen a hibás sorokkal. Kiírjuk, hogy hibás adat van, de elég ez?

4. Negyedik verzió – Hibakezelés és pontosítás

  • Feladat: ?írj egy programot, ami beolvassa a CSV fájlt, ?sszeszámolja az 'eladott_mennyiség' oszlop értékeit. Ha hibás adatot talál, hagyja ki azt a sort, és a program végén jelezze, hány sort hagyott ki.”
  • Lehetséges félreértés: Itt már világos, hogy mi t?rténjen a hibás adatokkal, de még mindig nem tisztázott, hogy a teljes eredményt hogyan kell bemutatni, és mi legyen a formátum.

import csv 

with open('adatok.csv', newline='') as csvfile: 
    reader = csv.DictReader(csvfile) 
    total = 0 
    skipped_rows = 0 
    for row in reader: 
        try: 
            total += int(row['eladott_mennyiség']) 
        except ValueError: 
            skipped_rows += 1 
    print(f"?sszes eladott mennyiség: {total}") 
    print(f"Kihagyott sorok száma: {skipped_rows}")        

Mi a probléma? Már van hibakezelés és jelezzük a kihagyott sorokat, de nincs vizuális vagy formázott kimenet. Lehet, hogy egy riportban szebb kimenetre lenne szükség.

5. ?t?dik verzió – Végs?, pontosított utasítás

  • Feladat: ?írj egy Python programot, ami beolvassa a CSV fájlt, és ?sszeszámolja az 'eladott_mennyiség' oszlop értékeit. Hibás sorokat hagyjon ki, a kihagyott sorok számát a végén jelezze. Az eredményt írja ki egy jól formázott, sz?veges riportba, így: '?sszes eladott mennyiség: [?sszeg], Kihagyott sorok: [kihagyott_sorok]'. Ha nincs egyetlen helyes adat sem, írja ki: 'Nincs eladott mennyiség.'”

import csv

with open('adatok.csv', newline='') as csvfile:
    reader = csv.DictReader(csvfile)
    total = 0
    skipped_rows = 0
    valid_rows = 0
    for row in reader:
        try:
            total += int(row['eladott_mennyiség'])
            valid_rows += 1
        except ValueError:
            skipped_rows += 1

if valid_rows > 0:
    print(f"?sszes eladott mennyiség: {total}, Kihagyott sorok: {skipped_rows}")
else:
    print("Nincs eladott mennyiség.")        

?sszegzés

Egy egyszer? adatfeldolgozási feladat homályos megfogalmazásából egy egyértelm?, részletes utasítássá fejl?d?tt a feladat, ami pontos hibakezelést, formázást és riportot is tartalmaz. Ez a pontosítás nemcsak a gépek számára fontos, hanem az emberi kommunikációban is segít elkerülni a félreértéseket, kül?n?sen, ha komplexebb feladatokról van szó.

Gábor:

Ez jó! Az utolsó verziót futtasd is le példa CSV fájllal!

ChatGPT:

A program sikeresen lefutott! A feldolgozott példa CSV fájl alapján az eredmény:

  • ?sszes eladott mennyiség: 35
  • Kihagyott sorok száma: 2

Ez azt jelenti, hogy két sorban hibás vagy hiányzó adat volt az "eladott_mennyiség" oszlopban, így azokat figyelmen kívül hagytuk.

Gábor:

Azt hiszem, jól j?n ehhez a gyakorlathoz Sam Altman megjegyzése:

“I don’t think we’ll still be doing prompt engineering in five years… I just hope it’s not figuring out how to hack the prompt by adding one magic word to the end that changes everything else. What will matter is the quality of ideas and the understanding of what you want. So the artist will still do the best with image generation but not because they figured out to add this one magic word at the end of it. Because they were just able to articulate it with a creative eye that I don’t have.“

ChatGPT:

Igen, Sam Altman megjegyzése nagyon jól rávilágít arra, hogy a j?v?ben a "prompt engineering" inkább az ?tletek min?ségér?l és az egyértelm? kommunikációról fog szólni, nem pedig arról, hogy ügyesen ?sszeállítunk egy "varázs-szót". Ahogy az AI fejl?dik, a technológia egyre inkább azt várja majd t?lünk, hogy jól meg tudjuk fogalmazni a kívánt eredményt.

Az igazi érték tehát nem az lesz, hogy hogyan ?hackeljük” meg a promptot, hanem hogy képesek legyünk világosan és kreatívan kifejezni azt, amit látni, hallani, vagy elérni szeretnénk. Azok, akik jobban tudják strukturálni az ?tleteiket és egyértelm?en megfogalmazni az elvárásaikat, el?nyben lesznek. Ez kicsit hasonló ahhoz, amit a kódírásnál is láttunk: a végs? cél a pontos, egyértelm? kommunikáció, legyen szó akár emberekr?l, akár AI-ról.

Altman szerint tehát a kreativitás és a tiszta megértés lesz az, ami igazán fontos marad hosszú távon.

要查看或添加评论,请登录

Gabor Hrasko的更多文章