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

Bedrock Prompt FlowsでSlack Bot作ってみた

Bedrock Prompt FlowsでSlack Bot作ってみた

Yusuke Shimizu

August 21, 2024
Tweet

More Decks by Yusuke Shimizu

Other Decks in Technology

Transcript

  1. Bedrock Prompt Flowsで Slack Bot作ってみた NRIネットコム TECH AND DESIGN STUDY

    #40 ユースケのユースケース Case2 転載、複製、改変等は禁止します #nncstudy
  2. はじめに Bedrock Prompt FlowsでSlack Bot作ってみた 生成AI・Amazon Bedrockについて、まだまだ 知られていない部分が多い 最新情報も多く、追いきれないことがある 実際に触ってみることで、理解が深まる

    コードにふれる機会が無くなってきた 背景 最新のBedrock Prompt Flowsの理解を深める Bedrockを触るきっかけをつくる 応用例を通じて生成系AIの理解を深め、 Bedrockの適用先を見つけられるようにする 目的 転載、複製、改変等は禁止します #nncstudy
  3. Amazon Bedrockとは 強力な基盤モデルを用いたテキスト、画像生成 を実現 AI21 Labs、Amazon、Anthropic、Cohere、 Meta、Mistral AI、Stability AIなどのトップAI 企業から提供されるモデルへ単一API経由で柔軟

    に利用可能 生成AIサービス サーバーレスアーキテクチャにより、セキュリ ティを確保しつつ迅速な開発とスケーリングを サポート ユーザからのデータをモデルの学習に一切利用 されないため、安全に利用可能 開発効率 Bedrock Prompt FlowsでSlack Bot作ってみた やあ 転載、複製、改変等は禁止します #nncstudy
  4. Bedrockのモデル一覧 Bedrock Prompt FlowsでSlack Bot作ってみた Anthropic Claude 3.5 Sonnet Claude

    3 Opus Claude 3 Sonnet Claude 3 Haiku Claude Claude Instant AI21 Labs Jurassic-2 Ultra Jurassic-2 Mid Cohere Command R+ Command R Embed English Embed Multilingual Command Command Light Meta Llama 3.1 405B Instruct Llama 3.1 70B Instruct Llama 3.1 8B Instruct Llama 3 8B Instruct Llama 3 70B Instruct Llama 2 Chat 13B Llama 2 Chat 70B Llama 2 13B Llama 2 70B Amazon Titan Embeddings G1 - Text Titan Text G1 - Lite Titan Text G1 - Express Titan Image Generator G1 Titan Multimodal Embeddings G1 Titan Text G1 - Premier Titan Text Embeddings V2 Stability AI SDXL 1.0 Mistral AI Mistral 7B Instruct Mixtral 8x7B Instruct Mistral Small (24.02) Mistral Large (24.02) Mistral Large 2 (24.07) 転載、複製、改変等は禁止します #nncstudy
  5. Bedrockの機能 ナレッジベース:企業のデータを用いて応答を 強化(RAG) エージェント:複数のタスクをオーケストレー ションし実行 ガードレール:不適切なコンテンツ生成を防ぐ セーフガード ウォーターマーク検出:生成コンテンツの   透かしを検出 モデル評価:異なるモデルの出力を比較し最適

    なモデルを選定 Prompt Management:プロンプトの作成、   評価、共有を簡素化(2024/07/10発表) Prompt Flows:生成AIワークフローの視覚的 な作成とデプロイを支援(2024/07/10発表) 機能一覧 Bedrock Prompt FlowsでSlack Bot作ってみた いろいろできんで 転載、複製、改変等は禁止します #nncstudy
  6. Bedrockの機能 機能一覧 Bedrock Prompt FlowsでSlack Bot作ってみた いろいろできんで ナレッジベース:企業のデータを用いて応答を 強化(RAG) エージェント:複数のタスクをオーケストレー

    ションし実行 ガードレール:不適切なコンテンツ生成を防ぐ セーフガード ウォーターマーク検出:生成コンテンツの   透かしを検出 モデル評価:異なるモデルの出力を比較し最適 なモデルを選定 Prompt Management:プロンプトの作成、   評価、共有を簡素化(2024/07/10発表) Prompt Flows:生成AIワークフローの視覚的 な作成とデプロイを支援(2024/07/10発表) 機能一覧 転載、複製、改変等は禁止します #nncstudy
  7. Amazon Bedrock Prompt Flowsとは Bedrock Prompt FlowsでSlack Bot作ってみた ドラッグ&ドロップでさまざまなコンポーネン トをリンクしてワークフローを構築できる直感

    的なビジュアルビルダー 開発者は複雑な生成AIアプリケーションを迅速 かつ効率的に構築可能 現在(2024/08/21)プレビュー中 概要 迅速なテストとデプロイ:ワークフロー全体を テストし、その結果を即座に確認でき、スナッ プショットを作成してバージョン管理が可能 API統合:プログラムによるフローのテスト、デ プロイもでき、Slack Botのような外部アプリケ ーションとの連携が容易 主な機能 転載、複製、改変等は禁止します #nncstudy AWSコンソール画面をもとに作成
  8. Prompt Flowsのノード Bedrock Prompt FlowsでSlack Bot作ってみた Iteratorの入力収集 条件分岐 反復処理 エージェント操作

    テキスト生成 コードの実行 いろんな手段でRAG S3へデータ取得しRAG S3へデータ保存 AIサービス呼び出し 転載、複製、改変等は禁止します #nncstudy AWSコンソール画面をもとに作成
  9. Amazon Bedrock Prompt Flowsとは Bedrock Prompt FlowsでSlack Bot作ってみた ドラッグ&ドロップでさまざまなコンポーネン トをリンクしてワークフローを構築できる直感

    的なビジュアルビルダー 開発者は複雑な生成AIアプリケーションを迅速 かつ効率的に構築可能 現在(2024/07/30)プレビュー中 概要 迅速なテストとデプロイ:ワークフロー全体を テストし、その結果を即座に確認でき、スナッ プショットを作成してバージョン管理が可能 API統合:プログラムによるフローのテスト、デ プロイもでき、Slack Botのような外部アプリケ ーションとの連携が容易 主な機能 転載、複製、改変等は禁止します #nncstudy AWSコンソール画面をもとに作成
  10. Amazon Bedrock Prompt Flowsとは Bedrock Prompt FlowsでSlack Bot作ってみた ドラッグ&ドロップでさまざまなコンポーネン トをリンクしてワークフローを構築できる直感

    的なビジュアルビルダー 開発者は複雑な生成AIアプリケーションを迅速 かつ効率的に構築可能 現在(2024/07/30)プレビュー中 概要 迅速なテストとデプロイ:ワークフロー全体を テストし、その結果を即座に確認でき、スナッ プショットを作成してバージョン管理が可能 API統合:プログラムによるフローのテスト、デ プロイもでき、Slack Botのような外部アプリケ ーションとの連携が容易 主な機能 転載、複製、改変等は禁止します #nncstudy AWSコンソール画面をもとに作成
  11. Slack Botの概要 Bedrock Prompt FlowsでSlack Bot作ってみた Slack Botは、Slackプラットフォーム上で動作す る自動化されたプログラム ユーザーとの対話を通じて情報を提供したり、

    タスクを実行 Slack Botとは 通知の自動化:重要なイベントやアラートを自 動的にSlackチャンネルに通知。これにより、チ ーム全体がリアルタイムで情報を共有 情報の取得と提供:ユーザーからの質問に対し て、正規表現や外部APIを利用して即座に回答を 提供。例えば、特定のデータを取得して表示 レポート生成の自動化:定期的にS3に配置され るデータを読み取り、レポートを自動生成して Slackチャンネルに配信。定型業務や繰り返し作 業を自動化し、効率を向上 ユースケース 転載、複製、改変等は禁止します #nncstudy
  12. Slack Botの概要 Bedrock Prompt FlowsでSlack Bot作ってみた 通知の自動化:視覚的なインターフェースで通 知ワークフローを簡単に設計・管理。生成AIが 自動でパーソナライズされた通知内容を生成 し、質と効率を向上

    情報の取得と提供:プロンプト設計とフロー管 理を統合し、ユーザーからの質問に即座に回答 するSlack Botの動作を自動化。開発サイクルが 短縮され、迅速なプロトタイピングとデプロイ が可能 レポート生成の自動化:視覚的なインターフェ ースでレポート生成ワークフローを簡単に設 計・管理。定期的にS3に配置されるデータを読 み取り、生成AIが自動でパーソナライズされた レポート内容を生成し、質と効率を向上 Amazon Bedrock Prompt Flowsと の連携 転載、複製、改変等は禁止します #nncstudy AWSコンソール画面をもとに作成
  13. 作成するSlack Botの概要 Bedrock Prompt FlowsでSlack Bot作ってみた Slack Botを通じて生成AIの実用性を体感する Bedrock Prompt

    Flowsの実践的な利用方法を学 ぶ 生成AIを活用した効率的な業務自動化の可能性 を探る 作成する目的 Slackから会話ができるようにする 一般的な知識に対しての質問や会話へ返事 特定の知識に対してはその知識を蓄えているも のから返事 NRIネットコムに関する最新のデータを利用 Botの機能 転載、複製、改変等は禁止します #nncstudy AWSコンソール画面をもとに作成
  14. 作成したSlack Botの概要 Bedrock Prompt FlowsでSlack Bot作ってみた Amazon Bedrockってなに? AWSにおける生成AIサービスで... NRIネットコムの社員数は?

    517人です 一般的な知識 特定の知識 転載、複製、改変等は禁止します #nncstudy https://www.nri-net.com/recruit/company/data
  15. アーキテクチャ Bedrock Prompt FlowsでSlack Bot作ってみた Knowledge bases API Gateway Lambda

    Prompt Flows Bedrock Netcom Page Model Claude 3.5 Sonnet CDK 転載、複製、改変等は禁止します #nncstudy AWSコンソール画面をもとに作成 https://www.nri-net.com/recruit/company/data Amazon API Gateway: API Gateway AWS Lambda: Lambda AWS Cloud Development Kit: CDK
  16. アーキテクチャ Bedrock Prompt FlowsでSlack Bot作ってみた Knowledge bases API Gateway Lambda

    Prompt Flows Bedrock Netcom Page Model Claude 3.5 Sonnet CDK 転載、複製、改変等は禁止します #nncstudy AWSコンソール画面をもとに作成 https://www.nri-net.com/recruit/company/data
  17. 作ったフロー Bedrock Prompt FlowsでSlack Bot作ってみた 内容がNRIネットコム に関する質問かそれ 以外かを出力 1. 2.

    1の結果をもとに3か4 へ移動 3. ネットコムの情報を  もとに回答 4. ユーザ入力に対して  関西弁で返答 転載、複製、改変等は禁止します #nncstudy AWSコンソール画面をもとに作成
  18. 作ったプロンプト Bedrock Prompt FlowsでSlack Bot作ってみた You are tasked with creating

    a question classifier for a chatbot. Your goal is to determine whether a given conversation is about a specific company or if it's a general question. The company in question is: <company_name> NRIネットコム株式会社 </company_name> Here is the conversation to be classified: <conversation> {{CONVERSATION}} </conversation> Please analyze the conversation and determine if it is specifically about the company mentioned above or if it's a general question. To make your classification: Look for any mention of the company name or products/services closely associated with the company. Consider the context of the conversation and whether it seems to be inquiring about or discussing the specific company. If the conversation doesn't mention the company or its associated products/services, and doesn't seem to be about the company's industry or business area, it's likely a general question. Output your final classification as either "Company" or "General". Do not include any explanation or tags, only the final classification. 転載、複製、改変等は禁止します #nncstudy AWSコンソール画面をもとに作成
  19. 作ったプロンプト Bedrock Prompt FlowsでSlack Bot作ってみた あんたは今から、めっちゃポジティブでコテコテの関西弁を使うんや。相手の話を聞いて、超前向きで元 気いっぱいな返事をせなアカンで。 ここに相手の話があるさかい、よう読んでな: <conversation_content> {{CONVERSATION_CONTENT}}

    </conversation_content> さて、こんな風に返事するんや: 1. めっちゃ元気で明るい感じで話すこと 2. 相手の言うてることに対して、ポジティブな反応をすること 3. 「〜やで」 「〜やねん」 「〜さかい」みたいな関西弁特有の言い回しを使うこと 4. 「めっちゃ」 「すんごい」 「あかん」みたいな関西弁らしい言葉もたくさん使うこと 5. 相手を励ましたり、応援したりする感じで話すこと 返事は関西弁だけで書いて、それ以外のことは書かんでええで。準備はええか? せーので返事を書き始め てな! <answer> 転載、複製、改変等は禁止します #nncstudy AWSコンソール画面をもとに作成
  20. アーキテクチャ Bedrock Prompt FlowsでSlack Bot作ってみた Knowledge bases API Gateway Lambda

    Prompt Flows Bedrock Netcom Page Model Claude 3.5 Sonnet CDK 転載、複製、改変等は禁止します #nncstudy AWSコンソール画面をもとに作成 https://www.nri-net.com/recruit/company/data
  21. アーキテクチャ Bedrock Prompt FlowsでSlack Bot作ってみた Knowledge bases API Gateway Lambda

    Prompt Flows Bedrock Netcom Page Model Claude 3.5 Sonnet CDK 転載、複製、改変等は禁止します #nncstudy AWSコンソール画面をもとに作成 https://www.nri-net.com/recruit/company/data
  22. アーキテクチャ Bedrock Prompt FlowsでSlack Bot作ってみた Knowledge bases API Gateway Lambda

    Prompt Flows Bedrock Netcom Page Model Claude 3.5 Sonnet CDK 転載、複製、改変等は禁止します #nncstudy AWSコンソール画面をもとに作成 https://www.nri-net.com/recruit/company/data
  23. アーキテクチャ Bedrock Prompt FlowsでSlack Bot作ってみた Knowledge bases API Gateway Lambda

    Prompt Flows Bedrock Netcom Page Model Claude 3.5 Sonnet CDK 転載、複製、改変等は禁止します #nncstudy AWSコンソール画面をもとに作成 https://www.nri-net.com/recruit/company/data
  24. 実際の流れ Bedrock Prompt FlowsでSlack Bot作ってみた 転載、複製、改変等は禁止します #nncstudy API Gateway Lambda

    Bedrock Prompt Flows AWSコンソール画面をもとに作成 考え中 待機 おそくね??
  25. 実際の流れ Bedrock Prompt FlowsでSlack Bot作ってみた 転載、複製、改変等は禁止します #nncstudy API Gateway Lambda

    Bedrock Prompt Flows AWSコンソール画面をもとに作成 考え中 待機 もっかい送ろ 〜3秒後〜
  26. 実際の流れ Bedrock Prompt FlowsでSlack Bot作ってみた 転載、複製、改変等は禁止します #nncstudy API Gateway Lambda

    Bedrock Prompt Flows AWSコンソール画面をもとに作成 わかった! 考え中 待機
  27. 対処法 Bedrock Prompt FlowsでSlack Bot作ってみた リトライヘッダーがあれば実行しないよう修正 再送されたリクエストに専用のリトライヘッ ダーが存在する コード修正で簡単に変更可能 無駄なLambdaが起動する

    案1: ヘッダーをチェック 時間のかかるBedrockリクエストの部分を非同 期実行 Slackからのリクエストを受け取ったら即座 に200 OKを返す 実際の処理は別のLambda関数で非同期実行 非同期実行により、処理の信頼性が向上 アーキテクチャの変更が必要 案2: Bedrockリクエストを分離 転載、複製、改変等は禁止します #nncstudy ヘッダチェック 非同期実行 AWSコンソール画面をもとに作成
  28. 対処法 Bedrock Prompt FlowsでSlack Bot作ってみた リトライヘッダーがあれば実行しないよう修正 再送されたリクエストに専用のリトライヘッ ダーが存在する コード修正で簡単に変更可能 無駄なLambdaが起動する

    案1: ヘッダーをチェック 時間のかかるBedrockリクエストの部分を非同 期実行 Slackからのリクエストを受け取ったら即座 に200 OKを返す 実際の処理は別のLambda関数で非同期実行 非同期実行により、処理の信頼性が向上 アーキテクチャの変更が必要 案2: Bedrockリクエストを分離 転載、複製、改変等は禁止します #nncstudy ヘッダチェック 非同期実行 AWSコンソール画面をもとに作成 まかせてや
  29. 修正後のアーキテクチャ Bedrock Prompt FlowsでSlack Bot作ってみた API Gateway Lambda Bedrock Prompt

    Flows 転載、複製、改変等は禁止します #nncstudy AWSコンソール画面をもとに作成 SQS Lambda SQS: Amazon Simple Queue Service
  30. 修正後のアーキテクチャ Bedrock Prompt FlowsでSlack Bot作ってみた API Gateway Lambda Bedrock Prompt

    Flows 転載、複製、改変等は禁止します #nncstudy AWSコンソール画面をもとに作成 SQS Lambda SQS: Amazon Simple Queue Service リクエストの検査 キュー入れる Bedrockの実行 Slackへ返事
  31. 時間かかってる部分 Bedrock Prompt FlowsでSlack Bot作ってみた API Gateway Lambda Bedrock Prompt

    Flows 転載、複製、改変等は禁止します #nncstudy AWSコンソール画面をもとに作成 SQS Lambda SQS: Amazon Simple Queue Service リクエストの検査 キュー入れる Bedrockの実行 Slackへ返事
  32. 時間かかってる部分 Bedrock Prompt FlowsでSlack Bot作ってみた API Gateway Lambda Bedrock Prompt

    Flows 転載、複製、改変等は禁止します #nncstudy AWSコンソール画面をもとに作成 SQS Lambda SQS: Amazon Simple Queue Service リクエストの検査 キュー入れる Bedrockの実行 Slackへ返事 3秒かかる処理じゃない
  33. 時間かかってる部分 Bedrock Prompt FlowsでSlack Bot作ってみた API Gateway Lambda Bedrock Prompt

    Flows 転載、複製、改変等は禁止します #nncstudy AWSコンソール画面をもとに作成 SQS Lambda SQS: Amazon Simple Queue Service リクエストの検査 キュー入れる Bedrockの実行 Slackへ返事 3秒かかる処理じゃない ログ確認 メモリ食ってない
  34. 時間かかってる部分 Bedrock Prompt FlowsでSlack Bot作ってみた API Gateway Lambda Bedrock Prompt

    Flows 転載、複製、改変等は禁止します #nncstudy AWSコンソール画面をもとに作成 SQS Lambda SQS: Amazon Simple Queue Service Bedrockの実行 Slackへ返事 わからんけど とりあえずリソース上げよ
  35. 対策の振り返り Bedrock Prompt FlowsでSlack Bot作ってみた シンプルにコード修正でも良かった 自分はアーキテクトなんだ!と謎の気負い 分けたLambdaでテストやりやすくなった 対策1: リアーキテクチャ

    対処法としては初歩的なものだった ただ、変にハマった この程度の処理は最小Lambdaでいいでしょ、と いう思い込み ログのメモリ使用量見て不要と判断 脳内空っぽでリソース変えるのはアリ 対策2: リソースアップ 転載、複製、改変等は禁止します #nncstudy AWSコンソール画面をもとに作成 おつかれ
  36. まとめ 最新のBedrock Prompt Flowsの理解: 最新のBedrock Prompt Flowsの機能と利点の理解 生成系AIの理解と適用先の発見: 具体的な応用例を通じた生 成系AIの理解とBedrockの適用先の発見

    効率的な開発プロセスの体感: 生成AIを活用した環境の構築 とAWSのビルディングブロックを活用した効率的な開発プ ロセスの体感 課題解決: リアーキテクチャとリソース変更によりSlackへ 複数返信する問題を解消 今後の展望: S3/Lambda/画像生成などをPrompt Flowsから 試す 転載、複製、改変等は禁止します #nncstudy