Amazon BedRock要らなくね?

カテゴリー:  Tech タグ:  ai

Amazon BedRockは、AWSが提供する生成AI向けのマネージドサービスですが、最近、日本市場でもその活用事例が徐々に増えてきています。 例えばKDDIが議事録作成の効率化にBedRockを利用するなどがニュースとして流れてくるようになりました。

この機に、「Amazon BedRockってどうよ?」というのを考えてみました。

Amazon BedRockの意義

Amazon BedRockの主なメリットとして、以下の2点が挙げられます:

  1. 各生成AIモデルのAPI差異の吸収 BedRockは、複数のAIプロバイダー(Anthropic、Amazon、AI21 Labs、Stabilitiy AI等)のモデルに対して統一的なインターフェースを提供します。これにより、開発者は個々のAPIの違いを意識せずに、様々なモデルを利用・比較できるとされています。

  2. AWSエコシステムとの統合 AWSの既存サービスとシームレスに連携でき、管理面やコスト面で利点があります。例えば、IAMを使用した統一的なアクセス管理、CloudWatchを利用したモニタリングとロギング、AWSの請求システムを通じた一元的なコスト管理などが可能です。

AmazonはAnthropic社に莫大な投資をしていますが、AWS上では他の言語モデルもニュートラルに提供する姿勢を見せています。

モデルのAPI差吸収レイヤーって必要か?

しかし、よく考えてみると、多くの生成AIモデルのAPIは基本的な構造が似通っています。レスポンスの処理に多少の違いがあるだけです。 この点について、サンプルコードを作成して検証してみました。

主な部分だけ以下に記載します。

まずモデルクライアントの生成部分です。(エラー処理などは割愛しています)

# OpenAI
openai_api_key = os.getenv("OPENAI_API_KEY")
client = OpenAI(api_key=openai_api_key)

# Anthropic
anthropic_api_key = os.getenv("ANTHROPIC_API_KEY")
client = anthropic.Anthropic(api_key=anthropic_api_key)

次にAPI呼び出し部分です。

# OpenAI
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[
        {"role": "system", "content": "あなたは優秀なPythonのエンジニアです。"},
        {
            "role": "user",
            "content": "NTPサーバーから現在時間を取得し表示するプログラムを作成してください。サーバーのアドレスはntp.nict.jpです。",
        },
    ],
    max_tokens=1024,
    temperature=0,
)

# Anthropic
message = client.messages.create(
    model="claude-3-sonnet-20240229",
    max_tokens=1024,
    temperature=0,
    system="あなたは優秀なPythonのエンジニアです。",
    messages=[
        {
            "role": "user",
            "content": "NTPサーバーから現在時間を取得し表示するプログラムを作成してください。サーバーのアドレスはntp.nict.jpです。",
        }
    ],
)

ここまではほぼ同じです。あとはレスポンスの形式がそれぞれ多少違うので、形式に合わせてレスポンスを加工する部分に多少違いが出ています。

こうみると、確かに各生成AIモデルのAPI差異はあるのですが、大きな差異ではありません。

そもそもOpenAIなどは何度かAPI仕様が変わっているので、これまでも何度か書き換えが必要でした。 その場合も生成AIにプログラムをコンバートさせる処理をさせてしまえばいい程度です。

実際のところそれほど大きなアドバンテージにならない可能性があります。

まとめ

モデル依存性を排除するための利用としては、BedRockのメリットをあまり感じられません。 確かに、AWSとの管理面やコスト面での統合によるメリットは存在しますが、一方で新しいAIエンジンへのアクセスが遅くなるというデメリットもあります。

個人的な見解としては、これらの要因を考慮すると、個人利用の場合はBedRockの採用をやや敬遠したい気持ちになります。組織の規模や既存のAWS利用状況、セキュリティ要件などによっては有用な選択肢となる可能性はありますが、個々の状況に応じて慎重に評価する必要があるでしょう。

コメント

Comments powered by Disqus