I'm trying to use the foundational models in Amazon Bedrock to build a simple chatbot using Python. I create Boto3 client and set the model ID, accept and content types as:
bedrock = boto3.client(
service_name='bedrock-runtime',
region_name="us-east-1"
)
modelId = 'cohere.command-text-v14'
accept = 'application/json'
contentType = 'application/json'
body = json.dumps({
"prompt": "Hello World",
"temperature": 0.75,
"p": 0.01,
"k": 0,
})
I then try to generate text by using invoke_model:
response = bedrock.invoke_model(body=body, modelId=modelId, accept=accept, contentType=contentType)
response_body = json.loads(response.get('body').read())
print(response_body['generations'][0]['text'])
I get the following error:
---------------------------------------------------------------------------
ResourceNotFoundException Traceback (most recent call last)
3 contentType = 'application/json'
4
----> 5 response = bedrock.invoke_model(body=body, modelId=modelId, accept=accept, contentType=contentType)
6
7 response_body = json.loads(response.get('body').read())
~/Library/Python/3.8/lib/python/site-packages/botocore/client.py in _api_call(self, *args, **kwargs)
551 )
552 # The "self" in this scope is referring to the BaseClient.
--> 553 return self._make_api_call(operation_name, kwargs)
554
555 _api_call.__name__ = str(py_operation_name)
~/Library/Python/3.8/lib/python/site-packages/botocore/client.py in _make_api_call(self, operation_name, api_params)
1007 )
1008 error_class = self.exceptions.from_code(error_code)
-> 1009 raise error_class(parsed_response, operation_name)
1010 else:
1011 return parsed_response
ResourceNotFoundException: An error occurred (ResourceNotFoundException) when calling the InvokeModel operation: Could not resolve the foundation model from the provided model identifier.
I read about this error in the Amazon Bedrock documentation, and it seems to be a problem with the service ARN (unsure what to do about this).
Do you have access to the base model on Bedrock?
Go to AWS console, search for Bedrock and then you'll see a model access tab. Once there confirm you have access to the relevant model, if not request it. Make sure you are doing this in the same region you are accessing via your client.
Also note that if you happen to do any embedding work, you will need access to a model that supports embeddings specifically - Claude does not.