{
  "aboutHtml": "<p>Voyage Code 3 on lähdekoodin hakuun erikoistunut vektorointimalli. Valmistaja kuvaa luonnollisesta kielestä koodiin, koodista koodiin ja dokumentaatiomerkkijonosta koodiin kohdistuvia tehtäviä: kysymys voi löytää toteutuksen, koodikatkelma siihen liittyvää logiikkaa ja funktion kuvaus olennaista koodia. Malli tuottaa vektoreita hakua varten muokatun tiedoston tai valmiin ohjelman sijaan.</p><p>Valmistele koodivaraston aineisto merkityksellisten koodiyksiköiden ympärille. Pidä funktio yhdessä sen nimen, signatuurin ja tarkoitusta selittävien kommenttien kanssa. Sisällytä suurempaan komponenttiin lähellä olevat määritelmät, joita toiminnan ymmärtäminen edellyttää. Tallenna koodivarasto, revisio, tiedostopolku ja rivisijainti erikseen, jotta hakutulos avaa täsmälleen vektoroidun lähteen.</p><p>Luonnollisen kielen haku voi kuvata toimintaa, kuten projektin sen osan löytämistä, joka tarkistaa ladatun tiedoston ennen tallentamista. Koodiin perustuva kysely voi sisältää funktion, jonka tarkoitukselle etsitään vastaavuutta muualta. Valitse edustavia hakuja todellisista kehitystehtävistä, mukaan lukien vieraat nimeämistavat, samankaltaiset toteutukset ja apurutiinit, joiden merkitys riippuu ympäröivästä koodista.</p><p>32000 tokenin konteksti-ikkunaan mahtuu laajoja koodikatkelmia. Käytä tilaa tarkoituksenmukaisesti: kokonainen funktio ja sen olennaiset riippuvuudet voivat antaa enemmän tietoa kuin mielivaltainen lohko, joka katkeaa kesken ohjausvirran. Pidä lähdekoodin muotoilu luettavana ja säilytä kielen syntaksi poiminnan aikana. Jos lähdetiedosto on syöteikkunaa suurempi, jaa se hyödyllisistä rakenteellisista kohdista ja säilytä katkelmien yhteys niiden päätiedostoon.</p><p>Voyage Code 3 tukee vektoriesityksiä, joissa on 2048, 1024, 512 tai 256 ulottuvuutta, sekä liukuluku-, etumerkillisiä tai etumerkittömiä kahdeksan bitin esityksiä ja binääriesityksiä. Nämä asetukset tukevat erikokoisia koodivarastoindeksejä ja erilaisia hakukonfiguraatioita. Arvioi tiivistä esitystä samoilla todellisilla hauilla kuin laajempaa vertailutasoa ja tarkista, pysyykö oikea funktio tai tiedosto hyödyllisten tulosten joukossa.</p><p>Hae koodiavustajaa varten ensin olennaiset lähdekatkelmat ja toimita sitten ne tiedostoviitteineen vastaamisesta tai muutoksen tekemisestä vastaavalle komponentille. Samankaltaisuusosuma auttaa kontekstin valinnassa; se ei osoita, että kaksi toteutusta olisivat keskenään vaihdettavissa. Tarkista löytyneen koodin syötteet, sivuvaikutukset ja ympäröivät sopimukset ennen kuin käytät sitä muutoksen ohjaamiseen.</p><p>Erota koodivaraston toisiinsa liittymättömät versiot metatiedoilla ja säilytä indeksoitujen revisioiden jäljitettävyys. Jos funktio siirtyy tai sen toiminta muuttuu, päivitä sekä vektori että lähdesijainti. Samojen vektorointiasetusten tulee kuvata indeksoitua lähdettä ja sen kyselyjä. Vertaa indeksin siirrossa tuloksia olemassa olevaan kysymysjoukkoon, jotta mallin tai vektoriesityksen muutos ei huomaamatta vaihda kehittäjälle näytettävää koodia.</p><p>Hyödyllisiä tarkistuksia ovat, löytääkö kysely todellisen toteutuksen pelkän testinimen sijaan, löytääkö dokumentaatiomerkkijono vastaavan funktion ja erotetaanko merkitykseltään samankaltainen koodi pintapuolisesti samanlaisesta katkelmasta. Säilytä palautettu lähdeteksti ja sen sijainti hakutuloksessa, jotta kehittäjät voivat tarkistaa perusteet. Näin mallin koodiin painottuvista vektoriesityksistä tulee käytännöllinen navigointi- ja kontekstinvalintatyökalu.</p>",
  "aboutText": "Voyage Code 3 on lähdekoodin hakuun erikoistunut vektorointimalli. Valmistaja kuvaa luonnollisesta kielestä koodiin, koodista koodiin ja dokumentaatiomerkkijonosta koodiin kohdistuvia tehtäviä: kysymys voi löytää toteutuksen, koodikatkelma siihen liittyvää logiikkaa ja funktion kuvaus olennaista koodia. Malli tuottaa vektoreita hakua varten muokatun tiedoston tai valmiin ohjelman sijaan.\n\nValmistele koodivaraston aineisto merkityksellisten koodiyksiköiden ympärille. Pidä funktio yhdessä sen nimen, signatuurin ja tarkoitusta selittävien kommenttien kanssa. Sisällytä suurempaan komponenttiin lähellä olevat määritelmät, joita toiminnan ymmärtäminen edellyttää. Tallenna koodivarasto, revisio, tiedostopolku ja rivisijainti erikseen, jotta hakutulos avaa täsmälleen vektoroidun lähteen.\n\nLuonnollisen kielen haku voi kuvata toimintaa, kuten projektin sen osan löytämistä, joka tarkistaa ladatun tiedoston ennen tallentamista. Koodiin perustuva kysely voi sisältää funktion, jonka tarkoitukselle etsitään vastaavuutta muualta. Valitse edustavia hakuja todellisista kehitystehtävistä, mukaan lukien vieraat nimeämistavat, samankaltaiset toteutukset ja apurutiinit, joiden merkitys riippuu ympäröivästä koodista.\n\n32000 tokenin konteksti-ikkunaan mahtuu laajoja koodikatkelmia. Käytä tilaa tarkoituksenmukaisesti: kokonainen funktio ja sen olennaiset riippuvuudet voivat antaa enemmän tietoa kuin mielivaltainen lohko, joka katkeaa kesken ohjausvirran. Pidä lähdekoodin muotoilu luettavana ja säilytä kielen syntaksi poiminnan aikana. Jos lähdetiedosto on syöteikkunaa suurempi, jaa se hyödyllisistä rakenteellisista kohdista ja säilytä katkelmien yhteys niiden päätiedostoon.\n\nVoyage Code 3 tukee vektoriesityksiä, joissa on 2048, 1024, 512 tai 256 ulottuvuutta, sekä liukuluku-, etumerkillisiä tai etumerkittömiä kahdeksan bitin esityksiä ja binääriesityksiä. Nämä asetukset tukevat erikokoisia koodivarastoindeksejä ja erilaisia hakukonfiguraatioita. Arvioi tiivistä esitystä samoilla todellisilla hauilla kuin laajempaa vertailutasoa ja tarkista, pysyykö oikea funktio tai tiedosto hyödyllisten tulosten joukossa.\n\nHae koodiavustajaa varten ensin olennaiset lähdekatkelmat ja toimita sitten ne tiedostoviitteineen vastaamisesta tai muutoksen tekemisestä vastaavalle komponentille. Samankaltaisuusosuma auttaa kontekstin valinnassa; se ei osoita, että kaksi toteutusta olisivat keskenään vaihdettavissa. Tarkista löytyneen koodin syötteet, sivuvaikutukset ja ympäröivät sopimukset ennen kuin käytät sitä muutoksen ohjaamiseen.\n\nErota koodivaraston toisiinsa liittymättömät versiot metatiedoilla ja säilytä indeksoitujen revisioiden jäljitettävyys. Jos funktio siirtyy tai sen toiminta muuttuu, päivitä sekä vektori että lähdesijainti. Samojen vektorointiasetusten tulee kuvata indeksoitua lähdettä ja sen kyselyjä. Vertaa indeksin siirrossa tuloksia olemassa olevaan kysymysjoukkoon, jotta mallin tai vektoriesityksen muutos ei huomaamatta vaihda kehittäjälle näytettävää koodia.\n\nHyödyllisiä tarkistuksia ovat, löytääkö kysely todellisen toteutuksen pelkän testinimen sijaan, löytääkö dokumentaatiomerkkijono vastaavan funktion ja erotetaanko merkitykseltään samankaltainen koodi pintapuolisesti samanlaisesta katkelmasta. Säilytä palautettu lähdeteksti ja sen sijainti hakutuloksessa, jotta kehittäjät voivat tarkistaa perusteet. Näin mallin koodiin painottuvista vektoriesityksistä tulee käytännöllinen navigointi- ja kontekstinvalintatyökalu.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "26065b2f9253832a90f71794fafbf715c4fbd5905872f821b84b126bd017ff70",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "fi",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">•</span><h2 id=\"sheet-title\">Voyage AI: Voyage Code 3</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Sulje\">×</button></div><div class=\"idline\"><span>Voyage AI /</span><code>voyage-code-3</code><button type=\"button\" id=\"copy-id\">Kopioi ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Mallikortin osiot\"><button type=\"button\" data-card-jump=\"overview\">Aloitus</button><button type=\"button\" data-card-jump=\"methods\">Syötteet &amp; menetelmät</button><button type=\"button\" data-card-jump=\"pricing\">Hinnoittelu</button><button type=\"button\" data-card-jump=\"examples\">Esimerkit</button><button type=\"button\" data-card-jump=\"results\">Tulokset</button><button type=\"button\" data-card-jump=\"aliases\">Aliakset</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"API-menetelmät\"><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|voyage-code-3\">Vektoriesitykset</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\">Aloitus</h3><p class=\"mdesc-full\">Voyage Code 3 luo vektoriesityksiä tekstistä koodiin, koodista koodiin ja dokumentaatiomerkkijonosta koodiin tehtävään hakuun. 32000 tokenin ikkuna, valittavat vektorien ulottuvuudet ja kvantisoitu tuloste tukevat koodivarastohakua ja koodikontekstin valintaa koodiavustajille.</p><dl class=\"card-io\" data-card-io><div><dt>Hyväksytyt syötteet</dt><dd>Teksti</dd></div><div><dt>Tulokset</dt><dd>embedding</dd></div></dl><details class=\"card-about\"><summary>Tietoa mallista</summary><p class=\"note-s\" data-model-method-boundary>Tämä kuvaus kattaa mallin ominaisuudet. Ailootissa saatavilla olevat syötteet, tulosteet ja asetukset luetellaan alla valitulle menetelmälle.</p><div class=\"mabout\" id=\"m-about\"><p>Voyage Code 3 on lähdekoodin hakuun erikoistunut vektorointimalli. Valmistaja kuvaa luonnollisesta kielestä koodiin, koodista koodiin ja dokumentaatiomerkkijonosta koodiin kohdistuvia tehtäviä: kysymys voi löytää toteutuksen, koodikatkelma siihen liittyvää logiikkaa ja funktion kuvaus olennaista koodia. Malli tuottaa vektoreita hakua varten muokatun tiedoston tai valmiin ohjelman sijaan.</p><p>Valmistele koodivaraston aineisto merkityksellisten koodiyksiköiden ympärille. Pidä funktio yhdessä sen nimen, signatuurin ja tarkoitusta selittävien kommenttien kanssa. Sisällytä suurempaan komponenttiin lähellä olevat määritelmät, joita toiminnan ymmärtäminen edellyttää. Tallenna koodivarasto, revisio, tiedostopolku ja rivisijainti erikseen, jotta hakutulos avaa täsmälleen vektoroidun lähteen.</p><p>Luonnollisen kielen haku voi kuvata toimintaa, kuten projektin sen osan löytämistä, joka tarkistaa ladatun tiedoston ennen tallentamista. Koodiin perustuva kysely voi sisältää funktion, jonka tarkoitukselle etsitään vastaavuutta muualta. Valitse edustavia hakuja todellisista kehitystehtävistä, mukaan lukien vieraat nimeämistavat, samankaltaiset toteutukset ja apurutiinit, joiden merkitys riippuu ympäröivästä koodista.</p><p>32000 tokenin konteksti-ikkunaan mahtuu laajoja koodikatkelmia. Käytä tilaa tarkoituksenmukaisesti: kokonainen funktio ja sen olennaiset riippuvuudet voivat antaa enemmän tietoa kuin mielivaltainen lohko, joka katkeaa kesken ohjausvirran. Pidä lähdekoodin muotoilu luettavana ja säilytä kielen syntaksi poiminnan aikana. Jos lähdetiedosto on syöteikkunaa suurempi, jaa se hyödyllisistä rakenteellisista kohdista ja säilytä katkelmien yhteys niiden päätiedostoon.</p><p>Voyage Code 3 tukee vektoriesityksiä, joissa on 2048, 1024, 512 tai 256 ulottuvuutta, sekä liukuluku-, etumerkillisiä tai etumerkittömiä kahdeksan bitin esityksiä ja binääriesityksiä. Nämä asetukset tukevat erikokoisia koodivarastoindeksejä ja erilaisia hakukonfiguraatioita. Arvioi tiivistä esitystä samoilla todellisilla hauilla kuin laajempaa vertailutasoa ja tarkista, pysyykö oikea funktio tai tiedosto hyödyllisten tulosten joukossa.</p><p>Hae koodiavustajaa varten ensin olennaiset lähdekatkelmat ja toimita sitten ne tiedostoviitteineen vastaamisesta tai muutoksen tekemisestä vastaavalle komponentille. Samankaltaisuusosuma auttaa kontekstin valinnassa; se ei osoita, että kaksi toteutusta olisivat keskenään vaihdettavissa. Tarkista löytyneen koodin syötteet, sivuvaikutukset ja ympäröivät sopimukset ennen kuin käytät sitä muutoksen ohjaamiseen.</p><p>Erota koodivaraston toisiinsa liittymättömät versiot metatiedoilla ja säilytä indeksoitujen revisioiden jäljitettävyys. Jos funktio siirtyy tai sen toiminta muuttuu, päivitä sekä vektori että lähdesijainti. Samojen vektorointiasetusten tulee kuvata indeksoitua lähdettä ja sen kyselyjä. Vertaa indeksin siirrossa tuloksia olemassa olevaan kysymysjoukkoon, jotta mallin tai vektoriesityksen muutos ei huomaamatta vaihda kehittäjälle näytettävää koodia.</p><p>Hyödyllisiä tarkistuksia ovat, löytääkö kysely todellisen toteutuksen pelkän testinimen sijaan, löytääkö dokumentaatiomerkkijono vastaavan funktion ja erotetaanko merkitykseltään samankaltainen koodi pintapuolisesti samanlaisesta katkelmasta. Säilytä palautettu lähdeteksti ja sen sijainti hakutuloksessa, jotta kehittäjät voivat tarkistaa perusteet. Näin mallin koodiin painottuvista vektoriesityksistä tulee käytännöllinen navigointi- ja kontekstinvalintatyökalu.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Saatavilla Ailootissa · syötteet &amp; menetelmät</h3><details class=\"card-method\" open><summary><b>Ailoot Ultra · Vektoriesitykset</b> <code>POST /v1/embeddings</code></summary><dl class=\"method-capabilities\"><div><dt>Syötetyypit</dt><dd><code>text</code></dd></div><div><dt>Tulostyypit</dt><dd><code>embedding</code></dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Kenttä</th><th>Tyyppi</th><th>Vaatimus</th><th>Arvot &amp; rajat</th><th>Oletus</th></tr></thead><tbody><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>string</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Pakollinen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>voyage-code-3</div><div>Ehdot: Käytä täsmällistä Ailoot-mallin valitsinta.</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr><tr><th data-cell-label=\"Kenttä\" scope=\"row\"><span class=\"card-cell-label\">Kenttä</span><code class=\"card-field-name\">input</code></th><td data-cell-label=\"Tyyppi\" data-field-type><span class=\"card-cell-label\">Tyyppi</span><code>string or array&lt;string&gt;</code></td><td data-cell-label=\"Vaatimus\"><span class=\"card-cell-label\">Vaatimus</span>Pakollinen</td><td data-cell-label=\"Arvot &amp; rajat\"><span class=\"card-cell-label\">Arvot &amp; rajat</span><div>Ehdot: Teksti tai tekstiluettelo; säilytä yksi vektori jokaista palautettua data-alkiota ja sen indeksiä kohden.</div></td><td data-cell-label=\"Oletus\" data-default=\"unspecified\"><span class=\"card-cell-label\">Oletus</span>—</td></tr></tbody></table></div><details class=\"note-s\" data-method-contract><summary>Menetelmän parametrit ja elinkaari</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parametri</th><th>Sopimus</th></tr></thead><tbody><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>content_type</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>application/json</td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>required</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>model, input</td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>optional</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span></td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>material_types</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>text</td></tr><tr><th data-cell-label=\"Parametri\" scope=\"row\"><span class=\"card-cell-label\">Parametri</span><code>conditions</code></th><td data-cell-label=\"Sopimus\"><span class=\"card-cell-label\">Sopimus</span>Lähetä teksti valitulle mallille; säilytä jokainen palautettu vektori ja sen indeksi.</td></tr></tbody></table></div><p>Elinkaari: <code>synchronous</code></p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Hinnoittelu</h3><div data-native-semantic-method=\"v1\" data-tariff-reference-only><p class=\"note-s\" data-rate-support-note>Hintatiedot eivät lisää pyyntövalintoja. Tuetut parametrit on lueteltu valitulle menetelmälle.</p><dl data-price-conditions><dt>Nopea tila</dt><dd>Ei määritetty <span class=\"note-s\">Kun nopea tila on valittu</span></dd><dt>Flex-tila</dt><dd>Ei määritetty <span class=\"note-s\">Kun flex-tila on valittu</span></dd><dt>Päättelyn enimmäisteho</dt><dd>Ei määritetty <span class=\"note-s\">Kun päättelyn enimmäistehoon sovelletaan default-oletussäätöä</span></dd></dl></div><div data-declared-tariff-pricing><h4>Ailoot-hinnat</h4><h4>Hinnat asetusten mukaan</h4><div class=\"tw\" data-pricing-profiles><table><thead><tr><th>Asetukset</th><th>Hinnasto</th><th>Veloitus</th></tr></thead><tbody><tr><th data-cell-label=\"Asetukset\" scope=\"row\"><span class=\"card-cell-label\">Asetukset</span>Tokenien perushinnat</th><td data-cell-label=\"Hinnasto\"><span class=\"card-cell-label\">Hinnasto</span>Perushinta</td><td data-cell-label=\"Veloitus\"><span class=\"card-cell-label\">Veloitus</span><div><span>Syöte · Syötetokenit</span> <b>$0.0004</b> <span class=\"price-unit\">/ 1K tokenia</span></div><div><span>Tuloste · Tulostokenit</span> <b>$0</b> <span class=\"price-unit\">/ 1K tokenia</span></div><div><span>Syöte · Välimuistin luku</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenia</span></div><div><span>Syöte · Välimuistiin kirjoitus</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenia</span></div><div><span>Syöte · Välimuistiin kirjoitus, 1 tunti</span> <b>—</b> <span class=\"price-unit\">/ 1K tokenia</span></div></td></tr></tbody></table></div></div><p class=\"note-s\">Ailoot varaa arvioidun summan ennen pyyntöä. Tuloksen jälkeen lopullinen veloitus toteutetaan mitatun käytön perusteella. Suoratoiston veloituksessa käytetään lopullista käyttötietuetta. <a href=\"/docs/fi/billing/reserve/\">Varauksen ja lopullisen veloituksen toiminta →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Esimerkkipyynnöt</h3><h4>Ailoot Ultra · Vektoriesitykset</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Koodivaihtoehdot\"><button class=\"cg-tab\" id=\"model-code-2790-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2790-panel-0\" aria-selected=\"true\" tabindex=\"0\">curl · tallenna kaikki vektorit ja käyttötiedot</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopioi koodi\"><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-2790-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2790-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\ncat &gt; request.json &lt;&lt;&#39;JSON&#39;\n{\n  &quot;model&quot;: &quot;voyage-code-3&quot;,\n  &quot;input&quot;: &quot;The quick brown fox jumps over the lazy dog&quot;\n}\nJSON\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 embeddings.json\n# Keep every data item and its index, the full usage object and response headers.\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Vastaanota ja tallenna tulokset</h3></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Aliakset</h3><h4>Mallin aliakset</h4><p class=\"note-s\"><span data-model-alias-route=\"Ultra\"><b>Ailoot Ultra</b> <a href=\"#m=voyage-code-3&amp;route=Ultra&amp;caller=voyage-code-3&amp;fmt=embeddings\"><code>voyage-code-3</code></a></span></p><h4>Menetelmäpolkujen aliakset</h4><p class=\"note-s\">Käytä yllä näytettyjä menetelmäpolkuja.</p><h4>Liittyvät kutsujan ID:t</h4><p class=\"note-s\"><a href=\"#m=voyage-code-3&amp;route=Ultra&amp;caller=voyage-code-3&amp;fmt=embeddings\"><code>voyage-code-3</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "voyage-code-3",
        "fmt": "embeddings",
        "http": "POST",
        "path": "/v1/embeddings",
        "request_model_id": "voyage-code-3",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|embeddings|/v1/embeddings|voyage-code-3",
      "ordinal": 0,
      "rawMethod": {
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Save the complete JSON response, every vector with its index, all usage fields and request headers.",
            "lifecycle": {
              "content": [],
              "create": {
                "http": "POST",
                "path": "/v1/embeddings"
              },
              "mode": "synchronous",
              "status": [],
              "unknown": "Säilytä alkuperäinen vastaus ja X-Client-Request-ID täsmäytystä varten. Epäselvä vastaus ei anna lupaa lähettää samaa luontipyyntöä uudelleen.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "Tallenna koko JSON-vastaus, jokainen vektori ja sen indeksi, kaikki käyttötietokentät sekä pyynnön otsakkeet.",
              "every_actual_output": true,
              "family": "embedding",
              "fields": [
                {
                  "name": "object",
                  "type": "string"
                },
                {
                  "name": "model",
                  "type": "string"
                },
                {
                  "name": "data[].index",
                  "type": "integer"
                },
                {
                  "name": "data[].embedding",
                  "type": "array<number>"
                },
                {
                  "name": "usage",
                  "type": "object"
                },
                {
                  "name": "usage.prompt_tokens",
                  "type": "integer"
                },
                {
                  "name": "usage.total_tokens",
                  "type": "integer"
                }
              ]
            },
            "parameters": [
              {
                "conditions": "Käytä täsmällistä Ailoot-mallin valitsinta.",
                "default_known": false,
                "enum": [
                  "voyage-code-3"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Teksti tai tekstiluettelo; säilytä yksi vektori jokaista palautettua data-alkiota ja sen indeksiä kohden.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "input",
                "oneOf": [
                  {
                    "minLength": 1,
                    "type": "string"
                  },
                  {
                    "items": {
                      "minLength": 1,
                      "type": "string"
                    },
                    "minItems": 1,
                    "type": "array"
                  }
                ],
                "required": true,
                "type": "string or array<string>"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "input": {
                  "oneOf": [
                    {
                      "minLength": 1,
                      "type": "string"
                    },
                    {
                      "items": {
                        "minLength": 1,
                        "type": "string"
                      },
                      "minItems": 1,
                      "type": "array"
                    }
                  ]
                },
                "model": {
                  "enum": [
                    "voyage-code-3"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "The quick brown fox jumps over the lazy dog",
                "model": "voyage-code-3"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "conditions": [
              "Lähetä teksti valitulle mallille; säilytä jokainen palautettu vektori ja sen indeksi."
            ],
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional": [],
            "required": [
              "model",
              "input"
            ]
          },
          "lifecycle": {
            "content": [],
            "create": {
              "http": "POST",
              "path": "/v1/embeddings"
            },
            "mode": "synchronous",
            "status": [],
            "unknown": "Keep the original response and X-Client-Request-ID for reconciliation. An ambiguous response is not permission to submit the same creation again.",
            "unknown_no_replay": true
          },
          "method": {
            "http": "POST",
            "path": "/v1/embeddings"
          },
          "output": {
            "all_results": "Save the complete JSON response, every vector with its index, all usage fields and request headers.",
            "every_actual_output": true,
            "family": "embedding",
            "fields": [
              {
                "name": "object",
                "type": "string"
              },
              {
                "name": "model",
                "type": "string"
              },
              {
                "name": "data[].index",
                "type": "integer"
              },
              {
                "name": "data[].embedding",
                "type": "array<number>"
              },
              {
                "name": "usage",
                "type": "object"
              },
              {
                "name": "usage.prompt_tokens",
                "type": "integer"
              },
              {
                "name": "usage.total_tokens",
                "type": "integer"
              }
            ]
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Tokenien perushinnat",
            "units": [
              {
                "amount": "0.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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}\"\ncat > request.json <<'JSON'\n{\n  \"model\": \"voyage-code-3\",\n  \"input\": \"The quick brown fox jumps over the lazy dog\"\n}\nJSON\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 embeddings.json\n# Keep every data item and its index, the full usage object and response headers.\n",
            "label": "curl · save all vectors and usage",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "embeddings",
        "http": "POST",
        "in": 0.4,
        "input": [
          "text"
        ],
        "label": "Vektoriesitykset",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "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.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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": "voyage-code-3",
        "route_label": "Ultra",
        "status_reads": [],
        "tiers": [],
        "units": [
          {
            "amount": "0.0004000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000004",
            "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": "voyage-code-3",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "be31d6d936b92c56c5dfeb2c64c468ca83953d963061abb664408e4af4463ca3",
    "input_html_sha256": "26fc886d3c9b9c6f790e92a78b2216e8db1460e278c539c8fba9eb350f1ee770",
    "private_audit_sha256": "ece76f953644a387f69beb6a3c76638a062d8da7318bf4a59e97cc92d19e74f7",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/fi/voyage-code-3/",
    "description": "Voyage Code 3 luo vektoriesityksiä tekstistä koodiin, koodista koodiin ja dokumentaatiomerkkijonosta koodiin tehtävään hakuun. 32000 tokenin ikkuna, valittavat vektorien ulottuvuudet ja kvantisoitu tuloste tukevat koodivarastohakua ja koodikontekstin valintaa koodiavustajille.",
    "locale": "fi",
    "md_url": "https://ailoot.ai/models/fi/voyage-code-3/index.md",
    "title": "Voyage AI: Voyage Code 3 — Ailoot",
    "url": "https://ailoot.ai/models/fi/voyage-code-3/"
  },
  "rawModel": {
    "about": "Voyage Code 3 on lähdekoodin hakuun erikoistunut vektorointimalli. Valmistaja kuvaa luonnollisesta kielestä koodiin, koodista koodiin ja dokumentaatiomerkkijonosta koodiin kohdistuvia tehtäviä: kysymys voi löytää toteutuksen, koodikatkelma siihen liittyvää logiikkaa ja funktion kuvaus olennaista koodia. Malli tuottaa vektoreita hakua varten muokatun tiedoston tai valmiin ohjelman sijaan.\n\nValmistele koodivaraston aineisto merkityksellisten koodiyksiköiden ympärille. Pidä funktio yhdessä sen nimen, signatuurin ja tarkoitusta selittävien kommenttien kanssa. Sisällytä suurempaan komponenttiin lähellä olevat määritelmät, joita toiminnan ymmärtäminen edellyttää. Tallenna koodivarasto, revisio, tiedostopolku ja rivisijainti erikseen, jotta hakutulos avaa täsmälleen vektoroidun lähteen.\n\nLuonnollisen kielen haku voi kuvata toimintaa, kuten projektin sen osan löytämistä, joka tarkistaa ladatun tiedoston ennen tallentamista. Koodiin perustuva kysely voi sisältää funktion, jonka tarkoitukselle etsitään vastaavuutta muualta. Valitse edustavia hakuja todellisista kehitystehtävistä, mukaan lukien vieraat nimeämistavat, samankaltaiset toteutukset ja apurutiinit, joiden merkitys riippuu ympäröivästä koodista.\n\n32000 tokenin konteksti-ikkunaan mahtuu laajoja koodikatkelmia. Käytä tilaa tarkoituksenmukaisesti: kokonainen funktio ja sen olennaiset riippuvuudet voivat antaa enemmän tietoa kuin mielivaltainen lohko, joka katkeaa kesken ohjausvirran. Pidä lähdekoodin muotoilu luettavana ja säilytä kielen syntaksi poiminnan aikana. Jos lähdetiedosto on syöteikkunaa suurempi, jaa se hyödyllisistä rakenteellisista kohdista ja säilytä katkelmien yhteys niiden päätiedostoon.\n\nVoyage Code 3 tukee vektoriesityksiä, joissa on 2048, 1024, 512 tai 256 ulottuvuutta, sekä liukuluku-, etumerkillisiä tai etumerkittömiä kahdeksan bitin esityksiä ja binääriesityksiä. Nämä asetukset tukevat erikokoisia koodivarastoindeksejä ja erilaisia hakukonfiguraatioita. Arvioi tiivistä esitystä samoilla todellisilla hauilla kuin laajempaa vertailutasoa ja tarkista, pysyykö oikea funktio tai tiedosto hyödyllisten tulosten joukossa.\n\nHae koodiavustajaa varten ensin olennaiset lähdekatkelmat ja toimita sitten ne tiedostoviitteineen vastaamisesta tai muutoksen tekemisestä vastaavalle komponentille. Samankaltaisuusosuma auttaa kontekstin valinnassa; se ei osoita, että kaksi toteutusta olisivat keskenään vaihdettavissa. Tarkista löytyneen koodin syötteet, sivuvaikutukset ja ympäröivät sopimukset ennen kuin käytät sitä muutoksen ohjaamiseen.\n\nErota koodivaraston toisiinsa liittymättömät versiot metatiedoilla ja säilytä indeksoitujen revisioiden jäljitettävyys. Jos funktio siirtyy tai sen toiminta muuttuu, päivitä sekä vektori että lähdesijainti. Samojen vektorointiasetusten tulee kuvata indeksoitua lähdettä ja sen kyselyjä. Vertaa indeksin siirrossa tuloksia olemassa olevaan kysymysjoukkoon, jotta mallin tai vektoriesityksen muutos ei huomaamatta vaihda kehittäjälle näytettävää koodia.\n\nHyödyllisiä tarkistuksia ovat, löytääkö kysely todellisen toteutuksen pelkän testinimen sijaan, löytääkö dokumentaatiomerkkijono vastaavan funktion ja erotetaanko merkitykseltään samankaltainen koodi pintapuolisesti samanlaisesta katkelmasta. Säilytä palautettu lähdeteksti ja sen sijainti hakutuloksessa, jotta kehittäjät voivat tarkistaa perusteet. Näin mallin koodiin painottuvista vektoriesityksistä tulee käytännöllinen navigointi- ja kontekstinvalintatyökalu.",
    "about_sha256": "7a62faecaa1a469a228fb832e8fd51d0fb1ee7fc0232e975614f45428c1f130f",
    "alias_of": null,
    "aliases": [],
    "author": "Voyage AI",
    "capabilities": {
      "context_length": 32000,
      "manufacturer_input": [
        "text"
      ],
      "manufacturer_output": [
        "embeddings"
      ]
    },
    "card_routes": [
      {
        "label": "Ultra",
        "rates": [
          {
            "amount": "0.0004000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000004",
            "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": "Konfiguraation täydet hintatiedot lisätiedoissa."
      }
    ],
    "ctx": null,
    "display_name": "Voyage AI: Voyage Code 3",
    "formats": [
      "embeddings"
    ],
    "id": "voyage-code-3",
    "input": [
      "text"
    ],
    "kind": "embedding",
    "locale": "en",
    "max_out": null,
    "methods": [
      {
        "cache_read": null,
        "cache_write": null,
        "cache_write_1h": null,
        "contract": {
          "data": {
            "all_results": "Save the complete JSON response, every vector with its index, all usage fields and request headers.",
            "lifecycle": {
              "content": [],
              "create": {
                "http": "POST",
                "path": "/v1/embeddings"
              },
              "mode": "synchronous",
              "status": [],
              "unknown": "Säilytä alkuperäinen vastaus ja X-Client-Request-ID täsmäytystä varten. Epäselvä vastaus ei anna lupaa lähettää samaa luontipyyntöä uudelleen.",
              "unknown_no_replay": true
            },
            "outputs": {
              "all_results": "Tallenna koko JSON-vastaus, jokainen vektori ja sen indeksi, kaikki käyttötietokentät sekä pyynnön otsakkeet.",
              "every_actual_output": true,
              "family": "embedding",
              "fields": [
                {
                  "name": "object",
                  "type": "string"
                },
                {
                  "name": "model",
                  "type": "string"
                },
                {
                  "name": "data[].index",
                  "type": "integer"
                },
                {
                  "name": "data[].embedding",
                  "type": "array<number>"
                },
                {
                  "name": "usage",
                  "type": "object"
                },
                {
                  "name": "usage.prompt_tokens",
                  "type": "integer"
                },
                {
                  "name": "usage.total_tokens",
                  "type": "integer"
                }
              ]
            },
            "parameters": [
              {
                "conditions": "Käytä täsmällistä Ailoot-mallin valitsinta.",
                "default_known": false,
                "enum": [
                  "voyage-code-3"
                ],
                "enum_known": true,
                "maximum_length": null,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "conditions": "Teksti tai tekstiluettelo; säilytä yksi vektori jokaista palautettua data-alkiota ja sen indeksiä kohden.",
                "default_known": false,
                "enum_known": false,
                "maximum_length": null,
                "name": "input",
                "oneOf": [
                  {
                    "minLength": 1,
                    "type": "string"
                  },
                  {
                    "items": {
                      "minLength": 1,
                      "type": "string"
                    },
                    "minItems": 1,
                    "type": "array"
                  }
                ],
                "required": true,
                "type": "string or array<string>"
              }
            ],
            "request_schema": {
              "additionalProperties": true,
              "properties": {
                "input": {
                  "oneOf": [
                    {
                      "minLength": 1,
                      "type": "string"
                    },
                    {
                      "items": {
                        "minLength": 1,
                        "type": "string"
                      },
                      "minItems": 1,
                      "type": "array"
                    }
                  ]
                },
                "model": {
                  "enum": [
                    "voyage-code-3"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "model",
                "input"
              ],
              "type": "object"
            },
            "schema_template": {
              "actual_file_preparation_required": false,
              "body": {
                "input": "The quick brown fox jumps over the lazy dog",
                "model": "voyage-code-3"
              },
              "content_type": "application/json"
            }
          },
          "input": {
            "conditions": [
              "Lähetä teksti valitulle mallille; säilytä jokainen palautettu vektori ja sen indeksi."
            ],
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional": [],
            "required": [
              "model",
              "input"
            ]
          },
          "lifecycle": {
            "content": [],
            "create": {
              "http": "POST",
              "path": "/v1/embeddings"
            },
            "mode": "synchronous",
            "status": [],
            "unknown": "Keep the original response and X-Client-Request-ID for reconciliation. An ambiguous response is not permission to submit the same creation again.",
            "unknown_no_replay": true
          },
          "method": {
            "http": "POST",
            "path": "/v1/embeddings"
          },
          "output": {
            "all_results": "Save the complete JSON response, every vector with its index, all usage fields and request headers.",
            "every_actual_output": true,
            "family": "embedding",
            "fields": [
              {
                "name": "object",
                "type": "string"
              },
              {
                "name": "model",
                "type": "string"
              },
              {
                "name": "data[].index",
                "type": "integer"
              },
              {
                "name": "data[].embedding",
                "type": "array<number>"
              },
              {
                "name": "usage",
                "type": "object"
              },
              {
                "name": "usage.prompt_tokens",
                "type": "integer"
              },
              {
                "name": "usage.total_tokens",
                "type": "integer"
              }
            ]
          }
        },
        "ctx": null,
        "declared_pricing_profiles": [
          {
            "dimensions": {
              "regime": "base"
            },
            "label": "Tokenien perushinnat",
            "units": [
              {
                "amount": "0.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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}\"\ncat > request.json <<'JSON'\n{\n  \"model\": \"voyage-code-3\",\n  \"input\": \"The quick brown fox jumps over the lazy dog\"\n}\nJSON\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 embeddings.json\n# Keep every data item and its index, the full usage object and response headers.\n",
            "label": "curl · save all vectors and usage",
            "language": "bash"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "embeddings",
        "http": "POST",
        "in": 0.4,
        "input": [
          "text"
        ],
        "label": "Vektoriesitykset",
        "max_out": null,
        "max_reasoning_effort_multiplier": null,
        "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.0004000",
                "amount_unit": "usd_per_thousand_tokens",
                "billing_input": true,
                "estimate_only": false,
                "key": "input_price",
                "label": "Input tokens",
                "native_amount_usd_per_unit": "0.0000004",
                "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": "voyage-code-3",
        "route_label": "Ultra",
        "status_reads": [],
        "tiers": [],
        "units": [
          {
            "amount": "0.0004000",
            "amount_unit": "usd_per_thousand_tokens",
            "billing_input": true,
            "estimate_only": false,
            "key": "input_price",
            "label": "Input tokens",
            "native_amount_usd_per_unit": "0.0000004",
            "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": "voyage-code-3",
        "request_model_id": "voyage-code-3",
        "route_label": "Ultra"
      }
    ],
    "name": "Voyage AI: Voyage Code 3",
    "price": {
      "in": 0.4,
      "in_label": null,
      "out": 0,
      "out_label": null,
      "scope_label": "Token rates",
      "sort_in": 0.4,
      "sort_out": 0,
      "varies": false
    },
    "short": "Voyage Code 3 luo vektoriesityksiä tekstistä koodiin, koodista koodiin ja dokumentaatiomerkkijonosta koodiin tehtävään hakuun. 32000 tokenin ikkuna, valittavat vektorien ulottuvuudet ja kvantisoitu tuloste tukevat koodivarastohakua ja koodikontekstin valintaa koodiavustajille.",
    "short_sha256": "d4d092b4a7555efe0f233ac899b7e43901dde1d9465c4a647af52200c6d5d963"
  },
  "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": "Voyage Code 3 luo vektoriesityksiä tekstistä koodiin, koodista koodiin ja dokumentaatiomerkkijonosta koodiin tehtävään hakuun. 32000 tokenin ikkuna, valittavat vektorien ulottuvuudet ja kvantisoitu tuloste tukevat koodivarastohakua ja koodikontekstin valintaa koodiavustajille.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "d12130d8f5d5f95c23860dfd8553dd0667233754dd0fdd7514d80f353f635ac1",
    "renderer_sha256": "303a59603e2bc29ba8fda690e95fd32cec68de223d92e26054a88babff801dd7"
  },
  "sourceRevision": "af6b76a8534048d823ed7d70cd9a1a4e994b1816434cd7d929ed93e542929726"
}
