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

watsonx.ai Dojo #2 生成AIを使ったアプリ開発入門編

watsonx.ai Dojo #2 生成AIを使ったアプリ開発入門編

watsonx.ai Dojo、2回目のコンテンツです。IBM watsonx.aiをこれから始める人向けの資料です。

プロンプト・ラボという言語モデルと対話する際に利用する「プロンプト」を試しながら開発するツールを利用して、言語モデルとの対話を行います。

* チャット機能を知り、言語モデルを使って、対話してみる
* チャット機能を使い、英語の文書の内容をAIを使って調べる
* プロンプト・ラボを使って、日本語のプロンプトを実行する

最後の演習は、Pythonを使って、IBM watsonx.aiのプロンプトを呼び出します。

なお、文書をアップロードしてチャット機能を使う演習においては、IBM watsonxに内蔵されている機能を使って、文書のベクトル化を行なっています。プロンプト・ラボのチャット機能から文書をアップロードすると、RAGの知識がなくても、文書を使って言語モデルと対話を始められます。

Akira Onishi (IBM)

September 16, 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. XBUTPOYBJͷΑ͏ͳ"*ϓϥοτϑΥʔϜ͕ඞཁͳཧ༝ ΞϓϦʢ8FCϢʔβʔΠϯλʔϑΣΠεʣ ΞϓϦɾϓϥοτϑΥʔϜ "*ΞϓϦ Ϗδωεɾ ϩδοΫ "*Ϟσϧ ϥΠϒϥϦ"1* "*ΞϓϦɾϓϥοτϑΥʔϜ ໰͍߹Θͤ

    ੜ੒݁Ռ ཤྺ σʔλ ࢖༻ྔ σʔλ "*ͷ࣮ݧ͸ΦʔϓϯιʔεͰ΋Մೳ ҰํɺاۀϨϕϧ΁ͷల։͸՝୊͕ଟ͍ 4BB4൛ͷXBUTPOYBJΛ࢖͑͹ɺ ΞϓϦ։ൃɺల։ɺӡ༻ʹूதͰ͖Δ
  9. 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
  10. *#.5FDI9DIBOHF$POGFSFODF ։ൃऀɺσʔλαΠΤϯςΟετɺ*5ϓϩϑΣογϣφϧɺΞʔΩςΫτɺ ֤෼໺ͷઐ໳ՈͳͲɺۀ຿΍ϓϩδΣΫτʹඞཁͳεΩϧ΍஌ࣝΛಘ͍ͨํʑΛ ର৅ͱͨ͠*#.ຊ͕ࣾओ࠵͢Δ೥࣍ͷάϩʔόϧΧϯϑΝϨϯε ೔࣌ɿ೥݄೔ ݄ ೥݄೔ ໦ ถࠃݱ஍࣌ؒ ձ৔ɿถࠃωόμभϥεϕΨε

    .BOEBMBZ#BZ ࢀՃඅɿ ถυϧ  ౉ߤඅ͓Αͼݱ஍଺ࡏඅ͸͓٬༷ෛ୲ʹͳΓ·͢ ίϛϡχςΟʔࢀՃऀ޲͚ͷׂҾʹ͍ͭͯ͸ɺͪ͜ΒΛࢀর͍ͯͩ͘͠͞   ࢀՃ͢ΔςΫχΧϧύʔιϯ   ηογϣϯϋϯζΦϯϥϘ  ςΫϊϩδʔτϥοΫ ΠϕϯτެࣜαΠτ IUUQTXXXJCNDPNDPNNVOJUZJCNUFDIYDIBOHFDPOGFSFODF
  11. ϫʔΫγϣοϓɺηογϣϯɺ͓Αͼࢿྉ͸ɺ*#.·ͨ͸ηογϣϯൃදऀʹΑͬͯ४උ͞ΕɺͦΕͧΕಠࣗͷݟղΛ൓өͨ͠΋ͷͰ͢ɻͦΕΒ͸৘ใ ఏڙͷ໨తͷΈͰఏڙ͞Ε͓ͯΓɺ͍͔ͳΔࢀՃऀʹରͯ͠΋๏཯త·ͨ͸ͦͷଞͷࢦಋ΍ॿݴΛҙਤͨ͠΋ͷͰ͸ͳ͘ɺ·ͨ*#.੡඼΍αʔϏε͕͓ ٬༷ʹద༻͋Δಛఆͷ๏ྩʹద߹͢Δ͜ͱΛอূ͢Δ΋ͷͰ΋͋Γ·ͤΜɻຊߨԋࢿྉʹؚ·Ε͍ͯΔ৘ใʹ͍ͭͯ͸ɺ׬શੑͱਖ਼֬ੑΛظ͢ΔΑ͏౒ Ί͓ͯΓ·͕͢ɺʮݱঢ়ͷ··ʯఏڙ͞Εɺ໌ࣔ·ͨ͸໧ࣔʹ͔͔ΘΒͣɺ঎ۀੑɺಛఆͷ໨త΁ͷద߹ੑɺඇ৵֐ੑΛؚΊɺ͍͔ͳΔอূ΋൐Θͳ͍ ΋ͷͱ͠·͢ɻຊߨԋࢿྉ·ͨ͸ͦͷଞͷࢿྉͷ࢖༻ʹΑͬͯɺ͋Δ͍͸ͦͷଞͷؔ࿈ʹΑͬͯɺ͍͔ͳΔଛ֐͕ੜͨ͡৔߹΋ɺ*#.͸੹೚ΛෛΘͳ͍ ΋ͷͱ͠·͢ɻ ຊߨԋࢿྉͰݴٴ͞ΕΔ*#.੡඼ɺϓϩάϥϜɺ·ͨ͸αʔϏε͸ɺ*#.͕ϏδωεΛߦ͍ͬͯΔ͢΂ͯͷࠃɾ஍ҬͰ͝ఏڙՄೳͳΘ͚ Ͱ͸͋Γ·ͤΜɻຊߨԋࢿྉͰݴٴ͞ΕΔকདྷͷల๬ʢ੡඼ϦϦʔε೔෇΍੡඼ػೳΛؚΉʣ͸ɺࢢ৔ػձ·ͨ͸ͦͷଞͷཁҼʹج͍ͮͯ*#.ಠࣗͷܾ ఆݖΛ΋͍ͬͯͭͰ΋มߋͰ͖Δ΋ͷͱ͠ɺকདྷͷ੡඼·ͨ͸ػೳ͕࢖༻ՄೳʹͳΔ͜ͱɺ΋͘͠͸ಛఆͷ݁ՌΛ֬໿͢Δ͜ͱΛҙਤ͢Δ΋ͷͰ͸͋Γ ·ͤΜɻຊߨԋࢿྉ͸ɺݴٴ͞ΕΔ

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