[Amazon Bedrock 新機能]プロンプト最適化がプレビュー利用可能になりました

[Amazon Bedrock 新機能]プロンプト最適化がプレビュー利用可能になりました

Clock Icon2024.11.22

こんにちは、森田です。

以下のアップデートで Amazon Bedrock のプロンプト最適化がプレビューリリースされました。

https://aws.amazon.com/about-aws/whats-new/2024/11/prompt-optimization-preview-amazon-bedrock/

プロンプト最適化

今回発表された機能は、ユーザが LLM へ入力するプロンプトを最適化してくれる機能です。

プロンプトは、LLM に対しての指示文となっており、このプロンプトの書き方によって、LLMの出力精度が変化します。
「プロンプトの書き方」はLLMを利用する際の重要なファクターとなっており、プロンプトエンジニアリングといった新しい学問も確立されています。

https://dev.classmethod.jp/articles/how-to-design-prompt-engineering/

そのため、プロンプトエンジニアリングを学んでいなければ、最適なプロンプトの作成が難しかったのですが、
この機能を使えば、簡単により最適なプロンプトを作成することが可能となります。

プレビュー利用可能なリージョン

東京リージョンでは利用できません。
以下のリージョンで利用可能です。

  • us-east-1
  • us-west-2
  • ap-south-1
  • ap-southeast-2
  • ca-central-1
  • eu-central-1
  • eu-west-1
  • eu-west-2
  • eu-west-3
  • sa-east-1

利用可能なモデル

すべてのモデルで利用可能ではなく、一部モデルのみ対応しています。

  • Amazon Titan Text G1 - Premier
  • Anthropic Claude 3 Haiku
  • Anthropic Claude 3 Opus
  • Anthropic Claude 3 Sonnet
  • Anthropic Claude 3.5 Sonnet
  • Meta Llama 3 70B Instruct
  • Meta Llama 3.1 70B Instruct
  • Mistral AI Mistral Large (24.02)

やってみた

マネジメントコンソール

Playground

まずは、Playground上で動作を確認してみます。

モデルの選択後(Claude3.5 Sonnet)、プロンプトを入力し、プロンプト入力フォームのアイコンをクリックします。

スクリーンショット_2024-11-22_4_09_25.png

すると、以下のようにプロンプト最適化が開始されます。

スクリーンショット 2024-11-22 3.46.07.png

プロンプト最適化が完了すると、以下のように最適化したプロンプトを提案してくれます。(提案完了まで数十秒ほどかかります)

スクリーンショット_2024-11-22_4_12_46.png

元のプロンプト
プロンプトエンジニアリングについて教えて
最適化されたプロンプト
<task>
プロンプトエンジニアリングについて説明する
</task>

<instruction>
プロンプトエンジニアリングとは、大規模言語モデル(LLM)に与えるプロンプトを最適化することで、LLMの出力を改善する手法のことです。以下の点に留意して、プロンプトエンジニアリングについて簡潔に説明してください:

- プロンプトエンジニアリングの目的と重要性
- プロンプトを最適化する際の一般的な手法
- プロンプトエンジニアリングの具体的な利点
- プロンプトエンジニアリングの課題や制限事項(あれば)

出力は<response>と</response>タグで囲んでください。
</instruction>

<response>
プロンプトエンジニアリングは、LLMに与えるプロンプトを工夫・最適化することで、LLMの出力を改善する手法です。目的は、LLMに適切な指示を与え、より正確で有用な出力を得ることです。

一般的な手法としては、プロンプトの構造化、明確な指示の提示、適切な例示の追加などがあります。プロンプトを丁寧に設計することで、LLMの出力の質が向上し、タスクに対する有用性が高まります。

プロンプトエンジニアリングの利点は、LLMの能力を最大限に引き出せること、特定のタスクに特化した出力が得られることなどです。一方で、プロンプトの設計が難しい場合があり、試行錯誤を要する点が課題と言えます。
</response>

Prompt management

先日GAされた Prompt management 上でも利用できるようです。

以下のように「Optimize」のボタンが追加されています。

スクリーンショット_2024-11-22_4_20_38.png

プロンプト最適化後でも、最適化前に使用していた変数が含まれています。

また、LLMからより正確な回答が得られるように変数も増えています。

スクリーンショット_2024-11-22_4_23_20.png

APIから実行

APIから実行しても時間を要するため、レスポンスはstreamとなります。

Pythonから実行
import boto3

# Set values here
TARGET_MODEL_ID = "anthropic.claude-3-sonnet-20240229-v1:0" 
PROMPT = "プロンプトエンジニアリングについて教えて" 

def get_input(prompt):
    return {
        "textPrompt": {
            "text": prompt
        }
    }

def handle_response_stream(response):
    try:
        event_stream = response['optimizedPrompt']
        for event in event_stream:
            if 'optimizedPromptEvent' in event:
                print("========================== OPTIMIZED PROMPT ======================\n")
                optimized_prompt = event['optimizedPromptEvent']
                print(optimized_prompt)
            else:
                print("========================= ANALYZE PROMPT =======================\n")
                analyze_prompt = event['analyzePromptEvent']
                print(analyze_prompt)
    except Exception as e:
        raise e

if __name__ == '__main__':
    client = boto3.client('bedrock-agent-runtime', region_name="us-west-2")
    try:
        response = client.optimize_prompt(
            input=get_input(PROMPT),
            targetModelId=TARGET_MODEL_ID
        )
        print("Request ID:", response.get("ResponseMetadata").get("RequestId"))
        print("========================== INPUT PROMPT ======================\n")
        print(PROMPT)
        handle_response_stream(response)
    except Exception as e:
        raise e
実行結果
========================== INPUT PROMPT ======================

プロンプトエンジニアリングについて教えて
========================= ANALYZE PROMPT =======================

{'message': 'Analysis of your prompt is complete'}
========================== OPTIMIZED PROMPT ======================

{'optimizedPrompt': {'textPrompt': {'text': '"<task>\\n\\u30d7\\u30ed\\u30f3\\u30d7\\u30c8\\u30a8\\u30f3\\u30b8\\u30cb\\u30a2\\u30ea\\u30f3\\u30b0\\u306b\\u3064\\u3044\\u3066\\u8aac\\u660e\\u3059\\u308b\\n</task>\\n\\n<instruction>\\n\\u30d7\\u30ed\\u30f3\\u30d7\\u30c8\\u30a8\\u30f3\\u30b8\\u30cb\\u30a2\\u30ea\\u30f3\\u30b0\\u3068\\u306f\\u3001\\u5927\\u898f\\u6a21\\u8a00\\u8a9e\\u30e2\\u30c7\\u30eb(LLM)\\u306b\\u4e0e\\u3048\\u308b\\u30d7\\u30ed\\u30f3\\u30d7\\u30c8(\\u5165\\u529b\\u30c6\\u30ad\\u30b9\\u30c8)\\u3092\\u6700\\u9069\\u5316\\u3059\\u308b\\u3053\\u3068\\u3067\\u3001\\u30e2\\u30c7\\u30eb\\u306e\\u51fa\\u529b\\u3092\\u6539\\u5584\\u3059\\u308b\\u624b\\u6cd5\\u306e\\u3053\\u3068\\u3067\\u3059\\u3002\\u4ee5\\u4e0b\\u306e\\u70b9\\u306b\\u7559\\u610f\\u3057\\u3066\\u3001\\u30d7\\u30ed\\u30f3\\u30d7\\u30c8\\u30a8\\u30f3\\u30b8\\u30cb\\u30a2\\u30ea\\u30f3\\u30b0\\u306b\\u3064\\u3044\\u3066\\u7c21\\u6f54\\u306b\\u8aac\\u660e\\u3057\\u3066\\u304f\\u3060\\u3055\\u3044:\\n\\n- \\u30d7\\u30ed\\u30f3\\u30d7\\u30c8\\u30a8\\u30f3\\u30b8\\u30cb\\u30a2\\u30ea\\u30f3\\u30b0\\u306e\\u76ee\\u7684\\u3068\\u91cd\\u8981\\u6027\\n- \\u30d7\\u30ed\\u30f3\\u30d7\\u30c8\\u3092\\u6700\\u9069\\u5316\\u3059\\u308b\\u969b\\u306e\\u4e00\\u822c\\u7684\\u306a\\u624b\\u6cd5\\n- \\u30d7\\u30ed\\u30f3\\u30d7\\u30c8\\u30a8\\u30f3\\u30b8\\u30cb\\u30a2\\u30ea\\u30f3\\u30b0\\u306e\\u5177\\u4f53\\u7684\\u306a\\u5229\\u70b9\\n- \\u30d7\\u30ed\\u30f3\\u30d7\\u30c8\\u30a8\\u30f3\\u30b8\\u30cb\\u30a2\\u30ea\\u30f3\\u30b0\\u306e\\u8ab2\\u984c\\u3084\\u5236\\u9650\\u4e8b\\u9805\\n\\n\\u3042\\u306a\\u305f\\u306e\\u56de\\u7b54\\u306f<response>\\u3068</response>\\u306e\\u30bf\\u30b0\\u3067\\u56f2\\u3093\\u3067\\u304f\\u3060\\u3055\\u3044\\u3002\\n</instruction>\\n\\n<response>\\n\\u30d7\\u30ed\\u30f3\\u30d7\\u30c8\\u30a8\\u30f3\\u30b8\\u30cb\\u30a2\\u30ea\\u30f3\\u30b0\\u306e\\u76ee\\u7684\\u306f\\u3001LLM\\u306b\\u4e0e\\u3048\\u308b\\u30d7\\u30ed\\u30f3\\u30d7\\u30c8\\u3092\\u6539\\u5584\\u3059\\u308b\\u3053\\u3068\\u3067\\u3001\\u30e2\\u30c7\\u30eb\\u306e\\u51fa\\u529b\\u3092\\u6700\\u9069\\u5316\\u3057\\u3001\\u3088\\u308a\\u6b63\\u78ba\\u3067\\u6709\\u7528\\u306a\\u7d50\\u679c\\u3092\\u5f97\\u308b\\u3053\\u3068\\u3067\\u3059\\u3002\\u3053\\u308c\\u306f\\u3001LLM\\u306e\\u6027\\u80fd\\u3092\\u6700\\u5927\\u9650\\u306b\\u5f15\\u304d\\u51fa\\u3059\\u305f\\u3081\\u306b\\u975e\\u5e38\\u306b\\u91cd\\u8981\\u306a\\u624b\\u6cd5\\u3067\\u3059\\u3002\\n\\n\\u4e00\\u822c\\u7684\\u306a\\u624b\\u6cd5\\u3068\\u3057\\u3066\\u306f\\u3001\\u30d7\\u30ed\\u30f3\\u30d7\\u30c8\\u306e\\u69cb\\u9020\\u5316\\u3001\\u660e\\u78ba\\u306a\\u6307\\u793a\\u306e\\u63d0\\u793a\\u3001\\u9069\\u5207\\u306a\\u6587\\u8108\\u306e\\u63d0\\u4f9b\\u3001\\u4f8b\\u793a\\u306e\\u6d3b\\u7528\\u306a\\u3069\\u304c\\u3042\\u308a\\u307e\\u3059\\u3002\\u307e\\u305f\\u3001\\u30d7\\u30ed\\u30f3\\u30d7\\u30c8\\u306e\\u9577\\u3055\\u3084\\u8a00\\u8a9e\\u7684\\u306a\\u8868\\u73fe\\u3092\\u8abf\\u6574\\u3059\\u308b\\u3053\\u3068\\u3082\\u6709\\u52b9\\u3067\\u3059\\u3002\\n\\n\\u30d7\\u30ed\\u30f3\\u30d7\\u30c8\\u30a8\\u30f3\\u30b8\\u30cb\\u30a2\\u30ea\\u30f3\\u30b0\\u306e\\u5229\\u70b9\\u306f\\u3001LLM\\u306e\\u51fa\\u529b\\u306e\\u8cea\\u3092\\u5411\\u4e0a\\u3055\\u305b\\u3001\\u7279\\u5b9a\\u306e\\u30bf\\u30b9\\u30af\\u306b\\u7279\\u5316\\u3057\\u305f\\u7d50\\u679c\\u3092\\u5f97\\u3089\\u308c\\u308b\\u3053\\u3068\\u3067\\u3059\\u3002\\u307e\\u305f\\u3001\\u30e2\\u30c7\\u30eb\\u306e\\u8aa4\\u308a\\u3084\\u504f\\u308a\\u3092\\u8efd\\u6e1b\\u3057\\u3001\\u3088\\u308a\\u516c\\u5e73\\u3067\\u502b\\u7406\\u7684\\u306a\\u51fa\\u529b\\u3092\\u5b9f\\u73fe\\u3067\\u304d\\u307e\\u3059\\u3002\\n\\n\\u4e00\\u65b9\\u3067\\u3001\\u30d7\\u30ed\\u30f3\\u30d7\\u30c8\\u30a8\\u30f3\\u30b8\\u30cb\\u30a2\\u30ea\\u30f3\\u30b0\\u306b\\u306f\\u3001\\u30d7\\u30ed\\u30f3\\u30d7\\u30c8\\u4f5c\\u6210\\u306e\\u624b\\u9593\\u3084\\u3001\\u30e2\\u30c7\\u30eb\\u306e\\u5185\\u90e8\\u52d5\\u4f5c\\u3092\\u5b8c\\u5168\\u306b\\u5236\\u5fa1\\u3067\\u304d\\u306a\\u3044\\u3068\\u3044\\u3046\\u8ab2\\u984c\\u3082\\u3042\\u308a\\u307e\\u3059\\u3002\\u307e\\u305f\\u3001\\u30d7\\u30ed\\u30f3\\u30d7\\u30c8\\u306e\\u6700\\u9069\\u5316\\u306b\\u306f\\u8a66\\u884c\\u932f\\u8aa4\\u304c\\u5fc5\\u8981\\u3067\\u3001\\u6642\\u9593\\u3068\\u30b3\\u30b9\\u30c8\\u304c\\u304b\\u304b\\u308b\\u53ef\\u80fd\\u6027\\u304c\\u3042\\u308a\\u307e\\u3059\\u3002\\n</response>"'}}}

さいごに

Amazon Bedrock で生成AI活用のハードルを下げる非常に便利なアップデートでした。
プロンプト最適化に時間を要していることから、最適化処理でもLLMが利用されていそうな気がしています。

現在は、プレビュー公開のため利用制限がありますが、今後のGAが非常に楽しみです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.