run-llama / llama_index

LlamaIndex is a data framework for your LLM applications
https://docs.llamaindex.ai
MIT License
37.09k stars 5.32k forks source link

[Documentation]: get region error when use Bedrock llm client following the related docs. #15147

Closed Zizo-Vi closed 3 months ago

Zizo-Vi commented 3 months ago

Documentation Issue Description

When follow this doc: https://docs.llamaindex.ai/en/latest/examples/llm/bedrock/?h=bedrock#connect-to-bedrock-with-access-keys to connect Bedrock client, I get the region not specified error:

/opt/miniconda3/envs/llama-index/bin/python /Users/Code/ai/llama_index/llama-index-integrations/llms/llama-index-llms-bedrock/bedrock_test.py region_name: None Traceback (most recent call last): File "/Users/Code/ai/llama_index/llama-index-integrations/llms/llama-index-llms-bedrock/bedrock_test.py", line 3, in llm = Bedrock( ^^^^^^^^ File "/Users/Code/ai/llama_index/llama-index-integrations/llms/llama-index-llms-bedrock/llama_index/llms/bedrock/base.py", line 175, in init self._client = session.client("bedrock-runtime", ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/miniconda3/envs/llama-index/lib/python3.11/site-packages/boto3/session.py", line 297, in client return self._session.create_client( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/miniconda3/envs/llama-index/lib/python3.11/site-packages/botocore/session.py", line 997, in create_client client = client_creator.create_client( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/miniconda3/envs/llama-index/lib/python3.11/site-packages/botocore/client.py", line 161, in create_client client_args = self._get_client_args( ^^^^^^^^^^^^^^^^^^^^^^ File "/opt/miniconda3/envs/llama-index/lib/python3.11/site-packages/botocore/client.py", line 520, in _get_client_args return args_creator.get_client_args( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/miniconda3/envs/llama-index/lib/python3.11/site-packages/botocore/args.py", line 101, in get_client_args final_args = self.compute_client_args( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/miniconda3/envs/llama-index/lib/python3.11/site-packages/botocore/args.py", line 220, in compute_client_args endpoint_config = self._compute_endpoint_config( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/miniconda3/envs/llama-index/lib/python3.11/site-packages/botocore/args.py", line 370, in _compute_endpoint_config return self._resolve_endpoint(**resolve_endpoint_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/miniconda3/envs/llama-index/lib/python3.11/site-packages/botocore/args.py", line 475, in _resolve_endpoint return endpoint_bridge.resolve( ^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/miniconda3/envs/llama-index/lib/python3.11/site-packages/botocore/client.py", line 625, in resolve resolved = self.endpoint_resolver.construct_endpoint( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/miniconda3/envs/llama-index/lib/python3.11/site-packages/botocore/regions.py", line 230, in construct_endpoint result = self._endpoint_for_partition( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/miniconda3/envs/llama-index/lib/python3.11/site-packages/botocore/regions.py", line 278, in _endpoint_for_partition raise NoRegionError() botocore.exceptions.NoRegionError: You must specify a region.

Documentation Link

https://docs.llamaindex.ai/en/latest/examples/llm/bedrock/?h=bedrock#connect-to-bedrock-with-access-keys

dosubot[bot] commented 3 months ago

Hey @wenngong! I'm here to help you with any bugs, questions, or contributions you have. Just ask! 😊

To resolve the NoRegionError when connecting to the Bedrock client using the LlamaIndex library, ensure that the region_name parameter is set correctly. You can set the region_name parameter directly in the constructor or by using environment variables.

Here is an example of how to set the region_name parameter directly in the constructor:

from llama_index.embeddings.bedrock import BedrockEmbedding

embedding = BedrockEmbedding(
    model_name="amazon.titan-embed-text-v1",
    region_name="us-west-2",  # Set your AWS region here
    aws_access_key_id="your_access_key_id",
    aws_secret_access_key="your_secret_access_key"
)

Alternatively, you can set the AWS_REGION environment variable before running your code:

import os
from llama_index.embeddings.bedrock import BedrockEmbedding

os.environ["AWS_REGION"] = "us-west-2"  # Set your AWS region here

embedding = BedrockEmbedding(
    model_name="amazon.titan-embed-text-v1",
    aws_access_key_id="your_access_key_id",
    aws_secret_access_key="your_secret_access_key"
)

Ensure that the region_name is correctly set to avoid the NoRegionError. Additionally, if you are using an AWS profile, you can specify the profile_name parameter in the constructor:

embedding = BedrockEmbedding(
    model_name="amazon.titan-embed-text-v1",
    profile_name="your_aws_profile_name",  # Set your AWS profile name here
    region_name="us-west-2"
)

This will use the region configured in your AWS CLI for the specified profile if the region_name is not passed [1][2][3].

To continue talking to Dosu, mention @dosu.