Bedrockで遊ぼう! 短期間で色々開発してみた
by
taiko19xx
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
JAWS-UG 秋田 勉強会@2024/08/10 #jawsug #jawsugtohoku #jawsugakita 木村俊彦 @taiko19xx Bedrockで遊ぼう! 短期間で色々開発してみた
Slide 2
Slide 2 text
● 木村俊彦 ○ X: @taiko19xx ● 仙台でゲームの会社に勤めてます ○ Kubernetes(EKS)とGitHub Actionsばっかり触っています ● 技術同人誌サークルの「杜の都の開発室」をやっています ● 最近のトピック ○ 遺伝子検査を受けてみました ○ 知り合いの作り方がよくわからない 自己紹介
Slide 3
Slide 3 text
● ここ1ヵ月、Bedrockを使って色々作っていました ● その中で得られた知見や方針などを色々お話できればと思います ● 作ったものはこちら ○ https://github.com/taiko19xx/202408_bedrock_apps 概要
Slide 4
Slide 4 text
● 前日談 ● 基本構成と方針 ● 作ったものの紹介 ● 作ってみてわかったこと 今日の内容
Slide 5
Slide 5 text
前日談
Slide 6
Slide 6 text
● 7/5にJAWS-UG 仙台で生成AIのハンズオンがあった ● 懇親会で秋田への参加を誘われる ● 話すネタどうしようか... ● そういえばハンズオンでBedrockの話があったな... 前日談
Slide 7
Slide 7 text
いい機会なので いろいろ作ってみよう!
Slide 8
Slide 8 text
基本構成・方針
Slide 9
Slide 9 text
● Bedrock ● Lambda ○ Node.js 20 / arm64 ● CloudFront ○ HTML配信用 ● S3 ○ CloudFrontのバックエンド / 画像保存先 ● DynamoDB 基本構成
Slide 10
Slide 10 text
(8/1時点)
Slide 11
Slide 11 text
● Webアプリを構築 ○ HTMLはBedrockに生成してもらう ● API側はLambda ○ 関数URLを使用 ○ 関数は手書き ● BedrockはClaude 3 Haiku / 3.5 Sonnetを使用 ○ そのためオレゴンかバージニア北部 基本方針
Slide 12
Slide 12 text
東京リージョンで使えるようになった!!
Slide 13
Slide 13 text
● Webアプリを構築 ○ HTMLはBedrockに生成してもらう ● API側はLambda ○ 関数URLを使用 ○ Lambdaは手書き ● BedrockはClaude 3 Haiku / 3.5 Sonnetを使用 ○ そのためオレゴンかバージニア北部 ● Bedrockも含め全て東京リージョン 基本方針
Slide 14
Slide 14 text
作ってみたもの
Slide 15
Slide 15 text
チャットボットくん
Slide 16
Slide 16 text
● 会話するだけ ● 特に調整していないので素の状態 ● 履歴はブラウザに保存 ● とりあえずということで作ってみた ○ コンソール入らないで済むので便利 チャットボットくん
Slide 17
Slide 17 text
マルチ翻訳くん
Slide 18
Slide 18 text
● 言語自動認識+複数言語への翻訳 ● やっていることはほぼAmazon Translator ● 20言語ぐらい対応 ○ 言語コードを送っているだけなのでどんどん増やせる ● こういうツールを使う場面があったのでそれの再現 マルチ翻訳くん
Slide 19
Slide 19 text
文章校正くん
Slide 20
Slide 20 text
● 入力した文章を指定したスタイルに校正してくれる ○ フォーマルな文章をカジュアルに、その逆も ● 校正部分にハイライトし、理由も表示してくれる ● 前々から欲しいと思っていたので作成 文章校正くん
Slide 21
Slide 21 text
画像タグ付けくん
Slide 22
Slide 22 text
● S3にアップロードした画像にタグ付けをする ○ アップロードはPresigned URL経由 ○ タグデータはDynamoDBに保存 ○ タグによる絞り込みも可能 ● これのみデータはAWS側に保存されているため共有 画像タグ付けくん
Slide 23
Slide 23 text
No content
Slide 24
Slide 24 text
作ってみてわかったこと
Slide 25
Slide 25 text
● API構築+HTML生成で2〜3時間あれば作れる ● HTMLだけでも、API側のモックとしての利用には最適 ● 簡単な内部向けツールであればサクッと作れそう スピード感は半端ない
Slide 26
Slide 26 text
● 書いてあることはやるが、書いてないことはやってくれない ● 「いい感じにして」「よしなに」は難しい ● プロジェクトのことを何も知らない人に指示するにはどうするのか、と考え るとよさそう ● データ構造は文字で書くよりそのまま書いて参照してもらったほうが早い プロンプトは仕様書
Slide 27
Slide 27 text
● 出力される結果を前もって予想しておく ○ APIの説明でresultというキーを使ってたらアプリ側の変数と重複し てしまい、変な結果になった ● 自分が指示される側であればどうか、を考える ○ 仕様書と合わせて AIの気持ちになる
Slide 28
Slide 28 text
● 例えばコード生成を任せるのであれば、ライブラリや技術自体の知識はあ る程度必要 ○ そもそもの使い方を知らないと調整できない ○ 間違ってるので直してと言っても100%直る訳ではない ● 凝ったことをしたい場合は用語と使われ方・使い方の知識が必要 ○ データのブラウザへの保存やロード画面の表示など 完全にお任せしない
Slide 29
Slide 29 text
● 作成したアプリを試しに社内で公開した ● 想定外な使われ方をし出して、費用が大変なことになった ● それはそれで色々勉強になった ● 最悪WAFでIPブロック いたずらに気を付ける
Slide 30
Slide 30 text
● トークン量に応じた課金のため、トークン量の確認は必須 ● 事前にトークン量の算出は難しい ○ Haikuは気にならないが、Sonnetだとちょっと気になるレベル ○ インプットとアウトプットで段違いなのも注意 ● メトリクスとしては見られるが、モデル毎になる ○ InputTokenCount / OutputTokenCount ● トークン量は呼び出し結果内に含まれる ○ 個別の計測もカスタムメトリクスで可能 トークン量をよく見る
Slide 31
Slide 31 text
● 色々作ってみた結果とそこから得た知見の共有でした ● スッと作って動かせるのはやはり楽しい ● 時間も限られていましたが、色々作りたいものが作れて満足 ● アイディアは出そうと思えば無限に出てくる ● 生成AIを利用したアプリ作成の知見も得られたので良かったです ● 是非お盆の暇つぶしにいかがでしょうか まとめ
Slide 32
Slide 32 text
ありがとうございました