DEV Community

DeepSeek-R1がBedrockでサーバレスモデルとして利用できるようになった

Bedrockを活用したAI生成モデルの利活用は進んでいますか?

DeepSeekが3/10にBedrockでサーバレスモデルとして利用できるようになりました。

今までは、BedrockにカスタムモデルとしてインポートしたりSageMakerにデプロイする必要がありましたが、これからはそんなこともしなくて良くなり、モデルに問い合わせした際にトークン数に応じて必要なコストを支払うだけで利用できるようになりました。

詳細はクラメソさんのブログに掲載がありますが、以前紹介しましたAWSを活用したAIサービス開発で掲載したソースコードを修正して実際に利用できるようにしてみました。

ユーザガイドに掲載されているinvoke_modelメソッドを利用するとモデルによってパラメタが異なってしまうため、今回はconverseメソッドを利用することにしました。

converseメソッドはモデルによるパラメタの差を吸収してくれるもので、モデル固有のパラメタはadditionalModelRequestFields, additionalModelResponseFieldPathsを利用することで対応ができます

以下のような形で実装を行うことでモデルの差異を吸収できます。

bot_message = handle_converse('us.deepseek.r1-v1:0', prompt)

def handle_converse(model_id, prompt):
    response = bedrock_runtime.converse(
        messages=[
            {
                "role": "user",
                "content": [{"text": prompt}],
            }
        ],
        modelId=model_id,
        inferenceConfig={"maxTokens": 3000, "temperature": 0.6, "topP": 0.999},
    )
    logger.info(f"Stop Reason:{response['stopReason']}.")
    logger.info(f"Usage:{json.dumps(response['usage'], indent=4)}.")
    output_txt = response["output"]["message"]["content"][0]["text"]
    bot_message = output_txt.strip() 
    return bot_message
Enter fullscreen mode Exit fullscreen mode

上記の方法を利用して複数のモデルを切り替えられるLINEボットを作成してみました。
ぜひ皆さんもチャレンジしてみてください。

Top comments (0)