Upgrade to Pro — share decks privately, control downloads, hide ads and more …

watsonx.ai Dojo #3 プロンプトエンジニアリング入門

watsonx.ai Dojo #3 プロンプトエンジニアリング入門

Connpassイベント: https://ibm-developer.connpass.com/event/330931/

大規模言語モデルを操作するためのプロンプトを作成する上で、補助的な情報を加えて質問の意図を明確にする方法、例示により回答の精度を高める方法などについて学びます。大規模言語モデルに改良を加えずに、期待した回答に近づける方法を試していきましょう。

Akira Onishi (IBM)

October 15, 2024
Tweet

More Decks by Akira Onishi (IBM)

Other Decks in Programming

Transcript

  1. ࣗݾ঺հ 1SPQFSUZ 7BMVF ࢯ໊ େ੢ জ Y-JOLFE*O POJBL *5ۀքྺ ೥໨

    ௚ۙͷ৬ྺ Microsoft ೥ *#.೥໨🎉 )BTI5BH ͍͍Ͷ͐੩Ԭੜ׆RVBOUJD ࠲ӈͷ໏ ౿·Εͯ΋ͳ্ཱ͓͕ͪΔಓͷ૲ Α͘࢖͏ٕ ೴಺ม׵Ͱࣗ෼ΛϙδςΟϒʹ IUUQTXXXGBDFCPPLDPNBLJSBPOJTIJ 'BDFCPPLʮ͓ʹ͋͘ʯͰݕࡧ
  2. γϯϓϧͳϢʔεέʔεͰখ͘͞"*Λ׆༻͠ͳ͕Βɺ"*ΞϓϦΛ։ൃ͠ɺ ஈ֊తʹൃలͤ͞ɺۀ຿ͷσδλϧԽΛਐԽͤ͞Δ ϏδωεͷͨΊͷ"*ɺϢʔεέʔε จॻੜ੒ ࣭ٙԠ౴ ίʔυੜ੒ ෼ྨ ݴ༿ͷநग़ ཁ໿ ݕࡧʴཁ໿

    3"( ࣗಈԽ 3"(3FUSJFWBM"VHNFOUFE(FOFSBUJPOɺ"*Ϟσϧ͕஌Βͳ͍৘ใΛݕࡧ͠ɺͦͷ݁ՌΛ࢖ͬͯ"*ϞσϧͰςΩετΛੜ੒͢Δ ςΩετ ੜ੒ ຋༁ ϋϯζΦϯ಺༰
  3.  %FNPΛݟͯײ͡·͠ΐ͏ εϥΠυ͚ͩͷߨԋͰ͸ͳ͘ɺ%FNPΛަ͑ͨηογϣϯΛఏڙ͠·͢  श͏ΑΓ׳Ε·͠ΐ͏ ٕज़Λମݧ͢ΔͨΊͷԋशΛ௨ͯ͡ɺٕज़ΛֶͿ͖͔͚ͬΛ࡞Γ·͢  ࣭໰େ׻ܴɺηογϣϯΛҰॹʹ࡞Γ·͠ΐ͏ ߨࢣࣗ਎΋ֶͼͳ͕ΒηογϣϯΛ࣮ࢪ͍ͯ͠·͢ օ͞Μ͔Β΋ؾ෇͖΍ϑΟʔυόοΫΛͲΜͲΜڞ༗͍ͯͩ͘͠͞

     ػցֶशϞσϧ΍"*ϞσϧɺXBUTPOYBJΛ༑ୡʹ͠Α͏ ࠷ऴ໨ඪ͸ɺօ͞Μ͕طଘͷϞσϧΛ࢖ͬͯɺ"*ΞϓϦΛ։ൃ͠ɺར༻ ͢Δ͜ͱͰ͢  ୭΋͕࣮ߦͰ͖ͳ͍ɾ೉қ౓͕ߴ͍ςʔϚʹ͸৮Ε·ͤΜ ػցֶशϞσϧ΍"*ϞσϧΛθϩ͔Β։ൃ͢Δੈք͸औΓ্͛·ͤΜ XBUTPOYBJ%PKPͷάϥϯυɾϧʔϧ
  4. XBUTPOYBJ%PKPୈճͱୈճ ճ λΠτϧ ࣮ࢪ೔  ੜ੒"*ͱ޲͖߹͏ͨΊͷ४උฤ  ਫ *#.XBUTPOYBJΛ׆༻͢Δʹ͋ͨΓɺੜ੒"*ͱ ޲͖߹͏ͨΊʹ஌͓ͬͯ͘ͱྑ͍ٕज़ʹ͍ͭͯɺ

    ޿͘ઙֶ͘ͼ·͢ɻಛʹલఏ஌ࣝ͸ෆཁͰ͕͢ɺ 1ZUIPOݴޠΛ஌͓ͬͯ͘ͱɺཧղ͕ਂ·Γ·͢ɻ Φʔϓϯιʔε΍طଘͷϥΠϒϥϦΛ࢖ͬͯੜ੒ "*Λಈ࡞ͤ͞ΔͨΊͷ؀ڥͷશମ૾Λ஌Δ͜ͱͰɺ "*ϓϥοτϑΥʔϜͰ͋Δ*#. XBUTPOYBJͷओ ཁͳٕज़ཁૉΛֶΜͰ͍͖·͠ΐ͏ɻ  ੜ੒"*Λ࢖ͬͨΞϓϦ։ൃɺೖ໳ฤ  ਫ *#.XBUTPOYBJͷϓϩϯϓτϥϘΛ࢖ͬͯେن໛ ݴޠϞσϧΛૢ࡞͢Δํ๏ɺग़དྷ্͕ͬͨϓϩϯ ϓτΛΞϓϦ͔Βݺͼग़͢ํ๏Λֶͼ·͢ɻ *#. XBUTPOYBJʹ಺ଂ͞Ε͍ͯΔେن໛ݴޠϞσ ϧΛ஌Γɺ͍ΖΜͳϞσϧΛ࣮ࡍʹࢼ͍͖ͯ͠· ͠ΐ͏ɻ
  5. XBUTPOYBJ%PKPୈճͱୈճ ճ λΠτϧ ࣮ࢪ೔  ϓϩϯϓτΤϯδχΞϦϯάೖ໳  ਫ େن໛ݴޠϞσϧΛૢ࡞͢ΔͨΊͷϓϩϯϓτΛ ࡞੒͢Δ্Ͱɺิॿతͳ৘ใΛՃ࣭͑ͯ໰ͷҙਤ

    Λ໌֬ʹ͢Δํ๏ɺྫࣔʹΑΓճ౴ͷਫ਼౓ΛߴΊ Δํ๏ͳͲʹֶ͍ͭͯͼ·͢ɻେن໛ݴޠϞσϧ ʹվྑΛՃ͑ͣʹɺظ଴ͨ͠ճ౴ʹ͚ۙͮΔํ๏ Λࢼ͍͖ͯ͠·͠ΐ͏ɻ  ੜ੒"*Λ࢖ͬͨΞϓϦ։ൃɺԠ༻ ฤ  ਫ େن໛ݴޠϞσϧͷ੍໿ࣄ߲Λ৐Γӽ͑ΔͨΊʹɺ 3"(΍-BOH$IBJOΛ࢖ͬͨ"*ΞϓϦͷ։ൃʹͭ ֶ͍ͯͼ·͢ɻ͜Ε·ͰͷճΑΓ΋एׯ೉қ౓͕ ্͕Γ·͕͢ɺαϯϓϧίʔυΛݟͳ͕Βɺงғ ؾΛ௫Έɺօ͞Μ͕։ൃ͍ͨ͠"*ΞϓϦͷ׬੒ ౓ΛߴΊ͍͖ͯ·͠ΐ͏ɻ
  6. XBUTPOYBJ%PKPୈճͱୈճ ճ λΠτϧ ࣮ࢪ೔  ϑΝΠϯνϡʔχϯάͱ *OTUSVDU-BC  ਫ ࣭໰ͱ౴͑Λ༻ҙ͢Δ͜ͱͰɺେن໛ݴޠϞσ

    ϧʹ৽͍͠஌ࣝΛ௥Ճ͢ΔͨΊͷϑΝΠϯ νϡʔχϯάͷํ๏Λֶͼ·͢ɻ·ͨɺاۀಠ ࣗͷେن໛ݴޠϞσϧͷܧଓతͳվྑʹ࠷దͳ *OTUSVDU-BCʹֶ͍ͭͯͼ·͢ɻ  ܧଓతͳ"*ΞϓϦ։ൃͱల։  ਫ ͜Ε·Ͱֶश͖ͯͨ͜͠ͱΛ૊Έ߹Θͤͯɺେ ن໛ݴޠϞσϧΛར༻ͨ͠"*ΞϓϦͷܧଓతͳ ։ൃͱల։ͷํ๏Λֶͼ·͢ɻاۀಠࣗͷ"*Ξ ϓϦ͚ͩͰ͸ͳ͘ɺ"*Λ૊ΈࠐΜͩιϦϡʔ γϣϯͷܧଓతͳൃలɺύʔτφʔΤίγες Ϝ΁ͷൃలͳͲΛҰॹʹߟ͍͖͑ͯ·͢ɻ
  7. ४උͷͨΊͷࢀߟࢿྉ IUUQTTQFBLFSEFDLDPNPOJBLJCNXBUTPOYBJEPKPQSFSFR ϋϯζΦϯ؀ڥͷ४උ ؀ڥ ର৅ऀ *#.5FDIOPMPHZ;POF *#.άϧʔϓࣾһ *#.1BSUOFS1MVTʹొ࿥ࡁΈͷϏδωεɾύʔτφʔ༷ *#.XBUTPOYBJ೔ແྉධՁ൛ ҰൠͷࢀՃऀͰɺ*#.$MPVEͷΞΧ΢ϯτΛ͓࣋ͪͰͳ͍৔߹

    ධՁ൛΁ͷΞΫηεʹ͸ΫϨδοτɾΧʔυ͸ෆཁ ೔ܦաޙ͸ɺΫϨδοτɾΧʔυΛొ࿥͢Δͱैྔ՝ۚΞΧ΢ϯτͱ ͯ͠ɺશͯͷ*#.$MPVEͷαʔϏε͕͝ར༻͍͚ͨͩ·͢ *#.$MPVE ҰൠͷࢀՃऀͰɺ*#.$MPVEͷΞΧ΢ϯτΛ͓࣋ͪͷ৔߹
  8. σϓϩΠࡁΈͷϓϩϯϓτɾςϯϓϨʔτΛݺͼग़͢ 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
  9. XBUTPOYBJͷΑ͏ͳ"*ϓϥοτϑΥʔϜ͕ඞཁͳཧ༝ ΞϓϦʢ8FCϢʔβʔΠϯλʔϑΣΠεʣ ΞϓϦɾϓϥοτϑΥʔϜ "*ΞϓϦ Ϗδωεɾ ϩδοΫ "*Ϟσϧ ϥΠϒϥϦ"1* "*ΞϓϦɾϓϥοτϑΥʔϜ ໰͍߹Θͤ

    ੜ੒݁Ռ ཤྺ σʔλ ࢖༻ྔ σʔλ "*ͷ࣮ݧ͸ΦʔϓϯιʔεͰ΋Մೳ ҰํɺاۀϨϕϧ΁ͷల։͸՝୊͕ଟ͍ 4BB4൛ͷXBUTPOYBJΛ࢖͑͹ɺ ΞϓϦ։ൃɺల։ɺӡ༻ʹूதͰ͖Δ
  10. ϫʔΫγϣοϓɺηογϣϯɺ͓Αͼࢿྉ͸ɺ*#.·ͨ͸ηογϣϯൃදऀʹΑͬͯ४උ͞ΕɺͦΕͧΕಠࣗͷݟղΛ൓өͨ͠΋ͷͰ͢ɻͦΕΒ͸৘ใ ఏڙͷ໨తͷΈͰఏڙ͞Ε͓ͯΓɺ͍͔ͳΔࢀՃऀʹରͯ͠΋๏཯త·ͨ͸ͦͷଞͷࢦಋ΍ॿݴΛҙਤͨ͠΋ͷͰ͸ͳ͘ɺ·ͨ*#.੡඼΍αʔϏε͕͓ ٬༷ʹద༻͋Δಛఆͷ๏ྩʹద߹͢Δ͜ͱΛอূ͢Δ΋ͷͰ΋͋Γ·ͤΜɻຊߨԋࢿྉʹؚ·Ε͍ͯΔ৘ใʹ͍ͭͯ͸ɺ׬શੑͱਖ਼֬ੑΛظ͢ΔΑ͏౒ Ί͓ͯΓ·͕͢ɺʮݱঢ়ͷ··ʯఏڙ͞Εɺ໌ࣔ·ͨ͸໧ࣔʹ͔͔ΘΒͣɺ঎ۀੑɺಛఆͷ໨త΁ͷద߹ੑɺඇ৵֐ੑΛؚΊɺ͍͔ͳΔอূ΋൐Θͳ͍ ΋ͷͱ͠·͢ɻຊߨԋࢿྉ·ͨ͸ͦͷଞͷࢿྉͷ࢖༻ʹΑͬͯɺ͋Δ͍͸ͦͷଞͷؔ࿈ʹΑͬͯɺ͍͔ͳΔଛ֐͕ੜͨ͡৔߹΋ɺ*#.͸੹೚ΛෛΘͳ͍ ΋ͷͱ͠·͢ɻ ຊߨԋࢿྉͰݴٴ͞ΕΔ*#.੡඼ɺϓϩάϥϜɺ·ͨ͸αʔϏε͸ɺ*#.͕ϏδωεΛߦ͍ͬͯΔ͢΂ͯͷࠃɾ஍ҬͰ͝ఏڙՄೳͳΘ͚ Ͱ͸͋Γ·ͤΜɻຊߨԋࢿྉͰݴٴ͞ΕΔকདྷͷల๬ʢ੡඼ϦϦʔε೔෇΍੡඼ػೳΛؚΉʣ͸ɺࢢ৔ػձ·ͨ͸ͦͷଞͷཁҼʹج͍ͮͯ*#.ಠࣗͷܾ ఆݖΛ΋͍ͬͯͭͰ΋มߋͰ͖Δ΋ͷͱ͠ɺকདྷͷ੡඼·ͨ͸ػೳ͕࢖༻ՄೳʹͳΔ͜ͱɺ΋͘͠͸ಛఆͷ݁ՌΛ֬໿͢Δ͜ͱΛҙਤ͢Δ΋ͷͰ͸͋Γ ·ͤΜɻຊߨԋࢿྉ͸ɺݴٴ͞ΕΔ

    *#.੡඼·ͨ͸αʔϏεʹద༻͋Δܖ໿৚݅Λมߋ͢Δ΋ͷͰ΋ɺ௥Ճͷද໌·ͨ͸อূΛҙਤ͢Δ΋ͷͰ΋͋Γ· ͤΜɻ ຊߨԋࢿྉʹؚ·Ε͍ͯΔ಺༰͸ɺࢀՃऀͷ׆ಈʹΑͬͯಛఆͷ݁Ռ͕ੜ͡Δͱड़΂Δɺ·ͨ͸҉ࣔ͢Δ͜ͱΛҙਤͨ͠΋ͷͰ΋ɺ·ͨͦͷΑ͏ͳ݁Ռ ΛੜΉ΋ͷͰ΋͋Γ·ͤΜɻ ύϑΥʔϚϯε͸ɺ؅ཧ͞Εͨ؀ڥʹ͓͍ͯඪ४తͳ*#.ϕϯνϚʔΫΛ࢖༻ͨ͠ଌఆͱ༧ଌʹج͍͍ͮͯ·͢ɻϢʔβʔ ͕ܦݧ͢Δ࣮ࡍͷεϧʔϓοτ΍ύϑΥʔϚϯε͸ɺϢʔβʔͷδϣϒɾετϦʔϜʹ͓͚ΔϚϧνϓϩάϥϛϯάͷྔɺೖग़ྗߏ੒ɺετϨʔδߏ੒ɺ ͓Αͼॲཧ͞ΕΔϫʔΫϩʔυͳͲͷߟྀࣄ߲ΛؚΉɺ਺ଟ͘ͷཁҼʹԠͯ͡มԽ͠·͢ɻ͕ͨͬͯ͠ɺݸʑͷϢʔβʔ͕͜͜Ͱड़΂ΒΕ͍ͯΔ΋ͷͱ ಉ༷ͷ݁ՌΛಘΒΕΔͱ֬໿͢Δ΋ͷͰ͸͋Γ·ͤΜɻهड़͞Ε͍ͯΔ͢΂ͯͷ͓٬༷ࣄྫ͸ɺͦΕΒͷ͓٬༷͕ͲͷΑ͏ʹ*#.੡඼Λ࢖༻͔ͨ͠ɺ· ͨͦΕΒͷ͓٬༷͕ୡ੒ͨ݁͠Ռͷ࣮ྫͱͯࣔ͠͞Εͨ΋ͷͰ͢ɻ࣮ࡍͷ؀ڥίετ͓ΑͼύϑΥʔϚϯεಛੑ͸ɺ͓٬༷͝ͱʹҟͳΔ৔߹͕͋Γ·͢ɻ • *#.ɺ*#.ϩΰɺJCNDPNɺ%C *#.XBUTPOY *#.$MPVE͸ɺ ੈքͷଟ͘ͷࠃͰొ࿥͞Εͨ*OUFSOBUJPOBM#VTJOFTT.BDIJOFT$PSQPSBUJPOͷ঎ඪͰ͢ɻଞͷ੡඼ ໊͓ΑͼαʔϏε໊౳͸ɺͦΕͧΕ*#.·ͨ͸֤ࣾͷ঎ඪͰ͋Δ৔߹͕͋Γ·͢ɻݱ࣌఺Ͱͷ *#.ͷ঎ඪϦετʹ͍ͭͯ͸ɺXXXJCNDPNMFHBMDPQZUSBEFTIUNM Λ͝ཡ͍ͩ͘͞ɻ • 4USFBNMJU͸"QBDIFϥΠηϯεͰެ։͞Ε͍ͯΔΦʔϓϯιʔεͷϥΠϒϥϦʔͰ͢ɻ