Agent

L'Agent et ses composants : paramètres du modèle, sous-agents, permissions, skills, secrets et masquage.

Guides : Qu'est-ce qu'un agent, Configurer l'agent, Secrets, Les mécanismes de contrôle, Skills et Sous-agents.

NomDéfinition
AgentUn agent : un modèle et ses instructions, avec les outils, la sandbox, les connecteurs, les serveurs MCP, les skills, les hooks et les sous-agents qu'il peut utiliser.
BuiltinsFonctionnalités intégrées de l'agent.
ProgrammaticToolCallingConfigOptions d'appel programmatique d'outils.
SessionAgentCustomizationRemplacement des paramètres d'un agent pour une session : le paramètre agent= de Agent.start_session.
SubagentUn agent enfant que son parent démarre avec l'outil agents.spawn.
SubagentPolicyLimites applicables aux sous-agents d'une arborescence de sessions : la session racine et tous ses sous-agents.
PermissionModeAppels d'outils nécessitant une approbation : "auto" exécute chaque appel autorisé par la permission_policy de l'agent (tous les appels en l'absence de politique), "ask" ouvre une demande d'approbation pour chaque appel et "deny" les refuse.
PermissionPolicyRègles de permission ordonnées et comportement par défaut pour les appels qui ne correspondent à aucune règle.
PermissionRuleDétermine si les appels aux outils correspondant à tools sont exécutés, soumis à approbation ou refusés.
RegistrySkillUn skill de votre espace de travail issu de Le registre de l'IA, désigné par son ID et, éventuellement, sa version.
AllRegistrySkillsTous les skills de votre espace de travail présents dans Le registre de l'IA au démarrage de la session racine.
agents.all_registry_skillsDonne à l'agent tous les skills de votre espace de travail présents dans Le registre de l'IA.
SandboxWorkspaceSkillsMet à disposition les skills déjà présents dans la sandbox, par exemple ceux d'un dépôt cloné par un hook de la sandbox.
LocalSkillBundleUn skill que l'agent emporte avec lui : les fichiers d'un dossier de skill sur votre machine.
LocalSkillFileUn fichier d'un LocalSkillBundle.
MistralSecretUn secret du gestionnaire de secrets Mistral.
redaction.RedactionCe qu'accepte Agent(redaction=...) : une RedactionPolicy ou une liste de ces politiques, appliquées dans l'ordre.
redaction.RedactionPolicyUne méthode de masquage des secrets et des données personnelles dans les traces de l'agent : une politique de masquage ou une fonction (key, value).
redaction.RegexRedactionPolicyRemplace les correspondances de motifs, comme les clés API, les adresses e-mail et les numéros de carte, par [REDACTED] dans les traces de l'agent.
redaction.AttributeRedactionPolicyMasque entièrement les valeurs des champs sensibles des traces, comme les messages et les arguments d'outils, et remplace les tokens dans les valeurs conservées.
redaction.CallbackRedactionPolicyEffectue le masquage avec votre fonction : elle reçoit la clé et la valeur de chaque champ et renvoie la valeur à conserver, ou None pour supprimer le champ.
redaction.AttributeMaskCallbackUne fonction de masquage : elle reçoit la clé et la valeur d'un champ et renvoie la valeur à conserver, ou None pour supprimer le champ.
Agent

Agent

class Agent(
    *,
    model: str,
    instructions: str | None = None,
    provider: str = 'mistral',
    name: str = 'default_agent',
    max_iterations: int | None = None,
    first_output_timeout_seconds: float | None = None,
    builtins: Builtins | None = None,
    permission_mode: PermissionMode = 'auto',
    permission_policy: PermissionPolicy | None = None,
    auto_compact_threshold: int | None = None,
    description: str | None = None,
    reasoning_effort: Literal['off', 'none', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max'] | None = None,
    temperature: float | None = None,
    output_type: type[BaseModel] | None = None,
    subagents: Sequence[Subagent] = (),
    subagent_policy: SubagentPolicy | None = None,
    tool_errors: Literal['hide', 'show', 'raise'] = 'hide',
    tools: Sequence[PythonTool[..., Any] | ClientTool[..., Any] | Callable[..., Any]] | None = None,
    environment: Sandbox | None = None,
    connectors: Sequence[Connector | AllConnectors] | None = None,
    mcps: dict[str, RemoteMCP] | None = None,
    skills: Sequence[LocalSkillBundle | RegistrySkill | SandboxWorkspaceSkills | AllRegistrySkills] | None = None,
    hooks: Sequence[Hook] | None = None,
    guardrails: Sequence[Hook] | None = None,
    secrets: Mapping[str, MistralSecret] | None = None,
    redaction: redaction.Redaction | None = None,
)

Un agent : un modèle et ses instructions, avec les outils, la sandbox, les connecteurs, les serveurs MCP, les skills, les hooks et les sous-agents qu'il peut utiliser.

Agent.run() exécute un tour dans une nouvelle session, Agent.start_session() démarre une session pour plusieurs tours et Agent.session(session_id) associe un handle à une session existante. Agent.load_from() donne accès à un agent que vous avez déployé.

ParamètreTypeValeur par défautDescription
modelstrobligatoireLe modèle, par exemple "mistral-large-4".
instructionsstr | NoneNoneVos instructions au modèle, ajoutées au prompt système par défaut de la boucle de l'agent.
providerstr'mistral'Le fournisseur de complétion intégré : "mistral", par défaut, "openai" ou "anthropic". Il tente jusqu'à cinq fois un appel au modèle si l'appel échoue en raison d'une limite de débit, d'une erreur serveur comme une 503 ou d'une erreur réseau, et attend la durée indiquée par l'en-tête Retry-After.
namestr'default_agent'Le nom de l'agent. agents serve et agents deploy enregistrent l'agent sous ce nom, que votre application utilise pour le charger. Les noms contenant un point sont réservés aux agents de Mistral.
max_iterationsint | NoneNoneLe nombre maximal d'étapes de la boucle de l'agent dans un tour. None ne fixe aucune limite.
first_output_timeout_secondsfloat | NoneNoneLe délai d'attente de la première sortie d'un appel au modèle. La valeur par défaut est de 720 secondes. Un appel interrompu pour cette raison, ou après 300 secondes sans sortie une fois qu'il a commencé, est retenté une fois.
builtinsBuiltins | NoneNoneLes fonctionnalités intégrées à désactiver, comme les sous-agents ou les processus en arrière-plan.
permission_modePermissionMode'auto'Appels d'outils nécessitant une approbation : "auto" exécute chaque appel autorisé par permission_policy (tous les appels en l'absence de politique), "ask" ouvre une demande d'approbation pour chaque appel et "deny" les refuse.
permission_policyPermissionPolicy | NoneNoneRègles qui déterminent, pour chaque outil et chaque argument, si un appel est exécuté, soumis à approbation ou refusé. Nécessite permission_mode="auto".
auto_compact_thresholdint | NoneNoneLe nombre de tokens à partir duquel la boucle résume les tours précédents. La valeur par défaut dépend de la fenêtre de contexte du modèle.
descriptionstr | NoneNoneCe que fait l'agent, en une phrase. Un agent déployé affiche cette description et ses traces l'enregistrent.
reasoning_effortLiteral['off', 'none', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max'] | NoneNoneL'effort de raisonnement du modèle, de "off" à "max". Utilise la valeur par défaut du modèle.
temperaturefloat | NoneNoneLa température d'échantillonnage, de 0 à 2. Utilise la valeur par défaut du modèle.
output_typetype[BaseModel] | NoneNoneUn modèle Pydantic auquel la réponse finale de chaque tour doit se conformer.
subagentsSequence[Subagent]()Les agents enfants que l'agent peut démarrer, chacun étant un agents.Subagent.
subagent_policySubagentPolicy | NoneNoneLimites applicables aux sous-agents d'une arborescence de sessions : nombre de tours exécutés simultanément et profondeur de l'arborescence.
tool_errorsLiteral['hide', 'show', 'raise']'hide'Ce que le modèle reçoit lorsqu'un outil lève une erreur inattendue : "hide", par défaut, fournit un message générique, "show" fournit le type et le message de l'exception, et "raise" fait échouer le tour ; pour un outil client, avec "raise", l'exception est plutôt levée dans votre programme et l'appel reste ouvert.
toolsSequence[PythonTool[..., Any] | ClientTool[..., Any] | Callable[..., Any]] | NoneNoneVos fonctions, chacune étant une fonction ordinaire ou décorée avec @agents.tool, et vos outils clients.
environmentSandbox | NoneNoneLa sandbox dans laquelle l'agent exécute des commandes shell et modifie des fichiers. La valeur par défaut est NoSandbox() : aucun shell ni fichier.
connectorsSequence[Connector | AllConnectors] | NoneNoneLes connecteurs configurés dans Studio pour votre espace de travail, chacun désigné par agents.connector(name).
mcpsdict[str, RemoteMCP] | NoneNoneLes serveurs MCP qui ne sont pas des connecteurs Studio, désignés par leur nom.
skillsSequence[LocalSkillBundle | RegistrySkill | SandboxWorkspaceSkills | AllRegistrySkills] | NoneNoneInstructions que l'agent charge uniquement lorsqu'il en a besoin.
hooksSequence[Hook] | NoneNoneCode exécuté avant un tour, autour des appels au modèle et aux outils, ou après la réponse.
guardrailsSequence[Hook] | NoneNoneHooks de vérification de sécurité, exécutés avant hooks à chaque point d'exécution des hooks.
secretsMapping[str, MistralSecret] | NoneNoneLes identifiants d'authentification que l'agent lit, désignés par leur nom, avec la source de leur valeur.
redactionredaction.Redaction | NoneNoneMéthode de masquage des secrets et des données personnelles dans les traces de l'agent : une politique de masquage, une fonction (key, value) ou une liste de ces éléments, appliqués dans l'ordre. [] désactive le masquage.
Agent.run

Agent.run

async def run(
    content: str | Sequence[TextContentBlock | ImageContentBlock | Mapping[str, Any]],
    *,
    output_type: type[BaseModel] | None = None,
    on_approval: ApprovalHandler | None = None,
    on_sign_in: Callable[[OpenSignIn], SignInAnswer | Awaitable[SignInAnswer]] | None = None,
    on_client_tool: Callable[[ClientToolCall], Any] | ClientToolAnswers | None = None,
    on_event: Callable[[Event], Awaitable[None] | None] | None = None,
    idempotency_key: str | None = None,
    timeout: float | None = None,
) -> TurnState[Any] | Busy

Démarre une session, y exécute un tour et renvoie le résultat de ce tour.

Le résultat est une valeur, jamais une exception levée : Completed, Blocked, Interrupted, Failed, Running ou UnknownOutcome pour un résultat ajouté après votre version du SDK. Avec output_type=T, il s'agit d'un TurnState[T]. Ses champs session_id et turn_id permettent d'accéder à nouveau à la session et au tour, comme dans agent.session(state.session_id).

Sur un agent déployé, output_type analyse uniquement la réponse, et le modèle reçoit le format de l'agent déployé. output vaut InvalidOutput si la réponse ne passe pas la validation, et None si le tour s'est terminé prématurément.

Un callback sans gestionnaire, ou dont le gestionnaire renvoie KeepCallbackOpen(), fait renvoyer Blocked à l'exécution. Répondez-y avec agent.session(state.session_id).turn(state.turn_id).answer(cb.id, ...). Si un gestionnaire d'approbation ou de connexion lève une erreur, l'exécution lève cette erreur. Un gestionnaire d'approbation qui renvoie toute autre valeur, y compris None, lève SdkError. Un gestionnaire de connexion qui renvoie None, KeepCallbackOpen() ou une réponse omettant une source lève SdkError. Une réponse d'outil client qui ne peut pas être envoyée lève ClientToolAnswerError. Dans chaque cas, le callback reste ouvert et le tour continue de s'exécuter. Une réponse d'outil client ou un gestionnaire on_client_tool qui lève une erreur suit le paramètre tool_errors de l'agent : par défaut, le modèle reçoit un message indiquant que l'appel a échoué et l'exécution se poursuit. Avec "raise", l'exécution lève l'erreur et l'appel reste ouvert : le tour reste bloqué sur cet appel et la session n'accepte aucun nouveau tour jusqu'à l'expiration du callback (une heure par défaut).

ParamètreTypeValeur par défautDescription
contentstr | Sequence[TextContentBlock | ImageContentBlock | Mapping[str, Any]]obligatoireLe message de l'utilisateur : une chaîne ou une liste de blocs de contenu.
output_typetype[BaseModel] | NoneNoneUn modèle Pydantic auquel la réponse de cette exécution doit se conformer, à la place du output_type de l'agent ; Completed.output est validé selon ce modèle.
on_approvalApprovalHandler | NoneNoneUne fonction synchrone ou asynchrone qui répond à chaque demande d'approbation de la session et de ses sous-agents avec AllowApproval ou DenyApproval.
on_sign_inCallable[[OpenSignIn], SignInAnswer | Awaitable[SignInAnswer]] | NoneNoneUne fonction qui répond à chaque demande de connexion à un connecteur de la session et de ses sous-agents avec une SignInAnswer.
on_client_toolCallable[[ClientToolCall], Any] | ClientToolAnswers | NoneNoneUne fonction qui répond à chaque appel d'outil client de la session et de ses sous-agents, ou un agents.ClientToolAnswers.
on_eventCallable[[Event], Awaitable[None] | None] | NoneNoneUne fonction qui reçoit chaque événement du tour à mesure qu'il se produit. Une fois le tour terminé, le dernier événement est TurnEnded.
idempotency_keystr | NoneNoneUne clé de 1 à 256 caractères qui permet de retenter l'exécution sans risque : une deuxième exécution avec la même clé renvoie le résultat du même tour, même si celui-ci est terminé. La même clé avec un autre message ou d'autres paramètres d'agent lève SessionIdempotencyConflictError. Générez-la une fois par requête, par exemple sous forme d'UUID. Une exécution avec une clé peut renvoyer Busy pendant qu'un autre tour s'exécute.
timeoutfloat | NoneNoneLe délai d'attente du tour par l'exécution, en secondes. Le temps d'un gestionnaire on_approval ou on_sign_in est comptabilisé ; celui de votre code d'outil client ne l'est pas. À l'expiration du délai, l'exécution renvoie Running ou Blocked et le tour continue de s'exécuter. None attend que le tour se termine ou qu'il attende une action de votre part.
Agent.override

Agent.override

def override(*, model: testing.ScriptedModel) -> Self

Renvoie une copie de cet agent qui envoie ses appels au modèle à model. L'agent d'origine reste inchangé.

Appelez cette méthode sur un agent local : sur un agent déployé, elle lève SdkError.

ParamètreTypeValeur par défautDescription
modeltesting.ScriptedModelobligatoireLe modèle scripté qui répond aux appels au modèle de la copie, dans les tests.
Agent.start_session

Agent.start_session

async def start_session(
    *,
    history: Sequence[HistoryImportEntry] | None = None,
    session_inputs: Mapping[str, SessionInput] | None = None,
    agent: SessionAgentCustomization | Mapping[str, object] | None = None,
    idempotency_key: str | None = None,
    on_approval: ApprovalHandler | None = None,
    on_sign_in: Callable[[OpenSignIn], SignInAnswer | Awaitable[SignInAnswer]] | None = None,
    on_client_tool: Callable[[ClientToolCall], Any] | ClientToolAnswers | None = None,
) -> Session

Démarre une session et renvoie son handle.

Une session locale s'exécute dans ce processus jusqu'à l'arrêt de sa boucle d'événements, et son handle ne peut être réassocié à la session que dans cette boucle. Une session d'un agent déployé est conservée par Mistral, et son handle peut être réassocié depuis n'importe quel processus.

Un deuxième appel avec la même idempotency_key et les mêmes options renvoie la même session, même si elle exécute déjà un tour ou si elle est terminée. La même clé avec d'autres valeurs de session_inputs ou d'agent, ou depuis un agent dont les paramètres diffèrent, comme permission_mode, lève agents.SessionIdempotencyConflictError ; un autre history n'est pas vérifié et renvoie la première session. Générez la clé une fois par requête, par exemple sous forme d'UUID, et réutilisez-la uniquement pour les nouvelles tentatives de cette requête.

Les gestionnaires restent dans ce processus : ils ne font pas partie des paramètres de démarrage, donc la même idempotency_key accepte d'autres gestionnaires. Une réponse à un stub qui n'est pas un outil de cet agent, de ses mécanismes de contrôle et hooks, ou de ses sous-agents, lève SdkError avant le démarrage.

Le handle conserve le output_type de cet agent : session.run(), turn.get() et turn.result() l'utilisent pour analyser la sortie d'un Completed si aucun autre type n'est fourni.

ParamètreTypeValeur par défautDescription
historySequence[HistoryImportEntry] | NoneNoneEntrées existantes qui initialisent la conversation. Seule une session locale les accepte.
session_inputsMapping[str, SessionInput] | NoneNoneLes entrées de session, indexées par l'input_id de chaque valeur. Elles restent fixes pendant toute la durée de vie de la session et sont transmises uniquement aux outils, hooks et hooks de sandbox qui les déclarent avec agents.Depends().
agentSessionAgentCustomization | Mapping[str, object] | NoneNoneModifications de cet agent pour cette session uniquement, sous forme d'un agents.SessionAgentCustomization ou d'un dictionnaire avec les mêmes clés : additional_instructions s'ajoute à ses instructions, et model et reasoning_effort remplacent ses valeurs par défaut de complétion. Un déploiement conserve son agent enregistré sans le modifier. Les permissions ne sont pas personnalisables par session : définissez permission_mode= ou permission_policy= sur l'agent.
idempotency_keystr | NoneNoneUne clé de 1 à 256 caractères qui permet de retenter le démarrage sans risque.
on_approvalApprovalHandler | NoneNoneRépond aux demandes d'approbation pendant qu'un appel attend sur le handle (voir Session).
on_sign_inCallable[[OpenSignIn], SignInAnswer | Awaitable[SignInAnswer]] | NoneNoneRépond aux demandes de connexion pendant qu'un appel attend sur le handle, comme avec run.
on_client_toolCallable[[ClientToolCall], Any] | ClientToolAnswers | NoneNoneRépond aux appels d'outils côté client pendant qu'un appel attend sur le handle, comme avec run.
Agent.session

Agent.session

def session(
    session_id: str,
    *,
    on_approval: ApprovalHandler | None = None,
    on_sign_in: Callable[[OpenSignIn], SignInAnswer | Awaitable[SignInAnswer]] | None = None,
    on_client_tool: Callable[[ClientToolCall], Any] | ClientToolAnswers | None = None,
) -> Session

Renvoie le handle d'une session de cet agent à partir de son identifiant. N'envoie aucune requête.

Pour un agent déployé, un identifiant qui n'est pas un UUID lève immédiatement SdkError. Un identifiant inconnu peut aussi être associé à un handle : la première requête via ce handle lève SessionNotFoundError. Le handle conserve le output_type de cet agent, comme celui de start_session(). Une réponse à un stub qui ne correspond pas à un outil de cet agent, de ses mécanismes de contrôle et hooks, ou de ses sous-agents lève SdkError ici.

Dans un bloc async with agents.local_runtime(journal_factory=...), une session locale enregistrée à cet emplacement par un processus précédent se rouvre à la première requête du handle et continue de s'exécuter dans ce processus jusqu'à la sortie du bloc. Elle doit appartenir à cet agent : une session avec d'autres outils, hooks, serveurs MCP, connecteurs ou une autre sandbox lève SessionConfigMismatchError, et une session qu'un autre processus maintient ouverte lève SessionInUseError.

ParamètreTypeValeur par défautDescription
session_idstrobligatoireL'identifiant de la session.
on_approvalApprovalHandler | NoneNoneRépond aux demandes d'approbation pendant qu'un appel attend sur le handle (voir Session).
on_sign_inCallable[[OpenSignIn], SignInAnswer | Awaitable[SignInAnswer]] | NoneNoneRépond aux demandes de connexion pendant qu'un appel attend sur le handle, comme avec run.
on_client_toolCallable[[ClientToolCall], Any] | ClientToolAnswers | NoneNoneRépond aux appels d'outils côté client pendant qu'un appel attend sur le handle, comme avec run.
Agent.load_from

Agent.load_from

@classmethod
def load_from(
    *,
    agent_name: str | None = None,
    agent_id: str | None = None,
    server_url: str | None = None,
    api_key: str | None = None,
    client: Client | None = None,
) -> Agent

Construit un handle à initialisation différée vers un agent déployé, à partir de son nom ou de son identifiant.

Passez exactement un des deux paramètres, agent_name ou agent_id, pour un agent déployé avec Studio, auto-hébergé ou géré par Mistral. Pour poursuivre une session, associez-lui un handle avec .session(session_id).

Sans client, server_url et api_key créent un client sans pool de connexions partagé : chaque session ouvre alors son propre pool, qui se ferme avec elle et sert la boucle d'événements qui l'a ouvert. Passez soit client, soit ces deux paramètres, mais pas les deux.

ParamètreTypeValeur par défautDescription
agent_namestr | NoneNoneLe nom sous lequel l'agent a été déployé.
agent_idstr | NoneNoneL'identifiant de l'agent déployé, sous forme d'UUID.
server_urlstr | NoneNoneL'URL racine de l'API Mistral, telle qu'attendue par agents.Client.
api_keystr | NoneNoneLa clé API, telle qu'attendue par agents.Client.
clientClient | NoneNoneLe client par lequel l'agent et ses sessions envoient leurs requêtes.
Builtins

Builtins

class Builtins(
    *,
    skills: bool = True,
    subagents: bool = True,
    programmatic_tool_calling: bool | ProgrammaticToolCallingConfig = True,
    background_processes: bool | None = None,
)

Fonctionnalités intégrées de l'agent. Toutes sont activées par défaut ; définissez un champ sur False pour le désactiver.

Les outils de fichiers et de shell ne figurent pas ici : ils dépendent du niveau access de la sandbox.

ParamètreTypeValeur par défautDescription
skillsboolTrueL'outil skill, proposé lorsque l'agent possède au moins un skill. Un agent pour lequel cet outil est désactivé ne peut pas déclarer de skills.
subagentsboolTrueDémarrage des sous-agents. Nécessite l'appel programmatique d'outils. Un agent pour lequel cette fonctionnalité est désactivée ne peut pas déclarer de sous-agents.
programmatic_tool_callingbool | ProgrammaticToolCallingConfigTruerun_typescript, search_tool_functions et vos outils sous forme de fonctions typées.
background_processesbool | NoneNoneProcessus de longue durée, appelés depuis des programmes. Nécessitent un accès full à la sandbox et l'appel programmatique d'outils. None les active lorsque la sandbox les prend en charge.
Builtins.none

Builtins.none

@classmethod
def none() -> Self

Aucune fonctionnalité intégrée. Avec NoSandbox, la valeur par défaut, le modèle ne voit que vos outils.

Une sandbox fournit toujours les outils de fichiers et de shell autorisés par son niveau access.

ProgrammaticToolCallingConfig

ProgrammaticToolCallingConfig

class ProgrammaticToolCallingConfig(*, sleep: bool = True)

Options de l'appel programmatique d'outils. Les passer active cette fonctionnalité.

ParamètreTypeValeur par défautDescription
sleepboolTruePermet aux programmes d'attendre avec tools.self.sleep.
Personnalisation par session

Personnalisation par session

SessionAgentCustomization

SessionAgentCustomization

class SessionAgentCustomization(
    *,
    additional_instructions: str = '',
    model: str | None = None,
    reasoning_effort: Literal['off', 'none', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max'] | None = None,
)

Remplacement des paramètres d'un agent pour une session : le paramètre agent= de Agent.start_session.

additional_instructions s'ajoute aux instructions de l'agent ; model et reasoning_effort remplacent ses valeurs par défaut pour la complétion. Un champ omis conserve la valeur de l'agent ; None pour model ou reasoning_effort, ainsi que les clés inconnues, lèvent une erreur de validation. agent= accepte aussi les mêmes clés dans un dictionnaire.

ParamètreTypeValeur par défautDescription
additional_instructionsstr''Texte ajouté après les instructions de l'agent, séparé par une ligne vide. Au maximum 8 000 caractères. La valeur par défaut, "", n'ajoute rien.
modelstr | NoneNoneUn nom de modèle pour cette session. Omettez ce champ pour conserver le modèle de l'agent ; None lève une erreur.
reasoning_effortLiteral['off', 'none', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max'] | NoneNoneLe niveau d'effort de raisonnement du modèle dans cette session. Omettez ce champ pour conserver le paramètre de l'agent ; None lève une erreur.
Sous-agents

Sous-agents

Subagent

Subagent

class Subagent(
    *,
    name: str,
    description: str,
    instructions: str,
    model: str | None = None,
    provider: str | None = None,
    reasoning_effort: Literal['off', 'none', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max'] | None = None,
    temperature: float | None = None,
    max_iterations: int | None = None,
    first_output_timeout_seconds: float | None = None,
    auto_compact_threshold: int | None = None,
    tools: Sequence[PythonTool[..., Any] | ClientTool[..., Any] | Callable[..., Any]] | None = None,
    hooks: Sequence[Hook] | None = None,
    mcps: Mapping[str, RemoteMCP] | None = None,
    connectors: Sequence[Connector | AllConnectors] | None = None,
    skills: Sequence[LocalSkillBundle | RegistrySkill] | None = None,
    subagents: Sequence[Subagent] | None = None,
    builtins: Builtins | None = None,
    sandbox_access: Literal['none', 'files', 'full'] | None = None,
)

Un agent enfant que son parent démarre avec l'outil agents.spawn.

Un sous-agent s'exécute dans sa propre session, sous celle de son parent, avec l'identité de l'utilisateur qui a démarré la session racine. Il utilise la valeur du parent pour chaque champ laissé à None. Un champ que vous définissez remplace la valeur du parent, et une liste vide ne fournit aucun élément au sous-agent : aucune fusion n'est effectuée.

model, reasoning_effort et temperature suivent les mêmes règles que dans agents.Agent. provider nécessite aussi model. Le sous-agent n'hérite jamais du output_type du parent : son résultat est sa réponse finale.

Un sous-agent s'exécute toujours selon la politique et le mode d'autorisation de l'agent racine. Pour restreindre ses possibilités, donnez-lui moins d'outils.

Un sous-agent peut avoir des outils et des hooks que son parent n'a pas. Leurs fonctions s'exécutent au même endroit que celles du parent. Les noms d'outils sont partagés par toute l'arborescence : deux fonctions différentes ne peuvent donc pas porter le même nom, où qu'elles se trouvent dans celle-ci.

Connecteurs : connectors=[] n'en fournit aucun au sous-agent. Une liste accepte les mêmes éléments que Agent(connectors=...) : agents.connector(...) lui fournit exactement ces connecteurs, et agents.all_connectors(...) lui fournit tous les connecteurs que l'utilisateur peut utiliser.

builtins est le seul champ dont les valeurs sont fusionnées : chaque champ défini dans agents.Builtins(...) remplace la valeur du parent, et chaque champ omis la conserve. Par exemple, agents.Builtins(skills=False) désactive uniquement les skills. Désactiver programmatic_tool_calling nécessite aussi subagents=False. Un sous-agent qui définit ses propres skills ou sous-agents doit avoir la fonctionnalité intégrée correspondante activée. sandbox_access définit l'accès du sous-agent à la sandbox partagée par toute l'arborescence ; une arborescence sans sandbox n'accepte que "none".

skills accepte des bundles locaux et des skills du registre. Dans une sandbox qui stocke des fichiers, les skills propres au sous-agent sont écrits au démarrage de celui-ci. agents.all_registry_skills() est réservé à l'agent racine : un sous-agent qui ne définit pas skills utilise les skills de la racine.

Pour ajouter un outil à ceux du parent, passez la liste du parent et la liste étendue de l'enfant :

BASE = [lookup, search]
agent = agents.Agent(
    model="mistral-large-4",
    tools=BASE,
    subagents=[
        agents.Subagent(
            name="deployer",
            description="Deploys a reviewed build.",
            instructions="Deploy only what you are asked to deploy.",
            tools=[*BASE, deploy],
        )
    ],
)
ParamètreTypeValeur par défautDescription
namestrobligatoireLe nom de l'enfant, que le parent passe à agents.spawn.
descriptionstrobligatoireCe que fait l'enfant, que le parent lit pour le choisir.
instructionsstrobligatoireLes instructions de l'enfant, ajoutées au prompt système par défaut de la boucle de l'agent.
modelstr | NoneNoneLe modèle. None reprend celui du parent.
providerstr | NoneNoneLe fournisseur de complétion intégré, avec model. None reprend celui du parent.
reasoning_effortLiteral['off', 'none', 'minimal', 'low', 'medium', 'high', 'xhigh', 'max'] | NoneNoneLe niveau d'effort de raisonnement du modèle. None reprend celui du parent.
temperaturefloat | NoneNoneLa température d'échantillonnage. None reprend celle du parent.
max_iterationsint | NoneNoneLe nombre maximal d'étapes de la boucle de l'agent dans un tour. None reprend la valeur du parent.
first_output_timeout_secondsfloat | NoneNoneLe délai d'attente de la première sortie lors d'un appel au modèle. None reprend la valeur du parent.
auto_compact_thresholdint | NoneNoneLe nombre de tokens à partir duquel la boucle résume les tours précédents. None reprend la valeur du parent.
toolsSequence[PythonTool[..., Any] | ClientTool[..., Any] | Callable[..., Any]] | NoneNoneLes outils de l'enfant. None reprend ceux du parent ; [] n'en fournit aucun.
hooksSequence[Hook] | NoneNoneLes hooks de l'enfant. None reprend ceux du parent ; [] n'en fournit aucun.
mcpsMapping[str, RemoteMCP] | NoneNoneLes serveurs MCP de l'enfant, par nom. None reprend ceux du parent ; {} n'en fournit aucun.
connectorsSequence[Connector | AllConnectors] | NoneNoneLes connecteurs de l'enfant. None reprend ceux du parent ; [] n'en fournit aucun.
skillsSequence[LocalSkillBundle | RegistrySkill] | NoneNoneLes skills de l'enfant. None reprend ceux du parent ; [] n'en fournit aucun.
subagentsSequence[Subagent] | NoneNoneLes sous-agents propres à l'enfant. None reprend ceux du parent ; [] n'en fournit aucun.
builtinsBuiltins | NoneNoneLes fonctionnalités intégrées à modifier : chaque champ défini remplace celui du parent. None les reprend toutes.
sandbox_accessLiteral['none', 'files', 'full'] | NoneNoneL'accès de l'enfant à la sandbox de l'arborescence. None reprend celui du parent.
SubagentPolicy

SubagentPolicy

class SubagentPolicy(
    *,
    concurrent_child_turn_limit: int = 10,
    max_depth: int = 2,
    idle_message_starts: Literal['direct_children', 'none'] = 'direct_children',
)

Limites applicables aux sous-agents d'une arborescence de sessions : la session racine et tous les sous-agents qu'elle contient.

Passez cette politique via Agent(subagent_policy=...). La politique de l'agent racine s'applique à tous ses sous-agents, et aucun sous-agent ne peut en augmenter les limites. Un agent qui possède des sous-agents sans politique explicite utilise les valeurs par défaut ci-dessous.

ParamètreTypeValeur par défautDescription
concurrent_child_turn_limitint10Le nombre de tours de sous-agents pouvant s'exécuter simultanément dans toute l'arborescence.
max_depthint2Le nombre de niveaux de sous-agents que l'arborescence peut contenir sous l'agent racine. Un sous-agent au dernier niveau ne peut pas démarrer de sous-agents : avec 1, les sous-agents ne peuvent pas démarrer les leurs.
idle_message_startsLiteral['direct_children', 'none']'direct_children'Indique si un message du parent démarre un tour dans son sous-agent inactif. "direct_children", la valeur par défaut, en démarre un. Avec "none", le sous-agent ne lit le message qu'au début de son prochain tour.
Autorisations

Autorisations

PermissionMode

PermissionMode

PermissionMode = Literal['auto', 'ask', 'deny']

Définit les appels d'outils nécessitant une approbation : "auto" exécute chaque appel autorisé par la permission_policy de l'agent (tous les appels en l'absence de politique), "ask" ouvre une demande d'approbation pour chaque appel, et "deny" les refuse.

PermissionPolicy

PermissionPolicy

class PermissionPolicy(
    *,
    default: Literal['allow', 'deny', 'ask'],
    rules: tuple[PermissionRule, ...] = (),
)

Règles d'autorisation ordonnées et décision par défaut pour les appels qui ne correspondent à aucune règle.

ParamètreTypeValeur par défautDescription
defaultLiteral['allow', 'deny', 'ask']obligatoire"allow", "ask" ou "deny" : la décision pour un appel qui ne correspond à aucune règle.
rulestuple[PermissionRule, ...]()Les règles, dans l'ordre : la première dont tools correspond à l'appel s'applique.
PermissionRule

PermissionRule

class PermissionRule(
    *,
    tools: tuple[str, ...],
    decision: Literal['allow', 'deny', 'ask'],
    allowlist: tuple[str, ...] = (),
    denylist: tuple[str, ...] = (),
    sensitive: tuple[str, ...] = (),
)

Définit si les appels des outils correspondant à tools sont exécutés, soumis à approbation ou refusés.

Une politique applique la première règle dont tools correspond à l'identifiant stable de l'outil appelé, par exemple client.deploy_service, et non au nom que voit le modèle ; un appel qui ne correspond à aucune règle utilise le default de la politique. Dans la règle qui s'applique :

  1. Un motif de denylist correspond : refuser.
  2. Un motif de sensitive correspond : demander une approbation.
  3. allowlist n'est pas vide : autoriser si un motif correspond, sinon demander une approbation.
  4. Sinon : la valeur decision de la règle.

Les motifs sont des glob patterns sensibles à la casse qui correspondent à l'ensemble du texte. Les motifs d'arguments correspondent aux arguments de l'appel sous forme de JSON avec des clés triées, avec ou sans espace après : et ,, par exemple '*"environment": "production"*'. Un motif tools sans espace de noms ni caractère générique, comme deploy_service, ne correspond à aucun outil et lève donc ValueError.

ParamètreTypeValeur par défautDescription
toolstuple[str, ...]obligatoireGlob patterns des identifiants stables des outils, par exemple client.deploy_service, qui sélectionnent la règle.
decisionLiteral['allow', 'deny', 'ask']obligatoire"allow", "ask" ou "deny" : la décision à appliquer lorsqu'aucun motif d'arguments ne détermine la décision.
allowlisttuple[str, ...]()Motifs d'arguments autorisant l'exécution sans approbation, sauf en cas de correspondance avec denylist ou sensitive ; si la liste n'est pas vide, les autres appels demandent une approbation.
denylisttuple[str, ...]()Motifs d'arguments interdisant l'exécution.
sensitivetuple[str, ...]()Motifs d'arguments nécessitant une approbation.
Skills

Skills

RegistrySkill

RegistrySkill

class RegistrySkill(*, id: UUID, version: int | None = None)

Un skill issu de votre espace de travail, dans Le registre de l'IA, identifié par son ID et, éventuellement, sa version.

ParamètreTypeValeur par défautDescription
idUUIDobligatoireL'ID du skill dans Le registre de l'IA.
versionint | NoneNoneLa version exacte à utiliser. Elle est nécessaire pour un skill mis à disposition de l'agent sous forme de fichiers dans la sandbox. Chaque session reçoit ainsi les mêmes fichiers, quel que soit l'environnement d'exécution de l'agent.
AllRegistrySkills

AllRegistrySkills

class AllRegistrySkills()

Tous les skills présents dans Le registre de l'IA de votre espace de travail au démarrage de la session racine.

agents.all_registry_skills() renvoie cet objet.

agents.all_registry_skills

agents.all_registry_skills

def agents.all_registry_skills() -> AllRegistrySkills

Donnez à l'agent tous les skills présents dans Le registre de l'IA de votre espace de travail.

Un agent déployé reçoit les skills accessibles à l'utilisateur qui démarre la session. Une session locale utilise votre clé API Mistral. Les versions sont fixées au démarrage de la session, et chaque skill est téléchargé lors de sa première utilisation par l'agent. Un RegistrySkill présent dans la même liste conserve sa propre version.

SandboxWorkspaceSkills

SandboxWorkspaceSkills

class SandboxWorkspaceSkills(
    *,
    root: str | None = None,
    dirs: tuple[str, ...] = ('.agents/skills', '.vibe/skills'),
)

Mettez à disposition les skills déjà présents dans la sandbox, par exemple ceux d'un dépôt cloné par un hook de sandbox.

Le SDK les recherche une seule fois, après l'exécution des hooks de sandbox et avant le premier tour. Un skill est un dossier contenant un SKILL.md dans l'un des répertoires de dirs, sous root ou dans un dépôt situé directement sous ce répertoire.

ParamètreTypeValeur par défautDescription
rootstr | NoneNoneChemin absolu dans la sandbox où effectuer la recherche. None désigne l'espace de travail de la sandbox.
dirstuple[str, ...]('.agents/skills', '.vibe/skills')Dossiers de skills, avec des chemins relatifs à root et à chaque dépôt situé directement sous ce répertoire.
LocalSkillBundle

LocalSkillBundle

class LocalSkillBundle(*, files: list[LocalSkillFile] = [])

Un skill que l'agent emporte avec lui : les fichiers d'un dossier de skill sur votre machine.

Créez-en un avec LocalSkillBundle.from_directory(path).

ParamètreTypeValeur par défautDescription
fileslist[LocalSkillFile][]Les fichiers du skill, dont son SKILL.md.
LocalSkillBundle.from_directory

LocalSkillBundle.from_directory

@classmethod
def from_directory(path: str | Path) -> Self

Regroupez le contenu d'un répertoire de skill : son SKILL.md et tous les fichiers qui l'accompagnent.

ParamètreTypeValeur par défautDescription
pathstr | PathobligatoireLe dossier du skill, qui contient un SKILL.md.
LocalSkillFile

LocalSkillFile

class LocalSkillFile(*, path: str, content_base64: str, executable: bool = False)

Un fichier d'un LocalSkillBundle.

ParamètreTypeValeur par défautDescription
pathstrobligatoireLe chemin du fichier dans le dossier du skill, par exemple SKILL.md ou scripts/run.sh.
content_base64strobligatoireLes octets du fichier, encodés en base64.
executableboolFalseIndique si le fichier est écrit avec des droits d'exécution, comme un script.
Secrets

Secrets

MistralSecret

MistralSecret

class MistralSecret(*, ref: str | None = None, worker_env: bool = False)

Un secret du gestionnaire de secrets Mistral.

Créez-le avec MistralSecret.workspace(NAME), ou omettez la référence avec MistralSecret() et associez-le au déploiement avec agents deploy --secret-binding NAME=secret:workspace:..., qui remplace également une référence existante. worker_env=True définit aussi le secret comme variable d'environnement là où vos outils Python s'exécutent, pour qu'ils puissent le lire ; sans cette option, le secret n'est transmis qu'aux destinations qui le désignent.

ParamètreTypeValeur par défautDescription
refstr | NoneNoneLa référence du secret, par exemple "secret:workspace:NAME". None laisse agents deploy --secret-binding la définir.
worker_envboolFalseIndique si le secret est aussi une variable d'environnement là où vos outils Python s'exécutent.
AttributTypeDescription
kindLiteral['mistral']Toujours "mistral" : le gestionnaire de secrets Mistral.
MistralSecret.workspace

MistralSecret.workspace

@classmethod
def workspace(name: str, *, worker_env: bool = False) -> Self

Le secret name de l'espace de travail dans le gestionnaire de secrets.

ParamètreTypeValeur par défautDescription
namestrobligatoireLe nom du secret dans l'espace de travail.
worker_envboolFalseIndique si le secret est aussi une variable d'environnement là où vos outils Python s'exécutent.
Masquage

Masquage

redaction.Redaction

redaction.Redaction

type Redaction = (
    redaction.RedactionPolicy
    | list[redaction.RedactionPolicy]
    | tuple[redaction.RedactionPolicy, ...]
)

Ce qu'accepte Agent(redaction=...) : une RedactionPolicy ou une liste de politiques, appliquées dans l'ordre. [] désactive le masquage.

redaction.RedactionPolicy

redaction.RedactionPolicy

type RedactionPolicy = (
    OperationDataTransformer
    | Callable[[str, OperationDataValue], OperationDataValue | None]
)

Une méthode de masquage des secrets et des données personnelles dans les traces de l'agent : une politique de masquage ou une fonction (key, value).

OperationDataTransformer représente une politique de masquage, telle que RegexRedactionPolicy : un objet dont la méthode transform renvoie la valeur à enregistrer, ou None pour l'omettre. OperationDataValue représente la valeur d'un champ de trace : une chaîne, un nombre, un booléen, des octets, None, ou une liste ou un dictionnaire de ces valeurs.

redaction.RegexRedactionPolicy

redaction.RegexRedactionPolicy

class RegexRedactionPolicy(
    patterns: Sequence[Pattern[str]] = redaction.DEFAULT_PII_SECRET_PATTERNS,
    *,
    safe_keys: frozenset[str] = redaction.DEFAULT_SAFE_ATTRIBUTE_KEYS,
    safe_key_patterns: Sequence[Pattern[str]] = redaction.DEFAULT_TOKEN_PATTERNS,
    redacted_value: str = '[REDACTED]',
)

Remplace les correspondances de motifs, par exemple les clés API, les adresses e-mail et les numéros de carte, par [REDACTED] dans les traces de l'agent. Les valeurs des clés sûres sont analysées uniquement avec safe_key_patterns.

ParamètreTypeValeur par défautDescription
patternsSequence[Pattern[str]]redaction.DEFAULT_PII_SECRET_PATTERNSLes motifs dont les correspondances sont masquées.
safe_keysfrozenset[str]redaction.DEFAULT_SAFE_ATTRIBUTE_KEYSClés dont les valeurs sont analysées avec safe_key_patterns plutôt qu'avec patterns.
safe_key_patternsSequence[Pattern[str]]redaction.DEFAULT_TOKEN_PATTERNSLes motifs à masquer dans les valeurs des clés sûres.
redacted_valuestr'[REDACTED]'Le texte qui remplace chaque correspondance.
redaction.AttributeRedactionPolicy

redaction.AttributeRedactionPolicy

class AttributeRedactionPolicy(
    *,
    sensitive_keys: frozenset[str] = redaction.DEFAULT_SENSITIVE_ATTRIBUTE_KEYS,
    safe_keys: frozenset[str] = redaction.DEFAULT_SAFE_ATTRIBUTE_KEYS,
    sensitive_fragments: frozenset[str] = redaction.DEFAULT_SENSITIVE_ATTRIBUTE_FRAGMENTS,
    token_patterns: Sequence[Pattern[str]] = redaction.DEFAULT_TOKEN_PATTERNS,
    redact_non_primitive: bool = True,
    redacted_value: str = '[REDACTED]',
)

Masque intégralement les valeurs des champs de trace sensibles, tels que les messages et les arguments d'outils, et remplace les tokens dans les valeurs conservées.

ParamètreTypeValeur par défautDescription
sensitive_keysfrozenset[str]redaction.DEFAULT_SENSITIVE_ATTRIBUTE_KEYSClés dont les valeurs sont intégralement masquées.
safe_keysfrozenset[str]redaction.DEFAULT_SAFE_ATTRIBUTE_KEYSClés dont les valeurs ne sont jamais intégralement masquées, mais uniquement analysées avec token_patterns.
sensitive_fragmentsfrozenset[str]redaction.DEFAULT_SENSITIVE_ATTRIBUTE_FRAGMENTSParties d'une clé, telles que token, entraînant le masquage intégral de sa valeur.
token_patternsSequence[Pattern[str]]redaction.DEFAULT_TOKEN_PATTERNSLes motifs à masquer dans les valeurs conservées.
redact_non_primitiveboolTrueIndique si une valeur qui n'est ni une chaîne, ni un nombre, ni un booléen est intégralement masquée, sauf si sa clé est une clé sûre.
redacted_valuestr'[REDACTED]'Le texte qui remplace une valeur masquée.
redaction.CallbackRedactionPolicy

redaction.CallbackRedactionPolicy

class CallbackRedactionPolicy(
    mask_function: redaction.AttributeMaskCallback,
    *,
    recursive: bool = False,
)

Effectue le masquage avec votre fonction : elle reçoit la clé et la valeur de chaque champ et renvoie la valeur à conserver, ou None pour omettre le champ.

Avec recursive=True, la fonction reçoit chaque feuille d'une valeur structurée, par exemple le texte de chaque message, avec le nom du champ comme clé. Renvoyer None n'omet alors que cette feuille.

ParamètreTypeValeur par défautDescription
mask_functionredaction.AttributeMaskCallbackobligatoireLa fonction qui reçoit la clé et la valeur de chaque champ et renvoie la valeur à conserver, ou None pour l'omettre.
recursiveboolFalseIndique si la fonction reçoit chaque feuille d'une valeur structurée, par exemple le texte de chaque message, plutôt que le champ entier ; None n'omet alors que cette feuille.
redaction.AttributeMaskCallback

redaction.AttributeMaskCallback

type AttributeMaskCallback = Callable[[str, OperationDataValue], OperationDataValue | None]

Une fonction de masquage : elle reçoit la clé et la valeur d'un champ et renvoie la valeur à conserver, ou None pour omettre le champ.

Valeurs par défaut du masquage

Valeurs par défaut du masquage

NomDescription
redaction.CARD_NUMBER_PATTERNUn motif pour les numéros de carte : 13 à 16 chiffres, avec des espaces ou des tirets facultatifs.
redaction.DEFAULT_PII_SECRET_PATTERNSDEFAULT_TOKEN_PATTERNS, plus EMAIL_PATTERN, CARD_NUMBER_PATTERN et IPV4_PATTERN.
redaction.DEFAULT_REDACTED_VALUELe texte qui remplace une valeur masquée : '[REDACTED]'.
redaction.DEFAULT_SAFE_ATTRIBUTE_KEYSClés de trace dont les valeurs sont des ID, des noms et des paramètres, telles que gen_ai.request.model et gen_ai.tool.name : seuls les tokens sont recherchés dans ces valeurs.
redaction.DEFAULT_SENSITIVE_ATTRIBUTE_FRAGMENTSParties d'une clé entraînant le masquage intégral de sa valeur : api_key, argument, arguments, authorization, body, completion, content, cookie, input, message, messages, output, password, payload, prompt, secret, set_cookie et token.
redaction.DEFAULT_SENSITIVE_ATTRIBUTE_KEYSClés de trace dont les valeurs sont intégralement masquées : messages, définitions d'outils, arguments et résultats, corps et en-têtes des requêtes et réponses, URL, adresses, requêtes et messages d'exception.
redaction.DEFAULT_TOKEN_PATTERNSMotifs pour les secrets : tokens bearer, clés privées, JSON Web Tokens, URL de webhook et clés API de Mistral, GitHub, GitLab, Slack, AWS, Google, Hugging Face, Stripe et d'autres services.
redaction.EMAIL_PATTERNUn motif pour les adresses e-mail.
redaction.IPV4_PATTERNUn motif pour les adresses IPv4.