Amazon Web Services ブログ

Writer の Palmyra X5 および X4 の基盤モデルが Amazon Bedrock で利用可能に

ここ数か月で私たちが目撃したことの一つは、基盤モデル (FM) におけるコンテキストウィンドウの拡大です。今日では多くの FM が、わずか 1 年前には想像もできなかったシーケンス長を処理できるようになりました。しかし、エンタープライズでの使用に必要な信頼性とセキュリティ基準を維持しながら、膨大な量の情報を処理できる AI を利用したアプリケーションを構築することは、依然として困難です。

これらの理由から、4 月 28 日より、フルマネージドサーバーレスオファリングとして、Writer の Palmyra X5 および X4 モデルが Amazon Bedrock で提供開始されることをお知らせできることを喜ばしく思います。AWS は、Writer のフルマネージドモデルを提供する最初の大手クラウドプロバイダーです。Palmyra X5 は、Writer が本日リリースした新しいモデルです。Palmyra X4 は、以前は Amazon Bedrock Marketplace で提供されていました。

Writer の Palmyra モデルは、エンタープライズのセキュリティ基準と信頼性を維持しながら、複雑なエージェントベースのワークフローをサポートする堅牢な推論機能を提供します。Palmyra X5 は 100 万トークンのコンテキストウィンドウを備え、Palmyra X4 は 128K トークンのコンテキストウィンドウをサポートします。これらの広範なコンテキストウィンドウにより、これらのモデルは、アプリケーションおよびエージェント開発における従来の制約の一部を取り除き、より深い分析とより包括的なタスク完了を可能にします。

今回のリリースにより、Amazon Bedrock は、セキュリティ、プライバシー、責任ある AI を備えた生成 AI アプリケーションの構築に必要な最先端のモデルとツールへのアクセスを継続的に提供します。

FM 開発のパイオニアである Writer は、業界をリードするモデルを Amazon SageMaker HyperPod でトレーニングおよびファインチューニングしています。最適化された分散トレーニング環境により、Writer はトレーニング時間を短縮し、モデルをより迅速に市場に投入しています。

Palmyra X5 および X4 のユースケース
Writer の Palmyra X5 および X4 は、エンタープライズのユースケースのために特別に設計されており、強力な機能と、System and Organization Controls (SOC) 2Payment Card Industry Data Security Standard (PCI DSS)Health Insurance Portability and Accountability Act (HIPAA) コンプライアンス認証などの厳格なセキュリティ対策を組み合わせています。

Palmyra X5 および X4 モデルは、複数の業界にわたるさまざまなエンタープライズのユースケースで優れたパフォーマンスを発揮します:

金融サービス – Palmyra モデルは、投資銀行、アセットマネジメント、ウェルスマネジメントにわたるソリューションを強化します。これには、取引案件のサポート、10-Q、10-K、決算説明会のトランスクリプトからの要点抽出、ファンドおよび市場調査、パーソナライズされた大規模な顧客アウトリーチが含まれます。

ヘルスケアとライフサイエンス – 保険支払者と医療提供者は、Palmyra モデルを使用して、加入者の獲得やオンボーディング、異議申立てや苦情の対応、ケースマネジメントや利用管理、法人向け提案書 (RFP) 作成のためのソリューションを構築しています。製薬企業は、これらのモデルを、商用アプリケーション、メディカルアフェアーズ、R&D、臨床試験に使用しています。

小売および消費財 – Palmyra モデルは、製品説明の作成とバリエーションの作成、パフォーマンス分析、SEO アップデート、ブランドとコンプライアンスのレビュー、自動化されたキャンペーンワークフロー、RFP の分析と対応のための AI ソリューションを実現します。

テクノロジー – テクノロジー業界の企業は、パーソナライズされたアカウントベースのマーケティング、コンテンツ作成、キャンペーンワークフローのオートメーション、アカウントの準備と調査、ナレッジサポート、求人概要と候補者レポート、そして RFP への対応のために Palmyra モデルを実装しています。

Palmyra モデルは、次を含む包括的なエンタープライズグレードの機能スイートをサポートしています:

適応型思考 – 高度な推論機能とエンタープライズグレードの信頼性を組み合わせたハイブリッドモデル。複雑な問題解決や高度な意思決定プロセスで優れたパフォーマンスを発揮します。

マルチステップのツール呼び出し – 複雑なマルチステップのワークフローやエージェントアクションで使用できる高度なツール呼び出し機能のサポート。これには、システムの更新、トランザクションの実行、E メールの送信、ワークフローのトリガーなどのタスクを実行するためのエンタープライズシステムとのインタラクションが含まれます。

エンタープライズグレードの信頼性 – エンタープライズでの使用に必要となる厳格な品質基準を維持しながら、一貫性があり、かつ、精度の高い結果を実現します。モデルはビジネスコンテンツに基づいて特別にトレーニングされており、出力はプロフェッショナル基準に準拠します。

Amazon Bedrock での Palmyra X5 および X4 の使用
Amazon Bedrock におけるすべての新しいサーバーレスモデルについては、まずアクセスをリクエストする必要があります。Amazon Bedrock コンソールのナビゲーションペインで [モデルアクセス] を選択して、[Palmyra X5] および [Palmyra X4] モデルへのアクセスを有効にします。

コンソールのスクリーンショット

モデルにアクセスできるようになると、Amazon Bedrock Converse API を使用して、任意の AWS SDK でアプリケーションの構築を開始できます。モデルは、次の推論プロファイルを使用してクロスリージョン推論を使用します:

  • Palmyra X5 の場合: us.writer.palmyra-x5-v1:0
  • Palmyra X4 の場合: us.writer.palmyra-x4-v1:0

AWS SDK for Python (Boto3) を使用したサンプル実装を次に示します。このシナリオでは、既存の製品の新しいバージョンがあります。新機能の詳細な比較を作成する必要があります。新旧の製品マニュアルがあります。Palmyra X5 の大規模な入力コンテキストを使用して、2 つのバージョンのマニュアルを読んで比較し、比較ドキュメントの初稿を作成します。

import sys
import os
import boto3
import re

AWS_REGION = "us-west-2"
MODEL_ID = "us.writer.palmyra-x5-v1:0"
DEFAULT_OUTPUT_FILE = "product_comparison.md"

def create_bedrock_runtime_client(region: str = AWS_REGION):
    """Create and return a Bedrock client."""
    return boto3.client('bedrock-runtime', region_name=region)

def get_file_extension(filename: str) -> str:
    """Get the file extension."""
    return os.path.splitext(filename)[1].lower()[1:] or 'txt'

def sanitize_document_name(filename: str) -> str:
    """Sanitize document name."""
    # 拡張子を削除してベース名を取得します
    name = os.path.splitext(filename)[0]
    
    # 無効な文字をスペースに置き換えます
    name = re.sub(r'[^a-zA-Z0-9\s\-\(\)\[\]]', ' ', name)
    
    # 複数のスペースを 1 つのスペースに置き換えます
    name = re.sub(r'\s+', ' ', name)
    
    # 先頭/末尾のスペースを削除します
    return name.strip()

def read_file(file_path: str) -> bytes:
    """Read a file in binary mode."""
    try:
        with open(file_path, 'rb') as file:
            return file.read()
    except Exception as e:
        raise Exception(f"Error reading file {file_path}: {str(e)}")

def generate_comparison(client, document1: bytes, document2: bytes, filename1: str, filename2: str) -> str:
    """Generate a markdown comparison of two product manuals."""
    print(f"Generating comparison for {filename1} and {filename2}")
    try:
        response = client.converse(
            modelId=MODEL_ID,
            messages=[
                {
                    "role": "user",
                    "content": [
                        {
                            "text": "Please compare these two product manuals and create a detailed comparison in markdown format.Focus on comparing key features, specifications, and highlight the main differences between the products."
                        },
                        {
                            "document": {
                                "format": get_file_extension(filename1),
                                "name": sanitize_document_name(filename1),
                                "source": {
                                    "bytes": document1
                                }
                            }
                        },
                        {
                            "document": {
                                "format": get_file_extension(filename2),
                                "name": sanitize_document_name(filename2),
                                "source": {
                                    "bytes": document2
                                }
                            }
                        }
                    ]
                }
            ]
        )
        return response['output']['message']['content'][0]['text']
    except Exception as e:
        raise Exception(f"Error generating comparison: {str(e)}")

def main():
    if len(sys.argv) < 3 or len(sys.argv) > 4:
        cmd = sys.argv[0]
        print(f"Usage: {cmd} <manual1_path> <manual2_path> [output_file]")
        sys.exit(1)

    manual1_path = sys.argv[1]
    manual2_path = sys.argv[2]
    output_file = sys.argv[3] if len(sys.argv) == 4 else DEFAULT_OUTPUT_FILE
    paths = [manual1_path, manual2_path]

    # 各ファイルの存在を確認します
    for path in paths:
        if not os.path.exists(path):
            print(f"Error: File does not exist: {path}")
            sys.exit(1)

    try:
        # Bedrock のクライアントを作成します
        bedrock_runtime = create_bedrock_runtime_client()

        # 両方のマニュアルを読みます
        print("Reading documents...")
        manual1_content = read_file(manual1_path)
        manual2_content = read_file(manual2_path)

        # ドキュメントから直接比較を生成します
        print("Generating comparison...")
        comparison = generate_comparison(
            bedrock_runtime,
            manual1_content,
            manual2_content,
            os.path.basename(manual1_path),
            os.path.basename(manual2_path)
        )

        # 比較結果をファイルに保存します
        with open(output_file, 'w') as f:
            f.write(comparison)

        print(f"Comparison generated successfully! Saved to {output_file}")

    except Exception as e:
        print(f"Error: {str(e)}")
        sys.exit(1)

if __name__ == "__main__":
    main()

AWS SDK で Amazon Bedrock を利用する方法については、「Amazon Bedrock ユーザーガイド」のコードサンプルをご覧ください。

知っておくべきこと
Writer の Palmyra X5 および X4 モデルは、米国西部 (オレゴン) の AWS リージョンにおいて、Amazon Bedrock で、クロスリージョン推論とともに本日よりご利用いただけます。リージョン別のモデルサポートに関する最新情報については、Amazon Bedrock のドキュメントをご覧ください。料金については、「Amazon Bedrock の料金」にアクセスしてください。

これらのモデルは、英語、スペイン語、フランス語、ドイツ語、中国語、および他に複数の言語をサポートしているため、グローバルエンタープライズアプリケーションに適しています。

これらのモデルの拡張コンテキスト機能を使用することで、デベロッパーは、広範なドキュメントの処理、複雑なマルチステップ推論の実行、高度なエージェントワークフローの処理が可能な、より高度なアプリケーションとエージェントを構築できます。

Writer の Palmyra X5 および X4 モデルの使用を今すぐ開始するには、「Amazon Bedrock ユーザーガイド」の Writer のモデルのセクションにアクセスしてください。また、community.aws サイトの生成 AI セクションでは、ビルダーコミュニティがソリューションで Amazon Bedrock をどのように利用しているのかを詳しく知ることもできます。

これらの強力な新機能を使用して何を構築したのかを、ぜひお知らせください!

Danilo

原文はこちらです。


ニュースブログはいかがでしたか? こちらの 1 分間のアンケートにぜひご協力ください!

(このアンケートは外部企業に委託して行われます。AWS は、AWS プライバシー通知に記載された内容に従って、お客様の情報を取り扱います。AWS は、このアンケートを通じて収集したデータを所有し、収集した情報をアンケートの回答者と共有することはありません)