Slide 1

Slide 1 text

⽣成 AI で問い合わせ品質は変わるのか︖ 思いついてぱっと作ったものを供養してみる [JAWS-UG AI/ML #21︓Generative AI LT⼤会] 株式会社サーバーワークス 市野 和明(JAWS-UG 神⼾) 2024-09-27

Slide 2

Slide 2 text

⽬次 1. ⾃⼰紹介 2. 本題 3. まとめ 4. 余談

Slide 3

Slide 3 text

⾃⼰紹介

Slide 4

Slide 4 text

4 はじめまして 名前︓市野 和明(いちの かずあき) 所属︓株式会社サーバーワークス マネージドサクセス部 テクニカルサポート1課 好きな AWS サービス︓ AWS CLI (テクサポとして) 嫌いな AWS サービス︓ Amazon FSx for Windows 趣味︓ミクが好き、酒を飲む @kazzpapa3

Slide 5

Slide 5 text

5 はじめまして 名前︓市野 和明(いちの かずあき) 所属︓株式会社サーバーワークス マネージドサクセス部 テクニカルサポート1課 好きな AWS サービス︓ AWS CLI (テクサポとして) 嫌いな AWS サービス︓ Amazon FSx for Windows 趣味︓ミクが好き、酒を飲む @kazzpapa3 JAWS-UG 神⼾の 運営もやってます 10/18イベント開催

Slide 6

Slide 6 text

本題

Slide 7

Slide 7 text

7 ありえないだろう…、と思われるが、よくある問い合わせ例 > 今朝から AWS につながりません。 > 障害など起きていないでしょうか。

Slide 8

Slide 8 text

8 ありえないだろう…、と思われるが、よくある問い合わせ例 > 今朝から AWS につながりません。 > 障害など起きていないでしょうか。 Ø これは、半年前に JAWS-UG 北陸新幹線で登壇した際に題材にしたり、 弊社テクサポ課の新卒むけ OJT ⽤の模擬問題として私が出題者として⽤意して いる問い合わせ⽂⾯です

Slide 9

Slide 9 text

9 ありえないだろう…、と思われるが、よくある問い合わせ例 > 今朝から AWS につながりません。 > 障害など起きていないでしょうか。 Ø これは、半年前に JAWS-UG 北陸新幹線で登壇した際に題材にしたり、 弊社テクサポ課の新卒むけ OJT ⽤の模擬問題として私が出題者として⽤意して いる問い合わせ⽂⾯です Ø これは私が夢でみかけた⽂章で ある特定のお客様からいただいた⽂⾯そのままではない

Slide 10

Slide 10 text

10 ありえないだろう…、と思われるが、よくある問い合わせ例 > 今朝から AWS につながりません。 > 障害など起きていないでしょうか。 Ø これは、半年前に JAWS-UG 北陸新幹線で登壇した際に題材にしたり、 弊社テクサポ課の新卒むけ OJT ⽤の模擬問題として私が出題者として⽤意して いる問い合わせ⽂⾯です Ø これは私が夢でみかけた⽂章で ある特定のお客様からいただいた⽂⾯そのままではない Ø ただ多少誇張した妄想的な⽂⾯ではあるものの 100% 妄想というわけでもない 本質的な部分では同質なお問い合わせをいただくことは、実は結構あります

Slide 11

Slide 11 text

11 JAWS-UG 北陸新幹線での登壇では… Ø AWS が公開しているドキュメント [1] を紹介し、 AWS サポートからの回答をより適切に得たり、解決スピードを上げるために より良い問い合わせ⽂⾯を組み⽴てる際の⽂書構成や記載内容について 問い合わせ⽂⾯にもう⼀⼯夫できそうな観点からお話ししました [2]

Slide 12

Slide 12 text

12 JAWS-UG 北陸新幹線での登壇では… Ø AWS が公開しているドキュメント [1] を紹介し、 AWS サポートからの回答をより適切に得たり、解決スピードを上げるために より良い問い合わせ⽂⾯を組み⽴てる際の⽂書構成や記載内容について 問い合わせ⽂⾯にもう⼀⼯夫できそうな観点からお話ししました [2] Ø [1] AWS プレミアムサポート / 技術的なお問い合わせに関するガイドライン https://aws.amazon.com/jp/premiumsupport/tech-support-guidelines/ Ø [2] AWS パートナー企業でテクニカルサポートに従事して2年経ったので思うところをまとめてみた https://speakerdeck.com/kazzpapa3/aws-patonaqi-ye-detekunikarusapotonicong-shi- site2nian-jing-tutanodesi-utokorowomatometemita

Slide 13

Slide 13 text

13 JAWS-UG 北陸新幹線での登壇では… Ø AWS が公開しているドキュメント [1] を紹介し、 AWS サポートからの回答をより適切に得たり、解決スピードを上げるために より良い問い合わせ⽂⾯を組み⽴てる際の⽂書構成や記載内容について 問い合わせ⽂⾯にもう⼀⼯夫できそうな観点からお話ししました [2] Ø [1] AWS プレミアムサポート / 技術的なお問い合わせに関するガイドライン https://aws.amazon.com/jp/premiumsupport/tech-support-guidelines/ Ø [2] AWS パートナー企業でテクニカルサポートに従事して2年経ったので思うところをまとめてみた https://speakerdeck.com/kazzpapa3/aws-patonaqi-ye-detekunikarusapotonicong-shi- site2nian-jing-tutanodesi-utokorowomatometemita Ø ただ、前述のガイドライン⽂書が広く知られていないことと、 技術的に設計・構築できるスキルと、起きている事象を適切に伝えるスキルは完 全に同⼀でないと思うこと、緊急度が⾼く焦っている状況では、冷静に適切な⽂ ⾯を組み⽴てられない可能性はあるな、と思いながら、普段業務をしています

Slide 14

Slide 14 text

[ふとした疑問] 先の質問を⽣成 AI に投げてみるとどうなるだろう︖

Slide 15

Slide 15 text

作ってみた

Slide 16

Slide 16 text

16 基本コンセプト 登壇タイトルで「問い合わせ品質」と記載しましたが、 お客様から⾒たサポートの良し悪しではなく、 サポート窓⼝の⽴場から⾒て、よりヒアリング内容が少なく すぐに調査着⼿できるだけの情報提供に繋がっているか︖

Slide 17

Slide 17 text

17 基本コンセプト 登壇タイトルで「問い合わせ品質」と記載しましたが、 お客様から⾒たサポートの良し悪しではなく、 サポート窓⼝の⽴場から⾒て、よりヒアリング内容が少なく すぐに調査着⼿できるだけの情報提供に繋がっているか︖ 投⼊⽂⾯を「AWS のガイドライン」ドキュメントと照合

Slide 18

Slide 18 text

18 基本コンセプト 登壇タイトルで「問い合わせ品質」と記載しましたが、 お客様から⾒たサポートの良し悪しではなく、 サポート窓⼝の⽴場から⾒て、よりヒアリング内容が少なく すぐに調査着⼿できるだけの情報提供に繋がっているか︖ 投⼊⽂⾯を「AWS のガイドライン」ドキュメントと照合 サポート担当者が求める情報の粒度になっているかどうか

Slide 19

Slide 19 text

19 基本コンセプト 登壇タイトルで「問い合わせ品質」と記載しましたが、 お客様から⾒たサポートの良し悪しではなく、 サポート窓⼝の⽴場から⾒て、よりヒアリング内容が少なく すぐに調査着⼿できるだけの情報提供に繋がっているか︖ 投⼊⽂⾯を「AWS のガイドライン」ドキュメントと照合 サポート担当者が求める情報の粒度になっているかどうか 投⼊⽂⾯が、⼀般的ではないハイコンテキストな内容になっていたら それとなく教えてあげる

Slide 20

Slide 20 text

20 基本コンセプト 登壇タイトルで「問い合わせ品質」と記載しましたが、 お客様から⾒たサポートの良し悪しではなく、 サポート窓⼝の⽴場から⾒て、よりヒアリング内容が少なく すぐに調査着⼿できるだけの情報提供に繋がっているか︖ 投⼊⽂⾯を「AWS のガイドライン」ドキュメントと照合 サポート担当者が求める情報の粒度になっているかどうか 投⼊⽂⾯が、⼀般的ではないハイコンテキストな内容になっていたら それとなく教えてあげる 5W2H を意識した、いい⽂章の書き⽅があればそれとなく教えてあげる

Slide 21

Slide 21 text

21 処理の概要 問い合わせ⽂⾯ 投⼊ プロンプト組み⽴て 以下の観点を確認してほしい ⽂⾯を追記 • ガイドラインとの照合 • 5W2H の観点での確認 • 問い合わせ⽂⾯

Slide 22

Slide 22 text

ただ、私のスキル的に…、⽣成 AI 10級くらいで、 とある Bedrock 本を少し読んだ程度なので…

Slide 23

Slide 23 text

ただ、私のスキル的に…、⽣成 AI 10級くらいで、 とある Bedrock 本を少し読んだ程度なので…

Slide 24

Slide 24 text

24 動作検証のモックづくり Ø まずは、マネジメントコンソールの「プレイグラウンド」で⽣成をやってみる

Slide 25

Slide 25 text

25 動作検証のモックづくり Ø まずは、マネジメントコンソールの「プレイグラウンド」で⽣成をやってみる Ø UI 中の「サンプルをロード」ボタンの右の「API リクエスト」をクリックして 実⾏した AWS API の内容を把握

Slide 26

Slide 26 text

26 動作検証のモックづくり Ø まずは、マネジメントコンソールの「プレイグラウンド」で⽣成をやってみる Ø UI 中の「サンプルをロード」ボタンの右の「API リクエスト」をクリックして 実⾏した AWS API の内容を把握 Ø あとは CLI リファレンスを⾒て必要なオプションなどを理解 Ø aws bedrock-runtime invoke-model https://docs.aws.amazon.com/cli/latest/reference/bedrock-runtime/invoke-model.html

Slide 27

Slide 27 text

27 できたスクリプトの⼤枠 Ø 全体像は以下で… https://github.com/kazzpapa3/CreateInquiryViaBedrock/blob/main/exec.sh

Slide 28

Slide 28 text

28 使ってみた様⼦

Slide 29

Slide 29 text

29 使ってみた様⼦

Slide 30

Slide 30 text

30 使ってみた様⼦ ⭕ ⭕ ⭕ ⭕ おおよそ狙い通りに ダメ出しされている

Slide 31

Slide 31 text

せっかくなので Web アプリっぽくしてみる︖

Slide 32

Slide 32 text

32 ⼀からちゃんと作るのは⾯倒だなぁ とはいえ、最近のモダンな Web アプリ開発から離れてしまっているので、 ⼿を動かすのもちょっとめんどくさい🙈

Slide 33

Slide 33 text

33 ⼀からちゃんと作るのは⾯倒だなぁ とはいえ、最近のモダンな Web アプリ開発から離れてしまっているので、 ⼿を動かすのもちょっとめんどくさい🙈 なので、以下のようなプロンプトを Amazon Bedrock に投げてみた Web ブラウザの textarea に⼊⼒した内容を submit し、 Amazon Bedrock に問い合わせをするシングルページアプリケーションを作りたい 利⽤する基盤モデルは Anthropic claude-3-haiku を利⽤したい ⾔語は Python としたい

Slide 34

Slide 34 text

34 ⼀からちゃんと作るのは⾯倒だなぁ とはいえ、最近のモダンな Web アプリ開発から離れてしまっているので、 ⼿を動かすのもちょっとめんどくさい🙈 なので、以下のようなプロンプトを Amazon Bedrock に投げてみた Web ブラウザの textarea に⼊⼒した内容を submit し、 Amazon Bedrock に問い合わせをするシングルページアプリケーションを作りたい 利⽤する基盤モデルは Anthropic claude-3-haiku を利⽤したい ⾔語は Python としたい できた︕

Slide 35

Slide 35 text

35 ⼀からちゃんと作るのは⾯倒だなぁ とはいえ、最近のモダンな Web アプリ開発から離れてしまっているので、 ⼿を動かすのもちょっとめんどくさい🙈 なので、以下のようなプロンプトを Amazon Bedrock に投げてみた Web ブラウザの textarea に⼊⼒した内容を submit し、 Amazon Bedrock に問い合わせをするシングルページアプリケーションを作りたい 利⽤する基盤モデルは Anthropic claude-3-haiku を利⽤したい ⾔語は Python としたい できた︕(けど、スクショを撮るのを忘れた…)

Slide 36

Slide 36 text

36 Bedrock が提案してきたやつ ⼤まかに以下のような構成のファイル群を⽣成してくれました app.py templates/ index.html

Slide 37

Slide 37 text

37 Bedrock が提案してきたやつ ⼤まかに以下のような構成のファイル群を⽣成してくれました app.py templates/ index.html テンプレートファイルでの⽣成結果の出⼒位置をちょっと調整したり、 app.py でフォームから受け取ったテキストを組み⽴てて投げるプロンプトを 前述のシェルスクリプトの内容に準じて置き換えたりしたものの、 基本的な部分はいじらずに⼀発で動作した

Slide 38

Slide 38 text

38 Bedrock が提案してきたやつ ⼤まかに以下のような構成のファイル群を⽣成してくれました app.py templates/ index.html テンプレートファイルでの⽣成結果の出⼒位置をちょっと調整したり、 app.py でフォームから受け取ったテキストを組み⽴てて投げるプロンプトを 前述のシェルスクリプトの内容に準じて置き換えたりしたものの、 基本的な部分はいじらずに⼀発で動作した。やるやん Bedrock…(なんで上から)

Slide 39

Slide 39 text

39 Bedrock が提案してきたやつ ⼤まかに以下のような構成のファイル群を⽣成してくれました。 app.py templates/ index.html テンプレートファイルでの⽣成結果の出⼒位置をちょっと調整したり、 app.py でフォームから受け取ったテキストを組み⽴てて投げるプロンプトを 前述のシェルスクリプトの内容に準じて置き換えたりしたものの、 基本的な部分はいじらずに⼀発で動作した。 全体像は以下で… https://github.com/kazzpapa3/CreateInquiryViaBedrock/tree/main/spa

Slide 40

Slide 40 text

40 使ってみた様⼦

Slide 41

Slide 41 text

41 使ってみた様⼦

Slide 42

Slide 42 text

42 使ってみた様⼦ ⭕ ⭕ ⭕ ⭕ こちらもいい感じに ダメ出しされている

Slide 43

Slide 43 text

まとめ(というか所感)

Slide 44

Slide 44 text

44 SPA を⽣成させてみて 簡単なものとはいえ、やりたいことを箇条書きにして投げるだけで、 ちゃんと動くプログラムができたのはすごい

Slide 45

Slide 45 text

45 SPA を⽣成させてみて 簡単なものとはいえ、やりたいことを箇条書きにして投げるだけで、 ちゃんと動くプログラムができたのはすごい ただ、⼆度と同じコードが⽣成されることはなかった

Slide 46

Slide 46 text

46 SPA を⽣成させてみて 簡単なものとはいえ、やりたいことを箇条書きにして投げるだけで、 ちゃんと動くプログラムができたのはすごい ただ、⼆度と同じコードが⽣成されることはなかった スクショを撮り忘れたので、何度も同じプロンプトを投げたけど、 ⼀⾔⼀句同じ出⼒には巡り会わなかった

Slide 47

Slide 47 text

47 SPA を⽣成させてみて 簡単なものとはいえ、やりたいことを箇条書きにして投げるだけで、 ちゃんと動くプログラムができたのはすごい ただ、⼆度と同じコードが⽣成されることはなかった スクショを撮り忘れたので、何度も同じプロンプトを投げたけど、 ⼀⾔⼀句同じ出⼒には巡り会わなかった ⽣成された結果を採⽤するかしないかの判断は、 まだまだ⼈間の介⼊が必要そう

Slide 48

Slide 48 text

48 問い合わせ品質の向上について 当初、回答の傾向にばらつきがあったが、多少の調整でマシになった

Slide 49

Slide 49 text

49 問い合わせ品質の向上について 当初、回答の傾向にばらつきがあったが、多少の調整でマシになった 特に「今朝から AWS につながりません。障害など起きていないでしょうか。」 をガイドラインに沿った質問です。という返答は早々になくなった

Slide 50

Slide 50 text

50 問い合わせ品質の向上について 当初、回答の傾向にばらつきがあったが、多少の調整でマシになった 特に「今朝から AWS につながりません。障害など起きていないでしょうか。」 をガイドラインに沿った質問です。という返答は早々になくなった ただ、今のプロンプトがちょっと厳格すぎるので、 割と適切な粒度で問い合わせしても、まあまあ注意される…

Slide 51

Slide 51 text

51 問い合わせ品質の向上について 当初、回答の傾向にばらつきがあったが、多少の調整でマシになった 特に「今朝から AWS につながりません。障害など起きていないでしょうか。」 をガイドラインに沿った質問です。という返答は早々になくなった ただ、今のプロンプトがちょっと厳格すぎるので、 割と適切な粒度で問い合わせしても、まあまあ注意される… もしご利⽤される場合は、あまり怒らずに使ってください。

Slide 52

Slide 52 text

52 問い合わせ品質の向上について 当初、回答の傾向にばらつきがあったが、多少の調整でマシになった 特に「今朝から AWS につながりません。障害など起きていないでしょうか。」 をガイドラインに沿った質問です。という返答は早々になくなった ただ、今のプロンプトがちょっと厳格すぎるので、 割と適切な粒度で問い合わせしても、まあまあ注意される… もしご利⽤される場合は、あまり怒らずに使ってください。 試していませんが Amazon Q Developer が アカウント内の AWS リソースについての会話ができるようになったそうなの で、この仕組みと組み合わせてみるのも⾯⽩そうですね Amazon Q Developer で AWS リソースについてのチャットの⼀般提供を開始 https://aws.amazon.com/jp/about-aws/whats-new/2024/07/chatting-aws-resources- generally-available-amazon-q-developer/?nc1=h_ls

Slide 53

Slide 53 text

53 補⾜︓厳格すぎる件 こっちはツッコミ⼊る こっちは OK

Slide 54

Slide 54 text

54 補⾜︓厳格すぎる件 おそらく When の観点が⽋けている

Slide 55

Slide 55 text

余談

Slide 56

Slide 56 text

56 OJT での以下の問い合わせについては > 今朝から AWS につながりません。 > 障害など起きていないでしょうか。

Slide 57

Slide 57 text

57 以下2パターンでロープレ的なシナリオを⽤意しています > 今朝から AWS につながりません。 > 障害など起きていないでしょうか。 Ø パターンA Ø 起動した EC2 インスタンス(Linux)を `ifconfig etX0 down` して NIC を落とす Ø StatusCheckFailed_Instance を強制的に起こさせる Ø パターンB Ø IAM ユーザーのポリシーで所定のグローバル IP アドレス「以外」からのアクセスを拒否しておく Ø テザリングなど、異なる IP アドレスからのアクセスにして、マネコンへのログインを拒否させる

Slide 58

Slide 58 text

58 他のパターンも募集中 > 今朝から AWS につながりません。 > 障害など起きていないでしょうか。 Ø パターンA Ø 起動した EC2 インスタンス(Linux)内で `ifconfig etX0 down` して NIC を落とす Ø StatusCheckFailed_Instance を強制的に起こさせる Ø パターンB Ø IAM ユーザーのポリシーで所定のグローバル IP アドレス「以外」からのアクセスを拒否しておく Ø テザリングなど、異なる IP アドレスからのアクセスにして、マネコンへのログインを拒否させる Ø 「AWS につながらない」という抽象的なワードを逆⼿に取った 性格の悪い問い合わせ 例題として良いユースケースを思いついた⽅は、 私までこっそりご連絡ください🙏

Slide 59

Slide 59 text

No content