Slide 1

Slide 1 text

2023/05/11 第103回 雲勉【オンライン】
 
 インフラエンジニアにおける ChatGPT の便利な使い方と注意点
 平田 健士郎

Slide 2

Slide 2 text

アジェンダ (ざっくり) ・自己紹介
 ・デモ
 ・ChatGPT の便利な使い方紹介
 ・ChatGPT を使ってうまくいかなった例
 ・ChatGPT を使う上での注意点


Slide 3

Slide 3 text

話すこと
 ・実際に使ってみて感じた ChatGPT の便利な使い方
 ・ChatGPT を使う上で注意すべきこと
 ※ あくまでユーザー視点でのお話し
 
 話さないこと
 ・AI や ML の話
 ・登場するツールやサービスの詳細な使い方
  (Terraform, NewRelic 等)


Slide 4

Slide 4 text

ChatGPT-3.5 と ChatGPT-4 の違い
 今回の勉強会においては ChatGPT-4 のみを使っております。 ChatGPT-3.5 ChatGPT-4 料金 無料 月額20ドル のプランで利用可能 ※ 有料 マルチタスク言語理解ベンチマーク 3ショットの正解率 70.1% 85.5% ※ より優秀

Slide 5

Slide 5 text

自己紹介


Slide 6

Slide 6 text

自己紹介 ■ 平田 健士郎
 • クラウドインテグレーション事業部 構築第八セクション
 • 前職で MSP を 2 年を経験してそこで初めて AWS に触れる
 • アイレット入社約1年半
 
 ←奥さんに描いてもらった似顔絵


Slide 7

Slide 7 text

早速ですが!

Slide 8

Slide 8 text

これから動画を見ていただきます

Slide 9

Slide 9 text

ChatGPT で サーバレスアーキテクチャを 作成する様子です

Slide 10

Slide 10 text

イメージ

Slide 11

Slide 11 text

ChatGPT への命令文 (プロンプト) API Gateway と ランタイムが Python の Lambda を使って HTTPS 接続したら "Hello ChatGPT" と表示するためのサー バーレスアーキテクチャを Terraform で構築する方法を教えて ください。

Slide 12

Slide 12 text

ChatGPT への命令文 (プロンプト) API Gateway と ランタイムが Python の Lambda を使って HTTPS 接続したら "Hello ChatGPT" と表示するためのサー バーレスアーキテクチャを Terraform で構築する方法を教えて ください。 コードでインフラを構築できる IaC ツールです。 コードで一度定義すれば作成/削除が簡単に行えるため、 今回は ChatGPT に Terraform のコードを生成してもらい そのコードを使って環境を作成します。

Slide 13

Slide 13 text

※実際の登壇ではここに動画を埋め込んでいました。 YouTube にアップした登壇動画をご参照ください。 以下は Youtube 内の動画を流した 該当時間のリンクです。 https://www.youtube.com/watch?v=uph6rms1aVc&t=374s 上記リンクの QR コード →

Slide 14

Slide 14 text

ChatGPT で 作りたいものを作れました!

Slide 15

Slide 15 text

もちろんこれだけでも 便利なのですが。。。

Slide 16

Slide 16 text

さらに発展した使い方として 学習目的での利用方法があります

Slide 17

Slide 17 text

Lambda と API Gateway で サーバーレスアーキテクチャが作れるという知識はあるけど 実際にどうやって作ればいいか分からないなー

Slide 18

Slide 18 text

API Gateway と ランタイムが python の Lambda を使って HTTPS 接 続したら "Hello ChatGPT" と表示するためのサーバーレスアーキテク チャを Terraform で構築する方法を教えてください。 Lambda と API Gateway で サーバーレスアーキテクチャが作れるという知識はあるけど 実際にどうやって作ればいいか分からないなー 言語化

Slide 19

Slide 19 text

出来上がったもの

Slide 20

Slide 20 text

出来上がったもの

Slide 21

Slide 21 text

出来上がったもの resource "aws_api_gateway_rest_api" "api" { name = "hello_chatgpt_api" } resource "aws_api_gateway_resource" "resource" { rest_api_id = aws_api_gateway_rest_api.api.id parent_id = aws_api_gateway_rest_api.api.root_resource_id path_part = "hello" } resource "aws_api_gateway_method" "method" { rest_api_id = aws_api_gateway_rest_api.api.id resource_id = aws_api_gateway_resource.resource.id http_method = "GET" authorization = "NONE" } resource "aws_api_gateway_integration" "lambda" { rest_api_id = aws_api_gateway_rest_api.api.id resource_id = aws_api_gateway_resource.resource.id http_method = aws_api_gateway_method.method.http_method integration_http_method = "POST" type = "AWS_PROXY" uri = aws_lambda_function.hello_chatgpt.invoke_arn } resource "aws_api_gateway_deployment" "deployment" { depends_on = [aws_api_gateway_integration.lambda] rest_api_id = aws_api_gateway_rest_api.api.id stage_name = "prod" } output "api_gateway_invoke_url" { value = "https://${aws_api_gateway_rest_api.api.id}.execute-api.${var.region}.amazonaws.com/prod/hello" } main.tf の API Gateway 部分

Slide 22

Slide 22 text

出来上がったもの

Slide 23

Slide 23 text

出来上がったもの resource "aws_lambda_function" "hello_chatgpt" { function_name = "hello_chatgpt" handler = "lambda_function.lambda_handler" runtime = "python3.8" role = aws_iam_role.lambda_exec.arn filename = "lambda_function.zip" tags = { Name = "hello_chatgpt" } } resource "aws_iam_role" "lambda_exec" { name = "lambda_exec" assume_role_policy = jsonencode({ Version = "2012-10-17" Statement = [ { Action = "sts:AssumeRole" Effect = "Allow" Principal = { Service = "lambda.amazonaws.com" } } ] }) } resource "aws_iam_role_policy_attachment" "lambda_exec" { policy_arn = "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" role = aws_iam_role.lambda_exec.name } resource "aws_lambda_permission" "apigw" { statement_id = "AllowAPIGatewayInvoke" action = "lambda:InvokeFunction" function_name = aws_lambda_function.hello_chatgpt.function_name principal = "apigateway.amazonaws.com" source_arn = "${aws_api_gateway_rest_api.api.execution_arn}/*/${aws_api_gateway_method.method.http_method}${aws_api_gateway_resourc e.resource.path}" } main.tf の Lambda 部分

Slide 24

Slide 24 text

出来上がったもの resource "aws_lambda_function" "hello_chatgpt" { function_name = "hello_chatgpt" handler = "lambda_function.lambda_handler" runtime = "python3.8" role = aws_iam_role.lambda_exec.arn filename = "lambda_function.zip" tags = { Name = "hello_chatgpt" } } resource "aws_iam_role" "lambda_exec" { name = "lambda_exec" assume_role_policy = jsonencode({ Version = "2012-10-17" Statement = [ { Action = "sts:AssumeRole" Effect = "Allow" Principal = { Service = "lambda.amazonaws.com" } } ] }) } resource "aws_iam_role_policy_attachment" "lambda_exec" { policy_arn = "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" role = aws_iam_role.lambda_exec.name } resource "aws_lambda_permission" "apigw" { statement_id = "AllowAPIGatewayInvoke" action = "lambda:InvokeFunction" function_name = aws_lambda_function.hello_chatgpt.function_name principal = "apigateway.amazonaws.com" source_arn = "${aws_api_gateway_rest_api.api.execution_arn}/*/${aws_api_gateway_method.method.http_method}${aws_api_gateway_resourc e.resource.path}" } main.tf の Lambda 部分 Chat GPT に Terraform コードの説明をして もらうことも可能

Slide 25

Slide 25 text

出来上がったもの resource "aws_lambda_function" "hello_chatgpt" { function_name = "hello_chatgpt" handler = "lambda_function.lambda_handler" runtime = "python3.8" role = aws_iam_role.lambda_exec.arn filename = "lambda_function.zip" tags = { Name = "hello_chatgpt" } } resource "aws_iam_role" "lambda_exec" { name = "lambda_exec" assume_role_policy = jsonencode({ Version = "2012-10-17" Statement = [ { Action = "sts:AssumeRole" Effect = "Allow" Principal = { Service = "lambda.amazonaws.com" } } ] }) } resource "aws_iam_role_policy_attachment" "lambda_exec" { policy_arn = "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole" role = aws_iam_role.lambda_exec.name } resource "aws_lambda_permission" "apigw" { statement_id = "AllowAPIGatewayInvoke" action = "lambda:InvokeFunction" function_name = aws_lambda_function.hello_chatgpt.function_name principal = "apigateway.amazonaws.com" source_arn = "${aws_api_gateway_rest_api.api.execution_arn}/*/${aws_api_gateway_method.method.http_method}${aws_api_gateway_resourc e.resource.path}" } main.tf の Lambda 部分 ChatGPT の便利な使い方① 出来上がったリソースを マネジメントコンソール で確認して Terraform のコードと見比べることで 自分が作りたいものを作るには何をすればいいかが学習できる!

Slide 26

Slide 26 text

お片付けも簡単! $ terraform destroy Destroy complete! Resources: 9 destroyed. terraform destroy コマンドで作成したリソースも簡単に削除 できる

Slide 27

Slide 27 text

気をつけたいこと (今回のデモにおいて) セキュリティ  ・意図せずインターネットに公開されないか 費用  ・作成したリソースでどれくらいの費用が発生するか 真偽  ・ChatGPT で出力された内容の真偽を自分で確認できるか

Slide 28

Slide 28 text

気をつけたいこと (今回のデモにおいて) セキュリティ  ・意図せずインターネットに公開されないか 費用  ・作成したリソースでどれくらいの費用が発生するか 真偽  ・ChatGPT で出力された内容の真偽を自分で確認できるか 知識として知っているけど作ったことはない くらいがちょうどいいかも

Slide 29

Slide 29 text

便利な使い方紹介 
 (New Relic の NRQL 作成)


Slide 30

Slide 30 text

New Relic の NRQL 作成 New Relic とは ・全世界17,000社以上が採用するシステムパフォーマンス管理ツール ・インフラの監視、アプリケーションのモニタリングなどを行う SaaS  ※ 弊社の運用保守サービスで利用しているため    例として使用させていただきます。 NRQL とは  ・New Relic のデータを操作するクエリ言語

Slide 31

Slide 31 text

New Relic の NRQL 作成 例えば バーストパフォーマンスインスタンス EC2 インスタンスのクレジットを 監視するための NRQL が欲しい

Slide 32

Slide 32 text

New Relic の NRQL 作成 例えば バーストパフォーマンスインスタンス EC2 インスタンスのクレジットを 監視するための NRQL が欲しい

Slide 33

Slide 33 text

New Relic の NRQL 作成 例えば バーストパフォーマンスインスタンス EC2 インスタンスのクレジットを 監視するための NRQL が欲しい SELECT average(provider.cpuCreditBalance.Average) FROM ComputeSample WHERE provider = 'Ec2Instance' AND providerAccountName = 'Your AWS Account Name' AND instanceId = 'Your EC2 Instance ID' TIMESERIES

Slide 34

Slide 34 text

New Relic の NRQL 作成 実行 値が取得できた SELECT average(provider.cpuCreditBalance.Average) FROM ComputeSample WHERE provider = 'Ec2Instance' AND providerAccountName = 'Your AWS Account Name' AND instanceId = 'Your EC2 Instance ID' TIMESERIES

Slide 35

Slide 35 text

New Relic の NRQL 作成 ここからは学習 「average(`aws.ec2.CPUCreditBalance`) FROM Metric 〜」という 書き方を想定していた SELECT average(provider.cpuCreditBalance.Average) FROM ComputeSample WHERE provider = 'Ec2Instance' AND providerAccountName = 'Your AWS Account Name' AND instanceId = 'Your EC2 Instance ID' TIMESERIES SELECT average(`aws.ec2.CPUCreditBalance`) FROM Metric WHERE awsAccountId = 'Your AWS Account ID' AND ec2InstanceId = 'Your EC2 Instance ID' TIMESERIES 出力された NRQL は以下

Slide 36

Slide 36 text

New Relic の NRQL 作成 質問してみる ・provider の部分を aws とした NRQL の書き方について

Slide 37

Slide 37 text

New Relic の NRQL 作成 質問してみる ・from の後について

Slide 38

Slide 38 text

New Relic の NRQL 作成 違いに気付く 以下の NRQL の違いがデータソースの違いであることに ChatGPT 説明によって気付く SELECT average(provider.cpuCreditBalance.Average) FROM ComputeSample WHERE provider = 'Ec2Instance' AND providerAccountName = 'Your AWS Account Name' AND instanceId = 'Your EC2 Instance ID' TIMESERIES SELECT average(`aws.ec2.CPUCreditBalance`) FROM Metric WHERE awsAccountId = 'Your AWS Account ID' AND ec2InstanceId = 'Your EC2 Instance ID' TIMESERIES

Slide 39

Slide 39 text

New Relic の NRQL 作成 データソースを Metric にして NRQL 作成を依頼

Slide 40

Slide 40 text

New Relic の NRQL 作成 データソースを Metric にして NRQL 作成を依頼 SELECT average(`aws.ec2.CPUCreditBalance`) FROM Metric WHERE awsAccountId = 'Your AWS Account ID' AND ec2InstanceId = 'Your EC2 Instance ID' TIMESERIES

Slide 41

Slide 41 text

New Relic の NRQL 作成 想定していた記法で 意図した値が取得できた SELECT average(`aws.ec2.CPUCreditBalance`) FROM Metric WHERE awsAccountId = 'Your AWS Account ID' AND ec2InstanceId = 'Your EC2 Instance ID' TIMESERIES

Slide 42

Slide 42 text

New Relic の NRQL 作成 想定していた記法で 意図した値が取得できた と同時に NRQL についての 知識がついた SELECT average(`aws.ec2.CPUCreditBalance`) FROM Metric WHERE awsAccountId = 'Your AWS Account ID' AND ec2InstanceId = 'Your EC2 Instance ID' TIMESERIES

Slide 43

Slide 43 text

New Relic の NRQL 作成 調べた内容を元に一次情報を確認して知識を補完

Slide 44

Slide 44 text

便利な使い方紹介 
 (その他)


Slide 45

Slide 45 text

そのほかの便利な使い方 (1/4) トレーニングメニュー作成 例 ・チームメンバー向けに ECS のトレーニングメニューを作りたい ・自分は ECS についての知識がある ・どういった項目を作ればいいかを ChatGPT に考えてもらう

Slide 46

Slide 46 text

そのほかの便利な使い方 (1/4) トレーニングメニュー作成

Slide 47

Slide 47 text

そのほかの便利な使い方 (1/4) トレーニングメニュー作成 各項目の掘り下げも可能

Slide 48

Slide 48 text

そのほかの便利な使い方 (2/4) 正規表現作成 文章でなんとなく指示して 骨組みを作ってくれるので便利 作成された正規表現を ウェブの正規表現チェッカーで 確認すると良い 最後は自分でも検証しましょう

Slide 49

Slide 49 text

そのほかの便利な使い方 (3/4) バケットポリシー作成 希望するアクセス制限を 文章でなんとなく指示して バケットポリシーを作成 最後は自分でも検証しましょう

Slide 50

Slide 50 text

そのほかの便利な使い方 (4/4) AWS CLI コマンド作成 コマンドのざっくりとした 使い方だけ分かれば ドキュメントを調べる手間が 少し省ける 最後は自分でも検証しましょう

Slide 51

Slide 51 text

ChatGPT を使ってうまくいかなった例


Slide 52

Slide 52 text

新しい情報について main.tf の Lambda 部分 最近 GA された VPC Lattice について質問してみたところ。。。

Slide 53

Slide 53 text

新しい情報について main.tf の Lambda 部分 最近一般公開された VPC Lattice について質問してみたところ。。。

Slide 54

Slide 54 text

新しい情報について main.tf の Lambda 部分 最近 GA された VPC Lattice について質問してみたところ。。。 現行の ChatGPT の学習データは 2021年9月 のもののため 回答ができない

Slide 55

Slide 55 text

新しくない情報でも。。。 main.tf の Lambda 部分 CloudWatch の「EBSByteBalance%」というメトリクスについて質問し たところ

Slide 56

Slide 56 text

新しくない情報でも。。。 main.tf の Lambda 部分 CloudWatch の「EBSByteBalance%」というメトリクスについて質問し たところ

Slide 57

Slide 57 text

新しくない情報でも。。。 main.tf の Lambda 部分 CloudWatch の「EBSByteBalance%」というメトリクスについて質問し たところ

Slide 58

Slide 58 text

新しくない情報でも。。。 main.tf の Lambda 部分 CloudWatch の「EBSByteBalance%」というメトリクスについて質問し たところ あります。

Slide 59

Slide 59 text

新しくない情報でも。。。 main.tf の Lambda 部分 CloudWatch の「EBSByteBalance%」というメトリクスについて質問し たところ あります。 2018年の記事に記載があります。 https://aws.amazon.com/jp/blogs/compute/improving-application-performance-and-reducing-costs-with-amazon-ebs-optimized-instance-burst-capability/

Slide 60

Slide 60 text

うまくいかなかった例について ・現行の ChatGPT の学習データは 2021年9月 までのため ・2021年9月以前のことでも学習できていないことはある

Slide 61

Slide 61 text

うまくいかなかった例について ・現行の ChatGPT の学習データは 2021年9月 までのため ・2021年9月以前のことでも学習できていないことはある ・ChatGPT の知識限界を意識しつつ使う ・ググってわかることは人間が調べた方が良さそう

Slide 62

Slide 62 text

弱点を克服するかもしれない新機能 ChatGPT プラグイン「Browsing」 ・インターネット上から収集した上で質問に回答する

Slide 63

Slide 63 text

弱点を克服するかもしれない新機能 ChatGPT プラグイン「Browsing」 ・インターネット上から収集した上で質問に回答する ・2021年9月以降のことについても回答できる 現状では Alpha 版として一部での公開状態のため一般公開はまだ

Slide 64

Slide 64 text

ChatGPT を使う上での注意点


Slide 65

Slide 65 text

情報漏洩 main.tf の Lambda 部分

Slide 66

Slide 66 text

情報漏洩 main.tf の Lambda 部分

Slide 67

Slide 67 text

情報漏洩 main.tf の Lambda 部分 注意点 漏洩したら困る情報を ChatGPT に入力すべきではない

Slide 68

Slide 68 text

情報漏洩 ChatGPT に入力した情報が学習に使われるの?

Slide 69

Slide 69 text

情報漏洩 OpenAIのデータ使用に関する FAQ https://help.openai.com/en/articles/7039943-data-usage-for-consumer-services-faq

Slide 70

Slide 70 text

情報漏洩 OpenAIのデータ使用に関する FAQ https://help.openai.com/en/articles/7039943-data-usage-for-consumer-services-faq 要約 入力した情報を使用してサービスを改善することが あります。 (入力した情報が学習に使われる)

Slide 71

Slide 71 text

入力情報を学習データとして使用させない方法 →オプトアウト 情報漏洩

Slide 72

Slide 72 text

入力情報を学習データとして使用させない方法 情報漏洩 手段1 : 履歴と学習の無効化 新しいチャットを履歴に保存し、モデル トレーニングを通じて ChatGPT を改善するために使用で きるようにします。 保存されていないチャットは、30 日以内にシステムから削除されます。

Slide 73

Slide 73 text

入力情報を学習データとして使用させない方法 情報漏洩 手段2 : フォームから オプトアウトを 申請 OpenAI 社のWebフォームから ↑

Slide 74

Slide 74 text

入力情報を学習データとして使用させない方法 情報漏洩 手段2 : フォームから オプトアウトを 申請 ※情報漏洩のリスクが  ゼロになるわけではないので注意

Slide 75

Slide 75 text

アウトプットに対する責任 main.tf の Lambda 部分

Slide 76

Slide 76 text

アウトプットに対する責任 main.tf の Lambda 部分 注意点 ChatGPT のアウトプットの真偽は ユーザーが判断しなければならない

Slide 77

Slide 77 text

まとめ ChatGPT は。。。 ・エンジニアの様々な仕事を助けてくれます

Slide 78

Slide 78 text

まとめ ChatGPT は。。。 ・エンジニアの様々な仕事を助けてくれます ・学習ツールとしても便利に使うことができます

Slide 79

Slide 79 text

まとめ ChatGPT は。。。 ・エンジニアの様々な仕事を助けてくれます ・学習ツールとしても便利に使うことができます ・自分の責任の持てる範囲で使いましょう

Slide 80

Slide 80 text

番外編


Slide 81

Slide 81 text

ChatGPT に対して私が抱いたイメージ(人格)

Slide 82

Slide 82 text

ChatGPT に対して私が抱いたイメージ(人格) 最近のことには詳しくなくなくて 機密情報を漏洩させちゃうけど、

Slide 83

Slide 83 text

ChatGPT に対して私が抱いたイメージ(人格) 最近のことには詳しくなくなくて 機密情報を漏洩させちゃうけど、 温和で何でも丁寧に教えてくれる 知識が豊富で想像力豊かな ベテランの先輩社員

Slide 84

Slide 84 text

ChatGPT に対して私が抱いたイメージ(人格) 最近のことには詳しくなくなくて 機密情報を漏洩させちゃうけど、 温和で何でも丁寧に教えてくれる 知識が豊富で想像力豊かな ベテランの先輩社員 画像生成 AI で 上記のイメージを画像化 ⇨

Slide 85

Slide 85 text

ChatGPT に対して私が抱いたイメージ(人格) 最近のことには詳しくなくなくて 機密情報を漏洩させちゃうけど、 温和で何でも丁寧に教えてくれる 知識が豊富で想像力豊かな ベテランの先輩社員 画像生成 AI で 上記のイメージを画像化 ⇨

Slide 86

Slide 86 text

いつもありがとうございます! ChatGPT に対して私が抱いたイメージ(人格)

Slide 87

Slide 87 text

ChatGPT に対して私が抱いたイメージ(人格)

Slide 88

Slide 88 text

じゃあ最後にこの登壇の締めの挨拶を 考えてもらっていいですか🙏 ChatGPT に対して私が抱いたイメージ(人格)

Slide 89

Slide 89 text

ChatGPT に対して私が抱いたイメージ(人格)