Share
Embed
watsonx.ai Dojo #2 生成AIを使ったアプリ開発入門編
watsonx.ai Dojo、2回目のコンテンツです。IBM watsonx.aiをこれから始める人向けの資料です。
プロンプト・ラボという言語モデルと対話する際に利用する「プロンプト」を試しながら開発するツールを利用して、言語モデルとの対話を行います。
* チャット機能を知り、言語モデルを使って、対話してみる
* チャット機能を使い、英語の文書の内容をAIを使って調べる
* プロンプト・ラボを使って、日本語のプロンプトを実行する
最後の演習は、Pythonを使って、IBM watsonx.aiのプロンプトを呼び出します。
なお、文書をアップロードしてチャット機能を使う演習においては、IBM watsonxに内蔵されている機能を使って、文書のベクトル化を行なっています。プロンプト・ラボのチャット機能から文書をアップロードすると、RAGの知識がなくても、文書を使って言語モデルと対話を始められます。
Akira Onishi (IBM) PRO
September 16, 2024
Transcript
20 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Λ͝ཡʹͳΓɺ ޙɺ͓ࢼ͍ͩ͘͠͞ օ͞ΜࣗͰͷϋϯζΦϯ
ࠓճͷൣғɺϓϩϯϓτɾϥϘͷجຊతͳػೳΛར༻͠·͢ *#.XBUTPOY"1*Λ1ZUIPO͔Βݺͼग़͠ɺϓϩϯϓτΛ࣮ߦ͠·͢ ຊͷྲྀΕ -
%PKPͷࢿྉΛࢀߟʹɺ1ZUIPOͷڥΛ͍͑ͯͩ͘͞ ˞ݱ࣌Ͱ*OTUSVDU-BC͕1ZUIPOʹରԠ͍ͯ͠ͳ͍͜ͱ͕ཧ༝ ˞ࠓճͷ1ZUIPOΛͬͨԋश1ZUIPOʹ͓͍ͯಈ࡞͢Δ͜ͱΛ֬ೝ͍ͯ͠·͢ 8JOEPXTڥʹ͓͍ͯɺ8JOEPXT4VCTZTUFNGPS-JOVYͱ6COVUVΛͬͯ-JOVYڥΛ͑ ͯɺͦͷ্ʹ1ZUIPOͷ࣮ߦڥΛ͍͑ͯͩ͘͞ ˞8JOEPXT .BDͰಉ͡$-*ૢ࡞ͰϋϯζΦϯΛਐΊΒΕΔΑ͏ʹ͢ΔͨΊ ࠓޙɺෳͷ1ZUIPOόʔδϣϯʹΓସ͑ΒΕΔΑ͏ɺQZFOWʹΑΔԾڥͷߏஙΛਪ͠ ·͢ .BDڥͰ1ZUIPOͷϏϧυʹࣦഊ͢Δ߹ɺ9DPEF$PNNBOE5PPMTΛ࠶Πϯετʔϧͯ͘͠
͍ͩ͞YDPEFTFMFDUJOTUBMM XBUTPOYBJ%PKPʹࢀՃ͍ͯ͠ͳ͍ํͷ͓ئ͍ -
४උͷͨΊͷࢀߟࢿྉ IUUQTTQFBLFSEFDLDPNPOJBLJCNXBUTPOYBJEPKPQSFSFR ϋϯζΦϯڥͷ४උ ڥ ରऀ *#.5FDIOPMPHZ;POF *#.άϧʔϓࣾһ *#.1BSUOFS1MVTʹొࡁΈͷϏδωεɾύʔτφʔ༷ *#.XBUTPOYBJແྉධՁ൛ ҰൠͷࢀՃऀͰɺ*#.$MPVEͷΞΧϯτΛ͓࣋ͪͰͳ͍߹
ධՁ൛ͷΞΫηεʹΫϨδοτɾΧʔυෆཁ ܦաޙɺΫϨδοτɾΧʔυΛొ͢Δͱैྔ՝ۚΞΧϯτͱ ͯ͠ɺશͯͷ*#.$MPVEͷαʔϏε͕͝ར༻͍͚ͨͩ·͢ *#.$MPVE ҰൠͷࢀՃऀͰɺ*#.$MPVEͷΞΧϯτΛ͓࣋ͪͷ߹ -
ࢿྉ63-IUUQTHJUIVCDPN*#.KBQBOUFDIOPMPHZUSFFNBJOXBUTPOYBJEPKP ͡Ίʹ XBUTPOYBJͷىಈ *#.$MPVEίϯιʔϧ XBUTPOYBJͷىಈ *#.XBUTPOYηοτΞοϓࡁΈͷ߹ νϟοτɾϞʔυ XBUTPOYBJ%PKP ৽نϓϩδΣΫτͷ࡞ ݴޠϞσϧΛͬͨνϟοτΛࢼ͢
จॻͱݴޠϞσϧΛͬͨνϟοτ ϓϩϯϓτɾϥϘ XBUTPOYBJ%PKP ϓϩϯϓτɾϥϘͷར༻ͱ1ZUIPOʹΑΔϓϩϯϓτͷ࣮ߦ ϋϯζΦϯ -
XBUTPOYBJͷΑ͏ͳ"*ϓϥοτϑΥʔϜ͕ඞཁͳཧ༝ ΞϓϦʢ8FCϢʔβʔΠϯλʔϑΣΠεʣ ΞϓϦɾϓϥοτϑΥʔϜ "*ΞϓϦ Ϗδωεɾ ϩδοΫ "*Ϟσϧ ϥΠϒϥϦ"1* "*ΞϓϦɾϓϥοτϑΥʔϜ ͍߹Θͤ
ੜ݁Ռ ཤྺ σʔλ ༻ྔ σʔλ "*ͷ࣮ݧΦʔϓϯιʔεͰՄೳ ҰํɺاۀϨϕϧͷల։՝͕ଟ͍ 4BB4൛ͷXBUTPOYBJΛ͑ɺ ΞϓϦ։ൃɺల։ɺӡ༻ʹूதͰ͖Δ -
1ZUIPOίʔυ͔Βϓϩϯϓτͷ࣮ߦ 1ZUIPO 6CVOUVNBD04 QMQZ ίϯϐϡʔλʔ ϧʔλʔ ϧʔλʔ ϩʔΧϧڥ *#.XBUTPOYBTB4FSWJDF ෳͷ
ίϯϐϡʔλʔ (16 3FE)BU0QFO4IJGULT XBUTPOY8BUTPO4UVEJP 8BUTPO.BDIJOF-FBSOJOH "1* 8FC ΞϓϦ https://jp-tok.ml.cloud.ibm.com/ml/v1/text/generation?version=2023-05-29 ΞΫηε τʔΫϯ response = requests.post( url, headers=headers, json=body ) data = response.json() 0CKFDU 4UPSBHF -
*#.5FDI9DIBOHF$POGFSFODF ։ൃऀɺσʔλαΠΤϯςΟετɺ*5ϓϩϑΣογϣφϧɺΞʔΩςΫτɺ ֤ͷઐՈͳͲɺۀϓϩδΣΫτʹඞཁͳεΩϧࣝΛಘ͍ͨํʑΛ ରͱͨ͠*#.ຊ͕ࣾओ࠵͢Δ࣍ͷάϩʔόϧΧϯϑΝϨϯε ࣌ɿ݄ ݄ ݄ ถࠃݱ࣌ؒ ձɿถࠃωόμभϥεϕΨε
.BOEBMBZ#BZ ࢀՃඅɿ ถυϧ ߤඅ͓Αͼݱࡏඅ͓٬༷ෛ୲ʹͳΓ·͢ ίϛϡχςΟʔࢀՃऀ͚ͷׂҾʹ͍ͭͯɺͪ͜ΒΛࢀর͍ͯͩ͘͠͞ ࢀՃ͢ΔςΫχΧϧύʔιϯ ηογϣϯϋϯζΦϯϥϘ ςΫϊϩδʔτϥοΫ ΠϕϯτެࣜαΠτ IUUQTXXXJCNDPNDPNNVOJUZJCNUFDIYDIBOHFDPOGFSFODF -
*#.5FDI9DIBOHF+BQBO *#.ͱςΫϊϩδʔʹؔ͢Δ࠷৽ใΛ͓ಧ͚͠ɺମײ͍͚ͨͩ·͢ɻ ࠷৽ٕज़ͷηογϣϯɺσϞɺϋϯζΦϯͷΛఏڙ͠·͢ɻ ·ͨɺίϛϡχςΟʔɾΠϕϯτɺٕज़ऀͷօ༷ͱͷަྲྀͷΛ௨ͯ͡ɺ ٕज़ऀಉֶ͕࢜ͼɺܨ͕ΔωοτϫʔΩϯάͷػձ͝ఏڙ͠·͢ɻ ࣌ɿ݄ ਫ d ࠙ձؚΉ ձɿϗςϧխঀԂ౦ژ
ࠇӺ͔Βెา ࢀՃඅɿແྉ ΠϕϯτެࣜαΠτ IUUQTXXXJCNDPNKQKBFWFOUTUFDIYDIBOHF -
ϫʔΫγϣοϓɺηογϣϯɺ͓Αͼࢿྉɺ*#.·ͨηογϣϯൃදऀʹΑͬͯ४උ͞ΕɺͦΕͧΕಠࣗͷݟղΛөͨ͠ͷͰ͢ɻͦΕΒใ ఏڙͷతͷΈͰఏڙ͞Ε͓ͯΓɺ͍͔ͳΔࢀՃऀʹରͯ͠๏త·ͨͦͷଞͷࢦಋॿݴΛҙਤͨ͠ͷͰͳ͘ɺ·ͨ*#.αʔϏε͕͓ ٬༷ʹద༻͋Δಛఆͷ๏ྩʹద߹͢Δ͜ͱΛอূ͢ΔͷͰ͋Γ·ͤΜɻຊߨԋࢿྉʹؚ·Ε͍ͯΔใʹ͍ͭͯɺશੑͱਖ਼֬ੑΛظ͢ΔΑ͏ Ί͓ͯΓ·͕͢ɺʮݱঢ়ͷ··ʯఏڙ͞Εɺ໌ࣔ·ͨࣔʹ͔͔ΘΒͣɺۀੑɺಛఆͷతͷద߹ੑɺඇ৵ੑΛؚΊɺ͍͔ͳΔอূΘͳ͍ ͷͱ͠·͢ɻຊߨԋࢿྉ·ͨͦͷଞͷࢿྉͷ༻ʹΑͬͯɺ͋Δ͍ͦͷଞͷؔ࿈ʹΑͬͯɺ͍͔ͳΔଛ͕ੜͨ͡߹ɺ*#.ΛෛΘͳ͍ ͷͱ͠·͢ɻ ຊߨԋࢿྉͰݴٴ͞ΕΔ*#.ɺϓϩάϥϜɺ·ͨαʔϏεɺ*#.͕ϏδωεΛߦ͍ͬͯΔͯ͢ͷࠃɾҬͰ͝ఏڙՄೳͳΘ͚ Ͱ͋Γ·ͤΜɻຊߨԋࢿྉͰݴٴ͞ΕΔকདྷͷలʢϦϦʔεػೳΛؚΉʣɺࢢػձ·ͨͦͷଞͷཁҼʹج͍ͮͯ*#.ಠࣗͷܾ ఆݖΛ͍ͬͯͭͰมߋͰ͖Δͷͱ͠ɺকདྷͷ·ͨػೳ͕༻ՄೳʹͳΔ͜ͱɺ͘͠ಛఆͷ݁ՌΛ֬͢Δ͜ͱΛҙਤ͢ΔͷͰ͋Γ ·ͤΜɻຊߨԋࢿྉɺݴٴ͞ΕΔ
*#.·ͨαʔϏεʹద༻͋Δܖ݅Λมߋ͢ΔͷͰɺՃͷද໌·ͨอূΛҙਤ͢ΔͷͰ͋Γ· ͤΜɻ ຊߨԋࢿྉʹؚ·Ε͍ͯΔ༰ɺࢀՃऀͷ׆ಈʹΑͬͯಛఆͷ݁Ռ͕ੜ͡Δͱड़Δɺ·ͨ҉ࣔ͢Δ͜ͱΛҙਤͨ͠ͷͰɺ·ͨͦͷΑ͏ͳ݁Ռ ΛੜΉͷͰ͋Γ·ͤΜɻ ύϑΥʔϚϯεɺཧ͞Εͨڥʹ͓͍ͯඪ४తͳ*#.ϕϯνϚʔΫΛ༻ͨ͠ଌఆͱ༧ଌʹج͍͍ͮͯ·͢ɻϢʔβʔ ͕ܦݧ͢Δ࣮ࡍͷεϧʔϓοτύϑΥʔϚϯεɺϢʔβʔͷδϣϒɾετϦʔϜʹ͓͚ΔϚϧνϓϩάϥϛϯάͷྔɺೖग़ྗߏɺετϨʔδߏɺ ͓Αͼॲཧ͞ΕΔϫʔΫϩʔυͳͲͷߟྀࣄ߲ΛؚΉɺଟ͘ͷཁҼʹԠͯ͡มԽ͠·͢ɻ͕ͨͬͯ͠ɺݸʑͷϢʔβʔ͕͜͜Ͱड़ΒΕ͍ͯΔͷͱ ಉ༷ͷ݁ՌΛಘΒΕΔͱ֬͢ΔͷͰ͋Γ·ͤΜɻهड़͞Ε͍ͯΔͯ͢ͷ͓٬༷ࣄྫɺͦΕΒͷ͓٬༷͕ͲͷΑ͏ʹ*#.Λ༻͔ͨ͠ɺ· ͨͦΕΒͷ͓٬༷͕ୡͨ݁͠Ռͷ࣮ྫͱͯࣔ͠͞ΕͨͷͰ͢ɻ࣮ࡍͷڥίετ͓ΑͼύϑΥʔϚϯεಛੑɺ͓٬༷͝ͱʹҟͳΔ߹͕͋Γ·͢ɻ • *#.ɺ*#.ϩΰɺJCNDPNɺ%C *#.XBUTPOY *#.$MPVEɺ ੈքͷଟ͘ͷࠃͰొ͞Εͨ*OUFSOBUJPOBM#VTJOFTT.BDIJOFT$PSQPSBUJPOͷඪͰ͢ɻଞͷ ໊͓ΑͼαʔϏε໊ɺͦΕͧΕ*#.·֤ͨࣾͷඪͰ͋Δ߹͕͋Γ·͢ɻݱ࣌Ͱͷ *#.ͷඪϦετʹ͍ͭͯɺXXXJCNDPNMFHBMDPQZUSBEFTIUNM Λ͝ཡ͍ͩ͘͞ɻ