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

Claude3 on Bedrock with Converse API + Tool use でチャットアプリを作成してみた/Building-a-Chat-App-Using-Claude3-on-Bedrock-with-the-Converse-API+Tool-Use

Claude3 on Bedrock with Converse API + Tool use でチャットアプリを作成してみた/Building-a-Chat-App-Using-Claude3-on-Bedrock-with-the-Converse-API+Tool-Use

2024/6/18
Bedrock Claude Night 2(JAWS-UG AI/ML支部 × 東京支部コラボ)
https://jawsug-ai.connpass.com/event/319748/

LT登壇資料です.

Renya K.

June 18, 2024
Tweet

Other Decks in Technology

Transcript

  1. © 2024 NTT DATA Japan Corporation Claude3 on Bedrock with

    Converse API + Tool use で チャットアプリを作成してみた 2024/6/18 株式会社NTTデータ 鯨田 連也 Bedrock Claude Night 2 JAWS-UG AI/ML支部 × 東京支部コラボ
  2. © 2024 NTT DATA Japan Corporation 2 自己紹介 鯨田 連也

    (Renya Kujirada) • 職種: Data Scientist / MLOps Engineer • 業務: PoC, R&D(Computer Vision, LLMOps) • 好きなAWSサービス: Bedrock, SageMaker • X : @recat_125 株式会社NTTデータ デザイン&テクノロジーコンサルティング事業本部
  3. © 2024 NTT DATA Japan Corporation 3 目次 • はじめに

    • Converse API とは • Tool use とは • Tool use の仕組み • 作成したアプリと工夫点 • アプリの特徴 • ConverseStream API + Tool use 利用時の注意点 • ツール利用の制御の工夫 • まとめ • 参考資料
  4. © 2024 NTT DATA Japan Corporation 4 はじめに Bedrock Converse

    API と Tool use を利用し,Streamlit でチャットアプリ(デモ)を作成しました. 開発の過程で得られた知見を基に,Converse API や Tool use の仕組みについて解説いたします.
  5. © 2024 NTT DATA Japan Corporation 5 Converse API とは

    統一的なインターフェースで Amazon Bedrock のモデルを容易に呼び出すことが可能な,チャット用途に特化した API. 既存の推論APIである InvokeModel API と似ているが,以下が特徴である. • モデル毎の推論パラメーターが共通化 • マルチターン対話が容易に可能 • 画像の Base64 エンコードが不要 • ストリーミング処理が可能(ConverseStream API を利用) • Tool use (function calling) が可能
  6. © 2024 NTT DATA Japan Corporation 6 InvokeModel API でモデルを呼び出す場合

    Claude3 Haiku の呼び出し Command R+ の呼び出し モデル毎に推論パラメーターが異なる…
  7. © 2024 NTT DATA Japan Corporation 7 Converse API でモデルを呼び出す場合

    Claude3 Haiku の呼び出し Command R+ の呼び出し 差分はモデルIDのみ!
  8. © 2024 NTT DATA Japan Corporation 8 Tool use (function

    calling) とは 外部ツールや関数 (API) を呼び出すことにより,Claude3 の能力を拡張する機能である. 事前に定義されたツールにClaude3がアクセスし,必要に応じてツールを呼び出すことで,複雑なタスクを処理できるようになる. ※画像は以下リンクから引用: https://github.com/anthropics/courses/blob/master/ToolUse/01_tool_use_overview.ipynb ツールの定義
  9. © 2024 NTT DATA Japan Corporation 9 Tool use の仕組み

    Claude3 がツールを実行するわけではなく,どのツールをどのような引数で呼ぶべきかを判断し,そのツールの実行を ユーザーに依頼する.その後,ユーザーはツールを実行し,実行結果に基づきClaude3が回答を生成する. モデル Step1: ツールの定義とプロンプトを送信 Step2: ツール実行のリクエストを返却 Step3: ツールを実行 実行結果を取得 Step4: ツールの実行結果を送信 Step5: ツールの実行結果に基づき回答生成 ユーザー (アプリ) ツール (関数,API)
  10. © 2024 NTT DATA Japan Corporation 11 アプリ(デモ)の特徴 ConverseStream API

    で Tool use(天気予報取得ツール,Web 検索ツール)を利用しており,会話中にモデルや推論 パラメーターを変更可能である. Web検索ツールを利用 モデル・パラメーターの設定
  11. © 2024 NTT DATA Japan Corporation 12 アプリの実装時のTips ConverseStream API

    でのツール実行リクエスト生成時の注意点と,Claude3 が不必要にツールを利用しないようにする ための工夫がある. • ストリーミングでツール実行のリクエスト(ツール名,ツールの引数)を取得しつつ,生成文を出力する必要あり • ツールリクエスト生成時,Claude3はテキストを生成しないことがある • Claude3 の知識で答えられる質問に対しても,Web検索ツールを利用して回答してしまう等の課題への対処 • プロンプトエンジニアリング • モデルの選定
  12. © 2024 NTT DATA Japan Corporation 13 ConverseStream API の

    ツール実行リクエスト生成時の注意点 ConverseStream API のレスポンス response["stream"] には Tool use に関わる要素が4つ存在し,それらを漏れなく 取得・出力しなければならない. レスポンスの各キー 内容 説明 event["contentBlockDelta"]["delta"]["text"] モデルが生成したテキスト Claude3 の場合,本項目は含まれ ないことがある event["contentBlockStart"]["start"]["toolUse"] Tool use の開始情報 toolUseId と name(ツール名) が 含まれる event["contentBlockDelta"]["delta"]["toolUse"]["input"] Tool に渡す入力データ JSON 形式の Tool の入力データ (引数)が含まれる event["messageStop"]["stopReason"] メッセージの停止理由 Tool use の場合,"tool_use“ が含 まれる ※レスポンスのstreamキーの要素をeventとして表現している
  13. © 2024 NTT DATA Japan Corporation 14 Claude3 が不必要にツールを利用しないようにするための工夫(1/2) プロンプトエンジニアリングが特に有効.プロンプトでは,「必要な場合のみツールを利用する」ように強調して指示している.

    その他,「どのような場合にどのツールを利用すべきか」という具体的な指示も有効らしい.※ あなたは日本人のAIアシスタントです。必ず日本語で回答する必要があります。 以下の<rule>タグ内には厳守すべきルールが記載されています。以下のルールを絶対に守り、ツールを不必要 に使用しないで下さい。 <rule> - あなたはツールにアクセスできますが、必要な場合にのみそれらを使用してください。 - 自身の知識で回答できない場合のみ、関連するツールを使用してユーザーの要求に答えてください。 </rule> まず、提供されたツールのうち、ユーザーの要求に答えるのに関連するツールはどれかを考えてください。次に、関 連するツールの必須パラメータを1つずつ確認し、ユーザーが直接提供したか、値を推測するのに十分な情報を 与えているかを判断します。 パラメータを推測できるかどうかを決める際は、特定の値をサポートするかどうかを慎重に検討してください。ただ し、必須パラメータの値の1つが欠落している場合は、関数を呼び出さず(欠落しているパラメータに値を入れて も呼び出さない)、代わりにユーザーに欠落しているパラメータの提供を求めてください。提供されていないオプ ションのパラメータについては、追加情報を求めないでください。 プロンプト例 ※ https://github.com/anthropics/courses/blob/master/ToolUse/04_complete_workflow.ipynb
  14. © 2024 NTT DATA Japan Corporation 15 Claude3 が不必要にツールを利用しないようにするための工夫(2/2) Claude3

    Sonnet の利用が有効.Sonnet はツールの利用をプロンプトで制御しやすいが,Haiku・Opus は制御が難しい. モデル(Claude3) ツールの利用傾向 Haiku 問答無用でツールを利用 Sonnet ある程度プロンプトで制御可能(ツールの利用傾向はある) Opus CoT の過程でどのツールを利用すべきかを思考してツールを利用 (CoTの過程を<thinking>タグ内に出力する) ※ 個人環境での実験結果に基づく主観的な印象である点にご留意下さい.
  15. © 2024 NTT DATA Japan Corporation 16 (参考)Claude3 Opus における

    Tool use 利用時の出力例 Opusでツール実行のリクエスト生成時,CoTの内容を<thinking>タグで囲って生成してしまう. UX向上のため,<thinking>タグの内容を表示しない工夫が必要. ツールリクエスト 生成時 ツール実行結果 に基づく最終的 な回答
  16. © 2024 NTT DATA Japan Corporation 17 まとめ • Converse

    API とは • Amazon Bedrock のモデルを容易に呼び出すことが可能な API であり,Tool use が利用可能 • Tool use (function calling) とは • 会話中に外部ツールや関数 (API) を呼び出すことにより,Claude3 の能力を拡張する機能 • アプリ実装時のTips • ConverseStream API の ツール実行リクエスト生成時の注意点 • Claude3 が不必要にツールを利用しないようにするための工夫 • プロンプトエンジニアリング • モデル選定
  17. © 2024 NTT DATA Japan Corporation 18 参考資料 Converse APIについて,より

    Deep Dive したい方向けコンテンツとして,解説記事および実装例がございます. 是非ご覧下さい! https://qiita.com/ren8k/items/64c4a3de56b886942251 https://github.com/ren8k/aws-bedrock-converse-app-use-tools