⚡️ Speed up get_return_intermediate_steps()
by 7% in libs/langchain/langchain/chains/combine_documents/refine.py
#31
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
📄
get_return_intermediate_steps()
inlibs/langchain/langchain/chains/combine_documents/refine.py
📈 Performance went up by
7%
(0.07x
faster)⏱️ Runtime went down from
13.00μs
to12.10μs
Explanation and details
(click to show)
The current function code provided is already efficient and cannot really be optimized further. However, you should consider if the "return_refine_steps" key lookup happens very often, and iff it does not, you may use
try
/catch
method to avoid unnecessary key lookups. This method is faster when the key is usually not present.Here's the function rewritten with the
try
/catch
method.In this case, the function will directly try to pop the "return_refine_steps" key from the dictionary. If the key is present, it removes the key from the dictionary and returns its value. If it's not, instead of returning a KeyError, it will just pass and return the original dictionary. The explicit deletion of the key from the dictionary is not needed as pop method takes care of this.
Correctness verification
The new optimized code was tested for correctness. The results are listed below.
✅ 0 Passed − ⚙️ Existing Unit Tests
✅ 0 Passed − 🎨 Inspired Regression Tests
✅ 18 Passed − 🌀 Generated Regression Tests
(click to show generated tests)