Fix an issue in AWSBedrockLLMService.run_inference—exceptions should propagate, just like with other LLM services
This commit is contained in:
@@ -811,60 +811,55 @@ class AWSBedrockLLMService(LLMService):
|
|||||||
Returns:
|
Returns:
|
||||||
The LLM's response as a string, or None if no response is generated.
|
The LLM's response as a string, or None if no response is generated.
|
||||||
"""
|
"""
|
||||||
try:
|
messages = []
|
||||||
messages = []
|
system = []
|
||||||
system = []
|
if isinstance(context, LLMContext):
|
||||||
if isinstance(context, LLMContext):
|
adapter: AWSBedrockLLMAdapter = self.get_llm_adapter()
|
||||||
adapter: AWSBedrockLLMAdapter = self.get_llm_adapter()
|
params: AWSBedrockLLMInvocationParams = adapter.get_llm_invocation_params(context)
|
||||||
params: AWSBedrockLLMInvocationParams = adapter.get_llm_invocation_params(context)
|
messages = params["messages"]
|
||||||
messages = params["messages"]
|
system = params["system"] # [{"text": "system message"}]
|
||||||
system = params["system"] # [{"text": "system message"}]
|
else:
|
||||||
else:
|
context = AWSBedrockLLMContext.upgrade_to_bedrock(context)
|
||||||
context = AWSBedrockLLMContext.upgrade_to_bedrock(context)
|
messages = context.messages
|
||||||
messages = context.messages
|
system = getattr(context, "system", None) # [{"text": "system message"}]
|
||||||
system = getattr(context, "system", None) # [{"text": "system message"}]
|
|
||||||
|
|
||||||
# Determine if we're using Claude or Nova based on model ID
|
# Determine if we're using Claude or Nova based on model ID
|
||||||
model_id = self.model_name
|
model_id = self.model_name
|
||||||
|
|
||||||
# Prepare request parameters
|
# Prepare request parameters
|
||||||
request_params = {
|
request_params = {
|
||||||
"modelId": model_id,
|
"modelId": model_id,
|
||||||
"messages": messages,
|
"messages": messages,
|
||||||
"inferenceConfig": {
|
"inferenceConfig": {
|
||||||
"maxTokens": 8192,
|
"maxTokens": 8192,
|
||||||
"temperature": 0.7,
|
"temperature": 0.7,
|
||||||
"topP": 0.9,
|
"topP": 0.9,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
if system:
|
if system:
|
||||||
request_params["system"] = system
|
request_params["system"] = system
|
||||||
|
|
||||||
async with self._aws_session.client(
|
async with self._aws_session.client(
|
||||||
service_name="bedrock-runtime", **self._aws_params
|
service_name="bedrock-runtime", **self._aws_params
|
||||||
) as client:
|
) as client:
|
||||||
# Call Bedrock without streaming
|
# Call Bedrock without streaming
|
||||||
response = await client.converse(**request_params)
|
response = await client.converse(**request_params)
|
||||||
|
|
||||||
# Extract the response text
|
# Extract the response text
|
||||||
if (
|
if (
|
||||||
"output" in response
|
"output" in response
|
||||||
and "message" in response["output"]
|
and "message" in response["output"]
|
||||||
and "content" in response["output"]["message"]
|
and "content" in response["output"]["message"]
|
||||||
):
|
):
|
||||||
content = response["output"]["message"]["content"]
|
content = response["output"]["message"]["content"]
|
||||||
if isinstance(content, list):
|
if isinstance(content, list):
|
||||||
for item in content:
|
for item in content:
|
||||||
if item.get("text"):
|
if item.get("text"):
|
||||||
return item["text"]
|
return item["text"]
|
||||||
elif isinstance(content, str):
|
elif isinstance(content, str):
|
||||||
return content
|
return content
|
||||||
|
|
||||||
return None
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
logger.error(f"Bedrock summary generation failed: {e}", exc_info=True)
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
async def _create_converse_stream(self, client, request_params):
|
async def _create_converse_stream(self, client, request_params):
|
||||||
|
|||||||
Reference in New Issue
Block a user