Run Mistral Agents (Conversations API) on Flyte.
Project description
flyteplugins-agents-mistral
Run Mistral Agents (the
Conversations API, mistralai 2.x) on Flyte. You keep writing Mistral agents;
Flyte is the runtime underneath.
pip install flyteplugins-agents-mistral
import flyte
from flyteplugins.agents.mistral import tool, run_agent
env = flyte.TaskEnvironment(
"mistral-agent",
secrets=[flyte.Secret(key="mistral_api_key", as_env_var="MISTRAL_API_KEY")],
)
@tool
@env.task(cache="auto", retries=3)
async def get_weather(city: str) -> str:
"""Get the current weather for a city."""
return f"The weather in {city} is sunny, 22°C."
@env.task(report=True, retries=3)
async def city_agent(question: str) -> str:
return await run_agent(question, tools=[get_weather], model="mistral-large-latest")
How it maps to Flyte
- The SDK owns the loop — we don't reimplement it. Mistral's own runner
(
conversations.run_async+RunContext) drives the agent loop and executes the tools; we just register Flyte-task-backed tools with it.toolproduces the Python function the runner calls, and its body dispatches totask.aio(), so each tool call is a durable Flyte child action. - Both per-turn and per-tool durability. The runner makes each model turn by
calling
start_async/append_async(in-process HTTP), so withdurable=Truewe wrap those two methods — the seam below the loop — and record each turn viaflyte.trace(theConversationResponseround-trips through pydantic JSON). On a crash/retry, completed turns replay and completed tool calls are cache hits — all while the SDK still owns the loop. (Same idea as swapping OpenAI'sModelProvider: trace the model-call seam, not the loop.) - Observability: the turns, tool calls and final answer render into the task report.
The API key is read from the environment. Wire it as a Flyte secret.
Memory
Pass memory_key (a user/thread id) for cross-run memory — the agent continues
the same conversation across separate runs:
await run_agent(message, model="mistral-large-latest", memory_key="user-alice")
Mistral keeps the transcript server-side, so Flyte durably persists the thread's
conversation_id (in a keyed MemoryStore) and continues that conversation when the
key recurs.
Examples
See examples/:
mistral_durable_agent.py— a single durable agent: tools as Flyte tasks, per-turn traced conversation, agent timeline in the report.mistral_crash_resume.py— crash & resume: the task crashes on its first attempt after doing real work; on retry the completed conversation turns replay from theirflyte.tracerecords and the tool calls are cache hits. Run on a backend to see the replay.mistral_multi_agent.py— multi-agent orchestration: a planner agent decomposes a topic, researcher agents fan out in parallel, an editor agent synthesizes — each agent its own durable action.mistral_agent_id.py— drive a pre-created server-side agent byagent_id(instead of an inline model) while its tool calls still run as durable Flyte actions.mistral_memory.py— cross-run memory: two separate runs share amemory_key; the agent learns a fact in run 1 and recalls it in run 2.mistral_handoffs.py— native handoffs: a triage agent hands the conversation off to a billing or technical-support agent (by id), the whole multi-agent run durable on Flyte. The specialist can pause on a Flyte condition (flyte.new_condition) to have a human share a detail, then resume with it.
Conformance
This adapter passes the shared flyteplugins.agents.core.testing.assert_adapter_conforms
check — the same one every adapter runs — so it follows the common format despite
a server-side, conversation-based SDK shape very different from OpenAI's or
Claude's.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file flyteplugins_agents_mistral-2.5.9-py3-none-any.whl.
File metadata
- Download URL: flyteplugins_agents_mistral-2.5.9-py3-none-any.whl
- Upload date:
- Size: 7.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
76b40a7ecb62cc5cd0c618eef66157666ebcefd85ba862d9a9949ea73c9cbfad
|
|
| MD5 |
907e869bd5fa3edea54926cdf1462379
|
|
| BLAKE2b-256 |
33fec76ad3e54f17116796c8992330def181829f17413de40a32650428afcfc3
|