From 5ffa9244881a2b83dd488160d28d9c8fe833a181 Mon Sep 17 00:00:00 2001 From: Piyush Jain Date: Wed, 31 May 2023 14:54:12 -0700 Subject: [PATCH] Skips creating boto client for Bedrock if passed in constructor (#5523) # Skips creating boto client if passed in constructor Current LLM and Embeddings class always creates a new boto client, even if one is passed in a constructor. This blocks certain users from passing in externally created boto clients, for example in SSO authentication. ## Who can review? @hwchase17 @jasondotparse @rsgrewal-aws --- langchain/embeddings/bedrock.py | 4 ++++ langchain/llms/bedrock.py | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/langchain/embeddings/bedrock.py b/langchain/embeddings/bedrock.py index e884b139..16381b14 100644 --- a/langchain/embeddings/bedrock.py +++ b/langchain/embeddings/bedrock.py @@ -68,6 +68,10 @@ class BedrockEmbeddings(BaseModel, Embeddings): @root_validator() def validate_environment(cls, values: Dict) -> Dict: """Validate that AWS credentials to and python package exists in environment.""" + + if "client" in values: + return values + try: import boto3 diff --git a/langchain/llms/bedrock.py b/langchain/llms/bedrock.py index a59a81d2..a985b2b0 100644 --- a/langchain/llms/bedrock.py +++ b/langchain/llms/bedrock.py @@ -99,6 +99,11 @@ class Bedrock(LLM): @root_validator() def validate_environment(cls, values: Dict) -> Dict: """Validate that AWS credentials to and python package exists in environment.""" + + # Skip creating new client if passed in constructor + if "client" in values: + return values + try: import boto3