-
Notifications
You must be signed in to change notification settings - Fork 422
feat(bedrock_agent): WIP - Add new Amazon Bedrock Agents Functions #6564
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## develop #6564 +/- ##
===========================================
+ Coverage 96.11% 96.13% +0.01%
===========================================
Files 253 255 +2
Lines 12086 12224 +138
Branches 898 909 +11
===========================================
+ Hits 11617 11752 +135
- Misses 369 371 +2
- Partials 100 101 +1 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
if self.status_code >= 400: | ||
response["response"]["functionResponse"]["responseState"] = ( | ||
ResponseState.REPROMPT.value if self.status_code == 400 else ResponseState.FAILURE.value | ||
) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @anafalcao! I think we need to spend some time investigating the behavior of REPROMPT
and FAILURE
modes. I don't know if we can make some assumption based on the http_code response code or if we let the customer handle it. To me it makes more sense for clients to make their own choices.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @leandrodamascena!
I did some tests with it, and as responseState is context-specific and not always required, I believe it’s best making responseState an optional field in BedrockFunctionResponse, rather than enforcing automatic behavior that may not align with their intent.
For example:
• User can "REPROMPT" when a parameter is present but invalid (e.g. division by zero).
• User can "FAILURE" when there’s an external error (e.g., failed call to a third-party API)
Basic example without Powertools:
try:
a = next((float(param['value']) for param in parameters if param['name'] == 'a'), None)
b = next((float(param['value']) for param in parameters if param['name'] == 'b'), None)
if a is None or b is None:
return {
'responseState': 'REPROMPT',
'responseBody': {
'TEXT': {
'body': 'Both parameters "a" and "b" are required. Please provide them.'
}
}
}
except ValueError:
return {
'responseState': 'FAILURE',
'responseBody': {
'TEXT': {
'body': 'Invalid input. Parameters "a" and "b" must be numbers.'
}
}
}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hi @anafalcao! Thanks a lot for looking into this. So you suggest we have a responseState
field in the Response class and let the customer decide what it wants to do, right? I believe this is the right direction because the customer will have full control over the workflow and decide what reports to Bedrock.
|
Issue number:
#6300
Summary
WIP
Changes
User experience
Checklist
If your change doesn't seem to apply, please leave them unchecked.
Is this a breaking change?
RFC issue number:
Checklist:
Acknowledgment
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.
Disclaimer: We value your time and bandwidth. As such, any pull requests created on non-triaged issues might not be successful.