Aller au contenu principal

Agent.streamLegacy() (ancienne API)

attention

Obsolète : cette méthode est obsolète et fonctionne uniquement avec les modèles V1. Pour les modèles V2, utilisez plutôt la nouvelle méthode .stream(). Consultez le guide de migration pour savoir comment effectuer la mise à niveau.

La méthode .streamLegacy() est l’ancienne version de l’API de streaming des Agents. Elle permet de diffuser en temps réel les réponses des Agents utilisant des modèles V1. Cette méthode accepte des messages et des options de streaming facultatives.

Exemple d’utilisation
Lien direct vers Exemple d’utilisation

await agent.streamLegacy('message for agent')

Paramètres
Lien direct vers Paramètres

messages:

string | string[] | CoreMessage[] | AiMessageType[] | UIMessageWithMetadata[]
Messages à envoyer à l’Agent. Il peut s’agir d’une chaîne unique, d’un tableau de chaînes ou d’objets de message structurés.

options?:

AgentStreamOptions<OUTPUT, EXPERIMENTAL_OUTPUT>
Configuration facultative du processus de streaming.
AgentStreamOptions

abortSignal?:

AbortSignal
Objet de signal permettant d’interrompre l’exécution de l’Agent. Lorsque le signal est interrompu, toutes les opérations en cours prennent fin.

context?:

CoreMessage[]
Messages de contexte supplémentaires à fournir à l’Agent.

experimental_output?:

Zod schema | JsonSchema7
Active la génération d’une sortie structurée en parallèle du texte et des appels d’outils. Le modèle génère des réponses conformes au schéma fourni.

instructions?:

string
Instructions personnalisées qui remplacent les instructions par défaut de l’Agent pour cette génération. Elles permettent de modifier dynamiquement le comportement de l’Agent sans créer une nouvelle instance.

output?:

Zod schema | JsonSchema7
Définit la structure attendue de la sortie. Peut être un objet JSON Schema ou un schéma Zod.

memory?:

object
Configuration de Memory. Il s’agit de la méthode recommandée pour gérer Memory.

thread:

string | { id: string; metadata?: Record<string, any>, title?: string }
Thread de conversation, sous forme d’identifiant chaîne ou d’objet contenant un id et des metadata facultatives.

resource:

string
Identifiant de l’utilisateur ou de la ressource associé au thread.

options?:

MemoryConfig
Configuration du comportement de Memory, notamment l’historique des messages et le rappel sémantique.

maxSteps?:

number
Nombre maximal d’étapes d’exécution autorisées.

maxRetries?:

number
Nombre maximal de nouvelles tentatives. Définissez cette valeur sur 0 pour les désactiver.

memoryOptions?:

MemoryConfig
**Obsolète.** Utilisez plutôt memory.options. Options de configuration pour la gestion de Memory.

lastMessages?:

number | false
Nombre de messages récents à inclure dans le contexte, ou false pour désactiver cette fonction.

semanticRecall?:

boolean | { topK: number; messageRange: number | { before: number; after: number }; scope?: 'thread' | 'resource' }
Active le rappel sémantique afin de retrouver des messages antérieurs pertinents. Peut être un booléen ou une configuration détaillée.

workingMemory?:

WorkingMemory
Configuration de la fonctionnalité de mémoire de travail.

threads?:

{ generateTitle?: boolean | { model: DynamicArgument<MastraLanguageModel>; instructions?: DynamicArgument<string> } }
Configuration propre au thread, notamment la génération automatique du titre.

onFinish?:

StreamTextOnFinishCallback<any> | StreamObjectOnFinishCallback<OUTPUT>
Fonction de rappel appelée à la fin du streaming. Elle reçoit le résultat final.

onStepFinish?:

StreamTextOnStepFinishCallback<any> | never
Fonction de rappel appelée après chaque étape d’exécution. Elle reçoit les détails de l’étape sous forme de chaîne JSON. Indisponible pour une sortie structurée.

resourceId?:

string
**Obsolète.** Utilisez plutôt memory.resource. Identifiant de l’utilisateur ou de la ressource qui interagit avec l’Agent. Obligatoire si threadId est fourni.

telemetry?:

TelemetrySettings
Paramètres de collecte des données de télémétrie pendant le streaming.

isEnabled?:

boolean
Active ou désactive la télémétrie. Elle est désactivée par défaut tant que la fonctionnalité est expérimentale.

recordInputs?:

boolean
Active ou désactive l’enregistrement des entrées. Activé par défaut. Vous pouvez le désactiver afin de ne pas enregistrer d’informations sensibles.

recordOutputs?:

boolean
Active ou désactive l’enregistrement des sorties. Activé par défaut. Vous pouvez le désactiver afin de ne pas enregistrer d’informations sensibles.

functionId?:

string
Identifiant de cette fonction. Sert à regrouper les données de télémétrie par fonction.

temperature?:

number
Contrôle le caractère aléatoire de la sortie du modèle. Des valeurs élevées (par ex. 0,8) rendent la sortie plus aléatoire, tandis que des valeurs faibles (par ex. 0,2) la rendent plus ciblée et déterministe.

threadId?:

string
**Obsolète.** Utilisez plutôt memory.thread. Identifiant du thread de conversation. Permet de conserver le contexte entre plusieurs interactions. Obligatoire si resourceId est fourni.

toolChoice?:

'auto' | 'none' | 'required' | { type: 'tool'; toolName: string }
Contrôle la manière dont l’Agent utilise les outils pendant le streaming.

'auto':

string
Laisse le modèle décider s’il doit utiliser des outils (valeur par défaut).

'none':

string
N’utilise aucun outil.

'required':

string
Impose au modèle d’utiliser au moins un outil.

{ type: 'tool'; toolName: string }:

object
Impose au modèle d’utiliser un outil précis, désigné par son nom.

toolsets?:

ToolsetsInput
Ensembles d’outils supplémentaires à mettre à la disposition de l’Agent pendant le streaming.

clientTools?:

ToolsInput
Outils exécutés côté « client » de la requête. Leur définition ne comporte pas de fonction execute.

hooks?:

ToolHooks
Hooks propres à l’exécution, exécutés avant et après les appels d’outils. Pour cette exécution, ils remplacent les hooks correspondants définis au niveau de l’Agent. beforeToolCall peut renvoyer { proceed: false, output } afin d’ignorer l’appel d’outil.

savePerStep?:

boolean
Enregistre progressivement les messages après chaque étape terminée du stream (valeur par défaut : false).

providerOptions?:

Record<string, Record<string, JSONValue>>
Options supplémentaires propres au Provider, transmises au Provider LLM sous-jacent. La structure est { providerName: { optionKey: value } }. Par exemple : { openai: { reasoningEffort: 'high' }, anthropic: { maxTokens: 1000 } }.

openai?:

Record<string, JSONValue>
Options propres à OpenAI. Exemple : { reasoningEffort: 'high' }

anthropic?:

Record<string, JSONValue>
Options propres à Anthropic. Exemple : { maxTokens: 1000 }

google?:

Record<string, JSONValue>
Options propres à Google. Exemple : { safetySettings: [...] }

[providerName]?:

Record<string, JSONValue>
Autres options propres au Provider. La clé correspond au nom du Provider et la valeur est un enregistrement de ses options spécifiques.

runId?:

string
Identifiant unique de cette exécution de génération, utile pour le suivi et le débogage.

requestContext?:

RequestContext
Request Context destiné à l’injection de dépendances et aux informations contextuelles.

maxTokens?:

number
Nombre maximal de tokens à générer.

topP?:

number
Échantillonnage par noyau. Cette valeur est comprise entre 0 et 1. Il est recommandé de définir soit temperature, soit topP, mais pas les deux.

topK?:

number
Pour chaque token suivant, échantillonne uniquement parmi les K meilleures options. Permet d’éliminer les réponses de faible probabilité situées dans la « longue traîne ».

presencePenalty?:

number
Paramètre de pénalité de présence. Il influe sur la probabilité que le modèle répète des informations déjà présentes dans le prompt. Nombre compris entre -1 (répétition accrue) et 1 (pénalité maximale, répétition réduite).

frequencyPenalty?:

number
Paramètre de pénalité de fréquence. Il influe sur la probabilité que le modèle réutilise plusieurs fois les mêmes mots ou expressions. Nombre compris entre -1 (répétition accrue) et 1 (pénalité maximale, répétition réduite).

stopSequences?:

string[]
Séquences d’arrêt. Si elles sont définies, le modèle cesse de générer du texte dès que l’une d’elles est produite.

seed?:

number
Graine (entier) à utiliser pour l’échantillonnage aléatoire. Si elle est définie et prise en charge par le modèle, les appels produisent des résultats déterministes.

headers?:

Record<string, string | undefined>
En-têtes HTTP supplémentaires à envoyer avec la requête. S’applique uniquement aux Providers reposant sur HTTP.

Valeur renvoyée
Lien direct vers Valeur renvoyée

textStream?:

AsyncGenerator<string>
Générateur asynchrone qui produit les fragments de texte à mesure qu’ils deviennent disponibles.

fullStream?:

Promise<ReadableStream>
Promise résolue avec un ReadableStream contenant la réponse complète.

text?:

Promise<string>
Promise résolue avec la réponse textuelle complète.

usage?:

Promise<{ totalTokens: number; promptTokens: number; completionTokens: number }>
Promise résolue avec les informations d’utilisation des tokens.

finishReason?:

Promise<string>
Promise résolue avec la raison pour laquelle le stream s’est terminé.

toolCalls?:

Promise<Array<ToolCall>>
Promise résolue avec les appels d’outils effectués pendant le streaming.

toolName:

string
Nom de l’outil appelé.

args:

any
Arguments transmis à l’outil.

Exemple d’utilisation étendu
Lien direct vers Exemple d’utilisation étendu

await agent.streamLegacy('message for agent', {
temperature: 0.7,
maxSteps: 3,
memory: {
thread: 'user-123',
resource: 'test-app',
},
toolChoice: 'auto',
})

Migration vers la nouvelle API
Lien direct vers Migration vers la nouvelle API

info

La nouvelle méthode .stream() offre des fonctionnalités enrichies, notamment la compatibilité avec AI SDK v5+, une meilleure gestion des sorties structurées et un système de fonctions de rappel amélioré. Consultez le guide de migration pour obtenir des instructions détaillées.

Exemple de migration rapide
Lien direct vers Exemple de migration rapide

Avant (ancienne API)
Lien direct vers Avant (ancienne API)

const result = await agent.streamLegacy('message', {
temperature: 0.7,
maxSteps: 3,
onFinish: result => console.log(result),
})

Après (nouvelle API)
Lien direct vers Après (nouvelle API)

const result = await agent.stream('message', {
modelSettings: {
temperature: 0.7,
},
maxSteps: 3,
onFinish: result => console.log(result),
})