Session et tour
Les références à une session et à ses tours, et les données qu'un tour accepte en entrée.
| Nom | Définition |
|---|---|
Session | Une session, identifiée par son ID. |
Turn | Un tour d'une session, identifié par son ID. |
SessionInput | Une valeur transmise au démarrage d'une session, que les outils et les hooks peuvent lire. |
Depends | Indique qu'un paramètre Annotated est une entrée de session : Annotated[T, agents.Depends()]. |
HistoryImportEntry | Une entrée d'historique qui initialise une nouvelle session, au format accepté par history= : un message, le raisonnement du modèle, un appel d'outil, un résultat d'outil ou un instantané. |
HistoryImportMessage | Un message de l'historique : ce que l'utilisateur, le modèle ou le système a dit. |
HistoryImportReasoning | Le raisonnement du modèle, sous forme d'entrée d'historique. |
HistoryImportToolCall | Un appel d'outil effectué par le modèle, sous forme d'entrée d'historique. |
HistoryImportToolResult | Le résultat d'un appel d'outil, sous forme d'entrée d'historique : result ou error, mais pas les deux. |
HistoryImportSnapshot | Des données enregistrées dans l'historique que le modèle ne voit pas. |
TextContentBlock | Un bloc de texte. |
ImageContentBlock | Une image, désignée par son URI. |
AudioContentBlock | Un extrait audio, désigné par son URI. |
ResourceLinkContentBlock | Un lien vers une ressource, comme un fichier, que le bloc ne contient pas. |
EmbeddedResourceContentBlock | Une ressource, comme un fichier, contenue dans le bloc sous forme de texte ou de données en base64. |
UnknownContentBlock | Un bloc de contenu dont le type a été ajouté après la version de votre SDK. |
ContentAnnotations | Les annotations de bloc MCP : à qui un bloc est destiné et son importance. |
SessionSession
class SessionUne session, identifiée par son ID. Créer une référence avec agent.session(session_id) n'envoie aucune requête.
Obtenez une référence avec await agent.start_session(), ou utilisez un ID enregistré avec
agent.session(session_id). Les deux méthodes conservent le output_type de l'agent pour run, ainsi que pour
get et result des tours de la session.
on_approval répond aux demandes d'approbation de la session et de ses sous-agents pendant l'attente de session.run ou
turn.result, avec AllowApproval, DenyApproval ou agents.KeepCallbackOpen().
on_sign_in répond à leurs demandes de connexion avec un SignInAnswer. on_client_tool répond à leurs
appels d'outils côté client, pour que l'attente ne renvoie pas Blocked pour ces appels. Un gestionnaire d'approbation ou de connexion
qui lève une exception ou renvoie une autre valeur laisse son callback ouvert, et l'appel en attente lève une exception tandis que
le tour continue de s'exécuter. Une réponse d'outil côté client ou un gestionnaire on_client_tool qui lève une exception suit
le paramètre tool_errors de l'agent, comme pour agent.run : par défaut, le modèle est informé de l'échec de l'appel
et l'attente continue. Deux attentes simultanées dans une même boucle d'événements partagent les réponses : la fonction de réponse s'exécute une fois
par appel d'outil côté client.
Deux références sont égales lorsqu'elles désignent la même session au même endroit : la même API Mistral pour un agent déployé, quelle que soit la manière dont vous l'avez chargé, ou le même environnement d'exécution local. Vous pouvez les conserver dans un ensemble ou les utiliser comme clés de dictionnaire.
| Attribut | Type | Description |
|---|---|---|
id | str | L'ID de la session. |
Session.turnSession.turn
def turn(turn_id: str) -> TurnRenvoie la référence à un tour de cette session. N'envoie aucune requête.
Session.send_messageSession.send_message
async def send_message(
content: str | Sequence[TextContentBlock | ImageContentBlock | Mapping[str, Any]],
*,
idempotency_key: str | None = None,
) -> TurnEnvoie un message : la session démarre un tour ou ajoute le message au tour en cours.
turn.started indique le cas : True pour un nouveau tour, False pour le tour en cours.
Lève agents.SessionBusyError si la session ne peut toujours pas accepter le message après plusieurs tentatives ;
aucune modification n'a été appliquée.
| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
content | str | Sequence[TextContentBlock | ImageContentBlock | Mapping[str, Any]] | obligatoire | Le message : une chaîne de caractères ou des blocs de contenu. |
idempotency_key | str | None | None | Permet de réessayer l'envoi sans risque : la même clé renvoie le même tour, et sa réutilisation pour un autre message lève agents.SessionIdempotencyConflictError. |
Session.start_turnSession.start_turn
async def start_turn(
content: str | Sequence[TextContentBlock | ImageContentBlock | Mapping[str, Any]],
*,
idempotency_key: str | None = None,
) -> Turn | BusyDémarre un nouveau tour. Renvoie Busy, avec le tour en cours dans busy.turn, si un tour est actif.
La même idempotency_key renvoie le tour démarré par cette clé ; sa réutilisation pour un autre
message lève agents.SessionIdempotencyConflictError pendant l'exécution de la session. Une nouvelle tentative
avec une clé refusée par Busy démarre un tour une fois le tour en cours terminé. Un démarrage ne
rejoint jamais un tour en cours, donc turn.started vaut True.
Lève SessionBusyError si la session ne peut pas accepter un démarrage pour une autre raison, comme
une limite du nombre de sous-agents en cours d'exécution ; aucune modification n'a été appliquée.
Session.runSession.run
async def run(
content: str | Sequence[TextContentBlock | ImageContentBlock | Mapping[str, Any]],
*,
output_type: type[BaseModel] | None = None,
idempotency_key: str | None = None,
timeout: float | None = None,
on_event: Callable[[Event], Awaitable[None] | None] | None = None,
) -> TurnState[Any] | BusyDémarre un tour et attend qu'il se termine ou qu'il attende un callback ; renvoie son enregistrement.
Renvoie Busy si un autre tour est actif. Équivaut à start_turn, puis
turn.result(timeout=, on_event=) : quitter l'attente n'arrête pas le tour. Avec le
on_client_tool de la référence, lève les mêmes exceptions que Turn.result pour une réponse d'outil côté client.
| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
content | str | Sequence[TextContentBlock | ImageContentBlock | Mapping[str, Any]] | obligatoire | Le message qui démarre le tour : une chaîne de caractères ou des blocs de contenu. |
output_type | type[BaseModel] | None | None | Un modèle Pydantic qui valide la sortie d'un enregistrement Completed (voir Turn.result). S'il n'est pas fourni, le output_type de l'agent associé à la référence est utilisé, s'il est défini. |
idempotency_key | str | None | None | Identifie le démarrage pour qu'une nouvelle tentative avec cette clé renvoie le tour qu'elle a démarré. |
timeout | float | None | None | La durée maximale d'attente du tour en secondes, hors démarrage. Le temps d'exécution d'un gestionnaire on_approval ou on_sign_in est comptabilisé ; celui de votre code d'outil côté client ne l'est pas. None attend sans limite. |
on_event | Callable[[Event], Awaitable[None] | None] | None | None | Une fonction synchrone ou asynchrone appelée avec chaque événement du tour pendant l'attente de l'appel. Quand le tour est terminé, le dernier événement est TurnEnded. |
Session.iter_eventsSession.iter_events
def iter_events(*, after: TurnState[object] | str | None = None) -> AsyncIterator[Event]Produit les événements de la session après after, un enregistrement ou un curseur, ou depuis son début.
Suit la session jusqu'à sa fin, sans jamais rien modifier. Lit chaque
tour terminé, de sorte que chaque TurnEnded contient son enregistrement.
| Exceptions levées | |
|---|---|
ObservationLost | Les événements de la session n'ont pas pu être relus ; reprenez après son curseur. |
InvalidCursorError | À la première itération, after est un enregistrement ou un curseur d'une autre session, ou un curseur non valide. |
Session.cancelSession.cancel
async def cancel() -> NoneTermine la session et ses sous-agents. Une session déjà terminée reste inchangée.
Les tours en cours sont interrompus et la session n'accepte plus de nouvelle commande : un envoi ultérieur lève
SessionTerminatedError. Son historique reste accessible en lecture. Pour une session déployée, l'annulation revient dès que le
déploiement l'accepte ; pour une session locale, elle revient une fois la session terminée et sa
sandbox libérée. Un sous-agent ne peut pas être annulé seul. Annulez plutôt sa session racine.
Session.subagentsSession.subagents
async def subagents() -> list[Session]Renvoie les références aux sous-agents directs de cette session, du plus récent au plus ancien.
La référence à un sous-agent permet la lecture, et ses tours acceptent interrupt : send_message, start_turn,
run et cancel sur la référence, ainsi que steer sur ses tours, lèvent
UnsupportedSessionProcedureError. Pour réorienter un sous-agent, envoyez un message à son parent ou utilisez steer sur celui-ci ;
pour l'arrêter, annulez sa session racine. Il utilise les mêmes on_approval, on_sign_in et
on_client_tool que cette référence.
TurnTurn
class TurnUn tour d'une session, identifié par son ID. Créer une référence avec session.turn(turn_id) n'envoie aucune requête.
Obtenez une référence avec session.turn(turn_id) ou à partir d'un envoi. Deux références au même tour de la
même session sont égales.
| Attribut | Type | Description |
|---|---|---|
id | str | L'ID du tour. |
started | bool | None | True pour un tour démarré par un envoi, False pour un tour en cours rejoint par un envoi. None pour une référence qui ne provient pas d'un envoi, comme une référence créée à partir d'un ID. |
Turn.getTurn.get
async def get() -> TurnState[Any]Lit l'état actuel de ce tour. N'attend jamais et ne modifie jamais le tour.
Renvoie Running, Blocked (le tour attend un callback), ou l'enregistrement de la façon dont le
tour s'est terminé : Completed, Interrupted, Failed ou UnknownOutcome. Completed.output
contient le texte du tour ou, si l'agent associé à la référence possède un output_type, ce texte analysé comme avec
result(output_type=...). Le
cursor de l'enregistrement est l'ID du dernier événement de la session au moment de la lecture. Le tour
actif de la session est également Blocked lorsqu'un de ses sous-agents, à n'importe quelle profondeur, attend un
callback, comme une approbation : Blocked.callbacks le liste avec les ID du sous-agent.
Un tour d'une session terminée n'est jamais Running. Si la session n'a pas indiqué comment le
tour s'est terminé, son état reflète la fin de la session : pour une session annulée, Interrupted avec
cause="cancelled".
Un tour renvoyé par un envoi est Running jusqu'à ce que la session le répertorie : un agent déployé répond à
l'envoi avant de le faire.
| Exceptions levées | |
|---|---|
TurnNotFoundError | La session n'a aucun tour avec cet ID. Jamais levée pour un tour renvoyé par un envoi, ni pour busy.turn. |
Turn.resultTurn.result
async def result(
*,
output_type: type[BaseModel] | None = None,
after: TurnState[object] | str | None = None,
timeout: float | None = None,
on_event: Callable[[Event], Awaitable[None] | None] | None = None,
) -> TurnState[Any]Attend que le tour se termine ou qu'il attende un callback, puis renvoie son enregistrement.
Renvoie Completed, Interrupted, Failed ou UnknownOutcome quand le tour se termine,
et Blocked s'il attend un callback ouvert après after et toujours ouvert. À
l'expiration du délai, renvoie l'enregistrement du tour à cet instant, Running ou Blocked, sans lever
d'exception.
Quitter l'attente n'envoie rien, et le tour continue de s'exécuter. Une annulation, comme
asyncio.wait_for ou Ctrl-C, reçoit une note indiquant les ID et la marche à suivre pour arrêter le tour.
Sans after, un tour qui attend un callback renvoie immédiatement son état. Passez le dernier
enregistrement de ce tour comme after pour attendre au-delà des callbacks déjà traités.
| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
output_type | type[BaseModel] | None | None | Un modèle Pydantic dans lequel le texte du tour est analysé, sous la forme Completed.output. Par défaut, utilise le output_type de l'agent associé à la référence. |
after | TurnState[object] | str | None | None | Un enregistrement de cette session, ou son cursor, après lequel lire les événements du tour. Par défaut, commence au début de ce tour : les callbacks des tours précédents ne comptent pas. Passez l'enregistrement de ce tour ou un enregistrement lu avant son démarrage. L'enregistrement d'un autre tour, lu pendant l'exécution de ce tour, peut faire manquer certains événements de ce tour. |
timeout | float | None | None | La durée maximale d'attente du tour en secondes. Le temps d'exécution d'un gestionnaire on_approval ou on_sign_in est comptabilisé ; celui de votre code d'outil côté client ne l'est pas. None attend aussi longtemps que le tour. |
on_event | Callable[[Event], Awaitable[None] | None] | None | None | Une fonction synchrone ou asynchrone appelée avec chaque événement du tour, dans l'ordre, pendant l'attente de l'appel. Quand le tour est terminé, le dernier événement est TurnEnded. |
| Exceptions levées | |
|---|---|
ObservationLost | Les événements de la session ou les callbacks de ses sous-agents n'ont pas pu être lus ; le tour continue de s'exécuter. |
TurnNotFoundError | La session n'a aucun tour avec cet ID. Jamais levée pour un tour renvoyé par un envoi, ni pour busy.turn : jusqu'à ce que la session le répertorie, l'attente suit ses événements. |
InvalidCursorError | after est un enregistrement ou un curseur d'une autre session, auquel cas l'exception est levée avant toute lecture, ou un curseur que la session n'a jamais eu, auquel cas elle n'est levée que lorsque l'attente lit les événements. |
ClientToolAnswerError | Le on_client_tool de la référence a répondu à un appel, mais la réponse n'a pas pu être envoyée ; l'appel reste ouvert. |
Exception | Avec tool_errors="raise", l'exception levée par une réponse d'outil côté client ou un gestionnaire on_client_tool ; son appel reste ouvert. |
Turn.iter_eventsTurn.iter_events
def iter_events(*, after: TurnState[object] | str | None = None) -> AsyncIterator[Event]Produit les événements de ce tour après after, ou depuis son début, jusqu'à son TurnEnded.
Produit les événements déjà disponibles dans la session, puis ceux qui arrivent en direct, sans limite de temps : un tour qui
attend une approbation peut n'envoyer aucun événement pendant des heures. Une fois le tour terminé, le dernier événement est
TurnEnded, avec son enregistrement, et une position située à sa fin ou après ne produit rien, immédiatement.
Ne modifie rien.
| Exceptions levées | |
|---|---|
ObservationLost | Les événements de la session n'ont pas pu être relus ; reprenez après son curseur. |
TurnNotFoundError | À la première itération, la session n'a aucun tour avec cet ID. Jamais levée pour un tour renvoyé par un envoi, ni pour busy.turn. |
InvalidCursorError | À la première itération, after est un enregistrement ou un curseur d'une autre session, ou un curseur non valide. |
Turn.steerTurn.steer
async def steer(
content: str | Sequence[TextContentBlock | ImageContentBlock | Mapping[str, Any]],
) -> Turn | TurnConflictAjoute un message à ce tour pendant son exécution.
Renvoie TurnConflict si ce tour n'est plus le tour actif : le message n'est pas ajouté.
Turn.answerTurn.answer
async def answer(callback_id: str, answer: object) -> Answered | AlreadySettled | NotFoundRépond à tout callback ouvert de la session de ce tour ou de ses sous-agents, quel que soit le tour, à partir de son ID de callback. L'ID du tour n'est pas utilisé : l'ID d'un callback l'identifie dans sa session.
Une approbation (OpenApproval) accepte AllowApproval ou DenyApproval. Une demande de connexion
(OpenSignIn) accepte un SignInAnswer qui désigne chaque source demandée, et uniquement
celles-ci. Un appel d'outil côté client (OpenClientToolCall) accepte le résultat de l'outil : ce qu'une fonction de réponse
renverrait, comme un modèle, un dictionnaire ou un ToolResult. Si le stub figure dans le
tools= de l'agent ou de ses sous-agents, le résultat est vérifié par rapport au type de retour du stub
et envoyé de la même manière que sa réponse. Sinon, il est envoyé en JSON, sans vérification : pour un outil créé avec
output_schema=, un outil de hook, un ID d'outil partagé par deux stubs différents, ou une référence
obtenue avec Agent.load_from().
Lit la session une fois, puis répond. Renvoie Answered si le callback était ouvert,
AlreadySettled s'il ne l'est plus (un autre client a répondu en premier, ou le callback
s'est fermé), et NotFound si la session ne l'a jamais ouvert. Un callback ouvert d'un sous-agent,
répertorié dans le Blocked.callbacks de la racine, reçoit une réponse dans la session du sous-agent, et
l'enregistrement désigne cette session ; une fois le callback fermé, la racine renvoie NotFound et la
session du sous-agent lui-même, agent.session(callback.session_id), renvoie AlreadySettled.
Pour une approbation, Answered.answer est la réponse prise en compte : deux clients qui répondent
simultanément reçoivent tous deux Answered, avec la réponse du premier arrivé. Vous devez donc
la comparer à la vôtre. Elle vaut None si la réponse prise en compte n'a pas pu être lue à temps ;
lisez le tour pour connaître le résultat. Pour un appel d'outil côté client et une demande de connexion, elle vaut None : le
premier résultat envoyé est pris en compte. Les sessions locales et déployées fonctionnent de la même manière.
La valeur answer d'une approbation est AllowApproval ou DenyApproval, jamais un booléen, un dictionnaire ou
None. KeepCallbackOpen() est une valeur de retour de gestionnaire, jamais une réponse : pour laisser un
callback ouvert, n'y répondez pas.
| Paramètre | Type | Valeur par défaut | Description |
|---|---|---|---|
callback_id | str | obligatoire | L'ID du callback ouvert, tel qu'il figure dans Blocked.callbacks. |
answer | object | obligatoire | La réponse correspondant au type de callback : AllowApproval ou DenyApproval, un SignInAnswer, ou le résultat d'un outil côté client. |
| Exceptions levées | |
|---|---|
ValueError | callback_id n'est pas un UUID (rien n'est envoyé). |
SdkError | answer vaut KeepCallbackOpen() ou ne convient pas au callback, ou deux sous-agents ont un callback ouvert avec cet identifiant. Cette erreur survient aussi lorsque answer autorise l'approbation d'un hook pour toute la session (AllowApproval(scope="session")), ou lorsque le callback est un appel d'outil client pour un outil fourni par la plateforme, par exemple dans l'espace de noms connectors. Rien n'est envoyé. Une demande de connexion arrive sous la forme OpenSignIn et attend un SignInAnswer. |
ObservationLost | Le callback n'est ouvert nulle part, et les événements de la session n'ont pas pu être lus. |
Turn.interruptTurn.interrupt
async def interrupt() -> Turn | TurnConflictArrête ce tour ; la session reste ouverte pour de nouveaux tours.
Renvoie TurnConflict lorsque ce tour n'est plus le tour actif.
Entrée
SessionInputSessionInput
class SessionInput(pydantic.BaseModel)Une valeur que vous transmettez au démarrage d'une session et que les outils et les hooks peuvent lire.
Créez une sous-classe avec les champs nécessaires, par exemple un dépôt ou une organisation, et définissez
input_id. Un outil, un hook ou un hook de sandbox la lit au moyen d'un paramètre annoté
Annotated[YourInput, agents.Depends()] ; le modèle ne la voit jamais. N'y placez jamais d'identifiant d'authentification :
la session la conserve pendant toute sa durée de vie.
Une règle exprimée uniquement par un validateur est vérifiée à l'endroit où la valeur est utilisée, et le rejet d'une valeur fait échouer cette utilisation. N'incluez jamais la valeur dans le message d'un validateur, car ce message est transmis aux résultats des tours et au modèle.
Une session conserve ses entrées pendant toute sa durée de vie, y compris lors de nouveaux déploiements de l'agent. Toute modification d'une classe doit donc continuer d'accepter les valeurs acceptées par sa version précédente.
| Attribut | Type | Description |
|---|---|---|
input_id | str | Le nom stable de l'entrée, utilisé par une session pour la retrouver. Il ne fait pas partie de la valeur. |
DependsDepends
class Depends()Marque un paramètre Annotated comme entrée de session : Annotated[T, agents.Depends()].
Le type annoté T est la classe d'entrée, déclarée une seule fois.
HistoryImportEntryHistoryImportEntry
type HistoryImportEntry = (
HistoryImportMessage
| HistoryImportReasoning
| HistoryImportToolCall
| HistoryImportToolResult
| HistoryImportSnapshot
)Une entrée d'historique qui initialise une nouvelle session, telle qu'acceptée par history= : un message, le raisonnement du modèle, un appel d'outil, un résultat d'outil ou un instantané. Fournissez chaque entrée sous la forme d'une des classes ci-dessous, ou d'un dictionnaire contenant les mêmes champs, en snake case ou en camelCase, avec son type : "message", "reasoning", "tool_call", "tool_result" ou "snapshot".
HistoryImportMessageHistoryImportMessage
class HistoryImportMessage(
*,
role: Literal['system', 'user', 'assistant'],
content: list[ContentBlock] = [],
)Un message de l'historique : ce qu'a dit l'utilisateur, le modèle ou le système.
| Attribut | Type | Description |
|---|---|---|
type | Literal['message'] | Toujours "message". |
HistoryImportReasoningHistoryImportReasoning
class HistoryImportReasoning(*, text: str)Le raisonnement du modèle, sous forme d'entrée d'historique.
| Attribut | Type | Description |
|---|---|---|
type | Literal['reasoning'] | Toujours "reasoning". |
HistoryImportToolCallHistoryImportToolCall
class HistoryImportToolCall(
*,
tool_call_id: str,
tool_kind: Literal['builtin', 'local', 'mcp', 'client', 'plugin', 'connector'] = 'local',
name: str,
arguments: JsonValue = None,
)Un appel d'outil effectué par le modèle, sous forme d'entrée d'historique.
| Attribut | Type | Description |
|---|---|---|
type | Literal['tool_call'] | Toujours "tool_call". |
HistoryImportToolResultHistoryImportToolResult
class HistoryImportToolResult(
*,
tool_call_id: str,
name: str | None = None,
result: JsonValue = None,
error: ProtocolError | None = None,
annotations: dict[str, JsonValue] = {},
)Le résultat d'un appel d'outil, sous forme d'entrée d'historique : result ou error, mais pas les deux.
| Attribut | Type | Description |
|---|---|---|
type | Literal['tool_result'] | Toujours "tool_result". |
HistoryImportSnapshotHistoryImportSnapshot
class HistoryImportSnapshot(*, task_name: str, snapshot_type: str, value: JsonValue = None)Des données enregistrées dans l'historique que le modèle ne voit pas. L'historique de la session les présente comme une entrée agents.UnknownEntry de type "checkpoint" : raw["message"] vaut task_name:snapshot_type, et raw["details"] vaut value.
| Attribut | Type | Description |
|---|---|---|
type | Literal['snapshot'] | Toujours "snapshot". |
TextContentBlockTextContentBlock
class TextContentBlock(
*,
annotations: ContentAnnotations | None = None,
meta: dict[str, JsonValue] | None = None,
text: str = '',
)Un bloc de texte.
| Attribut | Type | Description |
|---|---|---|
type | Literal['text'] | Toujours "text". |
ImageContentBlockImageContentBlock
class ImageContentBlock(
*,
annotations: ContentAnnotations | None = None,
meta: dict[str, JsonValue] | None = None,
uri: str,
media_type: str | None = None,
alt_text: str | None = None,
)Une image, référencée par une URI.
| Attribut | Type | Description |
|---|---|---|
type | Literal['image'] | Toujours "image". |
ImageContentBlock.from_bytesImageContentBlock.from_bytes
@classmethod
def from_bytes(
data: bytes,
media_type: str | None = None,
*,
alt_text: str | None = None,
annotations: ContentAnnotations | None = None,
) -> ImageContentBlockUne image intégrée ; le type de média est déterminé à partir des octets PNG, JPEG, GIF ou WebP.
ImageContentBlock.from_pathImageContentBlock.from_path
@classmethod
def from_path(
path: str | PathLike[str],
media_type: str | None = None,
*,
alt_text: str | None = None,
annotations: ContentAnnotations | None = None,
) -> ImageContentBlockUne image intégrée, lue depuis un fichier local. Sa représentation en base64 est limitée à 10 000 000 caractères, soit un fichier d'environ 7,5 Mo ; un fichier plus volumineux lève ValueError.
AudioContentBlockAudioContentBlock
class AudioContentBlock(
*,
annotations: ContentAnnotations | None = None,
meta: dict[str, JsonValue] | None = None,
uri: str,
media_type: str | None = None,
)Un extrait audio, référencé par une URI.
| Attribut | Type | Description |
|---|---|---|
type | Literal['audio'] | Toujours "audio". |
ResourceLinkContentBlockResourceLinkContentBlock
class ResourceLinkContentBlock(
*,
annotations: ContentAnnotations | None = None,
meta: dict[str, JsonValue] | None = None,
uri: str,
name: str | None = None,
title: str | None = None,
description: str | None = None,
media_type: str | None = None,
size: int | None = None,
)Un lien vers une ressource, par exemple un fichier, dont le contenu n'est pas inclus dans le bloc.
| Attribut | Type | Description |
|---|---|---|
type | Literal['resource_link'] | Toujours "resource_link". |
EmbeddedResourceContentBlockEmbeddedResourceContentBlock
class EmbeddedResourceContentBlock(
*,
annotations: ContentAnnotations | None = None,
meta: dict[str, JsonValue] | None = None,
uri: str,
media_type: str | None = None,
text: str | None = None,
blob: str | None = None,
)Une ressource, par exemple un fichier, dont le contenu est inclus dans le bloc sous forme de texte ou de données encodées en base64.
| Attribut | Type | Description |
|---|---|---|
type | Literal['embedded_resource'] | Toujours "embedded_resource". |
UnknownContentBlockUnknownContentBlock
class UnknownContentBlock(*, original_type: str)Un bloc de contenu dont le type a été ajouté après votre version du SDK. Son champ type vaut unknown, ce qui permet à un match sur type de continuer à fonctionner pour les blocs connus ; original_type indique son type d'origine, et ses autres champs sont conservés tels qu'ils ont été reçus. L'entrée d'un tour ne peut pas contenir ce type de bloc.
| Attribut | Type | Description |
|---|---|---|
type | Literal['unknown'] | Toujours "unknown". |
ContentAnnotationsContentAnnotations
class ContentAnnotations(
*,
audience: list[Literal['user', 'assistant'] | str] | None = None,
priority: float | None = None,
last_modified: str | None = None,
)Annotations MCP d'un bloc : le public auquel il est destiné et son importance.
Un bloc de résultat d'outil dont le public exclut "assistant" n'est jamais envoyé au modèle ; un client peut masquer un bloc dont le public exclut "user". priority doit être compris entre 0 et 1.