Share
Embed
watsonx.ai Dojo #3 プロンプトエンジニアリング入門
Connpassイベント: https://ibm-developer.connpass.com/event/330931/
大規模言語モデルを操作するためのプロンプトを作成する上で、補助的な情報を加えて質問の意図を明確にする方法、例示により回答の精度を高める方法などについて学びます。大規模言語モデルに改良を加えずに、期待した回答に近づける方法を試していきましょう。
Akira Onishi (IBM) PRO
October 15, 2024
Transcript
26 slides
-
ࣗݾհ 1SPQFSUZ 7BMVF ࢯ໊ େ জ Y-JOLFE*O POJBL *5ۀքྺ
ۙͷ৬ྺ Microsoft *#.🎉 )BTI5BH ͍͍Ͷ͐੩Ԭੜ׆RVBOUJD ࠲ӈͷ ౿·Εͯͳ্ཱ͓͕ͪΔಓͷ Α͘͏ٕ มͰࣗΛϙδςΟϒʹ IUUQTXXXGBDFCPPLDPNBLJSBPOJTIJ 'BDFCPPLʮ͓ʹ͋͘ʯͰݕࡧ -
γϯϓϧͳϢʔεέʔεͰখ͘͞"*Λ׆༻͠ͳ͕Βɺ"*ΞϓϦΛ։ൃ͠ɺ ஈ֊తʹൃలͤ͞ɺۀͷσδλϧԽΛਐԽͤ͞Δ ϏδωεͷͨΊͷ"*ɺϢʔεέʔε จॻੜ ࣭ٙԠ ίʔυੜ ྨ ݴ༿ͷநग़ ཁ ݕࡧʴཁ
3"( ࣗಈԽ 3"(3FUSJFWBM"VHNFOUFE(FOFSBUJPOɺ"*Ϟσϧ͕Βͳ͍ใΛݕࡧ͠ɺͦͷ݁ՌΛͬͯ"*ϞσϧͰςΩετΛੜ͢Δ ςΩετ ੜ ༁ ϋϯζΦϯ༰ -
%FNPΛݟͯײ͡·͠ΐ͏ εϥΠυ͚ͩͷߨԋͰͳ͘ɺ%FNPΛަ͑ͨηογϣϯΛఏڙ͠·͢ श͏ΑΓ׳Ε·͠ΐ͏ ٕज़Λମݧ͢ΔͨΊͷԋशΛ௨ͯ͡ɺٕज़ΛֶͿ͖͔͚ͬΛ࡞Γ·͢ ࣭େܴɺηογϣϯΛҰॹʹ࡞Γ·͠ΐ͏ ߨࢣֶࣗͼͳ͕ΒηογϣϯΛ࣮ࢪ͍ͯ͠·͢ օ͞Μ͔Βؾ͖ϑΟʔυόοΫΛͲΜͲΜڞ༗͍ͯͩ͘͠͞
ػցֶशϞσϧ"*ϞσϧɺXBUTPOYBJΛ༑ୡʹ͠Α͏ ࠷ऴඪɺօ͞Μ͕طଘͷϞσϧΛͬͯɺ"*ΞϓϦΛ։ൃ͠ɺར༻ ͢Δ͜ͱͰ͢ ୭͕࣮ߦͰ͖ͳ͍ɾқ͕ߴ͍ςʔϚʹ৮Ε·ͤΜ ػցֶशϞσϧ"*ϞσϧΛθϩ͔Β։ൃ͢ΔੈքऔΓ্͛·ͤΜ XBUTPOYBJ%PKPͷάϥϯυɾϧʔϧ -
XBUTPOYBJ%PKPୈճͱୈճ ճ λΠτϧ ࣮ࢪ ੜ"*ͱ͖߹͏ͨΊͷ४උฤ ਫ *#.XBUTPOYBJΛ׆༻͢Δʹ͋ͨΓɺੜ"*ͱ ͖߹͏ͨΊʹ͓ͬͯ͘ͱྑ͍ٕज़ʹ͍ͭͯɺ
͘ઙֶ͘ͼ·͢ɻಛʹલఏࣝෆཁͰ͕͢ɺ 1ZUIPOݴޠΛ͓ͬͯ͘ͱɺཧղ͕ਂ·Γ·͢ɻ ΦʔϓϯιʔεطଘͷϥΠϒϥϦΛͬͯੜ "*Λಈ࡞ͤ͞ΔͨΊͷڥͷશମ૾ΛΔ͜ͱͰɺ "*ϓϥοτϑΥʔϜͰ͋Δ*#. XBUTPOYBJͷओ ཁͳٕज़ཁૉΛֶΜͰ͍͖·͠ΐ͏ɻ ੜ"*ΛͬͨΞϓϦ։ൃɺೖฤ ਫ *#.XBUTPOYBJͷϓϩϯϓτϥϘΛͬͯେن ݴޠϞσϧΛૢ࡞͢Δํ๏ɺग़དྷ্͕ͬͨϓϩϯ ϓτΛΞϓϦ͔Βݺͼग़͢ํ๏Λֶͼ·͢ɻ *#. XBUTPOYBJʹଂ͞Ε͍ͯΔେنݴޠϞσ ϧΛΓɺ͍ΖΜͳϞσϧΛ࣮ࡍʹࢼ͍͖ͯ͠· ͠ΐ͏ɻ -
XBUTPOYBJ%PKPୈճͱୈճ ճ λΠτϧ ࣮ࢪ ϓϩϯϓτΤϯδχΞϦϯάೖ ਫ େنݴޠϞσϧΛૢ࡞͢ΔͨΊͷϓϩϯϓτΛ ࡞͢Δ্ͰɺิॿతͳใΛՃ࣭͑ͯͷҙਤ
Λ໌֬ʹ͢Δํ๏ɺྫࣔʹΑΓճͷਫ਼ΛߴΊ Δํ๏ͳͲʹֶ͍ͭͯͼ·͢ɻେنݴޠϞσϧ ʹվྑΛՃ͑ͣʹɺظͨ͠ճʹ͚ۙͮΔํ๏ Λࢼ͍͖ͯ͠·͠ΐ͏ɻ ੜ"*ΛͬͨΞϓϦ։ൃɺԠ༻ ฤ ਫ େنݴޠϞσϧͷ੍ࣄ߲ΛΓӽ͑ΔͨΊʹɺ 3"(-BOH$IBJOΛͬͨ"*ΞϓϦͷ։ൃʹͭ ֶ͍ͯͼ·͢ɻ͜Ε·ͰͷճΑΓएׯқ͕ ্͕Γ·͕͢ɺαϯϓϧίʔυΛݟͳ͕Βɺงғ ؾΛ௫Έɺօ͞Μ͕։ൃ͍ͨ͠"*ΞϓϦͷ ΛߴΊ͍͖ͯ·͠ΐ͏ɻ -
XBUTPOYBJ%PKPୈճͱୈճ ճ λΠτϧ ࣮ࢪ ϑΝΠϯνϡʔχϯάͱ *OTUSVDU-BC ਫ ࣭ͱ͑Λ༻ҙ͢Δ͜ͱͰɺେنݴޠϞσ
ϧʹ৽͍ࣝ͠ΛՃ͢ΔͨΊͷϑΝΠϯ νϡʔχϯάͷํ๏Λֶͼ·͢ɻ·ͨɺاۀಠ ࣗͷେنݴޠϞσϧͷܧଓతͳվྑʹ࠷దͳ *OTUSVDU-BCʹֶ͍ͭͯͼ·͢ɻ ܧଓతͳ"*ΞϓϦ։ൃͱల։ ਫ ͜Ε·Ͱֶश͖ͯͨ͜͠ͱΛΈ߹Θͤͯɺେ نݴޠϞσϧΛར༻ͨ͠"*ΞϓϦͷܧଓతͳ ։ൃͱల։ͷํ๏Λֶͼ·͢ɻاۀಠࣗͷ"*Ξ ϓϦ͚ͩͰͳ͘ɺ"*ΛΈࠐΜͩιϦϡʔ γϣϯͷܧଓతͳൃలɺύʔτφʔΤίγες ϜͷൃలͳͲΛҰॹʹߟ͍͖͑ͯ·͢ɻ -
ϋϯζΦϯڥ֬ೝ νϟοτʹΑΔճΛ͓ئ͍͠·͢ ࠲ֶฒͼʹϋϯζΦϯͷ༰%FNP ͠ڥ͕͍ͬͯͳ͍ํɺ४උΛ͠ͳ͕Β͝ཡ͍ͩ͘͞ ຊɺͲ͏ͯ͠ڥΛ͑ΒΕͳ͍ํɺ%FNPΛ͝ཡʹͳΓɺ ޙɺ͓ࢼ͍ͩ͘͠͞ օ͞ΜࣗͰͷϋϯζΦϯ
ࠓճͷൣғɺϓϩϯϓτɾϥϘͷԠ༻తͳػೳΛར༻͠·͢ ຊͷྲྀΕ -
%PKPͷࢿྉΛࢀߟʹɺ1ZUIPOͷڥΛ͍͑ͯͩ͘͞ ˞ݱ࣌Ͱ*OTUSVDU-BC͕1ZUIPOʹରԠ͍ͯ͠ͳ͍͜ͱ͕ཧ༝Ͱ͢ ˞ࠓճͷ1ZUIPOΛͬͨԋश1ZUIPOʹ͓͍ͯಈ࡞͢Δ͜ͱΛ֬ೝ͍ͯ͠·͢ 8JOEPXTڥʹ͓͍ͯɺ8JOEPXT4VCTZTUFNGPS-JOVYͱ6CVOUVΛͬͯ-JOVYڥΛ͑ ͯɺͦͷ্ʹ1ZUIPOͷ࣮ߦڥΛ͍͑ͯͩ͘͞ ˞8JOEPXT .BDͰಉ͡$-*ૢ࡞ͰϋϯζΦϯΛਐΊΒΕΔΑ͏ʹ͢ΔͨΊ ࠓޙɺෳͷ1ZUIPOόʔδϣϯʹΓସ͑ΒΕΔΑ͏ɺQZFOWʹΑΔԾڥͷߏஙΛਪ͠ ·͢ .BDڥͰ1ZUIPOͷϏϧυʹࣦഊ͢Δ߹ɺ9DPEF$PNNBOE5PPMTΛ࠶Πϯετʔϧͯ͘͠
͍ͩ͞YDPEFTFMFDUJOTUBMM XBUTPOYBJ%PKPʹࢀՃ͍ͯ͠ͳ͍ํͷ͓ئ͍ -
४උͷͨΊͷࢀߟࢿྉ IUUQTTQFBLFSEFDLDPNPOJBLJCNXBUTPOYBJEPKPQSFSFR ϋϯζΦϯڥͷ४උ ڥ ରऀ *#.5FDIOPMPHZ;POF *#.άϧʔϓࣾһ *#.1BSUOFS1MVTʹొࡁΈͷϏδωεɾύʔτφʔ༷ *#.XBUTPOYBJແྉධՁ൛ ҰൠͷࢀՃऀͰɺ*#.$MPVEͷΞΧϯτΛ͓࣋ͪͰͳ͍߹
ධՁ൛ͷΞΫηεʹΫϨδοτɾΧʔυෆཁ ܦաޙɺΫϨδοτɾΧʔυΛొ͢Δͱैྔ՝ۚΞΧϯτͱ ͯ͠ɺશͯͷ*#.$MPVEͷαʔϏε͕͝ར༻͍͚ͨͩ·͢ *#.$MPVE ҰൠͷࢀՃऀͰɺ*#.$MPVEͷΞΧϯτΛ͓࣋ͪͷ߹ -
ར༻͢ΔݴޠϞσϧ*#.HSBOJOUFCKBQBOFTF ϑϦʔɾϑΥʔϜ͔Βग़ൃͯ͠ɺจ຺ΛՃͯ͠ɺ݁ՌΛվળ͢Δ HSBOJUFCKBQBOFTFݴޠϞσϧΛ͍ɺϑϦʔɾϑΥʔϜͷϓϩϯϓτΛվ ྑ͠ͳ͕ΒɺํͷັྗΛ͑ΔͨΊͷจষΛੜ͢Δ ߏԽͨ͠ϓϩϯϓτʹྫࣔΛՃ࣮ͯ͠ߦ͠ɺ݁ՌΛվળ͢Δ ϓϩϯϓτɾςϯϓϨʔτΛ8FC"1*ͱͯ͠σϓϩΠ͢Δ HSBOJUFCKBQBOFTFݴޠϞσϧΛ͍ɺߏԽ͞ΕͨϓϩϯϓτΛվྑ͠ͳ ͕ΒɺํͷັྗΛ͑ΔͨΊͷจষΛੜ͢Δ
8FC"1*ͱͯ͠σϓϩΠͨ͠αʔϏεΛݺͼग़͢ XBUTPOYBJʹσϓϩΠࡁΈͷ8FC"1*Λݺͼग़͢ ຊͷϋϯζΦϯ੩ԬݝͷັྗΛ͑ΔจষΛੜ͢Δ -
'FXTIPUϓϩϯϓςΟϯά ຊͷείʔϓ ͍͔ͭ͘ͷྫΛϓϩϯϓτͷதʹؚΊͯɺͦͷ༰ΛͬͯςΩετΛੜ 3"( XBUTPOYBJ%PKPୈճͰ༧ఆ ඞཁͳใΛݕࡧ্ͨ͠Ͱɺͦͷจ຺Λ'FXTIPUϓϩϯϓςΟϯάͷΑ͏ʹ ϓϩϯϓτʹΈࠐΜͰɺͦͷ༰ΛͬͯςΩετΛੜ ϑΝΠϯɾνϡʔχϯά XBUTPOYBJ%PKPୈճͰ༧ఆɺ5VOJOH4UVEJP ेɺඦɺઍͷ࣭ٙԠͷϖΞΛͬͯɺݴޠϞσϧʹՃֶशΛߦ͏
શͳνϡʔχϯά ຊ%PKPͷର֎ େྔͷσʔλɺػցֶशͷߴͳεΩϧΛͬͯɺݴޠϞσϧΛ υϝΠϯݻ༗ͷλεΫʹ࠷దԽ͢Δ ݴޠϞσϧ͕Βͳ͍ࣝΛՃ͢Δํ๏ -
ϓϩδΣΫτɺεϖʔεɺσϓϩΠϝϯτͷؔ εϖʔε ϓϩδΣΫτ ϓϩδΣΫτ ϓϩϞʔτ σϓϩΠϝϯτ σϓϩΠϝϯτ σϓϩΠ σʔλ ࢿ࢈
63- 63- σʔλ ࢿ࢈ σʔλ ࢿ࢈ -
σϓϩΠࡁΈͷϓϩϯϓτɾςϯϓϨʔτΛݺͼग़͢ 1ZUIPO 6CVOUVNBD04 TIJ[DIBUQZ ίϯϐϡʔλʔ ϧʔλʔ ϧʔλʔ ϩʔΧϧڥ *#.XBUTPOYBTB4FSWJDF ෳͷ
ίϯϐϡʔλʔ (16 3FE)BU0QFO4IJGULT XBUTPOY8BUTPO4UVEJP 8BUTPO.BDIJOF-FBSOJOH HFOFSBUF@UFYU "1* σϓϩΠࡁΈࢿ࢈ 8FC ΞϓϦ ΞΫηε τʔΫϯ client = APIClient {"url": url,"apikey": api_key}) #ibm_watsonx_ai client.set.default_space(space_id) params={"prompt_variables": prompt_vars} generated_response = client.deployments.generate_text(deployment_id, params=params) 0CKFDU 4UPSBHF -
XBUTPOYBJͷΑ͏ͳ"*ϓϥοτϑΥʔϜ͕ඞཁͳཧ༝ ΞϓϦʢ8FCϢʔβʔΠϯλʔϑΣΠεʣ ΞϓϦɾϓϥοτϑΥʔϜ "*ΞϓϦ Ϗδωεɾ ϩδοΫ "*Ϟσϧ ϥΠϒϥϦ"1* "*ΞϓϦɾϓϥοτϑΥʔϜ ͍߹Θͤ
ੜ݁Ռ ཤྺ σʔλ ༻ྔ σʔλ "*ͷ࣮ݧΦʔϓϯιʔεͰՄೳ ҰํɺاۀϨϕϧͷల։՝͕ଟ͍ 4BB4൛ͷXBUTPOYBJΛ͑ɺ ΞϓϦ։ൃɺల։ɺӡ༻ʹूதͰ͖Δ -
IUUQTXXXJCNDPNKQKBFWFOUTUFDIYDIBOHF • *#.ͱςΫϊϩδʔʹؔ͢Δ࠷৽ใΛ͓ಧ͚͠ɺମײ͍͚ͨͩ·͢ɻ ࠷৽ٕज़ͷηογϣϯɺσϞɺϋϯζΦϯͷΛఏڙ͠·͢ɻ ·ͨɺίϛϡχςΟʔɾΠϕϯτɺٕज़ऀͷօ༷ͱͷަྲྀͷΛ௨ͯ͡ɺ ٕज़ऀಉֶ͕࢜ͼɺܨ͕ΔωοτϫʔΩϯάͷػձ͝ఏڙ͠·͢ɻ • ࣌ɿ݄ ਫ d
࠙ձؚΉ ձɿϗςϧխঀԂ౦ژ ࠇӺ͔Βెา • ࢀՃඅɿແྉ • ΠϕϯτެࣜαΠτ ࠷ޙʹએɿ*#.5FDI9DIBOHF+BQBO -
ϫʔΫγϣοϓɺηογϣϯɺ͓Αͼࢿྉɺ*#.·ͨηογϣϯൃදऀʹΑͬͯ४උ͞ΕɺͦΕͧΕಠࣗͷݟղΛөͨ͠ͷͰ͢ɻͦΕΒใ ఏڙͷతͷΈͰఏڙ͞Ε͓ͯΓɺ͍͔ͳΔࢀՃऀʹରͯ͠๏త·ͨͦͷଞͷࢦಋॿݴΛҙਤͨ͠ͷͰͳ͘ɺ·ͨ*#.αʔϏε͕͓ ٬༷ʹద༻͋Δಛఆͷ๏ྩʹద߹͢Δ͜ͱΛอূ͢ΔͷͰ͋Γ·ͤΜɻຊߨԋࢿྉʹؚ·Ε͍ͯΔใʹ͍ͭͯɺશੑͱਖ਼֬ੑΛظ͢ΔΑ͏ Ί͓ͯΓ·͕͢ɺʮݱঢ়ͷ··ʯఏڙ͞Εɺ໌ࣔ·ͨࣔʹ͔͔ΘΒͣɺۀੑɺಛఆͷతͷద߹ੑɺඇ৵ੑΛؚΊɺ͍͔ͳΔอূΘͳ͍ ͷͱ͠·͢ɻຊߨԋࢿྉ·ͨͦͷଞͷࢿྉͷ༻ʹΑͬͯɺ͋Δ͍ͦͷଞͷؔ࿈ʹΑͬͯɺ͍͔ͳΔଛ͕ੜͨ͡߹ɺ*#.ΛෛΘͳ͍ ͷͱ͠·͢ɻ ຊߨԋࢿྉͰݴٴ͞ΕΔ*#.ɺϓϩάϥϜɺ·ͨαʔϏεɺ*#.͕ϏδωεΛߦ͍ͬͯΔͯ͢ͷࠃɾҬͰ͝ఏڙՄೳͳΘ͚ Ͱ͋Γ·ͤΜɻຊߨԋࢿྉͰݴٴ͞ΕΔকདྷͷలʢϦϦʔεػೳΛؚΉʣɺࢢػձ·ͨͦͷଞͷཁҼʹج͍ͮͯ*#.ಠࣗͷܾ ఆݖΛ͍ͬͯͭͰมߋͰ͖Δͷͱ͠ɺকདྷͷ·ͨػೳ͕༻ՄೳʹͳΔ͜ͱɺ͘͠ಛఆͷ݁ՌΛ֬͢Δ͜ͱΛҙਤ͢ΔͷͰ͋Γ ·ͤΜɻຊߨԋࢿྉɺݴٴ͞ΕΔ
*#.·ͨαʔϏεʹద༻͋Δܖ݅Λมߋ͢ΔͷͰɺՃͷද໌·ͨอূΛҙਤ͢ΔͷͰ͋Γ· ͤΜɻ ຊߨԋࢿྉʹؚ·Ε͍ͯΔ༰ɺࢀՃऀͷ׆ಈʹΑͬͯಛఆͷ݁Ռ͕ੜ͡Δͱड़Δɺ·ͨ҉ࣔ͢Δ͜ͱΛҙਤͨ͠ͷͰɺ·ͨͦͷΑ͏ͳ݁Ռ ΛੜΉͷͰ͋Γ·ͤΜɻ ύϑΥʔϚϯεɺཧ͞Εͨڥʹ͓͍ͯඪ४తͳ*#.ϕϯνϚʔΫΛ༻ͨ͠ଌఆͱ༧ଌʹج͍͍ͮͯ·͢ɻϢʔβʔ ͕ܦݧ͢Δ࣮ࡍͷεϧʔϓοτύϑΥʔϚϯεɺϢʔβʔͷδϣϒɾετϦʔϜʹ͓͚ΔϚϧνϓϩάϥϛϯάͷྔɺೖग़ྗߏɺετϨʔδߏɺ ͓Αͼॲཧ͞ΕΔϫʔΫϩʔυͳͲͷߟྀࣄ߲ΛؚΉɺଟ͘ͷཁҼʹԠͯ͡มԽ͠·͢ɻ͕ͨͬͯ͠ɺݸʑͷϢʔβʔ͕͜͜Ͱड़ΒΕ͍ͯΔͷͱ ಉ༷ͷ݁ՌΛಘΒΕΔͱ֬͢ΔͷͰ͋Γ·ͤΜɻهड़͞Ε͍ͯΔͯ͢ͷ͓٬༷ࣄྫɺͦΕΒͷ͓٬༷͕ͲͷΑ͏ʹ*#.Λ༻͔ͨ͠ɺ· ͨͦΕΒͷ͓٬༷͕ୡͨ݁͠Ռͷ࣮ྫͱͯࣔ͠͞ΕͨͷͰ͢ɻ࣮ࡍͷڥίετ͓ΑͼύϑΥʔϚϯεಛੑɺ͓٬༷͝ͱʹҟͳΔ߹͕͋Γ·͢ɻ • *#.ɺ*#.ϩΰɺJCNDPNɺ%C *#.XBUTPOY *#.$MPVEɺ ੈքͷଟ͘ͷࠃͰొ͞Εͨ*OUFSOBUJPOBM#VTJOFTT.BDIJOFT$PSQPSBUJPOͷඪͰ͢ɻଞͷ ໊͓ΑͼαʔϏε໊ɺͦΕͧΕ*#.·֤ͨࣾͷඪͰ͋Δ߹͕͋Γ·͢ɻݱ࣌Ͱͷ *#.ͷඪϦετʹ͍ͭͯɺXXXJCNDPNMFHBMDPQZUSBEFTIUNM Λ͝ཡ͍ͩ͘͞ɻ • 4USFBNMJU"QBDIFϥΠηϯεͰެ։͞Ε͍ͯΔΦʔϓϯιʔεͷϥΠϒϥϦʔͰ͢ɻ