models - mistral - init client on every request #434
Merged
+56
−54
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.
Description
The Mistral async client has an issue where making multiple requests with separate
asyncio.run()
calls causes the second request to fail with "Event loop is closed" error. The reason is that the client uses httpx internally, which maintains a connection pool that persists beyond individual event loops. This means connections created in the first event loop remain in the pool after that loop closes, and when the secondasyncio.run()
creates a new event loop, httpx tries to reuse those existing pooled connections that are still tied to the first event loop instead of the new event loop, thus causing a failure.This is a problem for Strands as
Agent.__call__
runsasyncio.run()
on every invocation. Consequently, doing something like the following with the MistralModel provider will fail:The fix is to establish a new Mistral client connection on every call to
stream
. This fits with the pattern documented in both the Mistral docs and the httpx docs.Related Issues
#431
Documentation PR
N/A
Type of Change
Testing
How have you tested the change? Verify that the changes do not break functionality or introduce warnings in consuming repositories: agents-docs, agents-tools, agents-cli
hatch run prepare
hatch test tests_integ/models/test_model_mistral.py
Checklist
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.