1
1

Amazon Bedrock の Converse API 使って invoke_modelを置き換えてみる

Posted at

前書き

Converse APIは2ヶ月前に発表されてますが、
langchainを使うケースが多かったので、メモとして残します。

Converse APIとは

Converse API は Amazon Bedrock モデルと連動する一貫したエクスペリエンスを提供するため、開発者がモデル固有の実装を管理する必要がなくなります。この API を使用すると、コードを一度記述するだけで、Amazon Bedrock のさまざまなモデルでシームレスに使用できます。 ---公式の説明

今までモデルを使用する際に、モデルごとにフォーマットがバラバラでしたが、Converse APIを使用すれば、一貫したリクエストができるようになりました。

サンプル

既存のコード

invoke_model.py
import json
import boto3

bedrock_runtime = boto3.client(
    service_name = 'bedrock-runtime', 
    region_name  = 'us-east-1'
)

body = json.dumps(
    
    {
        "anthropic_version": "bedrock-2023-05-31",
        "max_tokens": 1000,
        "messages": [
            {
            "role": "user",
            "content": "Bedrockの意味"
            }
        ]
    }
)
    
modelId = "anthropic.claude-3-sonnet-20240229-v1:0"
  
    
accept = 'application/json'
contentType = 'application/json'
    
response = bedrock_runtime.invoke_model(body=body, modelId=modelId, accept=accept, contentType=contentType)
response_body = json.loads(response.get("body").read())
answer = response_body["content"][0]["text"]
    
print(answer)

実行すれば、下記の出力が得られました。

BEDrockという言葉には、次のような意味があります。

1. 地質学での意味
- 基盤岩(がんばんがん)のこと。地層の最下部にある硬い岩石層を指します。

2. 転じた意味
- 基礎、根本、土台となるものを表す比喩表現。
- 例えば、「この発想は私たちの活動のベッドロックとなる」など、核心的な部分を指す言い方です。

3. その他
- Bedrockはマインクラフトの世界で、地下の一番下の固い岩盤層のことも指します。
- BEDrock(頭字語)は、ある組織の基本的な規則や価値観を表すこともあります。

つまり、BEDrockは文字通りの地質学的意味だけでなく、比喩的に重要な基礎、根源を表す言葉として使われています。組織や発想、活動の根幹を成す部分を指して用いられるの が一般的です

Converse APIで置き換えてみます。

converse_api.py
import boto3

bedrock_runtime = boto3.client(
    service_name = 'bedrock-runtime', 
    region_name = 'us-east-1'
)
modelId = "anthropic.claude-3-sonnet-20240229-v1:0"

prompt = "Bedrockの意味"

messages = [
    {
        "role": "user",
        "content": [{"text": prompt}],
    }
]

inferenceConfig = {
    "temperature": 0.1,
    "topP": 0.9,
    "maxTokens": 500,
    "stopSequences":[]
}

response = bedrock_runtime.converse(
    modelId=modelId ,
    messages=messages,
    inferenceConfig=inferenceConfig
)

print(response["output"]["message"]["content"][0]["text"])

同じ出力が得られました。

ベッドロック(bedrock)とは、次のような意味があります。

1. 地質学的な意味:
岩石の基盤となる最下層の固い岩層のこと。地表から掘り進んでいくと最終的にたどり着く非常に硬い岩層を指します。

2. 転じた意味:
- 基礎、礎、根底となるものの比喩表現
- 揺るぎない基盤や根本原理を表す言葉
- 何かの出発点や根源を指す言い方

例えば、
「この理論はベッドロックとなる原則に基づいている」
「彼の信念はベッドロックのように揺るがない」
など、物事の基盤や根本となる部分を表す言葉として使われます。

つまり、ベッドロックとは文字通りの地質学的な意味と、比喩的に何かの基礎や根源を指す
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1