LangChainでAmazon BedrockでClaude 3.5 Haikuを呼び出そうとしたら、エラーが発生しました。
30分くらい溶かしてしまったので、同じことが起こらないよう、こちらに解決方法を記載しておきます。
動作環境
- Windows 11
- WSL2
- Ubuntu 22.04
$ uv --version
uv 0.5.1
$ uv run python -V
Python 3.12.7
$ uv pip freeze
annotated-types==0.7.0
anyio==4.8.0
boto3==1.36.12
botocore==1.36.12
certifi==2025.1.31
charset-normalizer==3.4.1
h11==0.14.0
httpcore==1.0.7
httpx==0.28.1
idna==3.10
jmespath==1.0.1
jsonpatch==1.33
jsonpointer==3.0.0
langchain-aws==0.2.12
langchain-core==0.3.33
langsmith==0.3.4
numpy==2.2.2
orjson==3.10.15
packaging==24.2
pydantic==2.10.6
pydantic-core==2.27.2
python-dateutil==2.9.0.post0
python-dotenv==1.0.1
pyyaml==6.0.2
requests==2.32.3
requests-toolbelt==1.0.0
s3transfer==0.11.2
six==1.17.0
sniffio==1.3.1
tenacity==9.0.0
typing-extensions==4.12.2
urllib3==2.3.0
zstandard==0.23.0
※ 他の検証でも使用しているので、不要なライブラリが多々はいっています。
エラーの例
まずはこちらをご覧ください。
LangChainは使ってますが、ただただBedrockを呼び出しているソースコードです。
なお、AWS_PROFILE
は.env
ファイルに記載したのを読み込んでいます
下記は、エラーの実装例なので、動きません。
from dotenv import load_dotenv
from langchain_aws.chat_models import ChatBedrock
from langchain_core.messages import AIMessage, HumanMessage, SystemMessage
load_dotenv()
MODEL_ID = "anthropic.claude-3-5-haiku-20241022-v1:0"
REGION = "us-east-1"
def main():
llm = ChatBedrock(
model_id=MODEL_ID,
region_name=REGION,
model_kwargs={
"max_tokens": 2048,
"temperature": 0.0,
},
)
messages = [
SystemMessage("You are a helpful assistant."),
HumanMessage("こんにちは!わたしはジョンと言います"),
AIMessage(content="こんにちは、ジョンさん!どのようにお手伝いできますか?"),
HumanMessage(content="私の名前がわかりますか?"),
]
ai_message = llm.invoke(messages)
print(ai_message)
if __name__ == "__main__":
main()
実行結果
$ uv run invoke_bedrock_error.py
ERROR:root:Error raised by bedrock service: An error occurred (ValidationException) when calling the InvokeModel operation: Invocation of model ID anthropic.claude-3-5-haiku-20241022-v1:0 with on-demand throughput isn’t supported. Retry your request with the ID or ARN of an inference profile that contains this model.
Traceback (most recent call last):
File "/home/dohi/git/wordpress-site/src/invoke_bedrock/invoke_bedrock_error.py", line 34, in <module>
main()
File "/home/dohi/git/wordpress-site/src/invoke_bedrock/invoke_bedrock_error.py", line 29, in main
ai_message = llm.invoke(messages)
^^^^^^^^^^^^^^^^^^^^
File "/home/dohi/git/wordpress-site/src/invoke_bedrock/.venv/lib/python3.12/site-packages/langchain_core/language_models/chat_models.py", line 284, in invoke
self.generate_prompt(
File "/home/dohi/git/wordpress-site/src/invoke_bedrock/.venv/lib/python3.12/site-packages/langchain_core/language_models/chat_models.py", line 860, in generate_prompt
return self.generate(prompt_messages, stop=stop, callbacks=callbacks, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/dohi/git/wordpress-site/src/invoke_bedrock/.venv/lib/python3.12/site-packages/langchain_core/language_models/chat_models.py", line 690, in generate
self._generate_with_cache(
File "/home/dohi/git/wordpress-site/src/invoke_bedrock/.venv/lib/python3.12/site-packages/langchain_core/language_models/chat_models.py", line 925, in _generate_with_cache
result = self._generate(
^^^^^^^^^^^^^^^
File "/home/dohi/git/wordpress-site/src/invoke_bedrock/.venv/lib/python3.12/site-packages/langchain_aws/chat_models/bedrock.py", line 574, in _generate
completion, tool_calls, llm_output = self._prepare_input_and_invoke(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/dohi/git/wordpress-site/src/invoke_bedrock/.venv/lib/python3.12/site-packages/langchain_aws/llms/bedrock.py", line 845, in _prepare_input_and_invoke
raise e
File "/home/dohi/git/wordpress-site/src/invoke_bedrock/.venv/lib/python3.12/site-packages/langchain_aws/llms/bedrock.py", line 831, in _prepare_input_and_invoke
response = self.client.invoke_model(**request_options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/dohi/git/wordpress-site/src/invoke_bedrock/.venv/lib/python3.12/site-packages/botocore/client.py", line 569, in _api_call
return self._make_api_call(operation_name, kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/dohi/git/wordpress-site/src/invoke_bedrock/.venv/lib/python3.12/site-packages/botocore/client.py", line 1023, in _make_api_call
raise error_class(parsed_response, operation_name)
botocore.errorfactory.ValidationException: An error occurred (ValidationException) when calling the InvokeModel operation: Invocation of model ID anthropic.claude-3-5-haiku-20241022-v1:0 with on-demand throughput isn’t supported. Retry your request with the ID or ARN of an inference profile that contains this model.
要は、モデルIDがサポートされてないよ、と言っているのですが、何度コピペをしてもAWSに記載のモデルIDの通りで、間違いはありませんでした。
解決方法
結果、モデルIDを変更したら解決しました。
でも、AWSにはanthropic.claude-3-5-haiku-20241022-v1:0
って書いてあるのに…
モデルIDを、下記にすれば解決です。
MODEL_ID = "us.anthropic.claude-3-5-haiku-20241022-v1:0"
実行結果は以下の通り。
$ uv run invoke_bedrock.py
content='はい、あなたの名前はジョンさんですね。先ほどのメッセージで「わたしはジョンと言います」とおっしゃっていました。' additional_kwargs={'usage': {'prompt_tokens': 73, 'completion_tokens': 53, 'total_tokens': 126}, 'stop_reason': 'end_turn', 'model_id': 'us.anthropic.claude-3-5-haiku-20241022-v1:0'} response_metadata={'usage': {'prompt_tokens': 73, 'completion_tokens': 53, 'total_tokens': 126}, 'stop_reason': 'end_turn', 'model_id': 'us.anthropic.claude-3-5-haiku-20241022-v1:0'} id='run-21869e44-b3ef-4d98-8195-d803cff2d287-0' usage_metadata={'input_tokens': 73, 'output_tokens': 53, 'total_tokens': 126}
うーん、これは気づかない。。。
まとめ
今回は、BedrockのモデルIDが違った件をお話しました。
LangChainのライブラリ経由だからなのかはわかりませんが、同じ状況になった方がいらっしゃいましたら是非試してみてください。
コメント