{
  "aboutHtml": "<p>all-MiniLM-L12-v2 est un encodeur de phrases et de courts paragraphes de Sentence Transformers. Il produit un vecteur dense de 384 dimensions par texte pour la recherche sémantique, la recherche d’information, le regroupement et la similarité entre phrases. Le modèle utilise l’architecture MiniLM-L12-H384-uncased et a été ajusté par apprentissage contrastif sur une collection d’un milliard de paires de phrases.</p><h4>Encoder l’unité à retrouver</h4><p>Utilisez une phrase ou un court paragraphe exprimant une idée utile. Pour une collection de descriptions produit, gardez la fonctionnalité et la condition qui distinguent l’article : « The adapter connects a wired headset to a USB-C port » est plus informatif que « Audio accessory ». Stockez l’identifiant de l’enregistrement et la description d’origine avec son vecteur.</p><p>Une requête de recherche peut ensuite être comparée aux descriptions encodées. Examinez les candidats renvoyés pour vérifier les exigences exactes, telles que le type de connecteur ou la compatibilité avec l’appareil, avant de présenter un choix définitif. Le vecteur représente le sens du texte ; l’application de recherche environnante retrouve les enregistrements correspondants.</p><h4>Agrégation par moyenne et vecteurs normalisés</h4><p>L’exemple d’encodage publié calcule la moyenne des représentations des tokens avec le masque d’attention, afin que les positions de remplissage ne contribuent pas à la moyenne. Il applique ensuite une normalisation L2. Ces étapes font partie de la recette de référence pour obtenir le vecteur de phrase ; elles ne constituent pas une instruction de prendre un token arbitraire du transformer sous-jacent.</p><p>Gardez une configuration cohérente de modèle, d’agrégation et de normalisation entre les textes indexés et les nouvelles requêtes. Les représentations obtenues de 384 composantes peuvent être comparées par similarité cosinus. Conservez une trace de cette configuration avec la collection ; un autre encodeur de 384 dimensions ne devient pas compatible du seul fait que ses vecteurs ont la même longueur.</p><h4>Longueur d’entrée par défaut et périmètre d’entraînement</h4><p>Le fabricant spécifie une troncature par défaut au-delà de 256 sous-unités de mots. Il s’agit d’une limite du tokenizer, plutôt que d’un nombre de mots ordinaires ou de caractères. Pour un enregistrement plus long, choisissez des sections courtes et cohérentes et préservez le titre ou le détail d’identification nécessaire à l’interprétation de chacune.</p><p>La procédure d’entraînement du modèle utilisait des séquences pouvant atteindre 128 tokens. Ce réglage d’entraînement est distinct du réglage par défaut publié de 256 sous-unités de mots au moment de l’encodage. Un passage qui tient dans la limite par défaut peut néanmoins différer sensiblement des phrases courtes utilisées à l’entraînement ; évaluez donc les descriptions longues ou spécialisées à partir d’exemples représentatifs.</p><h4>Processus de similarité et de regroupement</h4><p>Pour un ensemble de messages d’assistance, les plongements peuvent fournir des entrées numériques à une étape de regroupement. Vérifiez plusieurs messages de chaque groupe proposé, ainsi que ceux proches de sa frontière, avant d’attribuer un libellé lisible par une personne. Pour la vérification de contenus en double, retrouvez des enregistrements similaires et comparez leur formulation réelle ; deux passages peuvent traiter du même sujet tout en donnant des instructions différentes.</p><p>Cette édition exacte L12-v2 est un profil anglophone de plongement de phrases. Elle est distincte d’all-MiniLM-L6-v2 et des versions paraphrase-MiniLM. Des noms de famille partagés ne transfèrent pas leur configuration de séquence ni leur recette d’agrégation. Utilisez ses vecteurs denses compacts avec les enregistrements sources et une évaluation propre à la tâche, plutôt que de traiter une valeur de similarité comme une réponse vérifiée ou une décision éditoriale définitive.</p>",
  "aboutText": "all-MiniLM-L12-v2 est un encodeur de phrases et de courts paragraphes de Sentence Transformers. Il produit un vecteur dense de 384 dimensions par texte pour la recherche sémantique, la recherche d’information, le regroupement et la similarité entre phrases. Le modèle utilise l’architecture MiniLM-L12-H384-uncased et a été ajusté par apprentissage contrastif sur une collection d’un milliard de paires de phrases.\n\n### Encoder l’unité à retrouver\n\nUtilisez une phrase ou un court paragraphe exprimant une idée utile. Pour une collection de descriptions produit, gardez la fonctionnalité et la condition qui distinguent l’article : « The adapter connects a wired headset to a USB-C port » est plus informatif que « Audio accessory ». Stockez l’identifiant de l’enregistrement et la description d’origine avec son vecteur.\n\nUne requête de recherche peut ensuite être comparée aux descriptions encodées. Examinez les candidats renvoyés pour vérifier les exigences exactes, telles que le type de connecteur ou la compatibilité avec l’appareil, avant de présenter un choix définitif. Le vecteur représente le sens du texte ; l’application de recherche environnante retrouve les enregistrements correspondants.\n\n### Agrégation par moyenne et vecteurs normalisés\n\nL’exemple d’encodage publié calcule la moyenne des représentations des tokens avec le masque d’attention, afin que les positions de remplissage ne contribuent pas à la moyenne. Il applique ensuite une normalisation L2. Ces étapes font partie de la recette de référence pour obtenir le vecteur de phrase ; elles ne constituent pas une instruction de prendre un token arbitraire du transformer sous-jacent.\n\nGardez une configuration cohérente de modèle, d’agrégation et de normalisation entre les textes indexés et les nouvelles requêtes. Les représentations obtenues de 384 composantes peuvent être comparées par similarité cosinus. Conservez une trace de cette configuration avec la collection ; un autre encodeur de 384 dimensions ne devient pas compatible du seul fait que ses vecteurs ont la même longueur.\n\n### Longueur d’entrée par défaut et périmètre d’entraînement\n\nLe fabricant spécifie une troncature par défaut au-delà de 256 sous-unités de mots. Il s’agit d’une limite du tokenizer, plutôt que d’un nombre de mots ordinaires ou de caractères. Pour un enregistrement plus long, choisissez des sections courtes et cohérentes et préservez le titre ou le détail d’identification nécessaire à l’interprétation de chacune.\n\nLa procédure d’entraînement du modèle utilisait des séquences pouvant atteindre 128 tokens. Ce réglage d’entraînement est distinct du réglage par défaut publié de 256 sous-unités de mots au moment de l’encodage. Un passage qui tient dans la limite par défaut peut néanmoins différer sensiblement des phrases courtes utilisées à l’entraînement ; évaluez donc les descriptions longues ou spécialisées à partir d’exemples représentatifs.\n\n### Processus de similarité et de regroupement\n\nPour un ensemble de messages d’assistance, les plongements peuvent fournir des entrées numériques à une étape de regroupement. Vérifiez plusieurs messages de chaque groupe proposé, ainsi que ceux proches de sa frontière, avant d’attribuer un libellé lisible par une personne. Pour la vérification de contenus en double, retrouvez des enregistrements similaires et comparez leur formulation réelle ; deux passages peuvent traiter du même sujet tout en donnant des instructions différentes.\n\nCette édition exacte L12-v2 est un profil anglophone de plongement de phrases. Elle est distincte d’all-MiniLM-L6-v2 et des versions paraphrase-MiniLM. Des noms de famille partagés ne transfèrent pas leur configuration de séquence ni leur recette d’agrégation. Utilisez ses vecteurs denses compacts avec les enregistrements sources et une évaluation propre à la tâche, plutôt que de traiter une valeur de similarité comme une réponse vérifiée ou une décision éditoriale définitive.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "3311192a70f7664ebb8994dcd3968d47edd431ed492c86e36280b3182b9a6b35",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "fr-be",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Sentence Transformers: all-MiniLM-L12-v2</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Fermer\">×</button></div><div class=\"idline\"><span>Sentence Transformers /</span><code>sentence-transformers/all-minilm-l12-v2</code><button type=\"button\" id=\"copy-id\">Copier l’ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Rubriques de la fiche modèle\"><button type=\"button\" data-card-jump=\"overview\">Premiers pas</button><button type=\"button\" data-card-jump=\"methods\">Entrées et méthodes</button><button type=\"button\" data-card-jump=\"pricing\">Tarifs</button><button type=\"button\" data-card-jump=\"examples\">Exemples</button><button type=\"button\" data-card-jump=\"results\">Résultats</button><button type=\"button\" data-card-jump=\"aliases\">Alias</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Méthodes API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Ultra|embeddings|/v1/embeddings|sentence-transformers%2Fall-minilm-l12-v2\">Embeddings</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-0\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">Premiers pas</h3><p class=\"mdesc-full\">Sentence Transformers all-MiniLM-L12-v2 encode des phrases et de courts paragraphes en vecteurs de 384 dimensions pour la recherche, la similarité et le regroupement. Sa recette de référence utilise une agrégation par moyenne et une normalisation, avec une troncature par défaut à 256 sous-unités de mots.</p><dl class=\"card-io\" data-card-io><div><dt>Entrées acceptées</dt><dd>Texte · token_ids</dd></div><div><dt>Résultats</dt><dd>embedding</dd></div></dl><details class=\"card-about\"><summary>À propos du modèle</summary><p class=\"note-s\" data-model-method-boundary>Cette description présente les capacités du modèle. Les entrées, sorties et options disponibles dans Ailoot pour la méthode sélectionnée figurent ci-dessous.</p><div class=\"mabout\" id=\"m-about\"><p>all-MiniLM-L12-v2 est un encodeur de phrases et de courts paragraphes de Sentence Transformers. Il produit un vecteur dense de 384 dimensions par texte pour la recherche sémantique, la recherche d’information, le regroupement et la similarité entre phrases. Le modèle utilise l’architecture MiniLM-L12-H384-uncased et a été ajusté par apprentissage contrastif sur une collection d’un milliard de paires de phrases.</p><h4>Encoder l’unité à retrouver</h4><p>Utilisez une phrase ou un court paragraphe exprimant une idée utile. Pour une collection de descriptions produit, gardez la fonctionnalité et la condition qui distinguent l’article : « The adapter connects a wired headset to a USB-C port » est plus informatif que « Audio accessory ». Stockez l’identifiant de l’enregistrement et la description d’origine avec son vecteur.</p><p>Une requête de recherche peut ensuite être comparée aux descriptions encodées. Examinez les candidats renvoyés pour vérifier les exigences exactes, telles que le type de connecteur ou la compatibilité avec l’appareil, avant de présenter un choix définitif. Le vecteur représente le sens du texte ; l’application de recherche environnante retrouve les enregistrements correspondants.</p><h4>Agrégation par moyenne et vecteurs normalisés</h4><p>L’exemple d’encodage publié calcule la moyenne des représentations des tokens avec le masque d’attention, afin que les positions de remplissage ne contribuent pas à la moyenne. Il applique ensuite une normalisation L2. Ces étapes font partie de la recette de référence pour obtenir le vecteur de phrase ; elles ne constituent pas une instruction de prendre un token arbitraire du transformer sous-jacent.</p><p>Gardez une configuration cohérente de modèle, d’agrégation et de normalisation entre les textes indexés et les nouvelles requêtes. Les représentations obtenues de 384 composantes peuvent être comparées par similarité cosinus. Conservez une trace de cette configuration avec la collection ; un autre encodeur de 384 dimensions ne devient pas compatible du seul fait que ses vecteurs ont la même longueur.</p><h4>Longueur d’entrée par défaut et périmètre d’entraînement</h4><p>Le fabricant spécifie une troncature par défaut au-delà de 256 sous-unités de mots. Il s’agit d’une limite du tokenizer, plutôt que d’un nombre de mots ordinaires ou de caractères. Pour un enregistrement plus long, choisissez des sections courtes et cohérentes et préservez le titre ou le détail d’identification nécessaire à l’interprétation de chacune.</p><p>La procédure d’entraînement du modèle utilisait des séquences pouvant atteindre 128 tokens. Ce réglage d’entraînement est distinct du réglage par défaut publié de 256 sous-unités de mots au moment de l’encodage. Un passage qui tient dans la limite par défaut peut néanmoins différer sensiblement des phrases courtes utilisées à l’entraînement ; évaluez donc les descriptions longues ou spécialisées à partir d’exemples représentatifs.</p><h4>Processus de similarité et de regroupement</h4><p>Pour un ensemble de messages d’assistance, les plongements peuvent fournir des entrées numériques à une étape de regroupement. Vérifiez plusieurs messages de chaque groupe proposé, ainsi que ceux proches de sa frontière, avant d’attribuer un libellé lisible par une personne. Pour la vérification de contenus en double, retrouvez des enregistrements similaires et comparez leur formulation réelle ; deux passages peuvent traiter du même sujet tout en donnant des instructions différentes.</p><p>Cette édition exacte L12-v2 est un profil anglophone de plongement de phrases. Elle est distincte d’all-MiniLM-L6-v2 et des versions paraphrase-MiniLM. Des noms de famille partagés ne transfèrent pas leur configuration de séquence ni leur recette d’agrégation. Utilisez ses vecteurs denses compacts avec les enregistrements sources et une évaluation propre à la tâche, plutôt que de traiter une valeur de similarité comme une réponse vérifiée ou une décision éditoriale définitive.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Disponible dans Ailoot · entrées et méthodes</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Embeddings</b> <code>POST /v1/embeddings</code></summary><dl class=\"method-capabilities\"><div><dt>Entrée</dt><dd><code>text</code>, <code>token_ids</code></dd></div><div><dt>Sortie</dt><dd><code>embedding</code></dd></div><div><dt>Format de sortie</dt><dd>json</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Champ</th><th>Type</th><th>Exigence</th><th>Valeurs et limites</th><th>Par défaut</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Exigence\"><span class=\"card-cell-label\">Exigence</span>Obligatoire</td><td data-cell-label=\"Valeurs et limites\"><span class=\"card-cell-label\">Valeurs et limites</span><div>sentence-transformers/all-minilm-l12-v2</div></td><td data-cell-label=\"Par défaut\" data-default=\"unspecified\"><span class=\"card-cell-label\">Par défaut</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">input</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string|string[]|integer[]|integer[][]</code></td><td data-cell-label=\"Exigence\"><span class=\"card-cell-label\">Exigence</span>Obligatoire</td><td data-cell-label=\"Valeurs et limites\"><span class=\"card-cell-label\">Valeurs et limites</span><div>Nombre minimal d’éléments: 1</div><div>Conditions: Lot homogène non vide. Les identifiants de jetons sont des entiers positifs ou nuls.</div><div>Budget d’entrée : Maximum: 512 · Unité de texte: octets UTF8 · Unité de tokens: éléments du tableau de tokens</div></td><td data-cell-label=\"Par défaut\" data-default=\"unspecified\"><span class=\"card-cell-label\">Par défaut</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">encoding_format</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>string</code></td><td data-cell-label=\"Exigence\"><span class=\"card-cell-label\">Exigence</span>Facultatif</td><td data-cell-label=\"Valeurs et limites\"><span class=\"card-cell-label\">Valeurs et limites</span><div>float</div></td><td data-cell-label=\"Par défaut\" data-default=\"known\"><span class=\"card-cell-label\">Par défaut</span>float</td></tr><tr data-parameter-availability=\"unsupported\"><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">dimensions</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>integer</code></td><td data-cell-label=\"Exigence\"><span class=\"card-cell-label\">Exigence</span>Non pris en charge</td><td data-cell-label=\"Valeurs et limites\"><span class=\"card-cell-label\">Valeurs et limites</span><div>Minimum: 1</div></td><td data-cell-label=\"Par défaut\" data-default=\"unspecified\"><span class=\"card-cell-label\">Par défaut</span>—</td></tr><tr data-parameter-availability=\"pass_through_metadata\"><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">user</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>json_value</code></td><td data-cell-label=\"Exigence\"><span class=\"card-cell-label\">Exigence</span>Facultatif</td><td data-cell-label=\"Valeurs et limites\"><span class=\"card-cell-label\">Valeurs et limites</span><div>Conditions: Le code source autorise ce champ de métadonnées JSON ; sa sémantique exacte en amont dépend du modèle.</div></td><td data-cell-label=\"Par défaut\" data-default=\"unspecified\"><span class=\"card-cell-label\">Par défaut</span>—</td></tr><tr data-parameter-availability=\"pass_through_metadata\"><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">session_id</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>json_value</code></td><td data-cell-label=\"Exigence\"><span class=\"card-cell-label\">Exigence</span>Facultatif</td><td data-cell-label=\"Valeurs et limites\"><span class=\"card-cell-label\">Valeurs et limites</span><div>Conditions: Le code source autorise ce champ de métadonnées JSON ; sa sémantique exacte en amont dépend du modèle.</div></td><td data-cell-label=\"Par défaut\" data-default=\"unspecified\"><span class=\"card-cell-label\">Par défaut</span>—</td></tr><tr data-parameter-availability=\"pass_through_metadata\"><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">trace</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>json_value</code></td><td data-cell-label=\"Exigence\"><span class=\"card-cell-label\">Exigence</span>Facultatif</td><td data-cell-label=\"Valeurs et limites\"><span class=\"card-cell-label\">Valeurs et limites</span><div>Conditions: Le code source autorise ce champ de métadonnées JSON ; sa sémantique exacte en amont dépend du modèle.</div></td><td data-cell-label=\"Par défaut\" data-default=\"unspecified\"><span class=\"card-cell-label\">Par défaut</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">provider</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span><code>object</code></td><td data-cell-label=\"Exigence\"><span class=\"card-cell-label\">Exigence</span>Facultatif</td><td data-cell-label=\"Valeurs et limites\"><span class=\"card-cell-label\">Valeurs et limites</span><div>Conditions: provider.options est refusé</div></td><td data-cell-label=\"Par défaut\" data-default=\"unspecified\"><span class=\"card-cell-label\">Par défaut</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Combinaisons d’éléments d’entrée</summary><p class=\"note-s\"><b>text_to_embedding</b></p></details><details class=\"note-s\" data-method-contract><summary>Paramètres et cycle de vie de la méthode</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Paramètre</th><th>Contrat</th></tr></thead><tbody><tr><th data-cell-label=\"Paramètre\" scope=\"row\"><span class=\"card-cell-label\">Paramètre</span><code>content_type</code></th><td data-cell-label=\"Contrat\"><span class=\"card-cell-label\">Contrat</span>application/json</td></tr><tr><th data-cell-label=\"Paramètre\" scope=\"row\"><span class=\"card-cell-label\">Paramètre</span><code>required</code></th><td data-cell-label=\"Contrat\"><span class=\"card-cell-label\">Contrat</span>model, input</td></tr><tr><th data-cell-label=\"Paramètre\" scope=\"row\"><span class=\"card-cell-label\">Paramètre</span><code>input_shapes</code></th><td data-cell-label=\"Contrat\"><span class=\"card-cell-label\">Contrat</span>string, string[], nonnegative_integer_token_array, nonnegative_integer_token_array[]</td></tr><tr><th data-cell-label=\"Paramètre\" scope=\"row\"><span class=\"card-cell-label\">Paramètre</span><code>encoding_format</code></th><td data-cell-label=\"Contrat\"><span class=\"card-cell-label\">Contrat</span>float</td></tr><tr><th data-cell-label=\"Paramètre\" scope=\"row\"><span class=\"card-cell-label\">Paramètre</span><code>dimensions_override</code></th><td data-cell-label=\"Contrat\"><span class=\"card-cell-label\">Contrat</span>false</td></tr><tr><th data-cell-label=\"Paramètre\" scope=\"row\"><span class=\"card-cell-label\">Paramètre</span><code>max_input_budget_units</code></th><td data-cell-label=\"Contrat\"><span class=\"card-cell-label\">Contrat</span>512</td></tr><tr><th data-cell-label=\"Paramètre\" scope=\"row\"><span class=\"card-cell-label\">Paramètre</span><code>multimodal_objects</code></th><td data-cell-label=\"Contrat\"><span class=\"card-cell-label\">Contrat</span>false</td></tr><tr><th data-cell-label=\"Paramètre\" scope=\"row\"><span class=\"card-cell-label\">Paramètre</span><code>material_types</code></th><td data-cell-label=\"Contrat\"><span class=\"card-cell-label\">Contrat</span>text, token_ids</td></tr></tbody></table></div><p>Cycle de vie : <code>synchronous_json</code></p><p class=\"note-s\">Conservez tous les indices et toutes les dimensions des vecteurs.</p><p class=\"note-s\">Un nom de modèle multimodal n’autorise pas les objets image sur ce chemin précis.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Tarifs</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Les tarifs n’ajoutent pas d’options de requête. Les paramètres pris en charge figurent dans la méthode sélectionnée.</p><dl data-price-conditions><dt>Mode rapide</dt><dd>Non précisé <span class=\"note-s\">Lorsque le mode rapide est sélectionné</span></dd><dt>Mode Flex</dt><dd>Non précisé <span class=\"note-s\">Lorsque le mode flex est sélectionné</span></dd><dt>Effort de raisonnement maximal</dt><dd>Non précisé <span class=\"note-s\">Lorsque l’effort de raisonnement maximal utilise l’ajustement par défaut (default)</span></dd></dl></div><div data-declared-tariff-pricing><h4>Tarifs Ailoot</h4><h4>Prix par configuration</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Configuration</th><th>Barème tarifaire</th><th>Coût</th></tr></thead><tbody><tr><th data-cell-label=\"Configuration\" scope=\"row\"><span class=\"card-cell-label\">Configuration</span>Tarifs de base des tokens</th><td data-cell-label=\"Barème tarifaire\"><span class=\"card-cell-label\">Barème tarifaire</span>Tarif de base</td><td data-cell-label=\"Coût\"><span class=\"card-cell-label\">Coût</span><div><span>Entrée · Tokens en entrée</span> <b>$0.00001</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Sortie · Tokens en sortie</span> <b>$0</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Entrée · Lecture du cache</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Entrée · Écriture dans le cache</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div><div><span>Entrée · Écriture dans le cache, 1 h</span> <b>—</b> <span class=\"price-unit\">/ 1K tokens</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot réserve un montant estimé avant une requête. Après le résultat, le montant final est débité selon l’utilisation mesurée. Pour le streaming, le montant final à débiter est calculé à partir du relevé final d’utilisation. <a href=\"/docs/fr-be/billing/reserve/\">Fonctionnement de la réservation et du débit →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Exemples de requêtes</h3><h4>Ailoot Ultra · Embeddings</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Variantes du code\"><button class=\"cg-tab\" id=\"model-code-2596-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2596-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl</button><button class=\"cg-tab\" id=\"model-code-2596-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2596-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Python SDK</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Copier le code\"><svg class=\"cp\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><rect x=\"5.25\" y=\"5.25\" width=\"8.5\" height=\"8.5\" rx=\"1.75\"/><path d=\"M10.75 5.25V3.5a1.25 1.25 0 0 0-1.25-1.25H3.5A1.25 1.25 0 0 0 2.25 3.5v6a1.25 1.25 0 0 0 1.25 1.25h1.75\"/></svg><svg class=\"ok\" viewBox=\"0 0 16 16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"><path d=\"m3 8.5 3.25 3.25L13 5\"/></svg></button></div></div><div class=\"cg-body\"><div class=\"cg-pane\" id=\"model-code-2596-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2596-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;sentence-transformers/all-minilm-l12-v2&quot;, &quot;input&quot;: [&quot;First document&quot;, &quot;Second document&quot;]}&#39;)\n\nPath(&quot;request.json&quot;).write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/embeddings \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nr=json.loads(Path(&quot;result.json&quot;).read_text())\nfor x in r.get(&quot;data&quot;,[]): print(json.dumps({&quot;index&quot;:x.get(&quot;index&quot;),&quot;embedding&quot;:x.get(&quot;embedding&quot;)}))\nPY_RESULT\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-2596-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-2596-tab-1\" hidden><pre data-lang=\"python\"><code>from openai import OpenAI\nimport os\n\nclient=OpenAI(base_url=&quot;https://api.ailoot.ai/v1&quot;,api_key=os.environ[&quot;AILOOT_API_KEY&quot;],max_retries=0)\nresult=client.embeddings.create(model=&#39;sentence-transformers/all-minilm-l12-v2&#39;,input=[&quot;First document&quot;,&quot;Second document&quot;])\nprint(result)\nfor item in result.data:print(item.index,item.embedding)\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Recevoir et enregistrer les résultats</h3><h4>Ailoot Ultra · Embeddings</h4><p class=\"note-s\">json</p><div class=\"card-result-process\" data-all-results><h5>Conserver tous les résultats terminés</h5><p class=\"note-s\">Conservez chaque réponse, fichier et partie de contenu renvoyés dans leur intégralité.</p><p class=\"note-s\">Conservez chaque vecteur avec son indice. Le nombre de vecteurs doit être égal au nombre d’entrées ; les dimensions doivent être cohérentes.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Si la réponse d’origine doit être vérifiée</h5><p class=\"note-s\">Aucun point de terminaison dédié aux tâches d’embedding n’est ajouté.</p></div><details class=\"card-about\" data-output-fields><summary>Champs de la réponse</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Champ</th><th>Type</th></tr></thead><tbody><tr><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">object</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>string</td></tr><tr><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>string</td></tr><tr><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">data[].index</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>integer</td></tr><tr><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">data[].embedding</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>finite float[]</td></tr><tr><th data-cell-label=\"Champ\" scope=\"row\"><span class=\"card-cell-label\">Champ</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"Type\" data-field-type><span class=\"card-cell-label\">Type</span>object</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Erreurs et étapes suivantes</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Réponse</th><th>Condition</th><th>Étape suivante</th></tr></thead><tbody><tr><th data-cell-label=\"Réponse\" scope=\"row\"><span class=\"card-cell-label\">Réponse</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Condition\"><span class=\"card-cell-label\">Condition</span>Champs obligatoires, représentation des contenus ou valeur de paramètre non valides</td><td data-cell-label=\"Étape suivante\"><span class=\"card-cell-label\">Étape suivante</span>Corrigez les champs indiqués avant une nouvelle requête de création.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Alias</h3><h4>Alias du modèle</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=sentence-transformers%2Fall-minilm-l12-v2&amp;route=Ultra&amp;caller=sentence-transformers%2Fall-minilm-l12-v2&amp;fmt=embeddings\"><code>sentence-transformers/all-minilm-l12-v2</code></a></span></p><h4>Alias des chemins de méthode</h4><p class=\"note-s\">Utilisez les chemins de méthode indiqués ci-dessus.</p><h4>ID d’appel associés</h4><p class=\"note-s\"><a href=\"#m=sentence-transformers%2Fall-minilm-l12-v2&amp;route=Ultra&amp;caller=sentence-transformers%2Fall-minilm-l12-v2&amp;fmt=embeddings\"><code>sentence-transformers/all-minilm-l12-v2</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "sentence-transformers/all-minilm-l12-v2",
        "fmt": "embeddings",
        "http": "POST",
        "path": "/v1/embeddings",
        "request_model_id": "sentence-transformers/all-minilm-l12-v2",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|embeddings|/v1/embeddings|sentence-transformers%2Fall-minilm-l12-v2",
      "ordinal": 0,
      "rawMethod": {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep every vector with its index. Vector count must equal input count; dimensions must be consistent.",
            "errors": [
              {
                "code": null,
                "condition": "Champs obligatoires, représentation des contenus ou valeur de paramètre non valides",
                "http_status": 400,
                "recovery": "Corrigez les champs indiqués avant une nouvelle requête de création.",
                "type": "invalid_request_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "create": {
                "http": "POST",
                "path": "/v1/embeddings"
              },
              "job_read": null,
              "mode": "synchronous_json",
              "unknown": "Aucun point de terminaison dédié aux tâches d’embedding n’est ajouté."
            },
            "material_combinations": [
              {
                "alternatives": [
                  "string",
                  "string[]",
                  "nonnegative_integer_token_array",
                  "nonnegative_integer_token_array[]"
                ],
                "mode": "text_to_embedding"
              }
            ],
            "operation_modes": [
              "single_embedding",
              "batched_embeddings"
            ],
            "outputs": {
              "all_results": "Conservez chaque vecteur avec son indice. Le nombre de vecteurs doit être égal au nombre d’entrées ; les dimensions doivent être cohérentes.",
              "default_dimensions": null,
              "family": "embedding",
              "fields": [
                {
                  "description": null,
                  "name": "object",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "data[].index",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "data[].embedding",
                  "type": "finite float[]"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                }
              ],
              "format": "json"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "sentence-transformers/all-minilm-l12-v2"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "budget": {
                  "maximum": 512,
                  "text_unit": "octets UTF8",
                  "token_unit": "éléments du tableau de tokens"
                },
                "conditions": "Lot homogène non vide. Les identifiants de jetons sont des entiers positifs ou nuls.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_items": 1,
                "name": "input",
                "required": true,
                "type": "string|string[]|integer[]|integer[][]"
              },
              {
                "availability": "source_interface",
                "default": "float",
                "default_known": true,
                "enum": [
                  "float"
                ],
                "enum_known": true,
                "name": "encoding_format",
                "required": false,
                "type": "string"
              },
              {
                "availability": "unsupported",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minimum": 1,
                "name": "dimensions",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "pass_through_metadata",
                "conditions": "Le code source autorise ce champ de métadonnées JSON ; sa sémantique exacte en amont dépend du modèle.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "user",
                "required": false,
                "type": "json_value"
              },
              {
                "availability": "pass_through_metadata",
                "conditions": "Le code source autorise ce champ de métadonnées JSON ; sa sémantique exacte en amont dépend du modèle.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "session_id",
                "required": false,
                "type": "json_value"
              },
              {
                "availability": "pass_through_metadata",
                "conditions": "Le code source autorise ce champ de métadonnées JSON ; sa sémantique exacte en amont dépend du modèle.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "trace",
                "required": false,
                "type": "json_value"
              },
              {
                "availability": "source_interface",
                "conditions": "provider.options est refusé",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "mixed input kinds",
              "empty input",
              "image/audio/file objects",
              "encoding_format=base64",
              "dimensions override"
            ]
          },
          "hints": [
            "Conservez tous les indices et toutes les dimensions des vecteurs.",
            "Un nom de modèle multimodal n’autorise pas les objets image sur ce chemin précis."
          ],
          "input": {
            "content_type": "application/json",
            "dimensions_override": false,
            "encoding_format": [
              "float"
            ],
            "input_shapes": [
              "string",
              "string[]",
              "nonnegative_integer_token_array",
              "nonnegative_integer_token_array[]"
            ],
            "material_types": [
              "text",
              "token_ids"
            ],
            "max_input_budget_units": 512,
            "multimodal_objects": false,
            "required": [
              "model",
              "input"
            ]
          },
          "lifecycle": {
            "mode": "synchronous_json",
            "unknown": "no embedding job endpoint inferred"
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/embeddings"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_embedding"
          ],
          "output": {
            "default_dimensions": null,
            "family": "embedding",
            "format": "json",
            "http_success": 200,
            "vectors": "one dense float vector per input; indices/model/usage validated"
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Tarifs de base des tokens",
            "units": [
              {
                "amount": "0.00001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000001",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"sentence-transformers/all-minilm-l12-v2\", \"input\": [\"First document\", \"Second document\"]}')\n\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/embeddings \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path(\"result.json\").read_text())\nfor x in r.get(\"data\",[]): print(json.dumps({\"index\":x.get(\"index\"),\"embedding\":x.get(\"embedding\")}))\nPY_RESULT\n",
            "label": "curl · retained exact creation",
            "language": "bash"
          },
          {
            "code": "from openai import OpenAI\nimport os\n\nclient=OpenAI(base_url=\"https://api.ailoot.ai/v1\",api_key=os.environ[\"AILOOT_API_KEY\"],max_retries=0)\nresult=client.embeddings.create(model='sentence-transformers/all-minilm-l12-v2',input=[\"First document\",\"Second document\"])\nprint(result)\nfor item in result.data:print(item.index,item.embedding)\n",
            "label": "Python SDK · all vectors",
            "language": "python"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "embeddings",
        "hints": [
          "Keep every vector index and dimension.",
          "Multimodal model name does not admit image objects on this exact path."
        ],
        "http": "POST",
        "in": 0.01,
        "input": [
          "text",
          "token_ids"
        ],
        "label": "Эмбеддинги",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": 0,
        "output": [
          "embedding"
        ],
        "path": "/v1/embeddings",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "token",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": "0.00001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000001",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "request_model_id": "sentence-transformers/all-minilm-l12-v2",
        "route_label": "Ultra",
        "status_reads": [],
        "tiers": [],
        "units": [
          {
            "amount": "0.00001000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.00000001",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          }
        ]
      }
    }
  ],
  "model_id": "sentence-transformers/all-minilm-l12-v2",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "7a78332b6a097c3d6c35d7bbf1fe71d020120645ec4ee50e1e52df0499e40ebc",
    "input_html_sha256": "feb7ac4ef1a60c9aee8d3c1da3c3bcc2872267b10e77daa1f0ee79ccd1ba2aee",
    "private_audit_sha256": "a3d2287bdb5bbef2c31695971de815f33e46a87d095e7ad18e1845dc59f9a069",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/fr-be/sentence-transformers-all-minilm-l12-v2/",
    "description": "Sentence Transformers all-MiniLM-L12-v2 encode des phrases et de courts paragraphes en vecteurs de 384 dimensions pour la recherche, la similarité et le regroupement. Sa recette de référence utilise une agrégation par moyenne et une normalisation, avec une troncature par défaut à 256 sous-unités de mots.",
    "locale": "fr-be",
    "md_url": "https://ailoot.ai/models/fr-be/sentence-transformers-all-minilm-l12-v2/index.md",
    "title": "Sentence Transformers: all-MiniLM-L12-v2 — Ailoot",
    "url": "https://ailoot.ai/models/fr-be/sentence-transformers-all-minilm-l12-v2/"
  },
  "rawModel": {
    "about": "all-MiniLM-L12-v2 est un encodeur de phrases et de courts paragraphes de Sentence Transformers. Il produit un vecteur dense de 384 dimensions par texte pour la recherche sémantique, la recherche d’information, le regroupement et la similarité entre phrases. Le modèle utilise l’architecture MiniLM-L12-H384-uncased et a été ajusté par apprentissage contrastif sur une collection d’un milliard de paires de phrases.\n\n### Encoder l’unité à retrouver\n\nUtilisez une phrase ou un court paragraphe exprimant une idée utile. Pour une collection de descriptions produit, gardez la fonctionnalité et la condition qui distinguent l’article : « The adapter connects a wired headset to a USB-C port » est plus informatif que « Audio accessory ». Stockez l’identifiant de l’enregistrement et la description d’origine avec son vecteur.\n\nUne requête de recherche peut ensuite être comparée aux descriptions encodées. Examinez les candidats renvoyés pour vérifier les exigences exactes, telles que le type de connecteur ou la compatibilité avec l’appareil, avant de présenter un choix définitif. Le vecteur représente le sens du texte ; l’application de recherche environnante retrouve les enregistrements correspondants.\n\n### Agrégation par moyenne et vecteurs normalisés\n\nL’exemple d’encodage publié calcule la moyenne des représentations des tokens avec le masque d’attention, afin que les positions de remplissage ne contribuent pas à la moyenne. Il applique ensuite une normalisation L2. Ces étapes font partie de la recette de référence pour obtenir le vecteur de phrase ; elles ne constituent pas une instruction de prendre un token arbitraire du transformer sous-jacent.\n\nGardez une configuration cohérente de modèle, d’agrégation et de normalisation entre les textes indexés et les nouvelles requêtes. Les représentations obtenues de 384 composantes peuvent être comparées par similarité cosinus. Conservez une trace de cette configuration avec la collection ; un autre encodeur de 384 dimensions ne devient pas compatible du seul fait que ses vecteurs ont la même longueur.\n\n### Longueur d’entrée par défaut et périmètre d’entraînement\n\nLe fabricant spécifie une troncature par défaut au-delà de 256 sous-unités de mots. Il s’agit d’une limite du tokenizer, plutôt que d’un nombre de mots ordinaires ou de caractères. Pour un enregistrement plus long, choisissez des sections courtes et cohérentes et préservez le titre ou le détail d’identification nécessaire à l’interprétation de chacune.\n\nLa procédure d’entraînement du modèle utilisait des séquences pouvant atteindre 128 tokens. Ce réglage d’entraînement est distinct du réglage par défaut publié de 256 sous-unités de mots au moment de l’encodage. Un passage qui tient dans la limite par défaut peut néanmoins différer sensiblement des phrases courtes utilisées à l’entraînement ; évaluez donc les descriptions longues ou spécialisées à partir d’exemples représentatifs.\n\n### Processus de similarité et de regroupement\n\nPour un ensemble de messages d’assistance, les plongements peuvent fournir des entrées numériques à une étape de regroupement. Vérifiez plusieurs messages de chaque groupe proposé, ainsi que ceux proches de sa frontière, avant d’attribuer un libellé lisible par une personne. Pour la vérification de contenus en double, retrouvez des enregistrements similaires et comparez leur formulation réelle ; deux passages peuvent traiter du même sujet tout en donnant des instructions différentes.\n\nCette édition exacte L12-v2 est un profil anglophone de plongement de phrases. Elle est distincte d’all-MiniLM-L6-v2 et des versions paraphrase-MiniLM. Des noms de famille partagés ne transfèrent pas leur configuration de séquence ni leur recette d’agrégation. Utilisez ses vecteurs denses compacts avec les enregistrements sources et une évaluation propre à la tâche, plutôt que de traiter une valeur de similarité comme une réponse vérifiée ou une décision éditoriale définitive.",
    "alias_of": null,
    "aliases": [],
    "author": "Sentence Transformers",
    "available": null,
    "canonical_model": "sentence-transformers/all-minilm-l12-v2",
    "capabilities": {
      "context_length": 512,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "embeddings"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.00001000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.00000001",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          }
        ],
        "summary": "La tarification complète de la configuration figure dans les détails."
      }
    ],
    "ctx": null,
    "entity_type": "model",
    "formats": [
      "embeddings"
    ],
    "id": "sentence-transformers/all-minilm-l12-v2",
    "input": [
      "text",
      "token_ids"
    ],
    "kind": "embedding",
    "max_out": null,
    "methods": [
      {
        "available": null,
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Keep every vector with its index. Vector count must equal input count; dimensions must be consistent.",
            "errors": [
              {
                "code": null,
                "condition": "Champs obligatoires, représentation des contenus ou valeur de paramètre non valides",
                "http_status": 400,
                "recovery": "Corrigez les champs indiqués avant une nouvelle requête de création.",
                "type": "invalid_request_error"
              }
            ],
            "hints": [],
            "ignored_fields": [],
            "lifecycle": {
              "create": {
                "http": "POST",
                "path": "/v1/embeddings"
              },
              "job_read": null,
              "mode": "synchronous_json",
              "unknown": "Aucun point de terminaison dédié aux tâches d’embedding n’est ajouté."
            },
            "material_combinations": [
              {
                "alternatives": [
                  "string",
                  "string[]",
                  "nonnegative_integer_token_array",
                  "nonnegative_integer_token_array[]"
                ],
                "mode": "text_to_embedding"
              }
            ],
            "operation_modes": [
              "single_embedding",
              "batched_embeddings"
            ],
            "outputs": {
              "all_results": "Conservez chaque vecteur avec son indice. Le nombre de vecteurs doit être égal au nombre d’entrées ; les dimensions doivent être cohérentes.",
              "default_dimensions": null,
              "family": "embedding",
              "fields": [
                {
                  "description": null,
                  "name": "object",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "data[].index",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "data[].embedding",
                  "type": "finite float[]"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                }
              ],
              "format": "json"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "sentence-transformers/all-minilm-l12-v2"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "budget": {
                  "maximum": 512,
                  "text_unit": "octets UTF8",
                  "token_unit": "éléments du tableau de tokens"
                },
                "conditions": "Lot homogène non vide. Les identifiants de jetons sont des entiers positifs ou nuls.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_items": 1,
                "name": "input",
                "required": true,
                "type": "string|string[]|integer[]|integer[][]"
              },
              {
                "availability": "source_interface",
                "default": "float",
                "default_known": true,
                "enum": [
                  "float"
                ],
                "enum_known": true,
                "name": "encoding_format",
                "required": false,
                "type": "string"
              },
              {
                "availability": "unsupported",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minimum": 1,
                "name": "dimensions",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "pass_through_metadata",
                "conditions": "Le code source autorise ce champ de métadonnées JSON ; sa sémantique exacte en amont dépend du modèle.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "user",
                "required": false,
                "type": "json_value"
              },
              {
                "availability": "pass_through_metadata",
                "conditions": "Le code source autorise ce champ de métadonnées JSON ; sa sémantique exacte en amont dépend du modèle.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "session_id",
                "required": false,
                "type": "json_value"
              },
              {
                "availability": "pass_through_metadata",
                "conditions": "Le code source autorise ce champ de métadonnées JSON ; sa sémantique exacte en amont dépend du modèle.",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "trace",
                "required": false,
                "type": "json_value"
              },
              {
                "availability": "source_interface",
                "conditions": "provider.options est refusé",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "provider",
                "required": false,
                "type": "object"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": [
              "mixed input kinds",
              "empty input",
              "image/audio/file objects",
              "encoding_format=base64",
              "dimensions override"
            ]
          },
          "hints": [
            "Conservez tous les indices et toutes les dimensions des vecteurs.",
            "Un nom de modèle multimodal n’autorise pas les objets image sur ce chemin précis."
          ],
          "input": {
            "content_type": "application/json",
            "dimensions_override": false,
            "encoding_format": [
              "float"
            ],
            "input_shapes": [
              "string",
              "string[]",
              "nonnegative_integer_token_array",
              "nonnegative_integer_token_array[]"
            ],
            "material_types": [
              "text",
              "token_ids"
            ],
            "max_input_budget_units": 512,
            "multimodal_objects": false,
            "required": [
              "model",
              "input"
            ]
          },
          "lifecycle": {
            "mode": "synchronous_json",
            "unknown": "no embedding job endpoint inferred"
          },
          "manufacturer_capability": null,
          "method": {
            "http": "POST",
            "path": "/v1/embeddings"
          },
          "method_aliases": [],
          "operation_modes": [
            "text_to_embedding"
          ],
          "output": {
            "default_dimensions": null,
            "family": "embedding",
            "format": "json",
            "http_success": 200,
            "vectors": "one dense float vector per input; indices/model/usage validated"
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Tarifs de base des tokens",
            "units": [
              {
                "amount": "0.00001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000001",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"sentence-transformers/all-minilm-l12-v2\", \"input\": [\"First document\", \"Second document\"]}')\n\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/embeddings \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nr=json.loads(Path(\"result.json\").read_text())\nfor x in r.get(\"data\",[]): print(json.dumps({\"index\":x.get(\"index\"),\"embedding\":x.get(\"embedding\")}))\nPY_RESULT\n",
            "label": "curl · retained exact creation",
            "language": "bash"
          },
          {
            "code": "from openai import OpenAI\nimport os\n\nclient=OpenAI(base_url=\"https://api.ailoot.ai/v1\",api_key=os.environ[\"AILOOT_API_KEY\"],max_retries=0)\nresult=client.embeddings.create(model='sentence-transformers/all-minilm-l12-v2',input=[\"First document\",\"Second document\"])\nprint(result)\nfor item in result.data:print(item.index,item.embedding)\n",
            "label": "Python SDK · all vectors",
            "language": "python"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "embeddings",
        "hints": [
          "Keep every vector index and dimension.",
          "Multimodal model name does not admit image objects on this exact path."
        ],
        "http": "POST",
        "in": 0.01,
        "input": [
          "text",
          "token_ids"
        ],
        "label": "Эмбеддинги",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "method_aliases": [],
        "out": 0,
        "output": [
          "embedding"
        ],
        "path": "/v1/embeddings",
        "price_conditions": [
          {
            "label": "Fast mode",
            "value": "Not specified",
            "when": "When fast mode is selected"
          },
          {
            "label": "Flex mode",
            "value": "Not specified",
            "when": "When flex mode is selected"
          },
          {
            "label": "Maximum reasoning effort",
            "value": "Not specified",
            "when": "When maximum reasoning effort uses the default adjustment"
          }
        ],
        "pricing": {
          "billing_mode": "token",
          "image_input_price": null,
          "image_output_price": null,
          "per_request_price": null
        },
        "pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Base token rates",
            "units": [
              {
                "amount": "0.00001000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.00000001",
                "native_quantity": 1,
                "native_unit": "input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "input_token"
              },
              {
                "amount": "0",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "output_price",
                "label": "Output tokens",
                "native_amount_usd_per_unit": "0",
                "native_quantity": 1,
                "native_unit": "output_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "out",
                "unit": "output_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_read_price",
                "label": "Cache read",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "cached_input_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "cached_input_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_price",
                "label": "Cache write",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "generic_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "generic_cache_creation_token"
              },
              {
                "amount": null,
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "cache_write_1h_price",
                "label": "Cache write, 1 hour",
                "native_amount_usd_per_unit": null,
                "native_quantity": 1,
                "native_unit": "one_hour_cache_creation_token",
                "public_unit_label": "/ 1K tokens",
                "quantity": 1000,
                "quantity_is_estimate": false,
                "rate_role": "typed_native_retail_rate",
                "side": "in",
                "unit": "one_hour_cache_creation_token"
              }
            ]
          }
        ],
        "request_model_id": "sentence-transformers/all-minilm-l12-v2",
        "route_label": "Ultra",
        "status_reads": [],
        "tiers": [],
        "units": [
          {
            "amount": "0.00001000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.00000001",
            "native_quantity": 1,
            "native_unit": "input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "input_token"
          },
          {
            "amount": "0",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "output_price",
            "label": "Output tokens",
            "native_amount_usd_per_unit": "0",
            "native_quantity": 1,
            "native_unit": "output_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "out",
            "unit": "output_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_read_price",
            "label": "Cache read",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "cached_input_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "cached_input_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_price",
            "label": "Cache write",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "generic_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "generic_cache_creation_token"
          },
          {
            "amount": null,
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "cache_write_1h_price",
            "label": "Cache write, 1 hour",
            "native_amount_usd_per_unit": null,
            "native_quantity": 1,
            "native_unit": "one_hour_cache_creation_token",
            "public_unit_label": "/ 1K tokens",
            "quantity": 1000,
            "quantity_is_estimate": false,
            "rate_role": "typed_native_retail_rate",
            "side": "in",
            "unit": "one_hour_cache_creation_token"
          }
        ]
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "sentence-transformers/all-minilm-l12-v2",
        "request_model_id": "sentence-transformers/all-minilm-l12-v2",
        "route_label": "Ultra"
      }
    ],
    "name": "Sentence Transformers: all-MiniLM-L12-v2",
    "price": {
      "in": 0.01,
      "in_label": null,
      "out": 0,
      "out_label": null,
      "scope_label": "Token rates",
      "sort_in": 0.01,
      "sort_out": 0,
      "varies": false
    },
    "public_id": "sentence-transformers/all-minilm-l12-v2",
    "short": "Sentence Transformers all-MiniLM-L12-v2 encode des phrases et de courts paragraphes en vecteurs de 384 dimensions pour la recherche, la similarité et le regroupement. Sa recette de référence utilise une agrégation par moyenne et une normalisation, avec une troncature par défaut à 256 sous-unités de mots."
  },
  "renderer_schema": {
    "method_order": "Original DTO methods order; every exact route/format/path/caller survives.",
    "prices": "Original public DTO fields and original native display HTML; no flattened or normalized offers."
  },
  "representation": "exact-public-dto-and-native-renderer-html",
  "representationNotes": {
    "current_reference": {
      "about_json_pointer": "/aboutHtml",
      "methods": [
        {
          "contract_json_pointer": "/methods/0/rawMethod/contract",
          "html_json_pointer": "/methods/0/html",
          "method_ordinal": 0
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Sentence Transformers all-MiniLM-L12-v2 encode des phrases et de courts paragraphes en vecteurs de 384 dimensions pour la recherche, la similarité et le regroupement. Sa recette de référence utilise une agrégation par moyenne et une normalisation, avec une troncature par défaut à 256 sous-unités de mots.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "6cb37097818a77fc9d2eb8a6d7c17c5ea6230f42d8144230c84c2f2a32889838",
    "renderer_sha256": "9d578ff8df69ef70403308c9943a1179a11b94114c10b333bf1c012005d4a7f4"
  },
  "sourceRevision": "b00625254ae0b15a82e1be624653c9b609e91b0599f1d849d2742f63e0712a9a"
}
