{
  "aboutHtml": "<p>Voyage Code 2 luo numeerisia vektoriesityksiä lähdekoodista ja siihen liittyvästä tekstistä. Se on suunniteltu semanttiseen koodihakuun, jossa kehittäjä kuvaa toiminnan tai antaa koodikatkelman ja hakujärjestelmä löytää olennaisia toteutuksia. Valmistajan esimerkeissä hakusyötteinä käytetään luonnollisen kielen kysymyksiä, koodikatkelmia ja näiden yhdistelmiä.</p><p>Rakenna sen avulla koodivaraston haku todellisten kehityskysymysten ympärille. Kehittäjä voi etsiä rutiinia, joka poistaa vain ensimmäisen ja viimeisen vastaavan merkin, tai projektin osaa, joka käyttää tiettyä puun läpikäyntitapaa. Valmistele kyselyt, jotka ilmaisevat toiminnan täsmällisesti, mukaan lukien ehto, joka erottaa halutun toteutuksen samankaltaisesta mutta väärästä.</p><p>Indeksoi koodi hyödyllisinä kokonaisuuksina sen sijaan, että jakaisit jokaisen tiedoston mielivaltaisen merkkimäärän kohdalta. Pidä funktion signatuuri, runko ja olennainen selitys yhdessä. Kun apufunktio riippuu paikallisista tyypeistä tai vakioista, säilytä riittävästi ympäröivää tekstiä, jotta sen tarkoitus on ymmärrettävä. Tallenna tiedostopolut, koodivaraston revisiot ja lähdesijainnit vektoriesityksen ulkopuolelle, jotta tulos voi avata alkuperäisen koodin suoraan.</p><p>Tämän version konteksti-ikkuna on 16000 tokenia, ja se tuottaa 1536-ulotteisia vektoriesityksiä. Mitoita vektori-indeksi tätä esitystä varten ja liitä kyselyjen ja asiakirjojen vektoriesitykset samaan malliin. Voyage Code 2:lla jo indeksoitu kokoelma voi säilyttää yhtenäisen hakuesityksen, kun sen lähdetietueita päivitetään. Siirtymistä toiseen vektorointiversioon tulee käsitellä indeksin siirtona, johon kuuluu nimenomainen vertailu samalla koodivarastolla.</p><p>Kuvaa luonnollisen kielen kyselyssä toiminto, syötteet ja olennainen lopputulos. Sisällytä koodikyselyyn katkelma, jonka logiikalle etsit vastaavuutta, ja selitä hakua koskevat olennaiset ehdot. Uudelleenyritysten käsittelyä koskeva haku voi esimerkiksi täsmentää, yrittääkö asianomainen koodi uudelleen aikakatkaisun vai kokonaisen virhevastauksen jälkeen. Tarkista tämä ero löytyneestä lähdekoodista ennen kuin käytät sitä muutoksessa.</p><p>Säilytä dokumentaation ja lähdekoodin jäljitettävyys, kun molemmat indeksoidaan. Selittävä katkelma voi tarjota hyödyllistä taustaa, mutta toteutus on aineisto, joka kehittäjän on tarkistettava. Merkitse nämä tietuetyypit, jotta hakusivu voi näyttää oikean kohteen ja koodiavustaja erottaa kuvauksen suoritettavasta lähdekoodista.</p><p>Käytä löytyneitä katkelmia taustatietona koodivarastossa liikkumiseen, toteutusten löytämiseen tai koodiavustajan seuraavaan vaiheeseen. Säilytä koko olennainen katkelma ja sen sijainti, kun välität sen eteenpäin. Samankaltaisuus auttaa löytämään ehdokaskoodia; todellisten syötteiden, sivuvaikutusten ja sopimusten tarkistaminen ratkaisee, vastaako ehdokas nykyiseen ongelmaan.</p><p>Arvioi hakua todellisilla kysymyksillä, joiden lähdevastaukset tunnetaan. Sisällytä uudelleennimettyjä funktioita, harhaanjohtavia kommentteja, samankaltaisia apurutiineja, joiden reunatapaukset poikkeavat toisistaan, ja kyselyjä, joiden sanastoa ei esiinny koodissa. Tarkista, löytyykö odotettu toteutus hyödyllisten tulosten joukosta ja antaako näytettävä katkelma riittävästi taustaa sen arvioimiseen. Säilytä nämä kysymykset koodivaraston kasvaessa, jotta poiminnan, katkelmien rajausten ja indeksoinnin muutoksia voidaan vertailla samoilla tehtävillä.</p>",
  "aboutText": "Voyage Code 2 luo numeerisia vektoriesityksiä lähdekoodista ja siihen liittyvästä tekstistä. Se on suunniteltu semanttiseen koodihakuun, jossa kehittäjä kuvaa toiminnan tai antaa koodikatkelman ja hakujärjestelmä löytää olennaisia toteutuksia. Valmistajan esimerkeissä hakusyötteinä käytetään luonnollisen kielen kysymyksiä, koodikatkelmia ja näiden yhdistelmiä.\n\nRakenna sen avulla koodivaraston haku todellisten kehityskysymysten ympärille. Kehittäjä voi etsiä rutiinia, joka poistaa vain ensimmäisen ja viimeisen vastaavan merkin, tai projektin osaa, joka käyttää tiettyä puun läpikäyntitapaa. Valmistele kyselyt, jotka ilmaisevat toiminnan täsmällisesti, mukaan lukien ehto, joka erottaa halutun toteutuksen samankaltaisesta mutta väärästä.\n\nIndeksoi koodi hyödyllisinä kokonaisuuksina sen sijaan, että jakaisit jokaisen tiedoston mielivaltaisen merkkimäärän kohdalta. Pidä funktion signatuuri, runko ja olennainen selitys yhdessä. Kun apufunktio riippuu paikallisista tyypeistä tai vakioista, säilytä riittävästi ympäröivää tekstiä, jotta sen tarkoitus on ymmärrettävä. Tallenna tiedostopolut, koodivaraston revisiot ja lähdesijainnit vektoriesityksen ulkopuolelle, jotta tulos voi avata alkuperäisen koodin suoraan.\n\nTämän version konteksti-ikkuna on 16000 tokenia, ja se tuottaa 1536-ulotteisia vektoriesityksiä. Mitoita vektori-indeksi tätä esitystä varten ja liitä kyselyjen ja asiakirjojen vektoriesitykset samaan malliin. Voyage Code 2:lla jo indeksoitu kokoelma voi säilyttää yhtenäisen hakuesityksen, kun sen lähdetietueita päivitetään. Siirtymistä toiseen vektorointiversioon tulee käsitellä indeksin siirtona, johon kuuluu nimenomainen vertailu samalla koodivarastolla.\n\nKuvaa luonnollisen kielen kyselyssä toiminto, syötteet ja olennainen lopputulos. Sisällytä koodikyselyyn katkelma, jonka logiikalle etsit vastaavuutta, ja selitä hakua koskevat olennaiset ehdot. Uudelleenyritysten käsittelyä koskeva haku voi esimerkiksi täsmentää, yrittääkö asianomainen koodi uudelleen aikakatkaisun vai kokonaisen virhevastauksen jälkeen. Tarkista tämä ero löytyneestä lähdekoodista ennen kuin käytät sitä muutoksessa.\n\nSäilytä dokumentaation ja lähdekoodin jäljitettävyys, kun molemmat indeksoidaan. Selittävä katkelma voi tarjota hyödyllistä taustaa, mutta toteutus on aineisto, joka kehittäjän on tarkistettava. Merkitse nämä tietuetyypit, jotta hakusivu voi näyttää oikean kohteen ja koodiavustaja erottaa kuvauksen suoritettavasta lähdekoodista.\n\nKäytä löytyneitä katkelmia taustatietona koodivarastossa liikkumiseen, toteutusten löytämiseen tai koodiavustajan seuraavaan vaiheeseen. Säilytä koko olennainen katkelma ja sen sijainti, kun välität sen eteenpäin. Samankaltaisuus auttaa löytämään ehdokaskoodia; todellisten syötteiden, sivuvaikutusten ja sopimusten tarkistaminen ratkaisee, vastaako ehdokas nykyiseen ongelmaan.\n\nArvioi hakua todellisilla kysymyksillä, joiden lähdevastaukset tunnetaan. Sisällytä uudelleennimettyjä funktioita, harhaanjohtavia kommentteja, samankaltaisia apurutiineja, joiden reunatapaukset poikkeavat toisistaan, ja kyselyjä, joiden sanastoa ei esiinny koodissa. Tarkista, löytyykö odotettu toteutus hyödyllisten tulosten joukosta ja antaako näytettävä katkelma riittävästi taustaa sen arvioimiseen. Säilytä nämä kysymykset koodivaraston kasvaessa, jotta poiminnan, katkelmien rajausten ja indeksoinnin muutoksia voidaan vertailla samoilla tehtävillä.",
  "editorialOverlay": {
    "copy_fields": null,
    "copy_sha256": null,
    "copy_source": null,
    "html_sha256": "68d4442a978bfa737fb02e0dc5aa9f020b36480a79632f1eb66f4c70ac06366e",
    "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 2</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-2</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-2\">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 2 vektoroi lähdekoodin ja siihen liittyvän tekstin semanttista koodivarastohakua varten. Luonnollisen kielen kysymykset, koodikatkelmat tai niitä yhdistävät kyselyt voivat löytää olennaisia toteutuksia; tämä versio käyttää 16000 tokenin konteksti-ikkunaa ja 1536-ulotteisia vektoreita.</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 2 luo numeerisia vektoriesityksiä lähdekoodista ja siihen liittyvästä tekstistä. Se on suunniteltu semanttiseen koodihakuun, jossa kehittäjä kuvaa toiminnan tai antaa koodikatkelman ja hakujärjestelmä löytää olennaisia toteutuksia. Valmistajan esimerkeissä hakusyötteinä käytetään luonnollisen kielen kysymyksiä, koodikatkelmia ja näiden yhdistelmiä.</p><p>Rakenna sen avulla koodivaraston haku todellisten kehityskysymysten ympärille. Kehittäjä voi etsiä rutiinia, joka poistaa vain ensimmäisen ja viimeisen vastaavan merkin, tai projektin osaa, joka käyttää tiettyä puun läpikäyntitapaa. Valmistele kyselyt, jotka ilmaisevat toiminnan täsmällisesti, mukaan lukien ehto, joka erottaa halutun toteutuksen samankaltaisesta mutta väärästä.</p><p>Indeksoi koodi hyödyllisinä kokonaisuuksina sen sijaan, että jakaisit jokaisen tiedoston mielivaltaisen merkkimäärän kohdalta. Pidä funktion signatuuri, runko ja olennainen selitys yhdessä. Kun apufunktio riippuu paikallisista tyypeistä tai vakioista, säilytä riittävästi ympäröivää tekstiä, jotta sen tarkoitus on ymmärrettävä. Tallenna tiedostopolut, koodivaraston revisiot ja lähdesijainnit vektoriesityksen ulkopuolelle, jotta tulos voi avata alkuperäisen koodin suoraan.</p><p>Tämän version konteksti-ikkuna on 16000 tokenia, ja se tuottaa 1536-ulotteisia vektoriesityksiä. Mitoita vektori-indeksi tätä esitystä varten ja liitä kyselyjen ja asiakirjojen vektoriesitykset samaan malliin. Voyage Code 2:lla jo indeksoitu kokoelma voi säilyttää yhtenäisen hakuesityksen, kun sen lähdetietueita päivitetään. Siirtymistä toiseen vektorointiversioon tulee käsitellä indeksin siirtona, johon kuuluu nimenomainen vertailu samalla koodivarastolla.</p><p>Kuvaa luonnollisen kielen kyselyssä toiminto, syötteet ja olennainen lopputulos. Sisällytä koodikyselyyn katkelma, jonka logiikalle etsit vastaavuutta, ja selitä hakua koskevat olennaiset ehdot. Uudelleenyritysten käsittelyä koskeva haku voi esimerkiksi täsmentää, yrittääkö asianomainen koodi uudelleen aikakatkaisun vai kokonaisen virhevastauksen jälkeen. Tarkista tämä ero löytyneestä lähdekoodista ennen kuin käytät sitä muutoksessa.</p><p>Säilytä dokumentaation ja lähdekoodin jäljitettävyys, kun molemmat indeksoidaan. Selittävä katkelma voi tarjota hyödyllistä taustaa, mutta toteutus on aineisto, joka kehittäjän on tarkistettava. Merkitse nämä tietuetyypit, jotta hakusivu voi näyttää oikean kohteen ja koodiavustaja erottaa kuvauksen suoritettavasta lähdekoodista.</p><p>Käytä löytyneitä katkelmia taustatietona koodivarastossa liikkumiseen, toteutusten löytämiseen tai koodiavustajan seuraavaan vaiheeseen. Säilytä koko olennainen katkelma ja sen sijainti, kun välität sen eteenpäin. Samankaltaisuus auttaa löytämään ehdokaskoodia; todellisten syötteiden, sivuvaikutusten ja sopimusten tarkistaminen ratkaisee, vastaako ehdokas nykyiseen ongelmaan.</p><p>Arvioi hakua todellisilla kysymyksillä, joiden lähdevastaukset tunnetaan. Sisällytä uudelleennimettyjä funktioita, harhaanjohtavia kommentteja, samankaltaisia apurutiineja, joiden reunatapaukset poikkeavat toisistaan, ja kyselyjä, joiden sanastoa ei esiinny koodissa. Tarkista, löytyykö odotettu toteutus hyödyllisten tulosten joukosta ja antaako näytettävä katkelma riittävästi taustaa sen arvioimiseen. Säilytä nämä kysymykset koodivaraston kasvaessa, jotta poiminnan, katkelmien rajausten ja indeksoinnin muutoksia voidaan vertailla samoilla tehtävillä.</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-2</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-2789-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-2789-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-2789-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-2789-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-2&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-2&amp;route=Ultra&amp;caller=voyage-code-2&amp;fmt=embeddings\"><code>voyage-code-2</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-2&amp;route=Ultra&amp;caller=voyage-code-2&amp;fmt=embeddings\"><code>voyage-code-2</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "voyage-code-2",
        "fmt": "embeddings",
        "http": "POST",
        "path": "/v1/embeddings",
        "request_model_id": "voyage-code-2",
        "route_label": "Ultra"
      },
      "method_key": "Ultra|embeddings|/v1/embeddings|voyage-code-2",
      "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-2"
                ],
                "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-2"
                  ],
                  "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-2"
              },
              "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-2\",\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-2",
        "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-2",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "702d25775e5f43863cd641e6bd448cb1a19c383504ddb4eaf6bff814fb85368a",
    "input_html_sha256": "4e51fd5a88d09c9ac0ca1fadbb785f5244120b3261536a489d0008f978ef696b",
    "private_audit_sha256": "afeac58efefae9b78484c7b71700ce8d991d25171938f235b3dac43686cca83b",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/fi/voyage-code-2/",
    "description": "Voyage Code 2 vektoroi lähdekoodin ja siihen liittyvän tekstin semanttista koodivarastohakua varten. Luonnollisen kielen kysymykset, koodikatkelmat tai niitä yhdistävät kyselyt voivat löytää olennaisia toteutuksia; tämä versio käyttää 16000 tokenin konteksti-ikkunaa ja 1536-ulotteisia vektoreita.",
    "locale": "fi",
    "md_url": "https://ailoot.ai/models/fi/voyage-code-2/index.md",
    "title": "Voyage AI: Voyage Code 2 — Ailoot",
    "url": "https://ailoot.ai/models/fi/voyage-code-2/"
  },
  "rawModel": {
    "about": "Voyage Code 2 luo numeerisia vektoriesityksiä lähdekoodista ja siihen liittyvästä tekstistä. Se on suunniteltu semanttiseen koodihakuun, jossa kehittäjä kuvaa toiminnan tai antaa koodikatkelman ja hakujärjestelmä löytää olennaisia toteutuksia. Valmistajan esimerkeissä hakusyötteinä käytetään luonnollisen kielen kysymyksiä, koodikatkelmia ja näiden yhdistelmiä.\n\nRakenna sen avulla koodivaraston haku todellisten kehityskysymysten ympärille. Kehittäjä voi etsiä rutiinia, joka poistaa vain ensimmäisen ja viimeisen vastaavan merkin, tai projektin osaa, joka käyttää tiettyä puun läpikäyntitapaa. Valmistele kyselyt, jotka ilmaisevat toiminnan täsmällisesti, mukaan lukien ehto, joka erottaa halutun toteutuksen samankaltaisesta mutta väärästä.\n\nIndeksoi koodi hyödyllisinä kokonaisuuksina sen sijaan, että jakaisit jokaisen tiedoston mielivaltaisen merkkimäärän kohdalta. Pidä funktion signatuuri, runko ja olennainen selitys yhdessä. Kun apufunktio riippuu paikallisista tyypeistä tai vakioista, säilytä riittävästi ympäröivää tekstiä, jotta sen tarkoitus on ymmärrettävä. Tallenna tiedostopolut, koodivaraston revisiot ja lähdesijainnit vektoriesityksen ulkopuolelle, jotta tulos voi avata alkuperäisen koodin suoraan.\n\nTämän version konteksti-ikkuna on 16000 tokenia, ja se tuottaa 1536-ulotteisia vektoriesityksiä. Mitoita vektori-indeksi tätä esitystä varten ja liitä kyselyjen ja asiakirjojen vektoriesitykset samaan malliin. Voyage Code 2:lla jo indeksoitu kokoelma voi säilyttää yhtenäisen hakuesityksen, kun sen lähdetietueita päivitetään. Siirtymistä toiseen vektorointiversioon tulee käsitellä indeksin siirtona, johon kuuluu nimenomainen vertailu samalla koodivarastolla.\n\nKuvaa luonnollisen kielen kyselyssä toiminto, syötteet ja olennainen lopputulos. Sisällytä koodikyselyyn katkelma, jonka logiikalle etsit vastaavuutta, ja selitä hakua koskevat olennaiset ehdot. Uudelleenyritysten käsittelyä koskeva haku voi esimerkiksi täsmentää, yrittääkö asianomainen koodi uudelleen aikakatkaisun vai kokonaisen virhevastauksen jälkeen. Tarkista tämä ero löytyneestä lähdekoodista ennen kuin käytät sitä muutoksessa.\n\nSäilytä dokumentaation ja lähdekoodin jäljitettävyys, kun molemmat indeksoidaan. Selittävä katkelma voi tarjota hyödyllistä taustaa, mutta toteutus on aineisto, joka kehittäjän on tarkistettava. Merkitse nämä tietuetyypit, jotta hakusivu voi näyttää oikean kohteen ja koodiavustaja erottaa kuvauksen suoritettavasta lähdekoodista.\n\nKäytä löytyneitä katkelmia taustatietona koodivarastossa liikkumiseen, toteutusten löytämiseen tai koodiavustajan seuraavaan vaiheeseen. Säilytä koko olennainen katkelma ja sen sijainti, kun välität sen eteenpäin. Samankaltaisuus auttaa löytämään ehdokaskoodia; todellisten syötteiden, sivuvaikutusten ja sopimusten tarkistaminen ratkaisee, vastaako ehdokas nykyiseen ongelmaan.\n\nArvioi hakua todellisilla kysymyksillä, joiden lähdevastaukset tunnetaan. Sisällytä uudelleennimettyjä funktioita, harhaanjohtavia kommentteja, samankaltaisia apurutiineja, joiden reunatapaukset poikkeavat toisistaan, ja kyselyjä, joiden sanastoa ei esiinny koodissa. Tarkista, löytyykö odotettu toteutus hyödyllisten tulosten joukosta ja antaako näytettävä katkelma riittävästi taustaa sen arvioimiseen. Säilytä nämä kysymykset koodivaraston kasvaessa, jotta poiminnan, katkelmien rajausten ja indeksoinnin muutoksia voidaan vertailla samoilla tehtävillä.",
    "about_sha256": "02443af503f57362991a7f624a9b2b777836a591a3816de5330425a291427ffb",
    "alias_of": null,
    "aliases": [],
    "author": "Voyage AI",
    "capabilities": {
      "context_length": 16000,
      "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 2",
    "formats": [
      "embeddings"
    ],
    "id": "voyage-code-2",
    "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-2"
                ],
                "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-2"
                  ],
                  "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-2"
              },
              "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-2\",\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-2",
        "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-2",
        "request_model_id": "voyage-code-2",
        "route_label": "Ultra"
      }
    ],
    "name": "Voyage AI: Voyage Code 2",
    "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 2 vektoroi lähdekoodin ja siihen liittyvän tekstin semanttista koodivarastohakua varten. Luonnollisen kielen kysymykset, koodikatkelmat tai niitä yhdistävät kyselyt voivat löytää olennaisia toteutuksia; tämä versio käyttää 16000 tokenin konteksti-ikkunaa ja 1536-ulotteisia vektoreita.",
    "short_sha256": "392f5ff2471da11418d1ad1c0971fff44fb348ff0d8d619073b3d78c51bb9acb"
  },
  "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 2 vektoroi lähdekoodin ja siihen liittyvän tekstin semanttista koodivarastohakua varten. Luonnollisen kielen kysymykset, koodikatkelmat tai niitä yhdistävät kyselyt voivat löytää olennaisia toteutuksia; tämä versio käyttää 16000 tokenin konteksti-ikkunaa ja 1536-ulotteisia vektoreita.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "b7f05ac7ac8bc7903260436765858b5cea37b39af81e527fe90d775f4958ee34",
    "renderer_sha256": "303a59603e2bc29ba8fda690e95fd32cec68de223d92e26054a88babff801dd7"
  },
  "sourceRevision": "bdc7fec724ec585bfbe900f7b37ef04d1cdab4020dc87a65845161f76c151e70"
}
