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

20250509_reCheers

 20250509_reCheers

Avatar for Takuya Yonezawa

Takuya Yonezawa

May 09, 2025
Tweet

More Decks by Takuya Yonezawa

Other Decks in Technology

Transcript

  1. 1 © 2025 Japan Digital Design, Inc. Takuya Yo nezawa

    2025.05.09 思い立ってBedrockを使って QAチャットボットを作った話 JAWS DAYS 2025 re :Cheers
  2. 2 © 2025 Japan Digital Design, Inc. 米澤 拓也 Software

    Engineer Technology & Development Div. and Corporate Culture室 プロフィール @CDK Conference 2024 Not Certified 前職ではCCoE、現職ではSoftware Engineer フロント/バックエンドの実装からインフラ構築など何でもやってます JAWS DAYS2025/ JAWS DAYS2024 / PANKRATION2024 の運営(WEB) Fin-JAWSの運営もやってます、CBはServerlessで2023年生 関西圏のJAWSに出没します 好きなAWSサービスは CloudFront、Lambda、CDK
  3. 10 © 2025 Japan Digital Design, Inc. AWS Cloud CDK

    App Runner ECR Secrets Manager 自動デプロイ GitHub Actions AWS WAF User CloudFront Bedrock Knowledge Base S3 (RAG用) AppConfig 開発中の機能はAppConfigの FeatureFlag用いることで、 デプロイとリリースを分離 QAチャット機能
  4. 12 © 2025 Japan Digital Design, Inc. RAGには Bedrock Knowledge

    Bases + Pineconeを採用 • AWSでRAGといえば Knowledge Baseですよね • WEBの全ページを自動でPNG化し てKnowledge Baseのデータソース に設定(Cypress利用) • 画像形式なのでパーサーは Claude 3.5 Sonnetを利用 辛かったこと # 1 PNGが3.5MB以上だと Knowledge Baseで処理できない! 手動で分割 HTMLとJSをデータソースに設定するか?? とも思いましたがRemix (Vite)でビルドされているので諦め
  5. 13 © 2025 Japan Digital Design, Inc. RAGには Bedrock Knowledge

    Bases + Pineconeを採用 • AWSでRAGといえば Knowledge Baseですよね • WEBの全ページを自動でPNG化し てKnowledge Baseのデータソース に設定(Cypress利用) • 画像形式なのでパーサーは Claude 3.5 Sonnetを利用 辛かったこと # 2 Knowledge Baseのデータ同期で Claude3.5がクオータに抵触しまくり RPM 3 !! ちなみにKB@オレゴンのパーサーで Cross Region Inferenceは利用できない 素直にクオータ緩和リクエスト出せばよかった。。
  6. 15 © 2025 Japan Digital Design, Inc. RAGには Bedrock Knowledge

    Bases + Pineconeを採用 • AWSでRAGといえば Knowledge Baseですよね • WEBの全ページを自動でPNG化し てKnowledge Baseのデータソース に設定(Cypress利用) • 画像形式なのでパーサーは Claude 3.5 Sonnetを利用 辛かったこと # 3 チャットのラリーを続けると WAFに弾かれる 犯人は AWSManagedRulesCommonRuleSet の このルール WAFを経由しないようWEBクライアント側からで はなく、App Runner側 (Remix内部) から チャット用のAPIを呼び出すように変更
  7. 16 © 2025 Japan Digital Design, Inc. WEBに公開LLM系APIを生やす際に考えたこと① 課金死への対応: 誰でも叩けるAPIになるので連打されたらBedrock課金が増えて泣いちゃう

    ex.) Jmeter、“必ず10000文字で回答して” ① WAFでのレートリミット制限(Remix内部、App Runnerでは無理そうだった) ② BedrockのAPIコールする時に maxTokenを指定して爆発しないようにした ③ プロンプト側で「最大300文字で回答してね」と指示を与える ④ 会話形式を辞めて一問一答形式にする(先述)
  8. 17 © 2025 Japan Digital Design, Inc. WEBに公開LLM系APIを生やす際に考えたこと② 怪しいプロンプトへの対応: プロンプトインジェクションとか全く関係ない質問とか

    ex.)明日の天気を教えて ぶっちゃけ全部カバーは難しかったのでお気持ちで下記を実施 ① フロント側のチャット入力欄でバリデーション設定 ② バックエンド側でも①のバリデーションを設定(Zod) ③ 「イベントに関係ない質問は答えないでね」とプロンプト指示 ④ 一応DBにチャット履歴保存してチラチラ眺める
  9. 19 © 2025 Japan Digital Design, Inc. もうLambda Web Adapterに移植完了しました

    (Cold Start問題が起こるけど大目に見てね) https://speakerdeck.com/takuyay0ne/20241004-jpk2024-retrospective