API
getAvailability()getImageAnalysisAvailability()downloadModel()configureFallbackModel(...)warmup(...)createChat(...)deleteChat(...)generateText(...)streamText(...)cancelGeneration(...)addListener('availabilityChange', ...)addListener('systemAvailabilityChange', ...)addListener('downloadProgress', ...)addListener('textChunk', ...)addListener('generationStateChange', ...)removeAllListeners()generateImage(...)systemAvailability()download()prompt(...)endSession(...)- Interfaces
- Alias de types
Contrat public du plugin LLM sur l’appareil.
method getAvailability()
getAvailability() => Promise<GetAvailabilityResult>
Renvoie la disponibilité détaillée du modèle de texte. Le Web détecte la prise en charge de la Prompt API de Chrome ; les navigateurs incompatibles renvoient unavailable.
Renvoie : Promise<GetAvailabilityResult>
Depuis : 2.0.0
method getImageAnalysisAvailability()
getImageAnalysisAvailability() => Promise<GetImageAnalysisAvailabilityResult>
Renvoie la disponibilité de l’analyse d’images et le backend natif qui traiterait les images d’entrée.
Sur les builds iOS 27 compilés avec Xcode 27 / Swift 6.4, renvoie le status du modèle de texte, ainsi que backend: 'foundation-models' et maxImages: 4. Les builds réalisés avec un ancien Xcode signalent unavailable et ne peuvent pas inclure la prise en charge de la vision iOS 27. Android signale les API de prompt Gemini Nano ou un repli LiteRT-LM configuré. Le Web signale actuellement unavailable pour l’analyse d’images.
Renvoie : Promise<GetImageAnalysisAvailabilityResult>
Depuis : 2.1.0
method downloadModel()
downloadModel() => Promise<void>
Lance le téléchargement du modèle sur Android ou Chrome Web. Sur le Web, appelez cette méthode depuis un geste utilisateur ; Chrome gère le modèle.
Depuis : 2.0.0
method configureFallbackModel(...)
configureFallbackModel(options: ConfigureFallbackModelOptions) => Promise<void>
Initialise un modèle de repli LiteRT-LM explicite sur Android. Gemini Nano reste prioritaire lorsqu’il est disponible.
La configuration d’un modèle effectue des entrées/sorties sur des fichiers locaux et peut prendre un temps important. iOS et le Web rejettent cette API.
| Paramètre | Type |
|---|---|
options |
ConfigureFallbackModelOptions |
Depuis : 2.0.0
method warmup(...)
warmup(options?: WarmupOptions | undefined) => Promise<void>
Préchauffe les ressources du modèle. Le Web crée puis détruit une session textuelle temporaire ; promptPrefix est réservé à iOS.
| Paramètre | Type |
|---|---|
options |
WarmupOptions |
Depuis : 1.0.0
method createChat(...)
createChat(options?: CreateChatOptions | undefined) => Promise<CreateChatResult>
Crée un chat géré par le plugin jusqu’à sa suppression.
| Paramètre | Type |
|---|---|
options |
CreateChatOptions |
Renvoie : Promise<CreateChatResult>
Depuis : 2.0.0
method deleteChat(...)
deleteChat(options: DeleteChatOptions) => Promise<void>
Supprime un chat et annule sa génération.
| Paramètre | Type |
|---|---|
options |
DeleteChatOptions |
Depuis : 2.0.0
method generateText(...)
generateText(options: GenerateTextOptions) => Promise<GenerateTextResult>
Génère un texte complet.
| Paramètre | Type |
|---|---|
options |
GenerateTextOptions |
Renvoie : Promise<GenerateTextResult>
Depuis : 2.0.0
method streamText(...)
streamText(options: StreamTextOptions) => Promise<StreamTextResult>
Diffuse les fragments natifs en continu et renvoie le texte complet.
| Paramètre | Type |
|---|---|
options |
GenerateTextOptions |
Renvoie : Promise<GenerateTextResult>
Depuis : 2.0.0
method cancelGeneration(...)
cancelGeneration(options: CancelGenerationOptions) => Promise<void>
Annule une génération en cours.
| Paramètre | Type |
|---|---|
options |
CancelGenerationOptions |
Depuis : 2.0.0
method addListener('availabilityChange', ...)
addListener(eventName: 'availabilityChange', listenerFunc: AvailabilityChangeListener) => Promise<PluginListenerHandle>
Écoute les changements de disponibilité. Le Web émet les changements observés pendant les vérifications de disponibilité ainsi que la création et le téléchargement de sessions.
| Paramètre | Type |
|---|---|
eventName |
'availabilityChange' |
listenerFunc |
AvailabilityChangeListener |
Renvoie : Promise<PluginListenerHandle>
Depuis : 2.0.0
method addListener('systemAvailabilityChange', ...)
addListener(eventName: 'systemAvailabilityChange', listenerFunc: SystemAvailabilityChangeListener) => Promise<PluginListenerHandle>
| Paramètre | Type |
|---|---|
eventName |
'systemAvailabilityChange' |
listenerFunc |
SystemAvailabilityChangeListener |
Renvoie : Promise<PluginListenerHandle>
Depuis : 1.0.0
method addListener('downloadProgress', ...)
addListener(eventName: 'downloadProgress', listenerFunc: DownloadProgressListener) => Promise<PluginListenerHandle>
Écoute la progression du téléchargement sur Android ou Chrome Web.
| Paramètre | Type |
|---|---|
eventName |
'downloadProgress' |
listenerFunc |
DownloadProgressListener |
Renvoie : Promise<PluginListenerHandle>
Depuis : 2.0.0
method addListener('textChunk', ...)
addListener(eventName: 'textChunk', listenerFunc: TextChunkListener) => Promise<PluginListenerHandle>
Écoute les fragments de texte natifs.
| Paramètre | Type |
|---|---|
eventName |
'textChunk' |
listenerFunc |
TextChunkListener |
Renvoie : Promise<PluginListenerHandle>
Depuis : 2.0.0
method addListener('generationStateChange', ...)
addListener(eventName: 'generationStateChange', listenerFunc: GenerationStateChangeListener) => Promise<PluginListenerHandle>
Écoute le démarrage, la fin, l’annulation et l’échec de la génération.
| Paramètre | Type |
|---|---|
eventName |
'generationStateChange' |
listenerFunc |
GenerationStateChangeListener |
Renvoie : Promise<PluginListenerHandle>
Depuis : 2.1.0
method removeAllListeners()
removeAllListeners() => Promise<void>
Supprime tous les écouteurs du plugin.
Depuis : 1.0.0
method generateImage(...)
generateImage(options: GenerateImageOptions) => Promise<GenerateImageResponse>
Génère des images PNG sur iOS.
| Paramètre | Type |
|---|---|
options |
GenerateImageOptions |
Renvoie : Promise<GenerateImageResponse>
Depuis : 1.0.0
method systemAvailability()
systemAvailability() => Promise<SystemAvailabilityResponse>
Renvoie : Promise<SystemAvailabilityResponse>
Depuis : 1.0.0
method download()
download() => Promise<void>
Depuis : 1.0.0
method prompt(...)
prompt(options: PromptOptions) => Promise<PromptResponse>
| Paramètre | Type |
|---|---|
options |
PromptOptions |
Renvoie : Promise<PromptResponse>
Depuis : 1.0.0
method endSession(...)
endSession(options: EndSessionOptions) => Promise<void>
Termine une session de l’ancienne API. Les identifiants de sessions déjà terminées ou inconnues aboutissent sans effet.
| Paramètre | Type |
|---|---|
options |
EndSessionOptions |
Depuis : 1.0.0
Interfaces
interface GetAvailabilityResult
Résultat renvoyé par les vérifications de disponibilité.
| Propriété | Type | Description | Depuis |
|---|---|---|---|
status |
Availability |
Disponibilité actuelle du modèle de texte. | 2.0.0 |
interface GetImageAnalysisAvailabilityResult
Résultat renvoyé par les vérifications de disponibilité de l’analyse d’images.
| Propriété | Type | Description | Depuis |
|---|---|---|---|
status |
Availability |
Disponibilité actuelle de l’analyse d’images. | 2.1.0 |
backend |
ImageAnalysisBackend |
Backend natif qui traiterait l’analyse d’images si elle était disponible. | 2.1.0 |
maxImages |
number |
Nombre maximal d’images accepté dans une génération par le backend actif. | 2.1.0 |
interface ConfigureFallbackModelOptions
Configure un repli facultatif vers LiteRT-LM sur Android lorsque Gemini Nano n’est pas disponible.
Le modèle doit déjà exister comme ressource de l’application ou comme fichier lisible géré par celle-ci. iOS et le Web rejettent cette API.
| Propriété | Type | Description | Depuis |
|---|---|---|---|
path |
string |
Chemin du modèle .litertlm. Utilisez /android_asset/... pour les ressources intégrées ou un chemin absolu de fichier géré par l’application. |
2.0.0 |
maxTokens |
number |
Capacité totale du contexte transmise à LiteRT-LM. Valeur par défaut : 4096. | 2.0.0 |
maxImages |
number |
Nombre maximal d’images accepté par génération pour un modèle doté de capacités de vision. Valeur par défaut : 1. | 2.0.0 |
supportsImages |
boolean |
Initialise le pipeline de vision LiteRT-LM. Valeur par défaut : true ; utilisez false uniquement pour un modèle exclusivement textuel. |
2.0.0 |
interface WarmupOptions
Options de préchauffage. Android effectue un préchauffage global du modèle ; iOS peut préchauffer un chat.
Le Web crée puis libère une session temporaire, éventuellement avec le contexte d’un chat.
| Propriété | Type | Description | Depuis |
|---|---|---|---|
chatId |
string |
Identifiant explicite du chat à préchauffer sur iOS ou à utiliser comme contexte du préchauffage Web. | 2.0.0 |
sessionId |
string |
1.0.0 | |
promptPrefix |
string |
Préfixe de prompt facultatif utilisé par Foundation Models. | 1.0.0 |
interface CreateChatResult
Résultat contenant l’identifiant du chat géré par le plugin.
| Propriété | Type | Description | Depuis |
|---|---|---|---|
id |
string |
Identifiant requis pour les appels de génération et de suppression. | 2.0.0 |
interface CreateChatOptions
Options de création d’un chat géré par le plugin.
| Propriété | Type | Description | Depuis |
|---|---|---|---|
instructions |
string |
Instructions système persistantes pour ce chat. | 2.0.0 |
history |
ChatHistoryOptions |
Limites d’historique appliquées sur iOS, Android et le Web. | 2.0.0 |
interface ChatHistoryOptions
Limites de l’historique du chat. Toutes les implémentations conservent les instructions et suppriment les échanges complets les plus anciens.
| Propriété | Type | Description | Depuis |
|---|---|---|---|
maxMessages |
number |
Nombre maximal de messages conservés. Valeur par défaut : 20. | 2.0.0 |
maxCharacters |
number |
Nombre maximal de caractères conservés dans les messages. Valeur par défaut : 12000. | 2.0.0 |
interface DeleteChatOptions
Options de suppression d’un chat.
| Propriété | Type | Description | Depuis |
|---|---|---|---|
id |
string |
Identifiant de chat renvoyé par createChat(). |
2.0.0 |
interface GenerateTextResult
Résultat d’une génération de texte.
| Propriété | Type | Description | Depuis |
|---|---|---|---|
text |
string |
Texte généré complet. | 2.0.0 |
generationId |
string |
Identifiant permettant d’associer les diagnostics à une génération. | 2.0.0 |
interface GenerateTextOptions
Options d’une génération sans diffusion en continu.
| Propriété | Type | Description | Depuis |
|---|---|---|---|
chatId |
string |
Identifiant de chat renvoyé par createChat(). |
2.0.0 |
prompt |
string |
Prompt de l’utilisateur. | 2.0.0 |
images |
ImageInput[] |
Images fournies à un backend doté de capacités de vision. Sur iOS 27 et versions ultérieures (builds compilés avec Xcode 27 / Swift 6.4), Foundation Models Attachment accepte jusqu’à 4 images de 32 MiB maximum chacune, via des chemins absolus lisibles, des URL file://, du Base64 brut ou des URL de données Base64. Après une génération réussie, les pièces jointes sont supprimées de l’historique conservé, tandis que le prompt textuel et la réponse sont maintenus. Android utilise les API de prompt Gemini Nano ou un repli LiteRT-LM configuré avec des entrées absolues/file:///content:///Base64 et les limites de pixels cumulés de ML Kit. Le Web et les backends uniquement textuels rejettent les images d’entrée avec LOCAL_LLM_UNSUPPORTED. |
2.1.0 |
imagePaths |
string[] |
Chemins d’images locales fournis à un modèle de repli LiteRT-LM Android doté de capacités de vision. Les chemins absolus, les URL file:// et les URI content:// lisibles sont acceptés. Ce parcours de compatibilité conserve le routage LiteRT-LM de la version 2.0, même lorsque ML Kit est disponible. |
2.0.0 |
options |
GenerationOptions |
Paramètres facultatifs de génération. | 2.0.0 |
interface ImageUriInput
Image d’entrée sous forme d’URI locale.
| Propriété | Type | Description | Depuis |
|---|---|---|---|
uri |
string |
URI de l’image. iOS accepte les chemins locaux absolus lisibles et les URL file://. Android accepte les chemins absolus, les URL file:// et les URI content://. |
2.1.0 |
base64 |
Les entrées base64 et URI s’excluent mutuellement. | 2.1.0 |
interface Base64ImageInput
Image d’entrée encodée en base64.
| Propriété | Type | Description | Depuis |
|---|---|---|---|
base64 |
string |
Octets d’image en Base64 brut ou URL data:image/...;base64,.... L’image décodée ne doit pas dépasser 32 MiB. |
2.1.0 |
uri |
Les entrées base64 et URI s’excluent mutuellement. | 2.1.0 |
interface GenerationOptions
Paramètres multiplateformes de génération de texte. Les valeurs non prises en charge sont rejetées, et non ramenées dans les limites autorisées. Sur Chrome Web, ces paramètres doivent être omis.
| Propriété | Type | Description | Depuis |
|---|---|---|---|
temperature |
number |
Température d’échantillonnage. | 2.0.0 |
topK |
number |
Échantillonne parmi les k tokens les plus probables. | 2.0.0 |
maxOutputTokens |
number |
Nombre maximal de tokens générés. | 2.0.0 |
interface CancelGenerationOptions
Options d’annulation d’une génération en cours.
| Propriété | Type | Description | Depuis |
|---|---|---|---|
chatId |
string |
Chat auquel appartient la génération. | 2.0.0 |
generationId |
string |
Identifiant facultatif de génération ; une discordance est traitée comme un résultat introuvable. | 2.0.0 |
interface PluginListenerHandle
| Propriété | Type |
|---|---|
remove |
() => Promise<void> |
interface SystemAvailabilityResponse
| Propriété | Type | Description | Depuis |
|---|---|---|---|
status |
LLMAvailability |
Valeur de disponibilité de l’ancienne API. Les états détaillés sont ramenés au contrat d’origine à quatre valeurs. | 1.0.0 |
interface DownloadProgressEvent
Progression du téléchargement du modèle. Les événements intermédiaires Android omettent progress, car ML Kit ne fournit pas le nombre total d’octets.
| Propriété | Type | Description | Depuis |
|---|---|---|---|
progress |
number |
Progression normalisée connue : 0 au début et 1 à la fin. | 2.0.0 |
downloadedBytes |
number |
Nombre d’octets téléchargés jusqu’à présent, lorsqu’il est fourni par ML Kit. | 2.0.0 |
totalBytes |
number |
Nombre total d’octets, lorsqu’un SDK de plateforme le fournit. Actuellement omis sur Android. | 2.0.0 |
interface TextChunkEvent
Texte incrémental émis par streamText().
| Propriété | Type | Description | Depuis |
|---|---|---|---|
chatId |
string |
Chat auquel appartient la génération. | 2.0.0 |
generationId |
string |
Identifiant de cette génération. | 2.0.0 |
text |
string |
Texte nouvellement généré uniquement, sans l’instantané cumulé. | 2.0.0 |
interface GenerationStateChangeEvent
Événement de cycle de vie émis pour generateText() et streamText().
| Propriété | Type | Description | Depuis |
|---|---|---|---|
chatId |
string |
Chat auquel appartient la génération. | 2.1.0 |
generationId |
string |
Identifiant natif de génération, disponible dans l’événement started. |
2.1.0 |
state |
GenerationState |
État actuel du cycle de vie. | 2.1.0 |
errorCode |
LocalLLMErrorCode |
Code d’erreur stable pour les états cancelled et failed. |
2.1.0 |
interface GenerateImageResponse
Résultat de la génération d’images.
| Propriété | Type | Description | Depuis |
|---|---|---|---|
pngBase64Images |
string[] |
Images PNG en base64 brut, sans préfixe d’URI de données. | 1.0.0 |
interface GenerateImageOptions
Options de génération d’images. La génération d’images est disponible uniquement à partir d’iOS 18.4.
| Propriété | Type | Description | Depuis |
|---|---|---|---|
prompt |
string |
Description de l’image. | 1.0.0 |
promptImages |
string[] |
Images de référence facultatives en base64. | 1.0.0 |
count |
number |
Nombre de variantes. Valeur par défaut : 1. | 1.0.0 |
interface PromptResponse
Réponse au prompt de l’ancienne API.
| Propriété | Type | Description | Depuis |
|---|---|---|---|
text |
string |
Texte généré complet. | 1.0.0 |
interface PromptOptions
Options de prompt de l’ancienne API.
| Propriété | Type | Description | Depuis |
|---|---|---|---|
sessionId |
string |
Identifiant facultatif de session de l’ancienne API. | 1.0.0 |
instructions |
string |
Instructions utilisées à la création initiale de la session de l’ancienne API. | 1.0.0 |
options |
LLMOptions |
Paramètres de génération de l’ancienne API. | 1.0.0 |
prompt |
string |
Prompt de l’utilisateur. | 1.0.0 |
interface LLMOptions
| Propriété | Type | Description | Depuis |
|---|---|---|---|
temperature |
number |
Température d’échantillonnage. | 1.0.0 |
maximumOutputTokens |
number |
Nombre maximal de tokens générés. | 1.0.0 |
interface EndSessionOptions
Options de suppression d’une session de l’ancienne API.
| Propriété | Type | Description | Depuis |
|---|---|---|---|
sessionId |
string |
Identifiant de session de l’ancienne API. | 1.0.0 |
Alias de types
type alias Availability
Disponibilité sémantique du modèle textuel sur l’appareil.
'available' | 'device-not-eligible' | 'not-enabled' | 'downloadable' | 'downloading' | 'not-ready' | 'unavailable'
type alias ImageAnalysisBackend
Backend natif sélectionné pour l’analyse d’images sur l’appareil.
'foundation-models' | 'ml-kit-prompt' | 'litert-lm'
type alias ImageInput
Référence d’image pour la génération de texte avec capacités de vision.
type alias StreamTextOptions
Options de génération native en streaming.
type alias StreamTextResult
Résultat final d’une génération native en streaming.
type alias AvailabilityChangeListener
Écouteur des changements de disponibilité.
(event: GetAvailabilityResult): void
type alias SystemAvailabilityChangeListener
(event: SystemAvailabilityResponse): void
type alias LLMAvailability
'available' | 'unavailable' | 'notready' | 'downloadable'
type alias DownloadProgressListener
Écouteur de la progression du téléchargement du modèle.
(event: DownloadProgressEvent): void
type alias TextChunkListener
Écouteur des fragments de génération native.
(event: TextChunkEvent): void
type alias GenerationStateChangeListener
Écouteur des changements de cycle de vie de la génération native.
(event: GenerationStateChangeEvent): void
type alias GenerationState
État du cycle de vie de la génération native.
'started' | 'completed' | 'cancelled' | 'failed'
type alias LocalLLMErrorCode
Codes d’erreur stables de Local LLM.
'LOCAL_LLM_NOT_AVAILABLE' | 'LOCAL_LLM_DEVICE_NOT_ELIGIBLE' | 'LOCAL_LLM_NOT_ENABLED' | 'LOCAL_LLM_MODEL_NOT_READY' | 'LOCAL_LLM_MODEL_DOWNLOAD_REQUIRED' | 'LOCAL_LLM_CONTEXT_WINDOW_EXCEEDED' | 'LOCAL_LLM_CHAT_NOT_FOUND' | 'LOCAL_LLM_CHAT_BUSY' | 'LOCAL_LLM_GENERATION_NOT_FOUND' | 'LOCAL_LLM_GENERATION_CANCELLED' | 'LOCAL_LLM_INVALID_OPTIONS' | 'LOCAL_LLM_UNSUPPORTED' | 'LOCAL_LLM_IMAGE_NOT_READABLE' | 'LOCAL_LLM_IMAGE_TOO_LARGE' | 'LOCAL_LLM_GENERATION_FAILED' | 'LOCAL_LLM_IMAGE_GENERATION_FAILED' | 'LOCAL_LLM_UNKNOWN_ERROR'