Deux modes à connaître
| Méthode | À utiliser quand… |
|---|---|
respond(to:) | vous avez besoin du résultat complet avant de l’utiliser |
streamResponse(to:) | vous voulez afficher la réponse progressivement |
Streaming, isResponding et GenerationOptions
Ces trois éléments vont souvent ensemble :
streamResponse(to:options:)pour livrer la réponse progressivementisRespondingpour protéger l’UI contre les doubles envoisGenerationOptionspour borner la longueur et le niveau de variation
isResponding devient votre garde-fou produit. Il évite qu’un utilisateur relance une seconde génération alors que la première est encore affichée en streaming.
Exemple de streaming texte
partial.content contient l’état courant complet de la réponse.
Exemple de streaming structuré
Le streaming fonctionne aussi avec Guided Generation.UX : ce qu’il faut afficher
Un indicateur d’activité
La propriétéisResponding de votre session est faite pour ça.
Un bouton désactivé pendant la génération
Un affichage lisible
Le modèle génère souvent du Markdown. Si vous l’affichez tel quel, le résultat peut sembler brouillon.Quand ne pas streamer
Le streaming n’est pas indispensable si :- vous avez besoin d’un objet final unique
- la réponse est très courte
- le résultat sert uniquement à une logique interne
respond(to:) reste plus simple.
Bonnes pratiques
- videz l’ancien contenu avant une nouvelle génération
- montrez clairement qu’une réponse est en cours
- gérez l’erreur dans la même zone d’UI
- bornez souvent
maximumResponseTokenssi l’écran attend une réponse courte - ne forcez pas le streaming si l’écran a surtout besoin d’un résultat final