-
Notifications
You must be signed in to change notification settings - Fork 615
[FixBug] Bedrock anthropic max iterations exceeded error #2063
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: main
Are you sure you want to change the base?
[FixBug] Bedrock anthropic max iterations exceeded error #2063
Conversation
Summary of ChangesHello @noproblem520, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request resolves a critical issue with Bedrock Anthropic models that caused 'max iterations exceeded' errors during agent execution. The problem stemmed from the model's strict requirement for a Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
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.
Code Review
This pull request addresses a max_iterations error with Bedrock Anthropic models by ensuring a toolConfig is always present when the message history contains tool usage, even in the final iteration when no tools are available. The approach of adding a dummy tool and a final instruction to the model is a clever workaround for this specific API requirement. My review includes suggestions to make the detection logic for tool usage history more robust and less prone to errors, improving both correctness and maintainability.
e07b893 to
4689d0e
Compare
| # If this is the final iteration, append an instruction for the user. | ||
| if is_final_iteration: | ||
| final_instruction_text = ( | ||
| "IMPORTANT: DO NOT call any more tools. Summarize the information you have gathered from previous tool calls." |
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.
This final prompt maybe not meet the requirement for all situation. And it's not transparent to the end user.
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.
The Dify workflow agent node fails to generate a final summary in the last round if the LLM isn't explicitly prompted to summarize. The last round in the agent returns an message like There is not a tool named __no_more_tools_available__.. This results in the workflow returning an truncated message, e.g. "Hi, I will help you figure out the problem:", based on the user's question
Our logic dictates that the final prompt is only added when toolUse and toolResult are present and the flow is in the is_final_round. This implementation can prevent any other issues, I guess.
I've validated this code in production, and it's working perfectly. If you have any concerns, please let me know.
Related Issues or Context
I saw 2068 has been partially fixed this issue, we still need to tell LLM to summarize the information gathering from previous tool calls, otherwise it will still call

__no_more_tools_available__.Fix langgenius/dify#27428
Fix langgenius/dify#27215
Fix langgenius/dify#17545
--- Old: 2068 has fixed partial problems based on this PR---
Issues
When we use bedrock anthropic models, there's a limitation「The toolConfig field must be defined when using toolUse and toolResult content blocks.」.
function_calling.pywill empty the tools that agents can use in the last round, this logic is fine but violates the limitation of bedrock anthropic models.Reproduce
We can easily reproduce the error by setting max_iterations to 2. If agent tries to think more than twice, the error occurred.
This PR contains Changes to Non-Plugin
This PR contains Changes to Non-LLM Models Plugin
This PR contains Changes to LLM Models Plugin
Version Control (Any Changes to the Plugin Will Require Bumping the Version)
VersionField, Not in Meta Section)Dify Plugin SDK Version
dify_plugin>=0.3.0,<0.6.0is in requirements.txt (SDK docs)Environment Verification (If Any Code Changes)
Local Deployment Environment
SaaS Environment