Šiame modulyje aptariami esminiai konceptai ir technikos, kaip kurti efektyvias užklausas generatyviniams dirbtinio intelekto modeliams. Tai, kaip jūs formuluojate savo užklausą LLM (dideliam kalbos modeliui), yra labai svarbu. Kruopščiai suformuluota užklausa gali užtikrinti geresnę atsakymo kokybę. Bet ką iš tikrųjų reiškia tokie terminai kaip užklausa ir užklausų kūrimas? Ir kaip galima patobulinti užklausos įvestį, kurią siunčiate LLM? Tai yra klausimai, į kuriuos bandysime atsakyti šiame ir kitame skyriuje.
Generatyvinis dirbtinis intelektas gali kurti naują turinį (pvz., tekstą, vaizdus, garsą, kodą ir kt.) reaguodamas į vartotojo užklausas. Tai pasiekiama naudojant Didelius kalbos modelius, tokius kaip OpenAI GPT („Generative Pre-trained Transformer“) serija, kurie yra apmokyti naudoti natūralią kalbą ir kodą.
Dabar vartotojai gali bendrauti su šiais modeliais naudodami pažįstamus paradigmus, tokius kaip pokalbiai, nereikalaujant jokių techninių žinių ar mokymų. Modeliai yra užklausų pagrindu sukurti – vartotojai siunčia tekstinę užklausą (prompt) ir gauna dirbtinio intelekto atsakymą (completion). Jie gali „kalbėtis su dirbtiniu intelektu“ iteratyviai, daugiapakopiuose pokalbiuose, tobulindami savo užklausą, kol atsakymas atitiks jų lūkesčius.
„Užklausos“ dabar tampa pagrindine programavimo sąsaja generatyviniams dirbtinio intelekto programoms, nurodant modeliams, ką daryti, ir darant įtaką grąžinamų atsakymų kokybei. „Užklausų kūrimas“ yra sparčiai auganti studijų sritis, kuri orientuojasi į užklausų dizainą ir optimizavimą, siekiant užtikrinti nuoseklius ir kokybiškus atsakymus dideliu mastu.
Šioje pamokoje sužinosime, kas yra užklausų kūrimas, kodėl jis svarbus ir kaip galime kurti efektyvesnes užklausas konkrečiam modeliui ir taikymo tikslui. Suprasime pagrindinius užklausų kūrimo konceptus ir geriausias praktikas – ir sužinosime apie interaktyvią Jupyter Notebooks „smėlio dėžės“ aplinką, kurioje galime pritaikyti šiuos konceptus realiuose pavyzdžiuose.
Pamokos pabaigoje mes galėsime:
- Paaiškinti, kas yra užklausų kūrimas ir kodėl jis svarbus.
- Apibūdinti užklausos komponentus ir kaip jie naudojami.
- Išmokti geriausias praktikas ir technikas užklausų kūrimui.
- Pritaikyti išmoktas technikas realiuose pavyzdžiuose, naudojant OpenAI sąsają.
Užklausų kūrimas: Praktika, kai kuriamos ir tobulinamos įvestys, siekiant nukreipti dirbtinio intelekto modelius į norimus rezultatus. Tokenizacija: Teksto pavertimo mažesniais vienetais, vadinamais tokenais, procesas, kurį modelis gali suprasti ir apdoroti. Instrukcijomis pritaikyti LLM: Dideli kalbos modeliai (LLM), kurie buvo specialiai pritaikyti su konkrečiomis instrukcijomis, siekiant pagerinti jų atsakymų tikslumą ir aktualumą.
Užklausų kūrimas šiuo metu yra labiau menas nei mokslas. Geriausias būdas pagerinti savo intuiciją šioje srityje yra praktikuotis daugiau ir taikyti bandymų ir klaidų metodą, kuris derina taikymo srities žinias su rekomenduojamomis technikomis ir modelio specifinėmis optimizacijomis.
Pamokai skirtas Jupyter Notebook suteikia smėlio dėžės aplinką, kurioje galite išbandyti tai, ką išmokote – tiek pamokos metu, tiek kaip kodo iššūkio dalį pamokos pabaigoje. Norėdami vykdyti pratimus, jums reikės:
- Azure OpenAI API rakto – paslaugos sąsajos, skirtos įdiegtam LLM.
- Python aplinkos – kurioje galima vykdyti Notebook.
- Vietinių aplinkos kintamųjų – užbaikite NUSTATYMO žingsnius dabar, kad pasiruoštumėte.
Notebook turi pradinių pratimų – tačiau jūs esate skatinami pridėti savo Markdown (aprašymo) ir Code (užklausų) sekcijas, kad išbandytumėte daugiau pavyzdžių ar idėjų – ir ugdytumėte savo intuiciją užklausų dizainui.
Norite gauti bendrą vaizdą apie tai, ką apima ši pamoka, prieš pradedant gilintis? Peržiūrėkite šį iliustruotą vadovą, kuris suteikia supratimą apie pagrindines aptariamas temas ir svarbiausius dalykus, kuriuos verta apmąstyti kiekvienoje iš jų. Pamokos planas veda jus nuo pagrindinių konceptų ir iššūkių supratimo iki jų sprendimo, taikant atitinkamas užklausų kūrimo technikas ir geriausias praktikas. Atkreipkite dėmesį, kad „Pažangių technikų“ skyrius šiame vadove nurodo turinį, aptariamą kitame šios mokymo programos skyriuje.
Dabar pakalbėkime apie tai, kaip ši tema susijusi su mūsų startuolio misija įnešti dirbtinio intelekto inovacijas į švietimą. Mes norime kurti dirbtinio intelekto pagrindu veikiančias personalizuoto mokymosi programas – tad pagalvokime, kaip skirtingi mūsų programos vartotojai galėtų „kurti“ užklausas:
- Administratoriai galėtų paprašyti dirbtinio intelekto analizuoti mokymo programos duomenis, kad būtų nustatytos spragos aprėptyje. Dirbtinis intelektas galėtų apibendrinti rezultatus arba vizualizuoti juos naudodamas kodą.
- Mokytojai galėtų paprašyti dirbtinio intelekto sukurti pamokos planą tam tikrai auditorijai ir temai. Dirbtinis intelektas galėtų sukurti personalizuotą planą nurodytu formatu.
- Mokiniai galėtų paprašyti dirbtinio intelekto padėti jiems mokytis sunkios temos. Dirbtinis intelektas galėtų vesti mokinius per pamokas, pateikti užuominas ir pavyzdžius, pritaikytus jų lygiui.
Tai tik ledkalnio viršūnė. Peržiūrėkite Užklausos švietimui – atvirą šaltinio užklausų biblioteką, kurią sudarė švietimo ekspertai – kad gautumėte platesnį galimybių vaizdą! Pabandykite paleisti kai kurias iš tų užklausų smėlio dėžėje arba naudodami OpenAI Playground ir pažiūrėkite, kas nutiks!
Pamoką pradėjome apibrėždami Užklausų kūrimą kaip procesą, kurio metu kuriamos ir optimizuojamos tekstinės įvestys (užklausos), siekiant užtikrinti nuoseklius ir kokybiškus atsakymus (užbaigimus) konkrečiam taikymo tikslui ir modeliui. Galime tai laikyti dviejų etapų procesu:
- kuriant pradinę užklausą konkrečiam modeliui ir tikslui
- tobulinant užklausą iteratyviai, siekiant pagerinti atsakymo kokybę
Tai neišvengiamai yra bandymų ir klaidų procesas, kuris reikalauja vartotojo intuicijos ir pastangų, kad būtų pasiekti optimalūs rezultatai. Kodėl tai svarbu? Norėdami atsakyti į šį klausimą, pirmiausia turime suprasti tris konceptus:
- Tokenizacija = kaip modelis „mato“ užklausą
- Bazinis LLM = kaip pagrindinis modelis „apdoroja“ užklausą
- Instrukcijomis pritaikyti LLM = kaip modelis dabar mato „užduotis“
LLM mato užklausas kaip tokenų seką, kur skirtingi modeliai (arba modelio versijos) gali skirtingai suskaidyti tą pačią užklausą. Kadangi LLM yra apmokyti su tokenais (o ne su neapdorotu tekstu), būdas, kuriuo užklausos yra suskaidomos į tokenus, tiesiogiai veikia generuojamo atsakymo kokybę.
Norėdami geriau suprasti, kaip veikia tokenizacija, išbandykite tokias priemones kaip OpenAI Tokenizer, parodytą žemiau. Nukopijuokite savo užklausą – ir pažiūrėkite, kaip ji paverčiama į tokenus, atkreipdami dėmesį į tai, kaip tvarkomi tarpai ir skyrybos ženklai. Atkreipkite dėmesį, kad šis pavyzdys rodo senesnį LLM (GPT-3) – todėl bandymas su naujesniu modeliu gali duoti kitokį rezultatą.
Kai užklausa yra suskaidyta į tokenus, pagrindinė "Bazinio LLM" (arba Pagrindinio modelio) funkcija yra numatyti tokeną toje sekoje. Kadangi LLM yra apmokyti su didžiuliais tekstų duomenų rinkiniais, jie gerai supranta statistinius ryšius tarp tokenų ir gali atlikti šią prognozę su tam tikru pasitikėjimu. Atkreipkite dėmesį, kad jie nesupranta žodžių prasmės užklausoje ar tokene; jie tiesiog mato modelį, kurį gali „užbaigti“ savo kita prognoze. Jie gali tęsti sekos prognozavimą, kol vartotojas nutrauks arba bus pasiektos iš anksto nustatytos sąlygos.
Norite pamatyti, kaip veikia užklausų pagrindu sukurtas užbaigimas? Įveskite aukščiau pateiktą užklausą į Azure OpenAI Studio Chat Playground su numatytaisiais nustatymais. Sistema sukonfigūruota traktuoti užklausas kaip informacijos prašymus – todėl turėtumėte pamatyti užbaigimą, kuris atitinka šį kontekstą.
Bet kas, jei vartotojas norėtų pamatyti kažką konkretaus, kas atitiktų tam tikrus kriterijus ar užduoties tikslą? Čia į pagalbą ateina instrukcijomis pritaikyti LLM.
Instrukcijomis pritaikytas LLM prasideda nuo pagrindinio modelio ir yra pritaikytas naudojant pavyzdžius arba įvesties/išvesties poras (pvz., daugiapakopius „pranešimus“), kurie gali turėti aiškias instrukcijas – ir atsakymas iš dirbtinio intelekto bando laikytis tų instrukcijų.
Tai naudoja tokias technikas kaip stiprinamasis mokymasis su žmogaus grįžtamuoju ryšiu (RLHF), kuris gali apmokyti modelį laikytis instrukcijų ir mokytis iš grįžtamojo ryšio, kad jis generuotų atsakymus, kurie yra labiau pritaikyti praktiniams taikymams ir labiau atitinka vartotojo tikslus.
Pabandykime – peržiūrėkite aukščiau pateiktą užklausą, tačiau dabar pakeiskite sistemos pranešimą, kad pateiktumėte šią instrukciją kaip kontekstą:
Apibendrinkite pateiktą turinį antros klasės mokiniui. Rezultatas turėtų būti vienas paragrafas su 3–5 punktų sąrašu.
Pažiūrėkite, kaip rezultatas dabar pritaikytas atspindėti norimą tikslą ir formatą? Mokytojas dabar gali tiesiogiai naudoti šį atsakymą savo klasės skaidrėse.
Dabar, kai žinome, kaip užklausos yra apdorojamos LLM, pakalbėkime apie kodėl mums reikia užklausų kūrimo. Atsakymas slypi tame, kad dabartiniai LLM kelia daugybę iššūkių, dėl kurių patikimi ir nuoseklūs užbaigimai tampa sunkiau pasiekiami, jei neįdedama pastangų į užklausų konstravimą ir optimizavimą. Pavyzdžiui:
-
Modelio atsakymai yra stochastiški. Ta pati užklausa greičiausiai duos skirtingus atsakymus su skirtingais modeliais ar modelio versijomis. Ir ji gali netgi duoti skirtingus rezultatus su tuo pačiu modeliu skirtingu metu. Užklausų kūrimo technikos gali padėti mums sumažinti šiuos skirtumus, suteikiant geresnes apsaugos priemones.
-
Modeliai gali kurti netikrus atsakymus. Modeliai yra iš anksto apmokyti su dideliais, bet ribotais duomenų rinkiniais, o tai reiškia, kad jie neturi žinių apie konceptus, esančius už šio mokymo ribų. Dėl to jie gali generuoti užbaigimus, kurie yra netikslūs, išgalvoti arba tiesiogiai prieštarauja žinomiems faktams. Užklausų kūrimo technikos padeda vartotojams identifikuoti ir sumažinti tokius išgalvojimus, pvz., prašant dirbtinio intelekto pateikti citatas ar argumentus.
-
Modelių galimybės skiriasi. Naujesni modeliai ar modelių kartos turės turtingesnes galimybes, tačiau taip pat atneš unikalių keistenybių ir kompromisų dėl kainos ir sudėtingumo. _Užklausų kūrimas gali padėti mums sukurti geriausias praktikas ir darbo eigas, kurios abstra Interneto paieška parodė, kad yra išgalvotų pasakojimų (pvz., televizijos serialų ar knygų) apie Marso karus, tačiau nė vieno apie 2076 metus. Sveikas protas taip pat sako, kad 2076 metai yra ateityje ir todėl negali būti susiję su realiu įvykiu.
Taigi, kas nutinka, kai šį užklausą pateikiame skirtingiems LLM tiekėjams?
Atsakymas 1: OpenAI Playground (GPT-35)
Atsakymas 2: Azure OpenAI Playground (GPT-35)
Atsakymas 3: Hugging Face Chat Playground (LLama-2)
Kaip ir tikėtasi, kiekvienas modelis (arba modelio versija) pateikia šiek tiek skirtingus atsakymus dėl stochastinio elgesio ir modelio galimybių skirtumų. Pavyzdžiui, vienas modelis orientuojasi į 8 klasės auditoriją, o kitas - į vidurinės mokyklos mokinius. Tačiau visi trys modeliai pateikė atsakymus, kurie galėtų įtikinti neinformuotą vartotoją, kad įvykis buvo tikras.
Užklausų kūrimo technikos, tokios kaip metaužklausos ir temperatūros konfigūravimas, gali tam tikru mastu sumažinti modelio klaidas. Naujos užklausų kūrimo architektūros taip pat sklandžiai integruoja naujus įrankius ir technikas į užklausų srautą, kad sumažintų kai kuriuos šiuos efektus.
Užbaikime šią dalį, susipažindami su tuo, kaip užklausų kūrimas naudojamas realiame pasaulyje, pažvelgdami į vieną atvejo analizę: GitHub Copilot.
GitHub Copilot yra jūsų „AI porinis programuotojas“ – jis paverčia tekstines užklausas kodų užbaigimais ir yra integruotas į jūsų kūrimo aplinką (pvz., Visual Studio Code), kad užtikrintų sklandžią vartotojo patirtį. Kaip dokumentuota žemiau pateiktuose tinklaraščiuose, ankstyviausia versija buvo pagrįsta OpenAI Codex modeliu – inžinieriai greitai suprato poreikį patobulinti modelį ir sukurti geresnes užklausų kūrimo technikas, kad pagerintų kodo kokybę. Liepą jie pristatė patobulintą AI modelį, kuris pranoksta Codex ir siūlo dar greitesnius pasiūlymus.
Skaitykite įrašus iš eilės, kad galėtumėte sekti jų mokymosi kelionę.
- 2023 m. gegužė | GitHub Copilot tampa geresnis suprantant jūsų kodą
- 2023 m. gegužė | GitHub viduje: darbas su LLM, esančiais už GitHub Copilot.
- 2023 m. birželis | Kaip rašyti geresnes užklausas GitHub Copilot.
- 2023 m. liepa | .. GitHub Copilot pranoksta Codex su patobulintu AI modeliu
- 2023 m. liepa | Programuotojo vadovas apie užklausų kūrimą ir LLM
- 2023 m. rugsėjis | Kaip sukurti įmonės LLM programą: pamokos iš GitHub Copilot
Taip pat galite naršyti jų inžinerijos tinklaraštį, kad rastumėte daugiau įrašų, tokių kaip šis, kuris parodo, kaip šie modeliai ir technikos yra taikomi realioms programoms kurti.
Jau supratome, kodėl užklausų kūrimas yra svarbus – dabar išsiaiškinkime, kaip užklausos yra kuriamos, kad galėtume įvertinti skirtingas technikas efektyvesniam užklausų dizainui.
Pradėkime nuo pagrindinės užklausos: teksto įvesties, siunčiamos modeliui be jokio papildomo konteksto. Štai pavyzdys – kai OpenAI Completion API siunčiame pirmuosius JAV nacionalinio himno žodžius, jis iš karto papildo atsakymą kitomis eilutėmis, iliustruodamas pagrindinį prognozavimo elgesį.
| Užklausa (Įvestis) | Papildymas (Išvestis) |
|---|---|
| Oh say can you see | Atrodo, kad pradedate dainuoti „The Star-Spangled Banner“, Jungtinių Valstijų nacionalinį himną. Pilnas tekstas yra ... |
Dabar pridėkime kontekstą ir instrukcijas prie pagrindinės užklausos. Chat Completion API leidžia mums sukurti sudėtingą užklausą kaip žinučių rinkinį su:
- Įvesties/išvesties poromis, atspindinčiomis vartotojo įvestį ir asistento atsakymą.
- Sistemos žinute, nustatančia asistento elgesio ar asmenybės kontekstą.
Užklausa dabar pateikiama žemiau nurodyta forma, kur tokenizacija efektyviai užfiksuoja svarbią informaciją iš konteksto ir pokalbio. Dabar sistemos konteksto pakeitimas gali turėti tokį patį poveikį atsakymų kokybei, kaip ir pateiktos vartotojo įvestys.
response = openai.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who won the world series in 2020?"},
{"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},
{"role": "user", "content": "Where was it played?"}
]
)Ankstesniuose pavyzdžiuose vartotojo užklausa buvo paprastas tekstinis klausimas, kurį galima interpretuoti kaip informacijos užklausą. Naudojant instrukcijų užklausas, galime naudoti tekstą, kad išsamiau nurodytume užduotį, suteikdami AI geresnes gaires. Štai pavyzdys:
| Užklausa (Įvestis) | Papildymas (Išvestis) | Instrukcijos tipas |
|---|---|---|
| Parašykite aprašymą apie Pilietinį karą | grąžino paprastą pastraipą | Paprasta |
| Parašykite aprašymą apie Pilietinį karą. Pateikite pagrindines datas ir įvykius bei apibūdinkite jų reikšmę | grąžino pastraipą, po kurios pateiktas pagrindinių įvykių datų sąrašas su aprašymais | Sudėtinga |
| Parašykite aprašymą apie Pilietinį karą vienoje pastraipoje. Pateikite 3 punktus su pagrindinėmis datomis ir jų reikšme. Pateikite dar 3 punktus su pagrindiniais istoriniais veikėjais ir jų indėliu. Grąžinkite išvestį JSON failo formatu | grąžino išsamesnę informaciją teksto laukelyje, suformatuotą kaip JSON, kurį galima nukopijuoti ir įklijuoti į failą bei patikrinti | Sudėtinga. Su formatu. |
Ankstesniuose pavyzdžiuose užklausa vis dar buvo gana atvira, leidžianti LLM nuspręsti, kuri jo iš anksto apmokyto duomenų rinkinio dalis yra svarbi. Naudojant pagrindinio turinio dizaino modelį, įvesties tekstas yra padalintas į dvi dalis:
- instrukcija (veiksmas)
- svarbus turinys (kuris daro įtaką veiksmui)
Štai pavyzdys, kur instrukcija yra „sutrumpinkite tai į 2 sakinius“.
| Užklausa (Įvestis) | Papildymas (Išvestis) |
|---|---|
| Jupiteris yra penkta planeta nuo Saulės ir didžiausia Saulės sistemoje. Tai dujų milžinas, kurio masė yra tūkstantąja Saulės masės dalimi, tačiau du su puse karto didesnė už visų kitų planetų masę kartu sudėjus. Jupiteris yra vienas ryškiausių objektų, matomų plika akimi naktiniame danguje, ir buvo žinomas senovės civilizacijoms dar prieš užfiksuojant istoriją. Jis pavadintas Romos dievo Jupiterio vardu.[19] Žiūrint iš Žemės, Jupiteris gali būti pakankamai ryškus, kad jo atspindėta šviesa mestų matomus šešėlius,[20] ir vidutiniškai yra trečias ryškiausias natūralus objektas naktiniame danguje po Mėnulio ir Veneros. Sutrumpinkite tai į 2 trumpus sakinius |
Jupiteris, penkta planeta nuo Saulės, yra didžiausia Saulės sistemoje ir žinoma kaip vienas ryškiausių objektų naktiniame danguje. Pavadintas Romos dievo Jupiterio vardu, tai dujų milžinas, kurio masė yra du su puse karto didesnė už visų kitų planetų masę kartu sudėjus. |
Pagrindinio turinio segmentą galima naudoti įvairiais būdais, siekiant efektyvesnių instrukcijų:
- Pavyzdžiai - vietoj to, kad modelį nurodytume aiškia instrukcija, pateikiame jam pavyzdžių, ką daryti, ir leidžiame jam pačiam suprasti modelį.
- Užuominos - po instrukcijos pateikiame „užuominą“, kuri nukreipia modelį link tinkamesnių atsakymų.
- Šablonai - tai pakartojami „receptai“ užklausoms su vietos rezervavimo ženklais (kintamaisiais), kuriuos galima pritaikyti konkretiems naudojimo atvejams.
Pažvelkime, kaip tai veikia praktikoje.
Tai metodas, kai naudojate pagrindinį turinį, kad „pamaitintumėte modelį“ keliais norimos išvesties pavyzdžiais pagal pateiktą instrukciją ir leistumėte jam pačiam suprasti norimą išvesties modelį. Atsižvelgiant į pateiktų pavyzdžių skaičių, galime turėti užklausas be pavyzdžių, su vienu pavyzdžiu, su keliais pavyzdžiais ir pan.
Užklausa dabar susideda iš trijų komponentų:
- Užduoties aprašymo
- Kelių norimos išvesties pavyzdžių
- Naujo pavyzdžio pradžios (kuris tampa netiesioginiu užduoties aprašymu)
| Mokymosi tipas | Užklausa (Įvestis) | Papildymas (Išvestis) |
|---|---|---|
| Be pavyzdžių | „The Sun is Shining“. Išverskite į ispanų kalbą | „El Sol está brillando“. |
| Su vienu pavyzdžiu | „The Sun is Shining“ => „El Sol está brillando“. „It's a Cold and Windy Day“ => |
„Es un día frío y ventoso“. |
| Su keliais pavyzdžiais | Žaidėjas bėgo bazėmis => Beisbolas Žaidėjas pataikė ace => Tenisas Žaidėjas pataikė šešis => Kriketas Žaidėjas atliko slam-dunk => |
Krepšinis |
Atkreipkite dėmesį, kaip turėjome pateikti aiškią instrukciją („Išverskite į ispanų kalbą“) užklausose be pavyzdžių, tačiau ji tampa suprantama užklausose su vienu pavyzdžiu. Pavyzdys su keliais pavyzdžiais rodo, kaip pridėjus daugiau pavyzdžių modeliai gali tiksliau suprasti be papildomų instrukcijų.
Kitas pagrindinio turinio naudojimo būdas yra pateikti užuominas, o ne pavyzdžius. Šiuo atveju mes suteikiame modeliui postūmį tinkama kryptimi, pradėdami nuo fragmento, kuris atspindi norimą atsakymo formatą. Tada modelis „pagauna užuominą“ ir tęsia tuo pačiu stiliumi.
| Užuominų skaičius | Užklausa (Įvestis) | Papildymas (Išvestis) |
|---|---|---|
| 0 | Jupiteris yra penkta planeta nuo Saulės ir didžiausia Saulės sistemoje. Tai dujų milžinas, kurio masė yra tūkstantąja Saulės masės dalimi, tačiau du su puse karto didesnė už visų kitų planetų masę kartu sudėjus. Jupiteris yra vienas ryškiausių objektų, matomų plika akimi naktiniame danguje, ir buvo žinomas senovės civilizacijoms dar prieš užfiksuojant istoriją. Sutrumpinkite Tai |
Jupiteris yra didžiausia planeta mūsų Saulės sistemoje ir penkta nuo Saulės. Tai dujų milžinas, kurio masė yra 1/1000 Saulės masės, tačiau jis sunkesnis už visas kitas planetas kartu sudėjus. Senovės civilizacijos jau seniai žinojo apie Jupiterį, ir jis lengvai matomas naktiniame danguje. |
| 1 | Jupiteris yra penkta planeta nuo Saulės ir didžiausia Saulės sistemoje. Tai dujų milžinas, kurio masė yra tūkstantąja Saulės masės dalimi, tačiau du su puse karto didesnė už visų kitų Saulės sistemos planetų masę kartu sudėjus. Jupiteris yra vienas ryškiausių objektų, matomų plika akimi naktiniame danguje, ir buvo žinomas senovės civilizacijoms dar prieš užrašytą istoriją. Santrauka Sužinojome, kad Jupiteris |
yra penkta planeta nuo Saulės ir didžiausia Saulės sistemoje. Tai dujų milžinas, kurio masė yra tūkstantąja Saulės masės dalimi, tačiau du su puse karto didesnė už visų kitų planetų masę kartu sudėjus. Jis lengvai matomas plika akimi ir buvo žinomas nuo senovės laikų. |
| 2 | Jupiteris yra penkta planeta nuo Saulės ir didžiausia Saulės sistemoje. Tai dujų milžinas, kurio masė yra tūkstantąja Saulės masės dalimi, tačiau du su puse karto didesnė už visų kitų Saulės sistemos planetų masę kartu sudėjus. Jupiteris yra vienas ryškiausių objektų, matomų plika akimi naktiniame danguje, ir buvo žinomas senovės civilizacijoms dar prieš užrašytą istoriją. Santrauka 3 pagrindiniai faktai, kuriuos sužinojome: |
1. Jupiteris yra penkta planeta nuo Saulės ir didžiausia Saulės sistemoje. 2. Tai dujų milžinas, kurio masė yra tūkstantąja Saulės masės dalimi... 3. Jupiteris buvo matomas plika akimi nuo senovės laikų ... |
Šablonas užduotims yra iš anksto apibrėžtas šablonas, kurį galima išsaugoti ir naudoti pagal poreikį, siekiant užtikrinti nuoseklesnę vartotojo patirtį dideliu mastu. Paprasčiausia forma tai yra tiesiog rinkinys pavyzdžių, kaip šis iš OpenAI, kuris pateikia tiek interaktyvius užduoties komponentus (vartotojo ir sistemos pranešimus), tiek API valdomą užklausos formatą - kad būtų galima pakartotinai naudoti.
Sudėtingesnėje formoje, kaip šis pavyzdys iš LangChain, jis turi vietos rezervavimo ženklus, kuriuos galima pakeisti duomenimis iš įvairių šaltinių (vartotojo įvestis, sistemos kontekstas, išoriniai duomenų šaltiniai ir kt.), kad būtų galima dinamiškai generuoti užduotį. Tai leidžia sukurti pakartotinai naudojamų užduočių biblioteką, kuri gali būti naudojama nuosekliai vartotojo patirčiai programiškai užtikrinti dideliu mastu.
Galiausiai, tikroji šablonų vertė slypi galimybėje kurti ir publikuoti užduočių bibliotekas tam tikroms taikymo sritims - kur užduoties šablonas yra optimizuotas atspindėti taikymo srities kontekstą ar pavyzdžius, kurie daro atsakymus labiau aktualius ir tikslius tikslinės auditorijos atžvilgiu. Prompts For Edu saugykla yra puikus šio požiūrio pavyzdys, kurioje kaupiama užduočių biblioteka švietimo sričiai, akcentuojant pagrindinius tikslus, tokius kaip pamokų planavimas, mokymo programų kūrimas, mokinių konsultavimas ir kt.
Jei galvojame apie užduoties kūrimą kaip apie instrukcijos (užduoties) ir tikslo (pagrindinio turinio) turėjimą, tada antrinis turinys yra kaip papildomas kontekstas, kurį pateikiame, kad kažkaip paveiktume rezultatą. Tai gali būti parametrų derinimas, formatavimo instrukcijos, temų taksonomijos ir kt., kurie gali padėti modeliui pritaikyti savo atsakymą pagal norimus vartotojo tikslus ar lūkesčius.
Pavyzdžiui: Turint kursų katalogą su išsamiais metaduomenimis (pavadinimas, aprašymas, lygis, metaduomenų žymos, dėstytojas ir kt.) apie visus mokymo programos kursus:
- galime apibrėžti instrukciją „sutrumpinkite 2023 m. rudens semestro kursų katalogą“
- galime naudoti pagrindinį turinį, kad pateiktume keletą norimo rezultato pavyzdžių
- galime naudoti antrinį turinį, kad identifikuotume 5 svarbiausias „žymas“.
Dabar modelis gali pateikti santrauką formatu, parodytu keliuose pavyzdžiuose, tačiau jei rezultatas turi kelias žymas, jis gali teikti pirmenybę 5 žymoms, nurodytoms antriniame turinyje.
Dabar, kai žinome, kaip užduotys gali būti kuriamos, galime pradėti galvoti, kaip jas projektuoti, kad jos atspindėtų geriausias praktikas. Galime tai suskirstyti į dvi dalis - turėti tinkamą mąstyseną ir taikyti tinkamas technikas.
Užduočių kūrimas yra bandymų ir klaidų procesas, todėl atsiminkite tris pagrindinius veiksnius:
-
Domeno supratimas yra svarbus. Atsakymo tikslumas ir aktualumas priklauso nuo domeno, kuriame veikia taikymas ar vartotojas. Naudokite savo intuiciją ir domeno žinias, kad pritaikytumėte technikas. Pavyzdžiui, apibrėžkite domenui specifines asmenybes savo sistemos užduotyse arba naudokite domenui specifinius šablonus vartotojo užduotyse. Pateikite antrinį turinį, kuris atspindi domenui specifinius kontekstus, arba naudokite domenui specifinius užuominas ir pavyzdžius, kad nukreiptumėte modelį link pažįstamų naudojimo modelių.
-
Modelio supratimas yra svarbus. Žinome, kad modeliai yra stochastiški. Tačiau modelių įgyvendinimas taip pat gali skirtis pagal naudojamą mokymo duomenų rinkinį (iš anksto išmoktas žinias), teikiamas galimybes (pvz., per API ar SDK) ir turinio tipą, kuriam jie yra optimizuoti (pvz., kodas, vaizdai ar tekstas). Supraskite modelio, kurį naudojate, stipriąsias ir silpnąsias puses ir naudokite šias žinias, kad prioritetizuotumėte užduotis arba sukurtumėte pritaikytus šablonus, optimizuotus modelio galimybėms.
-
Iteracija ir validacija yra svarbios. Modeliai greitai tobulėja, kaip ir užduočių kūrimo technikos. Kaip domeno ekspertas, galite turėti kitą kontekstą ar kriterijus, kurie yra svarbūs jūsų specifinei taikymo sričiai, bet gali būti netaikomi platesnei bendruomenei. Naudokite užduočių kūrimo įrankius ir technikas, kad „pradėtumėte“ užduočių kūrimą, tada iteruokite ir validuokite rezultatus naudodamiesi savo intuicija ir domeno žiniomis. Užfiksuokite savo įžvalgas ir sukurkite žinių bazę (pvz., užduočių bibliotekas), kurią kiti galėtų naudoti kaip naują pagrindą greitesnėms iteracijoms ateityje.
Dabar pažvelkime į bendras geriausias praktikas, kurias rekomenduoja OpenAI ir Azure OpenAI specialistai.
| Kas | Kodėl |
|---|---|
| Įvertinkite naujausius modelius. | Naujos modelių kartos greičiausiai turės patobulintas funkcijas ir kokybę, tačiau gali būti brangesnės. Įvertinkite jų poveikį, tada priimkite migracijos sprendimus. |
| Atskirkite instrukcijas ir kontekstą | Patikrinkite, ar jūsų modelis/paslaugų teikėjas apibrėžia skyriklius, kad aiškiau atskirtų instrukcijas, pagrindinį ir antrinį turinį. Tai gali padėti modeliams tiksliau priskirti svorius žetonams. |
| Būkite konkretūs ir aiškūs | Pateikite daugiau detalių apie norimą kontekstą, rezultatą, ilgį, formatą, stilių ir kt. Tai pagerins tiek atsakymų kokybę, tiek nuoseklumą. Užfiksuokite receptus pakartotinai naudojamuose šablonuose. |
| Būkite aprašomieji, naudokite pavyzdžius | Modeliai gali geriau reaguoti į „parodyk ir pasakyk“ metodą. Pradėkite nuo zero-shot metodo, kai pateikiate tik instrukciją (be pavyzdžių), tada išbandykite few-shot kaip patobulinimą, pateikdami keletą norimo rezultato pavyzdžių. Naudokite analogijas. |
| Naudokite užuominas, kad pradėtumėte atsakymus | Nukreipkite modelį link norimo rezultato, pateikdami keletą pradinių žodžių ar frazių, kurias jis galėtų naudoti kaip atsakymo pradžią. |
| Kartokite | Kartais gali prireikti pakartoti instrukcijas modeliui. Pateikite instrukcijas prieš ir po pagrindinio turinio, naudokite instrukciją ir užuominą ir pan. Iteruokite ir validuokite, kad pamatytumėte, kas veikia. |
| Tvarka yra svarbi | Informacijos pateikimo modelio tvarka gali paveikti rezultatą, net ir mokymosi pavyzdžiuose, dėl recency bias. Išbandykite skirtingas galimybes, kad pamatytumėte, kas veikia geriausiai. |
| Suteikite modeliui „išeitį“ | Suteikite modeliui atsarginį atsakymą, kurį jis galėtų pateikti, jei dėl kokių nors priežasčių negalėtų užbaigti užduoties. Tai gali sumažinti modelių klaidingų ar išgalvotų atsakymų tikimybę. |
Kaip ir bet kuri geriausia praktika, atsiminkite, kad jūsų rezultatai gali skirtis priklausomai nuo modelio, užduoties ir domeno. Naudokite tai kaip pradinį tašką ir iteruokite, kad rastumėte, kas geriausiai veikia jums. Nuolat peržiūrėkite savo užduočių kūrimo procesą, kai atsiranda nauji modeliai ir įrankiai, sutelkdami dėmesį į proceso mastelį ir atsakymų kokybę.
Sveikiname! Jūs pasiekėte pamokos pabaigą! Dabar laikas išbandyti kai kurias iš šių sąvokų ir technikų su realiais pavyzdžiais!
Mūsų užduočiai naudosime Jupyter Notebook su pratimais, kuriuos galėsite atlikti interaktyviai. Taip pat galite išplėsti Notebook, pridėdami savo Markdown ir kodo langelius, kad savarankiškai tyrinėtumėte idėjas ir technikas.
- (Rekomenduojama) Paleiskite GitHub Codespaces
- (Alternatyva) Klonuokite saugyklą į savo vietinį įrenginį ir naudokite ją su Docker Desktop
- (Alternatyva) Atidarykite Notebook su savo pasirinkta Notebook vykdymo aplinka.
- Nukopijuokite
.env.copyfailą iš saugyklos šaknies į.envir užpildykiteAZURE_OPENAI_API_KEY,AZURE_OPENAI_ENDPOINTirAZURE_OPENAI_DEPLOYMENTreikšmes. Grįžkite į Mokymosi smėlio dėžės skyrių, kad sužinotumėte, kaip tai padaryti.
- Pasirinkite vykdymo branduolį. Jei naudojate 1 arba 2 variantą, tiesiog pasirinkite numatytąjį Python 3.10.x branduolį, kurį teikia kūrimo konteineris.
Jūs pasiruošę vykdyti pratimus. Atminkite, kad čia nėra teisingų ar neteisingų atsakymų - tiesiog tyrinėkite galimybes bandymų ir klaidų būdu ir kurkite intuiciją, kas veikia tam tikram modeliui ir taikymo sričiai.
Dėl šios priežasties šioje pamokoje nėra Kodo sprendimų segmentų. Vietoj to, Notebook turės Markdown langelius pavadinimu „Mano sprendimas:“, kuriuose bus parodytas vienas pavyzdinis atsakymas kaip nuoroda.
Kurie iš šių yra geri užduočių pavyzdžiai, atitinkantys pagrįstas geriausias praktikas?
- Parodyk man raudono automobilio vaizdą
- Parodyk man raudono automobilio, Volvo markės ir XC90 modelio, stovinčio prie uolos su besileidžiančia saule, vaizdą
- Parodyk man raudono automobilio, Volvo markės ir XC90 modelio, vaizdą
A: 2, tai geriausia užduotis, nes ji pateikia detales apie „ką“ ir eina į specifiką (ne bet koks automobilis, o konkretus markės ir modelio) ir taip pat aprašo bendrą aplinką. 3 yra kitas geriausias, nes jame taip pat yra daug aprašymo.
Pabandykite pasinaudoti „užuominos“ technika su užduotimi: Užbaikite sakinį „Parodyk man raudono automobilio, Volvo markės ir “. Ką jis atsako, ir kaip galėtumėte tai patobulinti?
Norite sužinoti daugiau apie skirtingas užduočių kūrimo sąvokas? Eikite į [tęstinio mokymosi puslapį](https://
Atsakomybės apribojimas:
Šis dokumentas buvo išverstas naudojant AI vertimo paslaugą Co-op Translator. Nors siekiame tikslumo, prašome atkreipti dėmesį, kad automatiniai vertimai gali turėti klaidų ar netikslumų. Originalus dokumentas jo gimtąja kalba turėtų būti laikomas autoritetingu šaltiniu. Kritinei informacijai rekomenduojama naudoti profesionalų žmogaus vertimą. Mes neprisiimame atsakomybės už nesusipratimus ar neteisingus aiškinimus, atsiradusius dėl šio vertimo naudojimo.







