{
  "aboutHtml": "<h4>Delovni model dolgotrajnega procesa</h4><p>Nemotron 3.5 Lightning je namenjen samostojnim agentom in zaporedjem dejanj, ki se nadaljujejo skozi več korakov. Uporablja se tudi pri pogovornih pomočnikih, iskanju na podlagi dokumentov in izvajanju navodil. Vhod in izhod sta besedilna.</p><h4>Arhitektura in kontekst</h4><p>Hibridna mešanica ekspertov združuje Mamba-2 in ločene plasti pozornosti. Model skupno vsebuje 30 milijard parametrov, aktivne pa so 3 milijarde na token. Kontekst dosega milijon tokenov.</p><p>Plasti za napovedovanje več naslednjih tokenov se dodatno učijo usklajevati svoje predloge s porazdelitvijo glavnega modela. Skupaj z izdajo so predstavljeni načini špekulativnega dekodiranja. Pomagajo organizirati ustvarjanje, vendar ne določajo zagotovljene hitrosti zahteve.</p><h4>Pet stopenj priprave</h4><ol><li>Predhodno učenje na več kot 20 bilijonih tokenov kode, matematike, znanosti in splošnega znanja s pripravo v formatu NVFP4.</li><li>Nadaljevanje predhodnega učenja plasti za napovedovanje več prihodnjih tokenov: njihovi predlogi se uskladijo s porazdelitvijo glavnega modela.</li><li>Učenje po primerih, vključno z navodili, klici orodij, strukturiranimi rezultati, iskanjem oddaljenih odsekov in združevanjem dokumentov.</li><li>Spodbujevalno učenje v več okoljih za sklepanje, kodo, znanost, večstopenjske naloge z orodji in pogovor.</li><li>Naknadno numerično stiskanje objavljene različice.</li></ol><p>Zadnja stopnja opisuje konkretno izdajo proizvajalca in ne določa natančnosti izračunov strežene zahteve. V zunanjem procesu model predlaga dejanja in besedilni rezultat; orodja izvede aplikacija.</p><h4>Jeziki in različice</h4><p>Uradno so navedeni angleščina, španščina, francoščina, nemščina, italijanščina in japonščina ter programski jeziki. Za predhodno učenje je navedena meja podatkov do septembra 2025, za nadaljnje pa do maja 2026.</p><p>Značilnosti objavljene izdaje z numeričnim stiskanjem opisujejo prav to različico. Iz imena modela ni mogoče določiti natančnosti izračunov konkretne izvedbe. Milijon tokenov je skupni kontekst in ne ločena obljuba izhodne dolžine.</p>",
  "aboutText": "### Delovni model dolgotrajnega procesa\n\nNemotron 3.5 Lightning je namenjen samostojnim agentom in zaporedjem dejanj, ki se nadaljujejo skozi več korakov. Uporablja se tudi pri pogovornih pomočnikih, iskanju na podlagi dokumentov in izvajanju navodil. Vhod in izhod sta besedilna.\n\n### Arhitektura in kontekst\n\nHibridna mešanica ekspertov združuje Mamba-2 in ločene plasti pozornosti. Model skupno vsebuje 30 milijard parametrov, aktivne pa so 3 milijarde na token. Kontekst dosega milijon tokenov.\n\nPlasti za napovedovanje več naslednjih tokenov se dodatno učijo usklajevati svoje predloge s porazdelitvijo glavnega modela. Skupaj z izdajo so predstavljeni načini špekulativnega dekodiranja. Pomagajo organizirati ustvarjanje, vendar ne določajo zagotovljene hitrosti zahteve.\n\n### Pet stopenj priprave\n\n1. Predhodno učenje na več kot 20 bilijonih tokenov kode, matematike, znanosti in splošnega znanja s pripravo v formatu NVFP4.\n2. Nadaljevanje predhodnega učenja plasti za napovedovanje več prihodnjih tokenov: njihovi predlogi se uskladijo s porazdelitvijo glavnega modela.\n3. Učenje po primerih, vključno z navodili, klici orodij, strukturiranimi rezultati, iskanjem oddaljenih odsekov in združevanjem dokumentov.\n4. Spodbujevalno učenje v več okoljih za sklepanje, kodo, znanost, večstopenjske naloge z orodji in pogovor.\n5. Naknadno numerično stiskanje objavljene različice.\n\nZadnja stopnja opisuje konkretno izdajo proizvajalca in ne določa natančnosti izračunov strežene zahteve. V zunanjem procesu model predlaga dejanja in besedilni rezultat; orodja izvede aplikacija.\n\n### Jeziki in različice\n\nUradno so navedeni angleščina, španščina, francoščina, nemščina, italijanščina in japonščina ter programski jeziki. Za predhodno učenje je navedena meja podatkov do septembra 2025, za nadaljnje pa do maja 2026.\n\nZnačilnosti objavljene izdaje z numeričnim stiskanjem opisujejo prav to različico. Iz imena modela ni mogoče določiti natančnosti izračunov konkretne izvedbe. Milijon tokenov je skupni kontekst in ne ločena obljuba izhodne dolžine.",
  "editorialOverlay": {
    "copy_fields": {
      "practical_html": "<h3>Praktična naloga</h3><p>Tehnični primer v angleščini</p><pre><code>Apply a document-grounded procedure\n\nUse these procedure excerpts to draft the next action for case C-09. [Rule 1] Packages with a damaged seal go to inspection. [Rule 2] Only inspection-cleared packages enter stock. [Record] C-09 has a damaged seal and no inspection result. Return the current permitted step, blocked step and supporting rule labels.</code></pre><h4>Pričakovani rezultat</h4><pre><code>Three concise fields covering the permitted inspection step, blocked stocking and source evidence.</code></pre><h4>Preverjanje rezultata</h4><pre><code>Check that missing inspection clearance prevents stocking and does not become an assumed failed inspection.</code></pre>"
    },
    "copy_sha256": "eddb8006cc27541050e88e34632f3e4c6e50159b8fb55aa4f8b3df9f086201ba",
    "copy_source": {
      "locale": "sl",
      "pack_sha256": "0f56d90ba41881e1134accf82e57338f246f8753ca4c0cee929aaffada5d10e7",
      "record_model_id": "nvidia/nemotron-3.5-lightning-30b-a3b",
      "source_facts_sha256": "5b3d9175547d78c6e01d06c5dd9390e8d7ca45f08bd1485092702bb079d89eb9",
      "validation_sha256": "a2ac2f28056280fc0b2ea34a501bf156d5ce155406e57e708edf30bfdf6bfdc6"
    },
    "html_sha256": "c64cba161af1cdaf6dbe7fb6753dd3cbbb8dc250a322bbabcf2d6b48b377c61b",
    "module_sha256": "ee9dc1c50b1e6a8fb7fa062030fcb4646b9aaaeb08be513b723a5a92a7290f06",
    "raw_model_unchanged": true,
    "schema": "ailoot-native-model-editorial-v1"
  },
  "locale": "sl",
  "methods": [
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">NV</span><h2 id=\"sheet-title\">Nemotron 3.5 Lightning 30B A3B</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Zapri\">×</button></div><div class=\"idline\"><span>NVIDIA /</span><code>nvidia/nemotron-3.5-lightning-30b-a3b</code><button type=\"button\" id=\"copy-id\">Kopiraj ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Razdelki kartice modela\"><button type=\"button\" data-card-jump=\"overview\">Začetek</button><button type=\"button\" data-card-jump=\"methods\">Vhodi in metode</button><button type=\"button\" data-card-jump=\"pricing\">Cenik</button><button type=\"button\" data-card-jump=\"examples\">Primeri</button><button type=\"button\" data-card-jump=\"results\">Rezultati</button><button type=\"button\" data-card-jump=\"aliases\">Druga imena</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Metode API\"><button type=\"button\" role=\"tab\" tabindex=\"-1\" aria-controls=\"card-method-content\" aria-selected=\"false\" id=\"card-method-tab-0\" data-card-method=\"Core|chat|/v1/chat/completions|nvidia%2Fnemotron-3.5-lightning-30b-a3b\">Chat</button><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-1\" data-card-method=\"Core|messages|/v1/messages|nvidia%2Fnemotron-3.5-lightning-30b-a3b\">Messages</button></div><div id=\"card-method-content\" role=\"tabpanel\" aria-labelledby=\"card-method-tab-1\"><section class=\"card-section\" data-card-section=\"overview\"><h3 tabindex=\"-1\">Začetek</h3><p class=\"mdesc-full\">Nemotron 3.5 Lightning je besedilni model družbe NVIDIA za dolgotrajne agentske naloge, programiranje, iskanje po dokumentih in pogovor.</p><dl class=\"card-io\" data-card-io><div><dt>Dovoljeni vhodi</dt><dd>Besedilo</dd></div><div><dt>Rezultati</dt><dd>Besedilo</dd></div></dl><details class=\"card-about\"><summary>O modelu</summary><p class=\"note-s\" data-model-method-boundary>Ta opis zajema zmožnosti modela. Vhodi, izhodi in možnosti, ki so na voljo v Ailoot, so spodaj navedeni za izbrano metodo.</p><div class=\"mabout\" id=\"m-about\"><h4>Delovni model dolgotrajnega procesa</h4><p>Nemotron 3.5 Lightning je namenjen samostojnim agentom in zaporedjem dejanj, ki se nadaljujejo skozi več korakov. Uporablja se tudi pri pogovornih pomočnikih, iskanju na podlagi dokumentov in izvajanju navodil. Vhod in izhod sta besedilna.</p><h4>Arhitektura in kontekst</h4><p>Hibridna mešanica ekspertov združuje Mamba-2 in ločene plasti pozornosti. Model skupno vsebuje 30 milijard parametrov, aktivne pa so 3 milijarde na token. Kontekst dosega milijon tokenov.</p><p>Plasti za napovedovanje več naslednjih tokenov se dodatno učijo usklajevati svoje predloge s porazdelitvijo glavnega modela. Skupaj z izdajo so predstavljeni načini špekulativnega dekodiranja. Pomagajo organizirati ustvarjanje, vendar ne določajo zagotovljene hitrosti zahteve.</p><h4>Pet stopenj priprave</h4><ol><li>Predhodno učenje na več kot 20 bilijonih tokenov kode, matematike, znanosti in splošnega znanja s pripravo v formatu NVFP4.</li><li>Nadaljevanje predhodnega učenja plasti za napovedovanje več prihodnjih tokenov: njihovi predlogi se uskladijo s porazdelitvijo glavnega modela.</li><li>Učenje po primerih, vključno z navodili, klici orodij, strukturiranimi rezultati, iskanjem oddaljenih odsekov in združevanjem dokumentov.</li><li>Spodbujevalno učenje v več okoljih za sklepanje, kodo, znanost, večstopenjske naloge z orodji in pogovor.</li><li>Naknadno numerično stiskanje objavljene različice.</li></ol><p>Zadnja stopnja opisuje konkretno izdajo proizvajalca in ne določa natančnosti izračunov strežene zahteve. V zunanjem procesu model predlaga dejanja in besedilni rezultat; orodja izvede aplikacija.</p><h4>Jeziki in različice</h4><p>Uradno so navedeni angleščina, španščina, francoščina, nemščina, italijanščina in japonščina ter programski jeziki. Za predhodno učenje je navedena meja podatkov do septembra 2025, za nadaljnje pa do maja 2026.</p><p>Značilnosti objavljene izdaje z numeričnim stiskanjem opisujejo prav to različico. Iz imena modela ni mogoče določiti natančnosti izračunov konkretne izvedbe. Milijon tokenov je skupni kontekst in ne ločena obljuba izhodne dolžine.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Na voljo v Ailoot · vhodi in metode</h3><details class=\"card-method\" open><summary><b>Ailoot · Anthropic Messages</b> <code>POST /v1/messages</code></summary><dl class=\"method-capabilities\"><div><dt>Vhod</dt><dd><code>text</code></dd></div><div><dt>Izhod</dt><dd><code>text</code></dd></div><div><dt>Kontekst</dt><dd>262.144 tokens</dd></div><div><dt>Največji izhod</dt><dd>32.768 tokens</dd></div><div><dt>Izhodni format</dt><dd>json ali SSE</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Polje</th><th>Vrsta</th><th>Zahteva</th><th>Vrednosti in omejitve</th><th>Privzeto</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Obvezno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>nvidia/nemotron-3.5-lightning-30b-a3b</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">messages</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>message[]</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Obvezno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>Najmanjše število elementov: 1</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">messages[].role</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Obvezno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>user, assistant</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">messages[].content</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string|content_block[]</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Obvezno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">system</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string|content_block[]</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">max_tokens</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>integer</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Obvezno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>Najmanj: 1</div><div>Omejitev velja za: natančna zgornja meja izbranega modela/kartice</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">stream</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>boolean</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span></td><td data-cell-label=\"Privzeto\" data-default=\"known\"><span class=\"card-cell-label\">Privzeto</span>false</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">temperature</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>number</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">top_p</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>number</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">stop_sequences</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string[]</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">tools</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>tool[]</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">tools[].name</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>Velja, ko: podano je orodje</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">tools[].description</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">tools[].input_schema</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>JSON_schema</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">tool_choice</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>object</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">thinking.type</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">thinking.budget_tokens</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>integer</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">output_config.effort</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">metadata</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>object</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">cache_control</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>object</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Kombinacije vhodnih gradiv</summary><p class=\"note-s\"><b>Besedilo</b> · Besedilo UTF8</p><p class=\"note-s\"><code>messages[].content ali blok type=text</code></p></details><details class=\"note-s\" data-method-contract><summary>Parametri in življenjski cikel metode</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Specifikacija</th></tr></thead><tbody><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>material_types</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>text</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>required</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>model, messages, max_tokens</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>optional_controls</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>null</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>content_type</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>application/json</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>text_file_material</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>dejanska vsebina UTF-8 je vstavljena kot besedilo; ID datotek in URLs potrebujejo ločeno, natančno določeno podporo</td></tr></tbody></table></div><p>Življenjski cikel: <code>exact retained published method</code></p><p class=\"note-s\">Strukture metod in ID so natančno določeni; zmožnost ponudnika je ločena od sprejema zahteve.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Cenik</h3><h4>Cene metod Ailoot</h4><section class=\"meth\" data-route=\"Core\"><header><b><span class=\"alias\">Ailoot</span> Anthropic Messages</b><code>POST /v1/messages</code></header><dl><div><dt>Vhod</dt><dd>0,00008 $ <em>/ 1K</em></dd></div><div><dt>Izhod</dt><dd>0,0002 $ <em>/ 1K</em></dd></div><div><dt>Branje predpomnilnika</dt><dd>0,00008 $ <em>/ 1K</em></dd></div><div><dt>Zapis v predpomnilnik</dt><dd>0,00008 $ <em>/ 1K</em></dd></div><div><dt>Zapis v predpomnilnik, 5 min</dt><dd>0,00008 $ <em>/ 1K tokens</em></dd></div></dl></section><p class=\"note-s\">Ailoot pred zahtevo rezervira ocenjeni znesek. Po rezultatu obračuna končni strošek na podlagi izmerjene porabe. Obračun pretakanja uporablja končni zapis porabe. <a href=\"/docs/sl/billing/reserve/\">Kako delujeta rezervacija in obračun →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Primeri zahtev</h3><h4>Ailoot · Anthropic Messages</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Primeri kode\"><button class=\"cg-tab\" id=\"model-code-553-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-553-panel-0\" aria-selected=\"true\" tabindex=\"0\">Primer besedila</button><button class=\"cg-tab\" id=\"model-code-553-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-553-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Python SDK</button><button class=\"cg-tab\" id=\"model-code-553-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-553-panel-2\" aria-selected=\"false\" tabindex=\"-1\">Node.js SDK</button><button class=\"cg-tab\" id=\"model-code-553-tab-3\" role=\"tab\" type=\"button\" aria-controls=\"model-code-553-panel-3\" aria-selected=\"false\" tabindex=\"-1\">Tok Python</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopiraj kodo\"><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-553-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-553-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}&quot;\nexport AILOOT_TEXT_FILE\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;nvidia/nemotron-3.5-lightning-30b-a3b&quot;, &quot;max_tokens&quot;: 1024, &quot;messages&quot;: []}&#39;)\nf=Path(os.environ[&quot;AILOOT_TEXT_FILE&quot;])\nif not f.is_file():raise SystemExit(&quot;Choose your actual UTF-8 source material&quot;)\ntext=f.read_text(encoding=&quot;utf-8&quot;)\nif not text.strip():raise SystemExit(&quot;Source material must contain text&quot;)\np[&quot;messages&quot;]=[{&quot;role&quot;:&quot;user&quot;,&quot;content&quot;:&quot;Summarize this material and quote supporting source passages.\\n\\n&quot;+text}]\nPath(&quot;request.json&quot;).write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \\\n  -H &quot;x-api-key: $AILOOT_API_KEY&quot; -H &#39;anthropic-version: 2023-06-01&#39; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(&quot;result.json&quot;).read_text()),ensure_ascii=False,indent=2))\nPY_RESULT\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-553-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-553-tab-1\" hidden><pre data-lang=\"python\"><code>import anthropic\nimport os\n\nif not os.environ.get(&quot;AILOOT_API_KEY&quot;, &quot;&quot;).strip(): raise SystemExit(&quot;Set AILOOT_API_KEY before making a request&quot;)\nclient = anthropic.Anthropic(base_url=&quot;https://api.ailoot.ai&quot;, api_key=os.environ[&quot;AILOOT_API_KEY&quot;], max_retries=0)\nmsg = client.messages.create(\n    model=&quot;nvidia/nemotron-3.5-lightning-30b-a3b&quot;,\n    max_tokens=1024,\n    messages=[{&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: &quot;Explain the difference between an observation and a hypothesis in three sentences.&quot;}],\n)\nimport base64, json\nfrom pathlib import Path\n\ndef save_result(data, stem=&quot;result&quot;):\n    # Keep every field, including usage, IDs, reasoning and tool requests.\n    Path(stem + &quot;.json&quot;).write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding=&quot;utf-8&quot;)\n    print(json.dumps(data, ensure_ascii=False, indent=2))\n    def save_blob(encoded, suffix, label):\n        raw = base64.b64decode(encoded, altchars=b&quot;-_&quot;, validate=True)\n        ext = &quot;png&quot; if raw.startswith(b&quot;\\x89PNG\\r\\n\\x1a\\n&quot;) else &quot;jpg&quot; if raw.startswith(b&quot;\\xff\\xd8&quot;) else &quot;webp&quot; if raw[:4] == b&quot;RIFF&quot; and raw[8:12] == b&quot;WEBP&quot; else suffix\n        file = Path(stem + &quot;-&quot; + label + &quot;.&quot; + ext)\n        file.write_bytes(raw)\n        print(&quot;Saved&quot;, file)\n    for index, block in enumerate(data.get(&quot;content&quot;) or []):\n        print(&quot;Content&quot;, index, json.dumps(block, ensure_ascii=False))\n    for choice in data.get(&quot;choices&quot;) or []:\n        print(&quot;Choice&quot;, choice.get(&quot;index&quot;), json.dumps(choice.get(&quot;message&quot;, choice.get(&quot;delta&quot;, {})), ensure_ascii=False))\n    for index, item in enumerate(data.get(&quot;output&quot;) or []):\n        print(&quot;Output&quot;, index, json.dumps(item, ensure_ascii=False))\n        if item.get(&quot;type&quot;) == &quot;image_generation_call&quot; and item.get(&quot;result&quot;):\n            save_blob(item[&quot;result&quot;], item.get(&quot;output_format&quot;) or &quot;bin&quot;, &quot;output-&quot; + str(index))\n    for ci, candidate in enumerate(data.get(&quot;candidates&quot;) or []):\n        for pi, part in enumerate((candidate.get(&quot;content&quot;) or {}).get(&quot;parts&quot;) or []):\n            print(&quot;Candidate/part&quot;, ci, pi, json.dumps(part, ensure_ascii=False))\n            blob = part.get(&quot;inlineData&quot;) or part.get(&quot;inline_data&quot;)\n            if blob and blob.get(&quot;data&quot;):\n                mime = blob.get(&quot;mimeType&quot;) or blob.get(&quot;mime_type&quot;)\n                suffix = {&quot;image/png&quot;:&quot;png&quot;, &quot;image/jpeg&quot;:&quot;jpg&quot;, &quot;image/webp&quot;:&quot;webp&quot;, &quot;audio/wav&quot;:&quot;wav&quot;, &quot;audio/mpeg&quot;:&quot;mp3&quot;, &quot;video/mp4&quot;:&quot;mp4&quot;}.get(mime, &quot;bin&quot;)\n                save_blob(blob[&quot;data&quot;], suffix, &quot;candidate-&quot; + str(ci) + &quot;-part-&quot; + str(pi))\n\nsave_result(msg.to_dict(mode=&quot;json&quot;))\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-553-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-553-tab-2\" hidden><pre data-lang=\"js\"><code>import Anthropic from &quot;@anthropic-ai/sdk&quot;;\n\nif (!process.env.AILOOT_API_KEY?.trim()) throw new Error(&quot;Set AILOOT_API_KEY before making a request&quot;);\nconst client = new Anthropic({ baseURL: &quot;https://api.ailoot.ai&quot;, apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });\nconst msg = await client.messages.create({\n  model: &quot;nvidia/nemotron-3.5-lightning-30b-a3b&quot;,\n  max_tokens: 1024,\n  messages: [{ role: &quot;user&quot;, content: &quot;Explain the difference between an observation and a hypothesis in three sentences.&quot; }],\n});\nimport { writeFileSync } from &quot;node:fs&quot;;\n\nfunction saveResult(data, stem = &quot;result&quot;) {\n  writeFileSync(stem + &quot;.json&quot;, JSON.stringify(data, null, 2));\n  console.log(JSON.stringify(data, null, 2));\n  const saveBlob = (encoded, suffix, label) =&gt; {\n    const raw = Buffer.from(encoded, &quot;base64&quot;);\n    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? &quot;png&quot; : raw[0]===255 &amp;&amp; raw[1]===216 ? &quot;jpg&quot; : raw.subarray(0,4).toString()===&quot;RIFF&quot; &amp;&amp; raw.subarray(8,12).toString()===&quot;WEBP&quot; ? &quot;webp&quot; : suffix;\n    const file = `${stem}-${label}.${ext}`;\n    writeFileSync(file, raw); console.log(&quot;Saved&quot;, file);\n  };\n  for (const [i, block] of (data.content || []).entries()) console.log(&quot;Content&quot;, i, JSON.stringify(block));\n  for (const choice of data.choices || []) console.log(&quot;Choice&quot;, choice.index, JSON.stringify(choice.message || choice.delta || {}));\n  for (const [i, item] of (data.output || []).entries()) {\n    console.log(&quot;Output&quot;, i, JSON.stringify(item));\n    if (item.type === &quot;image_generation_call&quot; &amp;&amp; item.result) saveBlob(item.result, item.output_format || &quot;bin&quot;, `output-${i}`);\n  }\n  for (const [ci, candidate] of (data.candidates || []).entries()) {\n    for (const [pi, part] of (candidate.content?.parts || []).entries()) {\n      console.log(&quot;Candidate/part&quot;, ci, pi, JSON.stringify(part));\n      const blob = part.inlineData || part.inline_data;\n      if (blob?.data) {\n        const mime = blob.mimeType || blob.mime_type;\n        const suffix = ({&quot;image/png&quot;:&quot;png&quot;, &quot;image/jpeg&quot;:&quot;jpg&quot;, &quot;image/webp&quot;:&quot;webp&quot;, &quot;audio/wav&quot;:&quot;wav&quot;, &quot;audio/mpeg&quot;:&quot;mp3&quot;, &quot;video/mp4&quot;:&quot;mp4&quot;})[mime] || &quot;bin&quot;;\n        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);\n      }\n    }\n  }\n}\n\nsaveResult(msg);\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-553-panel-3\" role=\"tabpanel\" aria-labelledby=\"model-code-553-tab-3\" hidden><pre data-lang=\"python\"><code>import anthropic,os\nfrom pathlib import Path\n\nif not os.environ.get(&quot;AILOOT_API_KEY&quot;, &quot;&quot;).strip(): raise SystemExit(&quot;Set AILOOT_API_KEY before making a request&quot;)\nclient=anthropic.Anthropic(base_url=&quot;https://api.ailoot.ai&quot;,api_key=os.environ[&quot;AILOOT_API_KEY&quot;],max_retries=0)\nimport base64, json\nfrom pathlib import Path\n\ndef save_result(data, stem=&quot;result&quot;):\n    # Keep every field, including usage, IDs, reasoning and tool requests.\n    Path(stem + &quot;.json&quot;).write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding=&quot;utf-8&quot;)\n    print(json.dumps(data, ensure_ascii=False, indent=2))\n    def save_blob(encoded, suffix, label):\n        raw = base64.b64decode(encoded, altchars=b&quot;-_&quot;, validate=True)\n        ext = &quot;png&quot; if raw.startswith(b&quot;\\x89PNG\\r\\n\\x1a\\n&quot;) else &quot;jpg&quot; if raw.startswith(b&quot;\\xff\\xd8&quot;) else &quot;webp&quot; if raw[:4] == b&quot;RIFF&quot; and raw[8:12] == b&quot;WEBP&quot; else suffix\n        file = Path(stem + &quot;-&quot; + label + &quot;.&quot; + ext)\n        file.write_bytes(raw)\n        print(&quot;Saved&quot;, file)\n    for index, block in enumerate(data.get(&quot;content&quot;) or []):\n        print(&quot;Content&quot;, index, json.dumps(block, ensure_ascii=False))\n    for choice in data.get(&quot;choices&quot;) or []:\n        print(&quot;Choice&quot;, choice.get(&quot;index&quot;), json.dumps(choice.get(&quot;message&quot;, choice.get(&quot;delta&quot;, {})), ensure_ascii=False))\n    for index, item in enumerate(data.get(&quot;output&quot;) or []):\n        print(&quot;Output&quot;, index, json.dumps(item, ensure_ascii=False))\n        if item.get(&quot;type&quot;) == &quot;image_generation_call&quot; and item.get(&quot;result&quot;):\n            save_blob(item[&quot;result&quot;], item.get(&quot;output_format&quot;) or &quot;bin&quot;, &quot;output-&quot; + str(index))\n    for ci, candidate in enumerate(data.get(&quot;candidates&quot;) or []):\n        for pi, part in enumerate((candidate.get(&quot;content&quot;) or {}).get(&quot;parts&quot;) or []):\n            print(&quot;Candidate/part&quot;, ci, pi, json.dumps(part, ensure_ascii=False))\n            blob = part.get(&quot;inlineData&quot;) or part.get(&quot;inline_data&quot;)\n            if blob and blob.get(&quot;data&quot;):\n                mime = blob.get(&quot;mimeType&quot;) or blob.get(&quot;mime_type&quot;)\n                suffix = {&quot;image/png&quot;:&quot;png&quot;, &quot;image/jpeg&quot;:&quot;jpg&quot;, &quot;image/webp&quot;:&quot;webp&quot;, &quot;audio/wav&quot;:&quot;wav&quot;, &quot;audio/mpeg&quot;:&quot;mp3&quot;, &quot;video/mp4&quot;:&quot;mp4&quot;}.get(mime, &quot;bin&quot;)\n                save_blob(blob[&quot;data&quot;], suffix, &quot;candidate-&quot; + str(ci) + &quot;-part-&quot; + str(pi))\n\nwith client.messages.stream(model=&#39;nvidia/nemotron-3.5-lightning-30b-a3b&#39;,max_tokens=1024,messages=[{&quot;role&quot;:&quot;user&quot;,&quot;content&quot;:&quot;Explain observations and hypotheses in three sentences.&quot;}]) as stream:\n    with Path(&quot;stream-events.jsonl&quot;).open(&quot;w&quot;,encoding=&quot;utf-8&quot;) as log:\n        for event in stream:\n            payload=event.to_dict(mode=&quot;json&quot;)\n            log.write(json.dumps(payload,ensure_ascii=False)+&quot;\\n&quot;); log.flush()\n            print(json.dumps(payload,ensure_ascii=False))\n    final=stream.get_final_message()\n    save_result(final.to_dict(mode=&quot;json&quot;),&quot;stream-result&quot;)\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Prejmi in shrani rezultate</h3><h4>Ailoot · Anthropic Messages</h4><p class=\"note-s\">json ali SSE</p><div class=\"card-result-process\" data-all-results><h5>Ohrani vse dokončane rezultate</h5><p class=\"note-s\">Shranite vsak v celoti vrnjen odgovor, datoteko in del vsebine.</p><p class=\"note-s\">Ohranite vse vsebinske bloke, podpise sklepanja in dejanske ID uporabe orodij. Sestavite vse delne spremembe blokov SSE; prvi besedilni blok ni celoten izhod.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Če je treba preveriti izvirni odgovor</h5><p class=\"note-s\">Ohranite ID zahtev/odgovorov in glave. Splošni URL za pridobivanje besedilne naloge ni podan.</p></div><details class=\"card-about\" data-output-fields><summary>Polja odgovora</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Polje</th><th>Vrsta</th></tr></thead><tbody><tr><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">id</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span>string</td></tr><tr><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span>string</td></tr><tr><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">content[]</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span>text|thinking|tool_use|other content block</td></tr><tr><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">stop_reason</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span>string|null</td></tr><tr><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span>object</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Napake in naslednji koraki</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Odgovor</th><th>Pogoj</th><th>Naslednji korak</th></tr></thead><tbody><tr><th data-cell-label=\"Odgovor\" scope=\"row\"><span class=\"card-cell-label\">Odgovor</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Pogoj\"><span class=\"card-cell-label\">Pogoj</span>Neveljavna obvezna polja, predstavitev gradiva ali vrednost parametra</td><td data-cell-label=\"Naslednji korak\"><span class=\"card-cell-label\">Naslednji korak</span>Pred novo zahtevo za ustvarjanje popravite navedena polja.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Druga imena</h3><h4>Druga imena modelov</h4><p class=\"note-s\"><span data-model-alias-route=\"Core\"><b>Ailoot</b> <a href=\"#m=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;route=Core&amp;caller=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;fmt=messages\"><code>nvidia/nemotron-3.5-lightning-30b-a3b</code></a>, <a href=\"#m=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;route=Core&amp;caller=nemotron-lightning\"><code>nemotron-lightning</code></a>, <a href=\"#m=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;route=Core&amp;caller=nemotron-lightning-latest\"><code>nemotron-lightning-latest</code></a></span></p><h4>Druga imena poti metod</h4><p class=\"note-s\">Uporabite zgoraj navedene poti metod.</p><h4>Povezani ID-ji za klic</h4><p class=\"note-s\"><a href=\"#m=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;route=Core&amp;caller=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;fmt=messages\"><code>nvidia/nemotron-3.5-lightning-30b-a3b</code></a>, <a href=\"#m=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;route=Core&amp;caller=nemotron-lightning\"><code>nemotron-lightning</code></a>, <a href=\"#m=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;route=Core&amp;caller=nemotron-lightning-latest\"><code>nemotron-lightning-latest</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "nvidia/nemotron-3.5-lightning-30b-a3b",
        "fmt": "messages",
        "http": "POST",
        "path": "/v1/messages",
        "request_model_id": "nvidia/nemotron-3.5-lightning-30b-a3b",
        "route_label": "Core"
      },
      "method_key": "Core|messages|/v1/messages|nvidia%2Fnemotron-3.5-lightning-30b-a3b",
      "ordinal": 0,
      "rawMethod": {
        "cache_read": 0.08,
        "cache_write": 0.08,
        "cache_write_1h": null,
        "cache_write_5m": 0.08,
        "conditional_meter": null,
        "contract": {
          "data": {
            "all_results": "Keep all content blocks, thinking signatures and actual tool-use IDs. Assemble all SSE block deltas; a first text block is not the complete output.",
            "authentication": {
              "api_key_source": "AILOOT_API_KEY",
              "headers": [
                "x-api-key",
                "anthropic-version"
              ],
              "version_example": "2023-06-01"
            },
            "errors": [
              {
                "code": null,
                "condition": "Neveljavna obvezna polja, predstavitev gradiva ali vrednost parametra",
                "http_status": 400,
                "recovery": "Pred novo zahtevo za ustvarjanje popravite navedena polja.",
                "type": "invalid_request_error"
              }
            ],
            "hints": [
              "Model context is not an output cap.",
              "A model-dependent field needs the exact published model profile; unspecified defaults/enums are not guessed.",
              "Tool calls propose actions; the client application returns actual observations with the returned call ID."
            ],
            "ignored_fields": [],
            "lifecycle": {
              "create": {
                "http": "POST",
                "path": "/v1/messages"
              },
              "job_read": null,
              "mode": "synchronous_or_streamed",
              "unknown": "Ohranite ID zahtev/odgovorov in glave. Splošni URL za pridobivanje besedilne naloge ni podan."
            },
            "material_combinations": [
              {
                "mode": "text",
                "representation": "messages[].content ali blok type=text",
                "required_material": "Besedilo UTF8"
              }
            ],
            "operation_modes": [
              "conversation",
              "function_tool_continuation",
              "streaming"
            ],
            "outputs": {
              "all_results": "Ohranite vse vsebinske bloke, podpise sklepanja in dejanske ID uporabe orodij. Sestavite vse delne spremembe blokov SSE; prvi besedilni blok ni celoten izhod.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "content[]",
                  "type": "text|thinking|tool_use|other content block"
                },
                {
                  "description": null,
                  "name": "stop_reason",
                  "type": "string|null"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                }
              ],
              "format": "json ali SSE"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "nvidia/nemotron-3.5-lightning-30b-a3b"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_items": 1,
                "name": "messages",
                "required": true,
                "type": "message[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "user",
                  "assistant"
                ],
                "enum_known": true,
                "name": "messages[].role",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].content",
                "required": true,
                "type": "string|content_block[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "system",
                "required": false,
                "type": "string|content_block[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "limit_scope": "natančna zgornja meja izbranega modela/kartice",
                "minimum": 1,
                "name": "max_tokens",
                "required": true,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": false,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "stream",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "temperature",
                "required": false,
                "type": "number"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "top_p",
                "required": false,
                "type": "number"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "stop_sequences",
                "required": false,
                "type": "string[]"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools",
                "required": false,
                "type": "tool[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].name",
                "required": false,
                "type": "string",
                "when": "podano je orodje"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].description",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].input_schema",
                "required": false,
                "type": "JSON_schema"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tool_choice",
                "required": false,
                "type": "object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "thinking.type",
                "required": false,
                "type": "string"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "thinking.budget_tokens",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "output_config.effort",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "metadata",
                "required": false,
                "type": "object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "cache_control",
                "required": false,
                "type": "object"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": []
          },
          "hints": [
            "Strukture metod in ID so natančno določeni; zmožnost ponudnika je ločena od sprejema zahteve."
          ],
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional_controls": null,
            "required": [
              "model",
              "messages",
              "max_tokens"
            ],
            "text_file_material": "dejanska vsebina UTF-8 je vstavljena kot besedilo; ID datotek in URLs potrebujejo ločeno, natančno določeno podporo"
          },
          "lifecycle": {
            "mode": "exact retained published method"
          },
          "method": {
            "http": "POST",
            "path": "/v1/messages"
          },
          "operation_modes": [
            "messages"
          ],
          "output": {
            "family": [
              "text"
            ],
            "format": "JSON or supported SSE",
            "multioutputs": "retain every actual response output"
          }
        },
        "ctx": 262144,
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}\"\nexport AILOOT_TEXT_FILE\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"nvidia/nemotron-3.5-lightning-30b-a3b\", \"max_tokens\": 1024, \"messages\": []}')\nf=Path(os.environ[\"AILOOT_TEXT_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose your actual UTF-8 source material\")\ntext=f.read_text(encoding=\"utf-8\")\nif not text.strip():raise SystemExit(\"Source material must contain text\")\np[\"messages\"]=[{\"role\":\"user\",\"content\":\"Summarize this material and quote supporting source passages.\\n\\n\"+text}]\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \\\n  -H \"x-api-key: $AILOOT_API_KEY\" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"result.json\").read_text()),ensure_ascii=False,indent=2))\nPY_RESULT\n",
            "label": "Use actual text material",
            "language": "bash"
          },
          {
            "code": "import anthropic\nimport os\n\nif not os.environ.get(\"AILOOT_API_KEY\", \"\").strip(): raise SystemExit(\"Set AILOOT_API_KEY before making a request\")\nclient = anthropic.Anthropic(base_url=\"https://api.ailoot.ai\", api_key=os.environ[\"AILOOT_API_KEY\"], max_retries=0)\nmsg = client.messages.create(\n    model=\"nvidia/nemotron-3.5-lightning-30b-a3b\",\n    max_tokens=1024,\n    messages=[{\"role\": \"user\", \"content\": \"Explain the difference between an observation and a hypothesis in three sentences.\"}],\n)\nimport base64, json\nfrom pathlib import Path\n\ndef save_result(data, stem=\"result\"):\n    # Keep every field, including usage, IDs, reasoning and tool requests.\n    Path(stem + \".json\").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding=\"utf-8\")\n    print(json.dumps(data, ensure_ascii=False, indent=2))\n    def save_blob(encoded, suffix, label):\n        raw = base64.b64decode(encoded, altchars=b\"-_\", validate=True)\n        ext = \"png\" if raw.startswith(b\"\\x89PNG\\r\\n\\x1a\\n\") else \"jpg\" if raw.startswith(b\"\\xff\\xd8\") else \"webp\" if raw[:4] == b\"RIFF\" and raw[8:12] == b\"WEBP\" else suffix\n        file = Path(stem + \"-\" + label + \".\" + ext)\n        file.write_bytes(raw)\n        print(\"Saved\", file)\n    for index, block in enumerate(data.get(\"content\") or []):\n        print(\"Content\", index, json.dumps(block, ensure_ascii=False))\n    for choice in data.get(\"choices\") or []:\n        print(\"Choice\", choice.get(\"index\"), json.dumps(choice.get(\"message\", choice.get(\"delta\", {})), ensure_ascii=False))\n    for index, item in enumerate(data.get(\"output\") or []):\n        print(\"Output\", index, json.dumps(item, ensure_ascii=False))\n        if item.get(\"type\") == \"image_generation_call\" and item.get(\"result\"):\n            save_blob(item[\"result\"], item.get(\"output_format\") or \"bin\", \"output-\" + str(index))\n    for ci, candidate in enumerate(data.get(\"candidates\") or []):\n        for pi, part in enumerate((candidate.get(\"content\") or {}).get(\"parts\") or []):\n            print(\"Candidate/part\", ci, pi, json.dumps(part, ensure_ascii=False))\n            blob = part.get(\"inlineData\") or part.get(\"inline_data\")\n            if blob and blob.get(\"data\"):\n                mime = blob.get(\"mimeType\") or blob.get(\"mime_type\")\n                suffix = {\"image/png\":\"png\", \"image/jpeg\":\"jpg\", \"image/webp\":\"webp\", \"audio/wav\":\"wav\", \"audio/mpeg\":\"mp3\", \"video/mp4\":\"mp4\"}.get(mime, \"bin\")\n                save_blob(blob[\"data\"], suffix, \"candidate-\" + str(ci) + \"-part-\" + str(pi))\n\nsave_result(msg.to_dict(mode=\"json\"))\n",
            "label": "Python · retained SDK call",
            "language": "python"
          },
          {
            "SDK_retry_proof": {
              "field": "maxRetries",
              "scope": "normalclient options; no provider/account/proxy switches",
              "source_urls": [
                "https://raw.githubusercontent.com/openai/openai-node/master/src/client.ts",
                "https://raw.githubusercontent.com/anthropics/anthropic-sdk-typescript/main/src/client.ts"
              ],
              "value": 0
            },
            "code": "import Anthropic from \"@anthropic-ai/sdk\";\n\nif (!process.env.AILOOT_API_KEY?.trim()) throw new Error(\"Set AILOOT_API_KEY before making a request\");\nconst client = new Anthropic({ baseURL: \"https://api.ailoot.ai\", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });\nconst msg = await client.messages.create({\n  model: \"nvidia/nemotron-3.5-lightning-30b-a3b\",\n  max_tokens: 1024,\n  messages: [{ role: \"user\", content: \"Explain the difference between an observation and a hypothesis in three sentences.\" }],\n});\nimport { writeFileSync } from \"node:fs\";\n\nfunction saveResult(data, stem = \"result\") {\n  writeFileSync(stem + \".json\", JSON.stringify(data, null, 2));\n  console.log(JSON.stringify(data, null, 2));\n  const saveBlob = (encoded, suffix, label) => {\n    const raw = Buffer.from(encoded, \"base64\");\n    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? \"png\" : raw[0]===255 && raw[1]===216 ? \"jpg\" : raw.subarray(0,4).toString()===\"RIFF\" && raw.subarray(8,12).toString()===\"WEBP\" ? \"webp\" : suffix;\n    const file = `${stem}-${label}.${ext}`;\n    writeFileSync(file, raw); console.log(\"Saved\", file);\n  };\n  for (const [i, block] of (data.content || []).entries()) console.log(\"Content\", i, JSON.stringify(block));\n  for (const choice of data.choices || []) console.log(\"Choice\", choice.index, JSON.stringify(choice.message || choice.delta || {}));\n  for (const [i, item] of (data.output || []).entries()) {\n    console.log(\"Output\", i, JSON.stringify(item));\n    if (item.type === \"image_generation_call\" && item.result) saveBlob(item.result, item.output_format || \"bin\", `output-${i}`);\n  }\n  for (const [ci, candidate] of (data.candidates || []).entries()) {\n    for (const [pi, part] of (candidate.content?.parts || []).entries()) {\n      console.log(\"Candidate/part\", ci, pi, JSON.stringify(part));\n      const blob = part.inlineData || part.inline_data;\n      if (blob?.data) {\n        const mime = blob.mimeType || blob.mime_type;\n        const suffix = ({\"image/png\":\"png\", \"image/jpeg\":\"jpg\", \"image/webp\":\"webp\", \"audio/wav\":\"wav\", \"audio/mpeg\":\"mp3\", \"video/mp4\":\"mp4\"})[mime] || \"bin\";\n        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);\n      }\n    }\n  }\n}\n\nsaveResult(msg);\n",
            "label": "Node.js · retained SDK call",
            "language": "js"
          },
          {
            "code": "import anthropic,os\nfrom pathlib import Path\n\nif not os.environ.get(\"AILOOT_API_KEY\", \"\").strip(): raise SystemExit(\"Set AILOOT_API_KEY before making a request\")\nclient=anthropic.Anthropic(base_url=\"https://api.ailoot.ai\",api_key=os.environ[\"AILOOT_API_KEY\"],max_retries=0)\nimport base64, json\nfrom pathlib import Path\n\ndef save_result(data, stem=\"result\"):\n    # Keep every field, including usage, IDs, reasoning and tool requests.\n    Path(stem + \".json\").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding=\"utf-8\")\n    print(json.dumps(data, ensure_ascii=False, indent=2))\n    def save_blob(encoded, suffix, label):\n        raw = base64.b64decode(encoded, altchars=b\"-_\", validate=True)\n        ext = \"png\" if raw.startswith(b\"\\x89PNG\\r\\n\\x1a\\n\") else \"jpg\" if raw.startswith(b\"\\xff\\xd8\") else \"webp\" if raw[:4] == b\"RIFF\" and raw[8:12] == b\"WEBP\" else suffix\n        file = Path(stem + \"-\" + label + \".\" + ext)\n        file.write_bytes(raw)\n        print(\"Saved\", file)\n    for index, block in enumerate(data.get(\"content\") or []):\n        print(\"Content\", index, json.dumps(block, ensure_ascii=False))\n    for choice in data.get(\"choices\") or []:\n        print(\"Choice\", choice.get(\"index\"), json.dumps(choice.get(\"message\", choice.get(\"delta\", {})), ensure_ascii=False))\n    for index, item in enumerate(data.get(\"output\") or []):\n        print(\"Output\", index, json.dumps(item, ensure_ascii=False))\n        if item.get(\"type\") == \"image_generation_call\" and item.get(\"result\"):\n            save_blob(item[\"result\"], item.get(\"output_format\") or \"bin\", \"output-\" + str(index))\n    for ci, candidate in enumerate(data.get(\"candidates\") or []):\n        for pi, part in enumerate((candidate.get(\"content\") or {}).get(\"parts\") or []):\n            print(\"Candidate/part\", ci, pi, json.dumps(part, ensure_ascii=False))\n            blob = part.get(\"inlineData\") or part.get(\"inline_data\")\n            if blob and blob.get(\"data\"):\n                mime = blob.get(\"mimeType\") or blob.get(\"mime_type\")\n                suffix = {\"image/png\":\"png\", \"image/jpeg\":\"jpg\", \"image/webp\":\"webp\", \"audio/wav\":\"wav\", \"audio/mpeg\":\"mp3\", \"video/mp4\":\"mp4\"}.get(mime, \"bin\")\n                save_blob(blob[\"data\"], suffix, \"candidate-\" + str(ci) + \"-part-\" + str(pi))\n\nwith client.messages.stream(model='nvidia/nemotron-3.5-lightning-30b-a3b',max_tokens=1024,messages=[{\"role\":\"user\",\"content\":\"Explain observations and hypotheses in three sentences.\"}]) as stream:\n    with Path(\"stream-events.jsonl\").open(\"w\",encoding=\"utf-8\") as log:\n        for event in stream:\n            payload=event.to_dict(mode=\"json\")\n            log.write(json.dumps(payload,ensure_ascii=False)+\"\\n\"); log.flush()\n            print(json.dumps(payload,ensure_ascii=False))\n    final=stream.get_final_message()\n    save_result(final.to_dict(mode=\"json\"),\"stream-result\")\n",
            "label": "Python streaming · complete final message",
            "language": "python"
          }
        ],
        "family": "anthropic",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "messages",
        "http": "POST",
        "img_in": null,
        "img_out": null,
        "in": 0.08,
        "input": [
          "text"
        ],
        "label": "Anthropic Messages",
        "max_out": 32768,
        "max_tool_calls": null,
        "out": 0.2,
        "output": [
          "text"
        ],
        "path": "/v1/messages",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "in",
                "label": "Input",
                "side": "in"
              },
              {
                "amount": 0.2,
                "amount_unit": "usd_per_million_tokens",
                "key": "out",
                "label": "Output",
                "side": "out"
              },
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "cache_read",
                "label": "Cache read",
                "side": "in"
              },
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "cache_write",
                "label": "Cache write",
                "side": "in"
              },
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "cache_write_5m",
                "label": "Cache write 5m",
                "side": "in"
              }
            ]
          }
        ],
        "request_model_id": "nvidia/nemotron-3.5-lightning-30b-a3b",
        "route_label": "Core",
        "status_reads": [],
        "tiers": [],
        "tool_prices": null,
        "unit": "token",
        "units": []
      }
    },
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">NV</span><h2 id=\"sheet-title\">Nemotron 3.5 Lightning 30B A3B</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Zapri\">×</button></div><div class=\"idline\"><span>NVIDIA /</span><code>nvidia/nemotron-3.5-lightning-30b-a3b</code><button type=\"button\" id=\"copy-id\">Kopiraj ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Razdelki kartice modela\"><button type=\"button\" data-card-jump=\"overview\">Začetek</button><button type=\"button\" data-card-jump=\"methods\">Vhodi in metode</button><button type=\"button\" data-card-jump=\"pricing\">Cenik</button><button type=\"button\" data-card-jump=\"examples\">Primeri</button><button type=\"button\" data-card-jump=\"results\">Rezultati</button><button type=\"button\" data-card-jump=\"aliases\">Druga imena</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Metode API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Core|chat|/v1/chat/completions|nvidia%2Fnemotron-3.5-lightning-30b-a3b\">Chat</button><button type=\"button\" role=\"tab\" tabindex=\"-1\" aria-controls=\"card-method-content\" aria-selected=\"false\" id=\"card-method-tab-1\" data-card-method=\"Core|messages|/v1/messages|nvidia%2Fnemotron-3.5-lightning-30b-a3b\">Messages</button></div><div class=\"idline\"><label for=\"card-model-id\">ID modela</label><select class=\"sel\" id=\"card-model-id\" style=\"min-width:0;max-width:100%\"><option value=\"Core|chat|/v1/chat/completions|nvidia%2Fnemotron-3.5-lightning-30b-a3b\" selected>nvidia/nemotron-3.5-lightning-30b-a3b</option><option value=\"Core|chat|/v1/chat/completions|nemotron-lightning\">nemotron-lightning</option><option value=\"Core|chat|/v1/chat/completions|nemotron-lightning-latest\">nemotron-lightning-latest</option></select></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\">Začetek</h3><p class=\"mdesc-full\">Nemotron 3.5 Lightning je besedilni model družbe NVIDIA za dolgotrajne agentske naloge, programiranje, iskanje po dokumentih in pogovor.</p><dl class=\"card-io\" data-card-io><div><dt>Dovoljeni vhodi</dt><dd>Besedilo</dd></div><div><dt>Rezultati</dt><dd>Besedilo</dd></div></dl><details class=\"card-about\"><summary>O modelu</summary><p class=\"note-s\" data-model-method-boundary>Ta opis zajema zmožnosti modela. Vhodi, izhodi in možnosti, ki so na voljo v Ailoot, so spodaj navedeni za izbrano metodo.</p><div class=\"mabout\" id=\"m-about\"><h4>Delovni model dolgotrajnega procesa</h4><p>Nemotron 3.5 Lightning je namenjen samostojnim agentom in zaporedjem dejanj, ki se nadaljujejo skozi več korakov. Uporablja se tudi pri pogovornih pomočnikih, iskanju na podlagi dokumentov in izvajanju navodil. Vhod in izhod sta besedilna.</p><h4>Arhitektura in kontekst</h4><p>Hibridna mešanica ekspertov združuje Mamba-2 in ločene plasti pozornosti. Model skupno vsebuje 30 milijard parametrov, aktivne pa so 3 milijarde na token. Kontekst dosega milijon tokenov.</p><p>Plasti za napovedovanje več naslednjih tokenov se dodatno učijo usklajevati svoje predloge s porazdelitvijo glavnega modela. Skupaj z izdajo so predstavljeni načini špekulativnega dekodiranja. Pomagajo organizirati ustvarjanje, vendar ne določajo zagotovljene hitrosti zahteve.</p><h4>Pet stopenj priprave</h4><ol><li>Predhodno učenje na več kot 20 bilijonih tokenov kode, matematike, znanosti in splošnega znanja s pripravo v formatu NVFP4.</li><li>Nadaljevanje predhodnega učenja plasti za napovedovanje več prihodnjih tokenov: njihovi predlogi se uskladijo s porazdelitvijo glavnega modela.</li><li>Učenje po primerih, vključno z navodili, klici orodij, strukturiranimi rezultati, iskanjem oddaljenih odsekov in združevanjem dokumentov.</li><li>Spodbujevalno učenje v več okoljih za sklepanje, kodo, znanost, večstopenjske naloge z orodji in pogovor.</li><li>Naknadno numerično stiskanje objavljene različice.</li></ol><p>Zadnja stopnja opisuje konkretno izdajo proizvajalca in ne določa natančnosti izračunov strežene zahteve. V zunanjem procesu model predlaga dejanja in besedilni rezultat; orodja izvede aplikacija.</p><h4>Jeziki in različice</h4><p>Uradno so navedeni angleščina, španščina, francoščina, nemščina, italijanščina in japonščina ter programski jeziki. Za predhodno učenje je navedena meja podatkov do septembra 2025, za nadaljnje pa do maja 2026.</p><p>Značilnosti objavljene izdaje z numeričnim stiskanjem opisujejo prav to različico. Iz imena modela ni mogoče določiti natančnosti izračunov konkretne izvedbe. Milijon tokenov je skupni kontekst in ne ločena obljuba izhodne dolžine.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Na voljo v Ailoot · vhodi in metode</h3><details class=\"card-method\" open><summary><b>Ailoot · OpenAI Chat</b> <code>POST /v1/chat/completions</code></summary><dl class=\"method-capabilities\"><div><dt>Vhod</dt><dd><code>text</code></dd></div><div><dt>Izhod</dt><dd><code>text</code></dd></div><div><dt>Kontekst</dt><dd>4096 tokens</dd></div><div><dt>Največji izhod</dt><dd>1024 tokens</dd></div><div><dt>Izhodni format</dt><dd>json ali SSE</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Polje</th><th>Vrsta</th><th>Zahteva</th><th>Vrednosti in omejitve</th><th>Privzeto</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Obvezno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>nvidia/nemotron-3.5-lightning-30b-a3b</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">messages</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>message[]</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Obvezno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>Najmanjše število elementov: 1</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">messages[].role</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Obvezno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>Primeri: system, user, assistant, tool, function</div><div>Pogoji: Te vloge so izrecno predstavljene s tipi združljivosti v izvorni kodi; natančen nabor vlog ostaja odvisen od modela.</div><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">messages[].content</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string|content_part[]|null</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">messages[].tool_calls</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>tool_call[]</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">messages[].tool_call_id</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>Velja, ko: role=tool; uporabite dejansko vrnjeni ID</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">messages[].name</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">messages[].reasoning_content</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>Velja, ko: Pošljite nazaj dejansko vrnjeno sklepanje, kadar ga ta model uporablja</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">messages[].reasoning_details</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>object|array</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">max_tokens</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>integer</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>Najmanj: 1</div><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">max_completion_tokens</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>integer</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>Najmanj: 1</div><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">stream</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>boolean</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span></td><td data-cell-label=\"Privzeto\" data-default=\"known\"><span class=\"card-cell-label\">Privzeto</span>false</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">stream_options.include_usage</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>boolean</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">temperature</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>number</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">top_p</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>number</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">stop</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string|string[]</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">tools</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>function_tool[]</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">tools[].type</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">tools[].function.name</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Obvezno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>Velja, ko: podano je funkcijsko orodje</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">tools[].function.description</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">tools[].function.parameters</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>JSON_schema</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">tool_choice</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string|object</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">parallel_tool_calls</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>boolean</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">response_format</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>object</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">reasoning_effort</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">reasoning</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>object</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">service_tier</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_compatibility\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">instructions</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Polje združljivosti</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">functions</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>function[]</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">function_call</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string|object</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">prompt_cache_options</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>object</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Kombinacije vhodnih gradiv</summary><p class=\"note-s\"><b>Besedilo</b> · Besedilo UTF8</p><p class=\"note-s\"><code>messages[].content</code></p></details><details class=\"note-s\" data-method-contract><summary>Parametri in življenjski cikel metode</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Specifikacija</th></tr></thead><tbody><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>material_types</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>text</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>required</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>model, messages</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>optional_controls</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>null</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>content_type</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>application/json</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>text_file_material</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>dejanska vsebina UTF-8 je vstavljena kot besedilo; ID datotek in URLs potrebujejo ločeno, natančno določeno podporo</td></tr></tbody></table></div><p>Življenjski cikel: <code>exact retained published method</code></p><p class=\"note-s\">Strukture metod in ID so natančno določeni; zmožnost ponudnika je ločena od sprejema zahteve.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Cenik</h3><h4>Cene metod Ailoot</h4><section class=\"meth\" data-route=\"Core\"><header><b><span class=\"alias\">Ailoot</span> OpenAI Chat</b><code>POST /v1/chat/completions</code></header><dl><div><dt>Vhod</dt><dd>0,00008 $ <em>/ 1K</em></dd></div><div><dt>Izhod</dt><dd>0,0002 $ <em>/ 1K</em></dd></div><div><dt>Branje predpomnilnika</dt><dd>0,00008 $ <em>/ 1K</em></dd></div><div><dt>Zapis v predpomnilnik</dt><dd>0,00008 $ <em>/ 1K</em></dd></div><div><dt>Zapis v predpomnilnik, 5 min</dt><dd>0,00008 $ <em>/ 1K tokens</em></dd></div></dl></section><p class=\"note-s\">Ailoot pred zahtevo rezervira ocenjeni znesek. Po rezultatu obračuna končni strošek na podlagi izmerjene porabe. Obračun pretakanja uporablja končni zapis porabe. <a href=\"/docs/sl/billing/reserve/\">Kako delujeta rezervacija in obračun →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Primeri zahtev</h3><h4>Ailoot · OpenAI Chat</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Primeri kode\"><button class=\"cg-tab\" id=\"model-code-554-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-554-panel-0\" aria-selected=\"true\" tabindex=\"0\">Primer besedila</button><button class=\"cg-tab\" id=\"model-code-554-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-554-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Python SDK</button><button class=\"cg-tab\" id=\"model-code-554-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-554-panel-2\" aria-selected=\"false\" tabindex=\"-1\">Node.js SDK</button><button class=\"cg-tab\" id=\"model-code-554-tab-3\" role=\"tab\" type=\"button\" aria-controls=\"model-code-554-panel-3\" aria-selected=\"false\" tabindex=\"-1\">Tok Python</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopiraj kodo\"><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-554-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-554-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}&quot;\nexport AILOOT_TEXT_FILE\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;nvidia/nemotron-3.5-lightning-30b-a3b&quot;, &quot;messages&quot;: []}&#39;)\nf=Path(os.environ[&quot;AILOOT_TEXT_FILE&quot;])\nif not f.is_file():raise SystemExit(&quot;Choose your actual UTF-8 source material&quot;)\ntext=f.read_text(encoding=&quot;utf-8&quot;)\nif not text.strip():raise SystemExit(&quot;Source material must contain text&quot;)\np[&quot;messages&quot;]=[{&quot;role&quot;:&quot;user&quot;,&quot;content&quot;:&quot;Summarize this material and quote supporting source passages.\\n\\n&quot;+text}]\nPath(&quot;request.json&quot;).write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(&quot;result.json&quot;).read_text()),ensure_ascii=False,indent=2))\nPY_RESULT\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-554-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-554-tab-1\" hidden><pre data-lang=\"python\"><code>from openai import OpenAI\nimport os\n\nif not os.environ.get(&quot;AILOOT_API_KEY&quot;, &quot;&quot;).strip(): raise SystemExit(&quot;Set AILOOT_API_KEY before making a request&quot;)\nclient = OpenAI(base_url=&quot;https://api.ailoot.ai/v1&quot;, api_key=os.environ[&quot;AILOOT_API_KEY&quot;], max_retries=0)\nresp = client.chat.completions.create(\n    model=&quot;nvidia/nemotron-3.5-lightning-30b-a3b&quot;,\n    messages=[{&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: &quot;Explain the difference between an observation and a hypothesis in three sentences.&quot;}],\n)\nimport base64, json\nfrom pathlib import Path\n\ndef save_result(data, stem=&quot;result&quot;):\n    # Keep every field, including usage, IDs, reasoning and tool requests.\n    Path(stem + &quot;.json&quot;).write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding=&quot;utf-8&quot;)\n    print(json.dumps(data, ensure_ascii=False, indent=2))\n    def save_blob(encoded, suffix, label):\n        raw = base64.b64decode(encoded, altchars=b&quot;-_&quot;, validate=True)\n        ext = &quot;png&quot; if raw.startswith(b&quot;\\x89PNG\\r\\n\\x1a\\n&quot;) else &quot;jpg&quot; if raw.startswith(b&quot;\\xff\\xd8&quot;) else &quot;webp&quot; if raw[:4] == b&quot;RIFF&quot; and raw[8:12] == b&quot;WEBP&quot; else suffix\n        file = Path(stem + &quot;-&quot; + label + &quot;.&quot; + ext)\n        file.write_bytes(raw)\n        print(&quot;Saved&quot;, file)\n    for index, block in enumerate(data.get(&quot;content&quot;) or []):\n        print(&quot;Content&quot;, index, json.dumps(block, ensure_ascii=False))\n    for choice in data.get(&quot;choices&quot;) or []:\n        print(&quot;Choice&quot;, choice.get(&quot;index&quot;), json.dumps(choice.get(&quot;message&quot;, choice.get(&quot;delta&quot;, {})), ensure_ascii=False))\n    for index, item in enumerate(data.get(&quot;output&quot;) or []):\n        print(&quot;Output&quot;, index, json.dumps(item, ensure_ascii=False))\n        if item.get(&quot;type&quot;) == &quot;image_generation_call&quot; and item.get(&quot;result&quot;):\n            save_blob(item[&quot;result&quot;], item.get(&quot;output_format&quot;) or &quot;bin&quot;, &quot;output-&quot; + str(index))\n    for ci, candidate in enumerate(data.get(&quot;candidates&quot;) or []):\n        for pi, part in enumerate((candidate.get(&quot;content&quot;) or {}).get(&quot;parts&quot;) or []):\n            print(&quot;Candidate/part&quot;, ci, pi, json.dumps(part, ensure_ascii=False))\n            blob = part.get(&quot;inlineData&quot;) or part.get(&quot;inline_data&quot;)\n            if blob and blob.get(&quot;data&quot;):\n                mime = blob.get(&quot;mimeType&quot;) or blob.get(&quot;mime_type&quot;)\n                suffix = {&quot;image/png&quot;:&quot;png&quot;, &quot;image/jpeg&quot;:&quot;jpg&quot;, &quot;image/webp&quot;:&quot;webp&quot;, &quot;audio/wav&quot;:&quot;wav&quot;, &quot;audio/mpeg&quot;:&quot;mp3&quot;, &quot;video/mp4&quot;:&quot;mp4&quot;}.get(mime, &quot;bin&quot;)\n                save_blob(blob[&quot;data&quot;], suffix, &quot;candidate-&quot; + str(ci) + &quot;-part-&quot; + str(pi))\n\nsave_result(resp.to_dict(mode=&quot;json&quot;))\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-554-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-554-tab-2\" hidden><pre data-lang=\"js\"><code>import OpenAI from &quot;openai&quot;;\n\nif (!process.env.AILOOT_API_KEY?.trim()) throw new Error(&quot;Set AILOOT_API_KEY before making a request&quot;);\nconst client = new OpenAI({ baseURL: &quot;https://api.ailoot.ai/v1&quot;, apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });\nconst resp = await client.chat.completions.create({\n  model: &quot;nvidia/nemotron-3.5-lightning-30b-a3b&quot;,\n  messages: [{ role: &quot;user&quot;, content: &quot;Explain the difference between an observation and a hypothesis in three sentences.&quot; }],\n});\nimport { writeFileSync } from &quot;node:fs&quot;;\n\nfunction saveResult(data, stem = &quot;result&quot;) {\n  writeFileSync(stem + &quot;.json&quot;, JSON.stringify(data, null, 2));\n  console.log(JSON.stringify(data, null, 2));\n  const saveBlob = (encoded, suffix, label) =&gt; {\n    const raw = Buffer.from(encoded, &quot;base64&quot;);\n    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? &quot;png&quot; : raw[0]===255 &amp;&amp; raw[1]===216 ? &quot;jpg&quot; : raw.subarray(0,4).toString()===&quot;RIFF&quot; &amp;&amp; raw.subarray(8,12).toString()===&quot;WEBP&quot; ? &quot;webp&quot; : suffix;\n    const file = `${stem}-${label}.${ext}`;\n    writeFileSync(file, raw); console.log(&quot;Saved&quot;, file);\n  };\n  for (const [i, block] of (data.content || []).entries()) console.log(&quot;Content&quot;, i, JSON.stringify(block));\n  for (const choice of data.choices || []) console.log(&quot;Choice&quot;, choice.index, JSON.stringify(choice.message || choice.delta || {}));\n  for (const [i, item] of (data.output || []).entries()) {\n    console.log(&quot;Output&quot;, i, JSON.stringify(item));\n    if (item.type === &quot;image_generation_call&quot; &amp;&amp; item.result) saveBlob(item.result, item.output_format || &quot;bin&quot;, `output-${i}`);\n  }\n  for (const [ci, candidate] of (data.candidates || []).entries()) {\n    for (const [pi, part] of (candidate.content?.parts || []).entries()) {\n      console.log(&quot;Candidate/part&quot;, ci, pi, JSON.stringify(part));\n      const blob = part.inlineData || part.inline_data;\n      if (blob?.data) {\n        const mime = blob.mimeType || blob.mime_type;\n        const suffix = ({&quot;image/png&quot;:&quot;png&quot;, &quot;image/jpeg&quot;:&quot;jpg&quot;, &quot;image/webp&quot;:&quot;webp&quot;, &quot;audio/wav&quot;:&quot;wav&quot;, &quot;audio/mpeg&quot;:&quot;mp3&quot;, &quot;video/mp4&quot;:&quot;mp4&quot;})[mime] || &quot;bin&quot;;\n        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);\n      }\n    }\n  }\n}\n\nsaveResult(resp);\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-554-panel-3\" role=\"tabpanel\" aria-labelledby=\"model-code-554-tab-3\" hidden><pre data-lang=\"python\"><code>from openai import OpenAI\nimport os\nfrom pathlib import Path\n\nif not os.environ.get(&quot;AILOOT_API_KEY&quot;, &quot;&quot;).strip(): raise SystemExit(&quot;Set AILOOT_API_KEY before making a request&quot;)\nclient=OpenAI(base_url=&quot;https://api.ailoot.ai/v1&quot;,api_key=os.environ[&quot;AILOOT_API_KEY&quot;],max_retries=0)\nimport base64, json\nfrom pathlib import Path\n\ndef save_result(data, stem=&quot;result&quot;):\n    # Keep every field, including usage, IDs, reasoning and tool requests.\n    Path(stem + &quot;.json&quot;).write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding=&quot;utf-8&quot;)\n    print(json.dumps(data, ensure_ascii=False, indent=2))\n    def save_blob(encoded, suffix, label):\n        raw = base64.b64decode(encoded, altchars=b&quot;-_&quot;, validate=True)\n        ext = &quot;png&quot; if raw.startswith(b&quot;\\x89PNG\\r\\n\\x1a\\n&quot;) else &quot;jpg&quot; if raw.startswith(b&quot;\\xff\\xd8&quot;) else &quot;webp&quot; if raw[:4] == b&quot;RIFF&quot; and raw[8:12] == b&quot;WEBP&quot; else suffix\n        file = Path(stem + &quot;-&quot; + label + &quot;.&quot; + ext)\n        file.write_bytes(raw)\n        print(&quot;Saved&quot;, file)\n    for index, block in enumerate(data.get(&quot;content&quot;) or []):\n        print(&quot;Content&quot;, index, json.dumps(block, ensure_ascii=False))\n    for choice in data.get(&quot;choices&quot;) or []:\n        print(&quot;Choice&quot;, choice.get(&quot;index&quot;), json.dumps(choice.get(&quot;message&quot;, choice.get(&quot;delta&quot;, {})), ensure_ascii=False))\n    for index, item in enumerate(data.get(&quot;output&quot;) or []):\n        print(&quot;Output&quot;, index, json.dumps(item, ensure_ascii=False))\n        if item.get(&quot;type&quot;) == &quot;image_generation_call&quot; and item.get(&quot;result&quot;):\n            save_blob(item[&quot;result&quot;], item.get(&quot;output_format&quot;) or &quot;bin&quot;, &quot;output-&quot; + str(index))\n    for ci, candidate in enumerate(data.get(&quot;candidates&quot;) or []):\n        for pi, part in enumerate((candidate.get(&quot;content&quot;) or {}).get(&quot;parts&quot;) or []):\n            print(&quot;Candidate/part&quot;, ci, pi, json.dumps(part, ensure_ascii=False))\n            blob = part.get(&quot;inlineData&quot;) or part.get(&quot;inline_data&quot;)\n            if blob and blob.get(&quot;data&quot;):\n                mime = blob.get(&quot;mimeType&quot;) or blob.get(&quot;mime_type&quot;)\n                suffix = {&quot;image/png&quot;:&quot;png&quot;, &quot;image/jpeg&quot;:&quot;jpg&quot;, &quot;image/webp&quot;:&quot;webp&quot;, &quot;audio/wav&quot;:&quot;wav&quot;, &quot;audio/mpeg&quot;:&quot;mp3&quot;, &quot;video/mp4&quot;:&quot;mp4&quot;}.get(mime, &quot;bin&quot;)\n                save_blob(blob[&quot;data&quot;], suffix, &quot;candidate-&quot; + str(ci) + &quot;-part-&quot; + str(pi))\n\nwith client.chat.completions.stream(model=&#39;nvidia/nemotron-3.5-lightning-30b-a3b&#39;,messages=[{&quot;role&quot;:&quot;user&quot;,&quot;content&quot;:&quot;Explain observations and hypotheses in three sentences.&quot;}]) as stream:\n    with Path(&quot;stream-events.jsonl&quot;).open(&quot;w&quot;,encoding=&quot;utf-8&quot;) as log:\n        for event in stream:\n            payload=event.to_dict(mode=&quot;json&quot;)\n            log.write(json.dumps(payload,ensure_ascii=False)+&quot;\\n&quot;); log.flush()\n            print(json.dumps(payload,ensure_ascii=False))\n    final=stream.get_final_completion()\n    save_result(final.to_dict(mode=&quot;json&quot;),&quot;stream-result&quot;)\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Prejmi in shrani rezultate</h3><h4>Ailoot · OpenAI Chat</h4><p class=\"note-s\">json ali SSE</p><div class=\"card-result-process\" data-all-results><h5>Ohrani vse dokončane rezultate</h5><p class=\"note-s\">Shranite vsak v celoti vrnjen odgovor, datoteko in del vsebine.</p><p class=\"note-s\">Ohranite vsako možnost odgovora ter njeno vsebino, klice orodij in sklepanje. V SSE sestavite delne spremembe po indeksu možnosti/orodja ter ohranite končni razlog zaključka in podatke o porabi.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Če je treba preveriti izvirni odgovor</h5><p class=\"note-s\">Ohranite ID zahtev/odgovorov in glave. Splošni URL za pridobivanje besedilne naloge ni podan.</p></div><details class=\"card-about\" data-output-fields><summary>Polja odgovora</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Polje</th><th>Vrsta</th></tr></thead><tbody><tr><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">choices[].index</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span>integer</td></tr><tr><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">choices[].message.content</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span>string|null</td></tr><tr><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">choices[].message.tool_calls</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span>tool_call[]</td></tr><tr><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">choices[].message.reasoning_content</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span>string</td></tr><tr><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">choices[].message.reasoning_details</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span>object|array</td></tr><tr><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">choices[].finish_reason</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span>string|null</td></tr><tr><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span>object</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Napake in naslednji koraki</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Odgovor</th><th>Pogoj</th><th>Naslednji korak</th></tr></thead><tbody><tr><th data-cell-label=\"Odgovor\" scope=\"row\"><span class=\"card-cell-label\">Odgovor</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Pogoj\"><span class=\"card-cell-label\">Pogoj</span>Neveljavna obvezna polja, predstavitev gradiva ali vrednost parametra</td><td data-cell-label=\"Naslednji korak\"><span class=\"card-cell-label\">Naslednji korak</span>Pred novo zahtevo za ustvarjanje popravite navedena polja.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Druga imena</h3><h4>Druga imena modelov</h4><p class=\"note-s\"><span data-model-alias-route=\"Core\"><b>Ailoot</b> <a href=\"#m=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;route=Core&amp;caller=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;fmt=chat\"><code>nvidia/nemotron-3.5-lightning-30b-a3b</code></a>, <a href=\"#m=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;route=Core&amp;caller=nemotron-lightning&amp;fmt=chat\"><code>nemotron-lightning</code></a>, <a href=\"#m=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;route=Core&amp;caller=nemotron-lightning-latest&amp;fmt=chat\"><code>nemotron-lightning-latest</code></a></span></p><h4>Druga imena poti metod</h4><p class=\"note-s\">Uporabite zgoraj navedene poti metod.</p><h4>Povezani ID-ji za klic</h4><p class=\"note-s\"><a href=\"#m=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;route=Core&amp;caller=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;fmt=chat\"><code>nvidia/nemotron-3.5-lightning-30b-a3b</code></a>, <a href=\"#m=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;route=Core&amp;caller=nemotron-lightning&amp;fmt=chat\"><code>nemotron-lightning</code></a>, <a href=\"#m=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;route=Core&amp;caller=nemotron-lightning-latest&amp;fmt=chat\"><code>nemotron-lightning-latest</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "nvidia/nemotron-3.5-lightning-30b-a3b",
        "fmt": "chat",
        "http": "POST",
        "path": "/v1/chat/completions",
        "request_model_id": "nvidia/nemotron-3.5-lightning-30b-a3b",
        "route_label": "Core"
      },
      "method_key": "Core|chat|/v1/chat/completions|nvidia%2Fnemotron-3.5-lightning-30b-a3b",
      "ordinal": 1,
      "rawMethod": {
        "cache_read": 0.08,
        "cache_write": 0.08,
        "cache_write_1h": null,
        "cache_write_5m": 0.08,
        "conditional_meter": null,
        "contract": {
          "data": {
            "all_results": "Keep every choice and its content/tool calls/reasoning. In SSE assemble deltas by choice/tool index, retain the final finish reason and usage.",
            "authentication": {
              "api_key_source": "AILOOT_API_KEY",
              "header": "Authorization: Bearer"
            },
            "errors": [
              {
                "code": null,
                "condition": "Neveljavna obvezna polja, predstavitev gradiva ali vrednost parametra",
                "http_status": 400,
                "recovery": "Pred novo zahtevo za ustvarjanje popravite navedena polja.",
                "type": "invalid_request_error"
              }
            ],
            "hints": [
              "Model context is not an output cap.",
              "A model-dependent field needs the exact published model profile; unspecified defaults/enums are not guessed.",
              "Tool calls propose actions; the client application returns actual observations with the returned call ID."
            ],
            "ignored_fields": [],
            "lifecycle": {
              "create": {
                "http": "POST",
                "path": "/v1/chat/completions"
              },
              "job_read": null,
              "mode": "synchronous_or_streamed",
              "unknown": "Ohranite ID zahtev/odgovorov in glave. Splošni URL za pridobivanje besedilne naloge ni podan."
            },
            "material_combinations": [
              {
                "mode": "text",
                "representation": "messages[].content",
                "required_material": "Besedilo UTF8"
              }
            ],
            "operation_modes": [
              "conversation",
              "function_tool_continuation",
              "streaming"
            ],
            "outputs": {
              "all_results": "Ohranite vsako možnost odgovora ter njeno vsebino, klice orodij in sklepanje. V SSE sestavite delne spremembe po indeksu možnosti/orodja ter ohranite končni razlog zaključka in podatke o porabi.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "choices[].index",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "choices[].message.content",
                  "type": "string|null"
                },
                {
                  "description": null,
                  "name": "choices[].message.tool_calls",
                  "type": "tool_call[]"
                },
                {
                  "description": null,
                  "name": "choices[].message.reasoning_content",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "choices[].message.reasoning_details",
                  "type": "object|array"
                },
                {
                  "description": null,
                  "name": "choices[].finish_reason",
                  "type": "string|null"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                }
              ],
              "format": "json ali SSE"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "nvidia/nemotron-3.5-lightning-30b-a3b"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_items": 1,
                "name": "messages",
                "required": true,
                "type": "message[]"
              },
              {
                "availability": "model_dependent",
                "conditions": "Te vloge so izrecno predstavljene s tipi združljivosti v izvorni kodi; natančen nabor vlog ostaja odvisen od modela.",
                "default": null,
                "default_known": false,
                "enum": [
                  "system",
                  "user",
                  "assistant",
                  "tool",
                  "function"
                ],
                "enum_exhaustive": false,
                "enum_known": true,
                "name": "messages[].role",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].content",
                "required": false,
                "type": "string|content_part[]|null"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].tool_calls",
                "required": false,
                "type": "tool_call[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].tool_call_id",
                "required": false,
                "type": "string",
                "when": "role=tool; uporabite dejansko vrnjeni ID"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].name",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].reasoning_content",
                "required": false,
                "type": "string",
                "when": "Pošljite nazaj dejansko vrnjeno sklepanje, kadar ga ta model uporablja"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].reasoning_details",
                "required": false,
                "type": "object|array"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minimum": 1,
                "name": "max_tokens",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minimum": 1,
                "name": "max_completion_tokens",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": false,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "stream",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "stream_options.include_usage",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "temperature",
                "required": false,
                "type": "number"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "top_p",
                "required": false,
                "type": "number"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "stop",
                "required": false,
                "type": "string|string[]"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools",
                "required": false,
                "type": "function_tool[]"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].type",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].function.name",
                "required": true,
                "type": "string",
                "when": "podano je funkcijsko orodje"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].function.description",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].function.parameters",
                "required": false,
                "type": "JSON_schema"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tool_choice",
                "required": false,
                "type": "string|object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "parallel_tool_calls",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "response_format",
                "required": false,
                "type": "object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "reasoning_effort",
                "required": false,
                "type": "string"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "reasoning",
                "required": false,
                "type": "object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "service_tier",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_compatibility",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "instructions",
                "required": false,
                "type": "string"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "functions",
                "required": false,
                "type": "function[]"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "function_call",
                "required": false,
                "type": "string|object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "prompt_cache_options",
                "required": false,
                "type": "object"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": []
          },
          "hints": [
            "Strukture metod in ID so natančno določeni; zmožnost ponudnika je ločena od sprejema zahteve."
          ],
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional_controls": null,
            "required": [
              "model",
              "messages"
            ],
            "text_file_material": "dejanska vsebina UTF-8 je vstavljena kot besedilo; ID datotek in URLs potrebujejo ločeno, natančno določeno podporo"
          },
          "lifecycle": {
            "mode": "exact retained published method"
          },
          "method": {
            "http": "POST",
            "path": "/v1/chat/completions"
          },
          "operation_modes": [
            "chat_completions"
          ],
          "output": {
            "family": [
              "text"
            ],
            "format": "JSON or supported SSE",
            "multioutputs": "retain every actual response output"
          }
        },
        "ctx": 4096,
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}\"\nexport AILOOT_TEXT_FILE\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"nvidia/nemotron-3.5-lightning-30b-a3b\", \"messages\": []}')\nf=Path(os.environ[\"AILOOT_TEXT_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose your actual UTF-8 source material\")\ntext=f.read_text(encoding=\"utf-8\")\nif not text.strip():raise SystemExit(\"Source material must contain text\")\np[\"messages\"]=[{\"role\":\"user\",\"content\":\"Summarize this material and quote supporting source passages.\\n\\n\"+text}]\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"result.json\").read_text()),ensure_ascii=False,indent=2))\nPY_RESULT\n",
            "label": "Use actual text material",
            "language": "bash"
          },
          {
            "code": "from openai import OpenAI\nimport os\n\nif not os.environ.get(\"AILOOT_API_KEY\", \"\").strip(): raise SystemExit(\"Set AILOOT_API_KEY before making a request\")\nclient = OpenAI(base_url=\"https://api.ailoot.ai/v1\", api_key=os.environ[\"AILOOT_API_KEY\"], max_retries=0)\nresp = client.chat.completions.create(\n    model=\"nvidia/nemotron-3.5-lightning-30b-a3b\",\n    messages=[{\"role\": \"user\", \"content\": \"Explain the difference between an observation and a hypothesis in three sentences.\"}],\n)\nimport base64, json\nfrom pathlib import Path\n\ndef save_result(data, stem=\"result\"):\n    # Keep every field, including usage, IDs, reasoning and tool requests.\n    Path(stem + \".json\").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding=\"utf-8\")\n    print(json.dumps(data, ensure_ascii=False, indent=2))\n    def save_blob(encoded, suffix, label):\n        raw = base64.b64decode(encoded, altchars=b\"-_\", validate=True)\n        ext = \"png\" if raw.startswith(b\"\\x89PNG\\r\\n\\x1a\\n\") else \"jpg\" if raw.startswith(b\"\\xff\\xd8\") else \"webp\" if raw[:4] == b\"RIFF\" and raw[8:12] == b\"WEBP\" else suffix\n        file = Path(stem + \"-\" + label + \".\" + ext)\n        file.write_bytes(raw)\n        print(\"Saved\", file)\n    for index, block in enumerate(data.get(\"content\") or []):\n        print(\"Content\", index, json.dumps(block, ensure_ascii=False))\n    for choice in data.get(\"choices\") or []:\n        print(\"Choice\", choice.get(\"index\"), json.dumps(choice.get(\"message\", choice.get(\"delta\", {})), ensure_ascii=False))\n    for index, item in enumerate(data.get(\"output\") or []):\n        print(\"Output\", index, json.dumps(item, ensure_ascii=False))\n        if item.get(\"type\") == \"image_generation_call\" and item.get(\"result\"):\n            save_blob(item[\"result\"], item.get(\"output_format\") or \"bin\", \"output-\" + str(index))\n    for ci, candidate in enumerate(data.get(\"candidates\") or []):\n        for pi, part in enumerate((candidate.get(\"content\") or {}).get(\"parts\") or []):\n            print(\"Candidate/part\", ci, pi, json.dumps(part, ensure_ascii=False))\n            blob = part.get(\"inlineData\") or part.get(\"inline_data\")\n            if blob and blob.get(\"data\"):\n                mime = blob.get(\"mimeType\") or blob.get(\"mime_type\")\n                suffix = {\"image/png\":\"png\", \"image/jpeg\":\"jpg\", \"image/webp\":\"webp\", \"audio/wav\":\"wav\", \"audio/mpeg\":\"mp3\", \"video/mp4\":\"mp4\"}.get(mime, \"bin\")\n                save_blob(blob[\"data\"], suffix, \"candidate-\" + str(ci) + \"-part-\" + str(pi))\n\nsave_result(resp.to_dict(mode=\"json\"))\n",
            "label": "Python · retained SDK call",
            "language": "python"
          },
          {
            "SDK_retry_proof": {
              "field": "maxRetries",
              "scope": "normalclient options; no provider/account/proxy switches",
              "source_urls": [
                "https://raw.githubusercontent.com/openai/openai-node/master/src/client.ts",
                "https://raw.githubusercontent.com/anthropics/anthropic-sdk-typescript/main/src/client.ts"
              ],
              "value": 0
            },
            "code": "import OpenAI from \"openai\";\n\nif (!process.env.AILOOT_API_KEY?.trim()) throw new Error(\"Set AILOOT_API_KEY before making a request\");\nconst client = new OpenAI({ baseURL: \"https://api.ailoot.ai/v1\", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });\nconst resp = await client.chat.completions.create({\n  model: \"nvidia/nemotron-3.5-lightning-30b-a3b\",\n  messages: [{ role: \"user\", content: \"Explain the difference between an observation and a hypothesis in three sentences.\" }],\n});\nimport { writeFileSync } from \"node:fs\";\n\nfunction saveResult(data, stem = \"result\") {\n  writeFileSync(stem + \".json\", JSON.stringify(data, null, 2));\n  console.log(JSON.stringify(data, null, 2));\n  const saveBlob = (encoded, suffix, label) => {\n    const raw = Buffer.from(encoded, \"base64\");\n    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? \"png\" : raw[0]===255 && raw[1]===216 ? \"jpg\" : raw.subarray(0,4).toString()===\"RIFF\" && raw.subarray(8,12).toString()===\"WEBP\" ? \"webp\" : suffix;\n    const file = `${stem}-${label}.${ext}`;\n    writeFileSync(file, raw); console.log(\"Saved\", file);\n  };\n  for (const [i, block] of (data.content || []).entries()) console.log(\"Content\", i, JSON.stringify(block));\n  for (const choice of data.choices || []) console.log(\"Choice\", choice.index, JSON.stringify(choice.message || choice.delta || {}));\n  for (const [i, item] of (data.output || []).entries()) {\n    console.log(\"Output\", i, JSON.stringify(item));\n    if (item.type === \"image_generation_call\" && item.result) saveBlob(item.result, item.output_format || \"bin\", `output-${i}`);\n  }\n  for (const [ci, candidate] of (data.candidates || []).entries()) {\n    for (const [pi, part] of (candidate.content?.parts || []).entries()) {\n      console.log(\"Candidate/part\", ci, pi, JSON.stringify(part));\n      const blob = part.inlineData || part.inline_data;\n      if (blob?.data) {\n        const mime = blob.mimeType || blob.mime_type;\n        const suffix = ({\"image/png\":\"png\", \"image/jpeg\":\"jpg\", \"image/webp\":\"webp\", \"audio/wav\":\"wav\", \"audio/mpeg\":\"mp3\", \"video/mp4\":\"mp4\"})[mime] || \"bin\";\n        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);\n      }\n    }\n  }\n}\n\nsaveResult(resp);\n",
            "label": "Node.js · retained SDK call",
            "language": "js"
          },
          {
            "code": "from openai import OpenAI\nimport os\nfrom pathlib import Path\n\nif not os.environ.get(\"AILOOT_API_KEY\", \"\").strip(): raise SystemExit(\"Set AILOOT_API_KEY before making a request\")\nclient=OpenAI(base_url=\"https://api.ailoot.ai/v1\",api_key=os.environ[\"AILOOT_API_KEY\"],max_retries=0)\nimport base64, json\nfrom pathlib import Path\n\ndef save_result(data, stem=\"result\"):\n    # Keep every field, including usage, IDs, reasoning and tool requests.\n    Path(stem + \".json\").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding=\"utf-8\")\n    print(json.dumps(data, ensure_ascii=False, indent=2))\n    def save_blob(encoded, suffix, label):\n        raw = base64.b64decode(encoded, altchars=b\"-_\", validate=True)\n        ext = \"png\" if raw.startswith(b\"\\x89PNG\\r\\n\\x1a\\n\") else \"jpg\" if raw.startswith(b\"\\xff\\xd8\") else \"webp\" if raw[:4] == b\"RIFF\" and raw[8:12] == b\"WEBP\" else suffix\n        file = Path(stem + \"-\" + label + \".\" + ext)\n        file.write_bytes(raw)\n        print(\"Saved\", file)\n    for index, block in enumerate(data.get(\"content\") or []):\n        print(\"Content\", index, json.dumps(block, ensure_ascii=False))\n    for choice in data.get(\"choices\") or []:\n        print(\"Choice\", choice.get(\"index\"), json.dumps(choice.get(\"message\", choice.get(\"delta\", {})), ensure_ascii=False))\n    for index, item in enumerate(data.get(\"output\") or []):\n        print(\"Output\", index, json.dumps(item, ensure_ascii=False))\n        if item.get(\"type\") == \"image_generation_call\" and item.get(\"result\"):\n            save_blob(item[\"result\"], item.get(\"output_format\") or \"bin\", \"output-\" + str(index))\n    for ci, candidate in enumerate(data.get(\"candidates\") or []):\n        for pi, part in enumerate((candidate.get(\"content\") or {}).get(\"parts\") or []):\n            print(\"Candidate/part\", ci, pi, json.dumps(part, ensure_ascii=False))\n            blob = part.get(\"inlineData\") or part.get(\"inline_data\")\n            if blob and blob.get(\"data\"):\n                mime = blob.get(\"mimeType\") or blob.get(\"mime_type\")\n                suffix = {\"image/png\":\"png\", \"image/jpeg\":\"jpg\", \"image/webp\":\"webp\", \"audio/wav\":\"wav\", \"audio/mpeg\":\"mp3\", \"video/mp4\":\"mp4\"}.get(mime, \"bin\")\n                save_blob(blob[\"data\"], suffix, \"candidate-\" + str(ci) + \"-part-\" + str(pi))\n\nwith client.chat.completions.stream(model='nvidia/nemotron-3.5-lightning-30b-a3b',messages=[{\"role\":\"user\",\"content\":\"Explain observations and hypotheses in three sentences.\"}]) as stream:\n    with Path(\"stream-events.jsonl\").open(\"w\",encoding=\"utf-8\") as log:\n        for event in stream:\n            payload=event.to_dict(mode=\"json\")\n            log.write(json.dumps(payload,ensure_ascii=False)+\"\\n\"); log.flush()\n            print(json.dumps(payload,ensure_ascii=False))\n    final=stream.get_final_completion()\n    save_result(final.to_dict(mode=\"json\"),\"stream-result\")\n",
            "label": "Python streaming · retain all events",
            "language": "python"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "chat",
        "http": "POST",
        "img_in": null,
        "img_out": null,
        "in": 0.08,
        "input": [
          "text"
        ],
        "label": "OpenAI Chat",
        "max_out": 1024,
        "max_tool_calls": null,
        "out": 0.2,
        "output": [
          "text"
        ],
        "path": "/v1/chat/completions",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "in",
                "label": "Input",
                "side": "in"
              },
              {
                "amount": 0.2,
                "amount_unit": "usd_per_million_tokens",
                "key": "out",
                "label": "Output",
                "side": "out"
              },
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "cache_read",
                "label": "Cache read",
                "side": "in"
              },
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "cache_write",
                "label": "Cache write",
                "side": "in"
              },
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "cache_write_5m",
                "label": "Cache write 5m",
                "side": "in"
              }
            ]
          }
        ],
        "request_model_id": "nvidia/nemotron-3.5-lightning-30b-a3b",
        "route_label": "Core",
        "status_reads": [],
        "tiers": [],
        "tool_prices": null,
        "unit": "token",
        "units": []
      }
    },
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">NV</span><h2 id=\"sheet-title\">Nemotron 3.5 Lightning 30B A3B</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Zapri\">×</button></div><div class=\"idline\"><span>NVIDIA /</span><code>nemotron-lightning</code><button type=\"button\" id=\"copy-id\">Kopiraj ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Razdelki kartice modela\"><button type=\"button\" data-card-jump=\"overview\">Začetek</button><button type=\"button\" data-card-jump=\"methods\">Vhodi in metode</button><button type=\"button\" data-card-jump=\"pricing\">Cenik</button><button type=\"button\" data-card-jump=\"examples\">Primeri</button><button type=\"button\" data-card-jump=\"results\">Rezultati</button><button type=\"button\" data-card-jump=\"aliases\">Druga imena</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Metode API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Core|chat|/v1/chat/completions|nemotron-lightning\">Chat</button><button type=\"button\" role=\"tab\" tabindex=\"-1\" aria-controls=\"card-method-content\" aria-selected=\"false\" id=\"card-method-tab-1\" data-card-method=\"Core|messages|/v1/messages|nvidia%2Fnemotron-3.5-lightning-30b-a3b\">Messages</button></div><div class=\"idline\"><label for=\"card-model-id\">ID modela</label><select class=\"sel\" id=\"card-model-id\" style=\"min-width:0;max-width:100%\"><option value=\"Core|chat|/v1/chat/completions|nvidia%2Fnemotron-3.5-lightning-30b-a3b\">nvidia/nemotron-3.5-lightning-30b-a3b</option><option value=\"Core|chat|/v1/chat/completions|nemotron-lightning\" selected>nemotron-lightning</option><option value=\"Core|chat|/v1/chat/completions|nemotron-lightning-latest\">nemotron-lightning-latest</option></select></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\">Začetek</h3><p class=\"mdesc-full\">Nemotron 3.5 Lightning je besedilni model družbe NVIDIA za dolgotrajne agentske naloge, programiranje, iskanje po dokumentih in pogovor.</p><dl class=\"card-io\" data-card-io><div><dt>Dovoljeni vhodi</dt><dd>Besedilo</dd></div><div><dt>Rezultati</dt><dd>Besedilo</dd></div></dl><details class=\"card-about\"><summary>O modelu</summary><p class=\"note-s\" data-model-method-boundary>Ta opis zajema zmožnosti modela. Vhodi, izhodi in možnosti, ki so na voljo v Ailoot, so spodaj navedeni za izbrano metodo.</p><div class=\"mabout\" id=\"m-about\"><h4>Delovni model dolgotrajnega procesa</h4><p>Nemotron 3.5 Lightning je namenjen samostojnim agentom in zaporedjem dejanj, ki se nadaljujejo skozi več korakov. Uporablja se tudi pri pogovornih pomočnikih, iskanju na podlagi dokumentov in izvajanju navodil. Vhod in izhod sta besedilna.</p><h4>Arhitektura in kontekst</h4><p>Hibridna mešanica ekspertov združuje Mamba-2 in ločene plasti pozornosti. Model skupno vsebuje 30 milijard parametrov, aktivne pa so 3 milijarde na token. Kontekst dosega milijon tokenov.</p><p>Plasti za napovedovanje več naslednjih tokenov se dodatno učijo usklajevati svoje predloge s porazdelitvijo glavnega modela. Skupaj z izdajo so predstavljeni načini špekulativnega dekodiranja. Pomagajo organizirati ustvarjanje, vendar ne določajo zagotovljene hitrosti zahteve.</p><h4>Pet stopenj priprave</h4><ol><li>Predhodno učenje na več kot 20 bilijonih tokenov kode, matematike, znanosti in splošnega znanja s pripravo v formatu NVFP4.</li><li>Nadaljevanje predhodnega učenja plasti za napovedovanje več prihodnjih tokenov: njihovi predlogi se uskladijo s porazdelitvijo glavnega modela.</li><li>Učenje po primerih, vključno z navodili, klici orodij, strukturiranimi rezultati, iskanjem oddaljenih odsekov in združevanjem dokumentov.</li><li>Spodbujevalno učenje v več okoljih za sklepanje, kodo, znanost, večstopenjske naloge z orodji in pogovor.</li><li>Naknadno numerično stiskanje objavljene različice.</li></ol><p>Zadnja stopnja opisuje konkretno izdajo proizvajalca in ne določa natančnosti izračunov strežene zahteve. V zunanjem procesu model predlaga dejanja in besedilni rezultat; orodja izvede aplikacija.</p><h4>Jeziki in različice</h4><p>Uradno so navedeni angleščina, španščina, francoščina, nemščina, italijanščina in japonščina ter programski jeziki. Za predhodno učenje je navedena meja podatkov do septembra 2025, za nadaljnje pa do maja 2026.</p><p>Značilnosti objavljene izdaje z numeričnim stiskanjem opisujejo prav to različico. Iz imena modela ni mogoče določiti natančnosti izračunov konkretne izvedbe. Milijon tokenov je skupni kontekst in ne ločena obljuba izhodne dolžine.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Na voljo v Ailoot · vhodi in metode</h3><details class=\"card-method\" open><summary><b>Ailoot · OpenAI Chat</b> <code>POST /v1/chat/completions</code></summary><dl class=\"method-capabilities\"><div><dt>Vhod</dt><dd><code>text</code></dd></div><div><dt>Izhod</dt><dd><code>text</code></dd></div><div><dt>Kontekst</dt><dd>4096 tokens</dd></div><div><dt>Največji izhod</dt><dd>1024 tokens</dd></div><div><dt>Izhodni format</dt><dd>json ali SSE</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Polje</th><th>Vrsta</th><th>Zahteva</th><th>Vrednosti in omejitve</th><th>Privzeto</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Obvezno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>nemotron-lightning</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">messages</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>message[]</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Obvezno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>Najmanjše število elementov: 1</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">messages[].role</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Obvezno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>Primeri: system, user, assistant, tool, function</div><div>Pogoji: Te vloge so izrecno predstavljene s tipi združljivosti v izvorni kodi; natančen nabor vlog ostaja odvisen od modela.</div><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">messages[].content</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string|content_part[]|null</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">messages[].tool_calls</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>tool_call[]</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">messages[].tool_call_id</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>Velja, ko: role=tool; uporabite dejansko vrnjeni ID</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">messages[].name</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">messages[].reasoning_content</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>Velja, ko: Pošljite nazaj dejansko vrnjeno sklepanje, kadar ga ta model uporablja</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">messages[].reasoning_details</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>object|array</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">max_tokens</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>integer</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>Najmanj: 1</div><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">max_completion_tokens</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>integer</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>Najmanj: 1</div><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">stream</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>boolean</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span></td><td data-cell-label=\"Privzeto\" data-default=\"known\"><span class=\"card-cell-label\">Privzeto</span>false</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">stream_options.include_usage</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>boolean</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">temperature</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>number</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">top_p</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>number</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">stop</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string|string[]</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">tools</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>function_tool[]</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">tools[].type</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">tools[].function.name</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Obvezno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>Velja, ko: podano je funkcijsko orodje</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">tools[].function.description</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">tools[].function.parameters</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>JSON_schema</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">tool_choice</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string|object</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">parallel_tool_calls</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>boolean</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">response_format</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>object</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">reasoning_effort</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">reasoning</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>object</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">service_tier</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_compatibility\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">instructions</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Polje združljivosti</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">functions</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>function[]</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">function_call</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string|object</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">prompt_cache_options</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>object</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Kombinacije vhodnih gradiv</summary><p class=\"note-s\"><b>Besedilo</b> · Besedilo UTF8</p><p class=\"note-s\"><code>messages[].content</code></p></details><details class=\"note-s\" data-method-contract><summary>Parametri in življenjski cikel metode</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Specifikacija</th></tr></thead><tbody><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>material_types</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>text</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>required</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>model, messages</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>optional_controls</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>null</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>content_type</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>application/json</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>text_file_material</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>dejanska vsebina UTF-8 je vstavljena kot besedilo; ID datotek in URLs potrebujejo ločeno, natančno določeno podporo</td></tr></tbody></table></div><p>Življenjski cikel: <code>exact retained published method</code></p><p class=\"note-s\">Strukture metod in ID so natančno določeni; zmožnost ponudnika je ločena od sprejema zahteve.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Cenik</h3><h4>Cene metod Ailoot</h4><section class=\"meth\" data-route=\"Core\"><header><b><span class=\"alias\">Ailoot</span> OpenAI Chat</b><code>POST /v1/chat/completions</code></header><dl><div><dt>Vhod</dt><dd>0,00008 $ <em>/ 1K</em></dd></div><div><dt>Izhod</dt><dd>0,0002 $ <em>/ 1K</em></dd></div><div><dt>Branje predpomnilnika</dt><dd>0,00008 $ <em>/ 1K</em></dd></div><div><dt>Zapis v predpomnilnik</dt><dd>0,00008 $ <em>/ 1K</em></dd></div><div><dt>Zapis v predpomnilnik, 5 min</dt><dd>0,00008 $ <em>/ 1K tokens</em></dd></div></dl></section><p class=\"note-s\">Ailoot pred zahtevo rezervira ocenjeni znesek. Po rezultatu obračuna končni strošek na podlagi izmerjene porabe. Obračun pretakanja uporablja končni zapis porabe. <a href=\"/docs/sl/billing/reserve/\">Kako delujeta rezervacija in obračun →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Primeri zahtev</h3><h4>Ailoot · OpenAI Chat</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Primeri kode\"><button class=\"cg-tab\" id=\"model-code-555-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-555-panel-0\" aria-selected=\"true\" tabindex=\"0\">Primer besedila</button><button class=\"cg-tab\" id=\"model-code-555-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-555-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Python SDK</button><button class=\"cg-tab\" id=\"model-code-555-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-555-panel-2\" aria-selected=\"false\" tabindex=\"-1\">Node.js SDK</button><button class=\"cg-tab\" id=\"model-code-555-tab-3\" role=\"tab\" type=\"button\" aria-controls=\"model-code-555-panel-3\" aria-selected=\"false\" tabindex=\"-1\">Tok Python</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopiraj kodo\"><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-555-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-555-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}&quot;\nexport AILOOT_TEXT_FILE\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;nemotron-lightning&quot;, &quot;messages&quot;: []}&#39;)\nf=Path(os.environ[&quot;AILOOT_TEXT_FILE&quot;])\nif not f.is_file():raise SystemExit(&quot;Choose your actual UTF-8 source material&quot;)\ntext=f.read_text(encoding=&quot;utf-8&quot;)\nif not text.strip():raise SystemExit(&quot;Source material must contain text&quot;)\np[&quot;messages&quot;]=[{&quot;role&quot;:&quot;user&quot;,&quot;content&quot;:&quot;Summarize this material and quote supporting source passages.\\n\\n&quot;+text}]\nPath(&quot;request.json&quot;).write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(&quot;result.json&quot;).read_text()),ensure_ascii=False,indent=2))\nPY_RESULT\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-555-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-555-tab-1\" hidden><pre data-lang=\"python\"><code>from openai import OpenAI\nimport os\n\nif not os.environ.get(&quot;AILOOT_API_KEY&quot;, &quot;&quot;).strip(): raise SystemExit(&quot;Set AILOOT_API_KEY before making a request&quot;)\nclient = OpenAI(base_url=&quot;https://api.ailoot.ai/v1&quot;, api_key=os.environ[&quot;AILOOT_API_KEY&quot;], max_retries=0)\nresp = client.chat.completions.create(\n    model=&quot;nemotron-lightning&quot;,\n    messages=[{&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: &quot;Explain the difference between an observation and a hypothesis in three sentences.&quot;}],\n)\nimport base64, json\nfrom pathlib import Path\n\ndef save_result(data, stem=&quot;result&quot;):\n    # Keep every field, including usage, IDs, reasoning and tool requests.\n    Path(stem + &quot;.json&quot;).write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding=&quot;utf-8&quot;)\n    print(json.dumps(data, ensure_ascii=False, indent=2))\n    def save_blob(encoded, suffix, label):\n        raw = base64.b64decode(encoded, altchars=b&quot;-_&quot;, validate=True)\n        ext = &quot;png&quot; if raw.startswith(b&quot;\\x89PNG\\r\\n\\x1a\\n&quot;) else &quot;jpg&quot; if raw.startswith(b&quot;\\xff\\xd8&quot;) else &quot;webp&quot; if raw[:4] == b&quot;RIFF&quot; and raw[8:12] == b&quot;WEBP&quot; else suffix\n        file = Path(stem + &quot;-&quot; + label + &quot;.&quot; + ext)\n        file.write_bytes(raw)\n        print(&quot;Saved&quot;, file)\n    for index, block in enumerate(data.get(&quot;content&quot;) or []):\n        print(&quot;Content&quot;, index, json.dumps(block, ensure_ascii=False))\n    for choice in data.get(&quot;choices&quot;) or []:\n        print(&quot;Choice&quot;, choice.get(&quot;index&quot;), json.dumps(choice.get(&quot;message&quot;, choice.get(&quot;delta&quot;, {})), ensure_ascii=False))\n    for index, item in enumerate(data.get(&quot;output&quot;) or []):\n        print(&quot;Output&quot;, index, json.dumps(item, ensure_ascii=False))\n        if item.get(&quot;type&quot;) == &quot;image_generation_call&quot; and item.get(&quot;result&quot;):\n            save_blob(item[&quot;result&quot;], item.get(&quot;output_format&quot;) or &quot;bin&quot;, &quot;output-&quot; + str(index))\n    for ci, candidate in enumerate(data.get(&quot;candidates&quot;) or []):\n        for pi, part in enumerate((candidate.get(&quot;content&quot;) or {}).get(&quot;parts&quot;) or []):\n            print(&quot;Candidate/part&quot;, ci, pi, json.dumps(part, ensure_ascii=False))\n            blob = part.get(&quot;inlineData&quot;) or part.get(&quot;inline_data&quot;)\n            if blob and blob.get(&quot;data&quot;):\n                mime = blob.get(&quot;mimeType&quot;) or blob.get(&quot;mime_type&quot;)\n                suffix = {&quot;image/png&quot;:&quot;png&quot;, &quot;image/jpeg&quot;:&quot;jpg&quot;, &quot;image/webp&quot;:&quot;webp&quot;, &quot;audio/wav&quot;:&quot;wav&quot;, &quot;audio/mpeg&quot;:&quot;mp3&quot;, &quot;video/mp4&quot;:&quot;mp4&quot;}.get(mime, &quot;bin&quot;)\n                save_blob(blob[&quot;data&quot;], suffix, &quot;candidate-&quot; + str(ci) + &quot;-part-&quot; + str(pi))\n\nsave_result(resp.to_dict(mode=&quot;json&quot;))\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-555-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-555-tab-2\" hidden><pre data-lang=\"js\"><code>import OpenAI from &quot;openai&quot;;\n\nif (!process.env.AILOOT_API_KEY?.trim()) throw new Error(&quot;Set AILOOT_API_KEY before making a request&quot;);\nconst client = new OpenAI({ baseURL: &quot;https://api.ailoot.ai/v1&quot;, apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });\nconst resp = await client.chat.completions.create({\n  model: &quot;nemotron-lightning&quot;,\n  messages: [{ role: &quot;user&quot;, content: &quot;Explain the difference between an observation and a hypothesis in three sentences.&quot; }],\n});\nimport { writeFileSync } from &quot;node:fs&quot;;\n\nfunction saveResult(data, stem = &quot;result&quot;) {\n  writeFileSync(stem + &quot;.json&quot;, JSON.stringify(data, null, 2));\n  console.log(JSON.stringify(data, null, 2));\n  const saveBlob = (encoded, suffix, label) =&gt; {\n    const raw = Buffer.from(encoded, &quot;base64&quot;);\n    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? &quot;png&quot; : raw[0]===255 &amp;&amp; raw[1]===216 ? &quot;jpg&quot; : raw.subarray(0,4).toString()===&quot;RIFF&quot; &amp;&amp; raw.subarray(8,12).toString()===&quot;WEBP&quot; ? &quot;webp&quot; : suffix;\n    const file = `${stem}-${label}.${ext}`;\n    writeFileSync(file, raw); console.log(&quot;Saved&quot;, file);\n  };\n  for (const [i, block] of (data.content || []).entries()) console.log(&quot;Content&quot;, i, JSON.stringify(block));\n  for (const choice of data.choices || []) console.log(&quot;Choice&quot;, choice.index, JSON.stringify(choice.message || choice.delta || {}));\n  for (const [i, item] of (data.output || []).entries()) {\n    console.log(&quot;Output&quot;, i, JSON.stringify(item));\n    if (item.type === &quot;image_generation_call&quot; &amp;&amp; item.result) saveBlob(item.result, item.output_format || &quot;bin&quot;, `output-${i}`);\n  }\n  for (const [ci, candidate] of (data.candidates || []).entries()) {\n    for (const [pi, part] of (candidate.content?.parts || []).entries()) {\n      console.log(&quot;Candidate/part&quot;, ci, pi, JSON.stringify(part));\n      const blob = part.inlineData || part.inline_data;\n      if (blob?.data) {\n        const mime = blob.mimeType || blob.mime_type;\n        const suffix = ({&quot;image/png&quot;:&quot;png&quot;, &quot;image/jpeg&quot;:&quot;jpg&quot;, &quot;image/webp&quot;:&quot;webp&quot;, &quot;audio/wav&quot;:&quot;wav&quot;, &quot;audio/mpeg&quot;:&quot;mp3&quot;, &quot;video/mp4&quot;:&quot;mp4&quot;})[mime] || &quot;bin&quot;;\n        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);\n      }\n    }\n  }\n}\n\nsaveResult(resp);\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-555-panel-3\" role=\"tabpanel\" aria-labelledby=\"model-code-555-tab-3\" hidden><pre data-lang=\"python\"><code>from openai import OpenAI\nimport os\nfrom pathlib import Path\n\nif not os.environ.get(&quot;AILOOT_API_KEY&quot;, &quot;&quot;).strip(): raise SystemExit(&quot;Set AILOOT_API_KEY before making a request&quot;)\nclient=OpenAI(base_url=&quot;https://api.ailoot.ai/v1&quot;,api_key=os.environ[&quot;AILOOT_API_KEY&quot;],max_retries=0)\nimport base64, json\nfrom pathlib import Path\n\ndef save_result(data, stem=&quot;result&quot;):\n    # Keep every field, including usage, IDs, reasoning and tool requests.\n    Path(stem + &quot;.json&quot;).write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding=&quot;utf-8&quot;)\n    print(json.dumps(data, ensure_ascii=False, indent=2))\n    def save_blob(encoded, suffix, label):\n        raw = base64.b64decode(encoded, altchars=b&quot;-_&quot;, validate=True)\n        ext = &quot;png&quot; if raw.startswith(b&quot;\\x89PNG\\r\\n\\x1a\\n&quot;) else &quot;jpg&quot; if raw.startswith(b&quot;\\xff\\xd8&quot;) else &quot;webp&quot; if raw[:4] == b&quot;RIFF&quot; and raw[8:12] == b&quot;WEBP&quot; else suffix\n        file = Path(stem + &quot;-&quot; + label + &quot;.&quot; + ext)\n        file.write_bytes(raw)\n        print(&quot;Saved&quot;, file)\n    for index, block in enumerate(data.get(&quot;content&quot;) or []):\n        print(&quot;Content&quot;, index, json.dumps(block, ensure_ascii=False))\n    for choice in data.get(&quot;choices&quot;) or []:\n        print(&quot;Choice&quot;, choice.get(&quot;index&quot;), json.dumps(choice.get(&quot;message&quot;, choice.get(&quot;delta&quot;, {})), ensure_ascii=False))\n    for index, item in enumerate(data.get(&quot;output&quot;) or []):\n        print(&quot;Output&quot;, index, json.dumps(item, ensure_ascii=False))\n        if item.get(&quot;type&quot;) == &quot;image_generation_call&quot; and item.get(&quot;result&quot;):\n            save_blob(item[&quot;result&quot;], item.get(&quot;output_format&quot;) or &quot;bin&quot;, &quot;output-&quot; + str(index))\n    for ci, candidate in enumerate(data.get(&quot;candidates&quot;) or []):\n        for pi, part in enumerate((candidate.get(&quot;content&quot;) or {}).get(&quot;parts&quot;) or []):\n            print(&quot;Candidate/part&quot;, ci, pi, json.dumps(part, ensure_ascii=False))\n            blob = part.get(&quot;inlineData&quot;) or part.get(&quot;inline_data&quot;)\n            if blob and blob.get(&quot;data&quot;):\n                mime = blob.get(&quot;mimeType&quot;) or blob.get(&quot;mime_type&quot;)\n                suffix = {&quot;image/png&quot;:&quot;png&quot;, &quot;image/jpeg&quot;:&quot;jpg&quot;, &quot;image/webp&quot;:&quot;webp&quot;, &quot;audio/wav&quot;:&quot;wav&quot;, &quot;audio/mpeg&quot;:&quot;mp3&quot;, &quot;video/mp4&quot;:&quot;mp4&quot;}.get(mime, &quot;bin&quot;)\n                save_blob(blob[&quot;data&quot;], suffix, &quot;candidate-&quot; + str(ci) + &quot;-part-&quot; + str(pi))\n\nwith client.chat.completions.stream(model=&#39;nemotron-lightning&#39;,messages=[{&quot;role&quot;:&quot;user&quot;,&quot;content&quot;:&quot;Explain observations and hypotheses in three sentences.&quot;}]) as stream:\n    with Path(&quot;stream-events.jsonl&quot;).open(&quot;w&quot;,encoding=&quot;utf-8&quot;) as log:\n        for event in stream:\n            payload=event.to_dict(mode=&quot;json&quot;)\n            log.write(json.dumps(payload,ensure_ascii=False)+&quot;\\n&quot;); log.flush()\n            print(json.dumps(payload,ensure_ascii=False))\n    final=stream.get_final_completion()\n    save_result(final.to_dict(mode=&quot;json&quot;),&quot;stream-result&quot;)\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Prejmi in shrani rezultate</h3><h4>Ailoot · OpenAI Chat</h4><p class=\"note-s\">json ali SSE</p><div class=\"card-result-process\" data-all-results><h5>Ohrani vse dokončane rezultate</h5><p class=\"note-s\">Shranite vsak v celoti vrnjen odgovor, datoteko in del vsebine.</p><p class=\"note-s\">Ohranite vsako možnost odgovora ter njeno vsebino, klice orodij in sklepanje. V SSE sestavite delne spremembe po indeksu možnosti/orodja ter ohranite končni razlog zaključka in podatke o porabi.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Če je treba preveriti izvirni odgovor</h5><p class=\"note-s\">Ohranite ID zahtev/odgovorov in glave. Splošni URL za pridobivanje besedilne naloge ni podan.</p></div><details class=\"card-about\" data-output-fields><summary>Polja odgovora</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Polje</th><th>Vrsta</th></tr></thead><tbody><tr><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">choices[].index</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span>integer</td></tr><tr><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">choices[].message.content</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span>string|null</td></tr><tr><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">choices[].message.tool_calls</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span>tool_call[]</td></tr><tr><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">choices[].message.reasoning_content</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span>string</td></tr><tr><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">choices[].message.reasoning_details</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span>object|array</td></tr><tr><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">choices[].finish_reason</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span>string|null</td></tr><tr><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span>object</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Napake in naslednji koraki</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Odgovor</th><th>Pogoj</th><th>Naslednji korak</th></tr></thead><tbody><tr><th data-cell-label=\"Odgovor\" scope=\"row\"><span class=\"card-cell-label\">Odgovor</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Pogoj\"><span class=\"card-cell-label\">Pogoj</span>Neveljavna obvezna polja, predstavitev gradiva ali vrednost parametra</td><td data-cell-label=\"Naslednji korak\"><span class=\"card-cell-label\">Naslednji korak</span>Pred novo zahtevo za ustvarjanje popravite navedena polja.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Druga imena</h3><h4>Druga imena modelov</h4><p class=\"note-s\"><span data-model-alias-route=\"Core\"><b>Ailoot</b> <a href=\"#m=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;route=Core&amp;caller=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;fmt=chat\"><code>nvidia/nemotron-3.5-lightning-30b-a3b</code></a>, <a href=\"#m=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;route=Core&amp;caller=nemotron-lightning&amp;fmt=chat\"><code>nemotron-lightning</code></a>, <a href=\"#m=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;route=Core&amp;caller=nemotron-lightning-latest&amp;fmt=chat\"><code>nemotron-lightning-latest</code></a></span></p><h4>Druga imena poti metod</h4><p class=\"note-s\">Uporabite zgoraj navedene poti metod.</p><h4>Povezani ID-ji za klic</h4><p class=\"note-s\"><a href=\"#m=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;route=Core&amp;caller=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;fmt=chat\"><code>nvidia/nemotron-3.5-lightning-30b-a3b</code></a>, <a href=\"#m=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;route=Core&amp;caller=nemotron-lightning&amp;fmt=chat\"><code>nemotron-lightning</code></a>, <a href=\"#m=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;route=Core&amp;caller=nemotron-lightning-latest&amp;fmt=chat\"><code>nemotron-lightning-latest</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "nemotron-lightning",
        "fmt": "chat",
        "http": "POST",
        "path": "/v1/chat/completions",
        "request_model_id": "nemotron-lightning",
        "route_label": "Core"
      },
      "method_key": "Core|chat|/v1/chat/completions|nemotron-lightning",
      "ordinal": 2,
      "rawMethod": {
        "cache_read": 0.08,
        "cache_write": 0.08,
        "cache_write_1h": null,
        "cache_write_5m": 0.08,
        "conditional_meter": null,
        "contract": {
          "data": {
            "all_results": "Keep every choice and its content/tool calls/reasoning. In SSE assemble deltas by choice/tool index, retain the final finish reason and usage.",
            "authentication": {
              "api_key_source": "AILOOT_API_KEY",
              "header": "Authorization: Bearer"
            },
            "errors": [
              {
                "code": null,
                "condition": "Neveljavna obvezna polja, predstavitev gradiva ali vrednost parametra",
                "http_status": 400,
                "recovery": "Pred novo zahtevo za ustvarjanje popravite navedena polja.",
                "type": "invalid_request_error"
              }
            ],
            "hints": [
              "Model context is not an output cap.",
              "A model-dependent field needs the exact published model profile; unspecified defaults/enums are not guessed.",
              "Tool calls propose actions; the client application returns actual observations with the returned call ID."
            ],
            "ignored_fields": [],
            "lifecycle": {
              "create": {
                "http": "POST",
                "path": "/v1/chat/completions"
              },
              "job_read": null,
              "mode": "synchronous_or_streamed",
              "unknown": "Ohranite ID zahtev/odgovorov in glave. Splošni URL za pridobivanje besedilne naloge ni podan."
            },
            "material_combinations": [
              {
                "mode": "text",
                "representation": "messages[].content",
                "required_material": "Besedilo UTF8"
              }
            ],
            "operation_modes": [
              "conversation",
              "function_tool_continuation",
              "streaming"
            ],
            "outputs": {
              "all_results": "Ohranite vsako možnost odgovora ter njeno vsebino, klice orodij in sklepanje. V SSE sestavite delne spremembe po indeksu možnosti/orodja ter ohranite končni razlog zaključka in podatke o porabi.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "choices[].index",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "choices[].message.content",
                  "type": "string|null"
                },
                {
                  "description": null,
                  "name": "choices[].message.tool_calls",
                  "type": "tool_call[]"
                },
                {
                  "description": null,
                  "name": "choices[].message.reasoning_content",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "choices[].message.reasoning_details",
                  "type": "object|array"
                },
                {
                  "description": null,
                  "name": "choices[].finish_reason",
                  "type": "string|null"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                }
              ],
              "format": "json ali SSE"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "nemotron-lightning"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_items": 1,
                "name": "messages",
                "required": true,
                "type": "message[]"
              },
              {
                "availability": "model_dependent",
                "conditions": "Te vloge so izrecno predstavljene s tipi združljivosti v izvorni kodi; natančen nabor vlog ostaja odvisen od modela.",
                "default": null,
                "default_known": false,
                "enum": [
                  "system",
                  "user",
                  "assistant",
                  "tool",
                  "function"
                ],
                "enum_exhaustive": false,
                "enum_known": true,
                "name": "messages[].role",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].content",
                "required": false,
                "type": "string|content_part[]|null"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].tool_calls",
                "required": false,
                "type": "tool_call[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].tool_call_id",
                "required": false,
                "type": "string",
                "when": "role=tool; uporabite dejansko vrnjeni ID"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].name",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].reasoning_content",
                "required": false,
                "type": "string",
                "when": "Pošljite nazaj dejansko vrnjeno sklepanje, kadar ga ta model uporablja"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].reasoning_details",
                "required": false,
                "type": "object|array"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minimum": 1,
                "name": "max_tokens",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minimum": 1,
                "name": "max_completion_tokens",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": false,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "stream",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "stream_options.include_usage",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "temperature",
                "required": false,
                "type": "number"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "top_p",
                "required": false,
                "type": "number"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "stop",
                "required": false,
                "type": "string|string[]"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools",
                "required": false,
                "type": "function_tool[]"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].type",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].function.name",
                "required": true,
                "type": "string",
                "when": "podano je funkcijsko orodje"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].function.description",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].function.parameters",
                "required": false,
                "type": "JSON_schema"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tool_choice",
                "required": false,
                "type": "string|object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "parallel_tool_calls",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "response_format",
                "required": false,
                "type": "object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "reasoning_effort",
                "required": false,
                "type": "string"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "reasoning",
                "required": false,
                "type": "object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "service_tier",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_compatibility",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "instructions",
                "required": false,
                "type": "string"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "functions",
                "required": false,
                "type": "function[]"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "function_call",
                "required": false,
                "type": "string|object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "prompt_cache_options",
                "required": false,
                "type": "object"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": []
          },
          "hints": [
            "Strukture metod in ID so natančno določeni; zmožnost ponudnika je ločena od sprejema zahteve."
          ],
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional_controls": null,
            "required": [
              "model",
              "messages"
            ],
            "text_file_material": "dejanska vsebina UTF-8 je vstavljena kot besedilo; ID datotek in URLs potrebujejo ločeno, natančno določeno podporo"
          },
          "lifecycle": {
            "mode": "exact retained published method"
          },
          "method": {
            "http": "POST",
            "path": "/v1/chat/completions"
          },
          "operation_modes": [
            "chat_completions"
          ],
          "output": {
            "family": [
              "text"
            ],
            "format": "JSON or supported SSE",
            "multioutputs": "retain every actual response output"
          }
        },
        "ctx": 4096,
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}\"\nexport AILOOT_TEXT_FILE\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"nemotron-lightning\", \"messages\": []}')\nf=Path(os.environ[\"AILOOT_TEXT_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose your actual UTF-8 source material\")\ntext=f.read_text(encoding=\"utf-8\")\nif not text.strip():raise SystemExit(\"Source material must contain text\")\np[\"messages\"]=[{\"role\":\"user\",\"content\":\"Summarize this material and quote supporting source passages.\\n\\n\"+text}]\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"result.json\").read_text()),ensure_ascii=False,indent=2))\nPY_RESULT\n",
            "label": "Use actual text material",
            "language": "bash"
          },
          {
            "code": "from openai import OpenAI\nimport os\n\nif not os.environ.get(\"AILOOT_API_KEY\", \"\").strip(): raise SystemExit(\"Set AILOOT_API_KEY before making a request\")\nclient = OpenAI(base_url=\"https://api.ailoot.ai/v1\", api_key=os.environ[\"AILOOT_API_KEY\"], max_retries=0)\nresp = client.chat.completions.create(\n    model=\"nemotron-lightning\",\n    messages=[{\"role\": \"user\", \"content\": \"Explain the difference between an observation and a hypothesis in three sentences.\"}],\n)\nimport base64, json\nfrom pathlib import Path\n\ndef save_result(data, stem=\"result\"):\n    # Keep every field, including usage, IDs, reasoning and tool requests.\n    Path(stem + \".json\").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding=\"utf-8\")\n    print(json.dumps(data, ensure_ascii=False, indent=2))\n    def save_blob(encoded, suffix, label):\n        raw = base64.b64decode(encoded, altchars=b\"-_\", validate=True)\n        ext = \"png\" if raw.startswith(b\"\\x89PNG\\r\\n\\x1a\\n\") else \"jpg\" if raw.startswith(b\"\\xff\\xd8\") else \"webp\" if raw[:4] == b\"RIFF\" and raw[8:12] == b\"WEBP\" else suffix\n        file = Path(stem + \"-\" + label + \".\" + ext)\n        file.write_bytes(raw)\n        print(\"Saved\", file)\n    for index, block in enumerate(data.get(\"content\") or []):\n        print(\"Content\", index, json.dumps(block, ensure_ascii=False))\n    for choice in data.get(\"choices\") or []:\n        print(\"Choice\", choice.get(\"index\"), json.dumps(choice.get(\"message\", choice.get(\"delta\", {})), ensure_ascii=False))\n    for index, item in enumerate(data.get(\"output\") or []):\n        print(\"Output\", index, json.dumps(item, ensure_ascii=False))\n        if item.get(\"type\") == \"image_generation_call\" and item.get(\"result\"):\n            save_blob(item[\"result\"], item.get(\"output_format\") or \"bin\", \"output-\" + str(index))\n    for ci, candidate in enumerate(data.get(\"candidates\") or []):\n        for pi, part in enumerate((candidate.get(\"content\") or {}).get(\"parts\") or []):\n            print(\"Candidate/part\", ci, pi, json.dumps(part, ensure_ascii=False))\n            blob = part.get(\"inlineData\") or part.get(\"inline_data\")\n            if blob and blob.get(\"data\"):\n                mime = blob.get(\"mimeType\") or blob.get(\"mime_type\")\n                suffix = {\"image/png\":\"png\", \"image/jpeg\":\"jpg\", \"image/webp\":\"webp\", \"audio/wav\":\"wav\", \"audio/mpeg\":\"mp3\", \"video/mp4\":\"mp4\"}.get(mime, \"bin\")\n                save_blob(blob[\"data\"], suffix, \"candidate-\" + str(ci) + \"-part-\" + str(pi))\n\nsave_result(resp.to_dict(mode=\"json\"))\n",
            "label": "Python · retained SDK call",
            "language": "python"
          },
          {
            "SDK_retry_proof": {
              "field": "maxRetries",
              "scope": "normalclient options; no provider/account/proxy switches",
              "source_urls": [
                "https://raw.githubusercontent.com/openai/openai-node/master/src/client.ts",
                "https://raw.githubusercontent.com/anthropics/anthropic-sdk-typescript/main/src/client.ts"
              ],
              "value": 0
            },
            "code": "import OpenAI from \"openai\";\n\nif (!process.env.AILOOT_API_KEY?.trim()) throw new Error(\"Set AILOOT_API_KEY before making a request\");\nconst client = new OpenAI({ baseURL: \"https://api.ailoot.ai/v1\", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });\nconst resp = await client.chat.completions.create({\n  model: \"nemotron-lightning\",\n  messages: [{ role: \"user\", content: \"Explain the difference between an observation and a hypothesis in three sentences.\" }],\n});\nimport { writeFileSync } from \"node:fs\";\n\nfunction saveResult(data, stem = \"result\") {\n  writeFileSync(stem + \".json\", JSON.stringify(data, null, 2));\n  console.log(JSON.stringify(data, null, 2));\n  const saveBlob = (encoded, suffix, label) => {\n    const raw = Buffer.from(encoded, \"base64\");\n    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? \"png\" : raw[0]===255 && raw[1]===216 ? \"jpg\" : raw.subarray(0,4).toString()===\"RIFF\" && raw.subarray(8,12).toString()===\"WEBP\" ? \"webp\" : suffix;\n    const file = `${stem}-${label}.${ext}`;\n    writeFileSync(file, raw); console.log(\"Saved\", file);\n  };\n  for (const [i, block] of (data.content || []).entries()) console.log(\"Content\", i, JSON.stringify(block));\n  for (const choice of data.choices || []) console.log(\"Choice\", choice.index, JSON.stringify(choice.message || choice.delta || {}));\n  for (const [i, item] of (data.output || []).entries()) {\n    console.log(\"Output\", i, JSON.stringify(item));\n    if (item.type === \"image_generation_call\" && item.result) saveBlob(item.result, item.output_format || \"bin\", `output-${i}`);\n  }\n  for (const [ci, candidate] of (data.candidates || []).entries()) {\n    for (const [pi, part] of (candidate.content?.parts || []).entries()) {\n      console.log(\"Candidate/part\", ci, pi, JSON.stringify(part));\n      const blob = part.inlineData || part.inline_data;\n      if (blob?.data) {\n        const mime = blob.mimeType || blob.mime_type;\n        const suffix = ({\"image/png\":\"png\", \"image/jpeg\":\"jpg\", \"image/webp\":\"webp\", \"audio/wav\":\"wav\", \"audio/mpeg\":\"mp3\", \"video/mp4\":\"mp4\"})[mime] || \"bin\";\n        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);\n      }\n    }\n  }\n}\n\nsaveResult(resp);\n",
            "label": "Node.js · retained SDK call",
            "language": "js"
          },
          {
            "code": "from openai import OpenAI\nimport os\nfrom pathlib import Path\n\nif not os.environ.get(\"AILOOT_API_KEY\", \"\").strip(): raise SystemExit(\"Set AILOOT_API_KEY before making a request\")\nclient=OpenAI(base_url=\"https://api.ailoot.ai/v1\",api_key=os.environ[\"AILOOT_API_KEY\"],max_retries=0)\nimport base64, json\nfrom pathlib import Path\n\ndef save_result(data, stem=\"result\"):\n    # Keep every field, including usage, IDs, reasoning and tool requests.\n    Path(stem + \".json\").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding=\"utf-8\")\n    print(json.dumps(data, ensure_ascii=False, indent=2))\n    def save_blob(encoded, suffix, label):\n        raw = base64.b64decode(encoded, altchars=b\"-_\", validate=True)\n        ext = \"png\" if raw.startswith(b\"\\x89PNG\\r\\n\\x1a\\n\") else \"jpg\" if raw.startswith(b\"\\xff\\xd8\") else \"webp\" if raw[:4] == b\"RIFF\" and raw[8:12] == b\"WEBP\" else suffix\n        file = Path(stem + \"-\" + label + \".\" + ext)\n        file.write_bytes(raw)\n        print(\"Saved\", file)\n    for index, block in enumerate(data.get(\"content\") or []):\n        print(\"Content\", index, json.dumps(block, ensure_ascii=False))\n    for choice in data.get(\"choices\") or []:\n        print(\"Choice\", choice.get(\"index\"), json.dumps(choice.get(\"message\", choice.get(\"delta\", {})), ensure_ascii=False))\n    for index, item in enumerate(data.get(\"output\") or []):\n        print(\"Output\", index, json.dumps(item, ensure_ascii=False))\n        if item.get(\"type\") == \"image_generation_call\" and item.get(\"result\"):\n            save_blob(item[\"result\"], item.get(\"output_format\") or \"bin\", \"output-\" + str(index))\n    for ci, candidate in enumerate(data.get(\"candidates\") or []):\n        for pi, part in enumerate((candidate.get(\"content\") or {}).get(\"parts\") or []):\n            print(\"Candidate/part\", ci, pi, json.dumps(part, ensure_ascii=False))\n            blob = part.get(\"inlineData\") or part.get(\"inline_data\")\n            if blob and blob.get(\"data\"):\n                mime = blob.get(\"mimeType\") or blob.get(\"mime_type\")\n                suffix = {\"image/png\":\"png\", \"image/jpeg\":\"jpg\", \"image/webp\":\"webp\", \"audio/wav\":\"wav\", \"audio/mpeg\":\"mp3\", \"video/mp4\":\"mp4\"}.get(mime, \"bin\")\n                save_blob(blob[\"data\"], suffix, \"candidate-\" + str(ci) + \"-part-\" + str(pi))\n\nwith client.chat.completions.stream(model='nemotron-lightning',messages=[{\"role\":\"user\",\"content\":\"Explain observations and hypotheses in three sentences.\"}]) as stream:\n    with Path(\"stream-events.jsonl\").open(\"w\",encoding=\"utf-8\") as log:\n        for event in stream:\n            payload=event.to_dict(mode=\"json\")\n            log.write(json.dumps(payload,ensure_ascii=False)+\"\\n\"); log.flush()\n            print(json.dumps(payload,ensure_ascii=False))\n    final=stream.get_final_completion()\n    save_result(final.to_dict(mode=\"json\"),\"stream-result\")\n",
            "label": "Python streaming · retain all events",
            "language": "python"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "chat",
        "http": "POST",
        "img_in": null,
        "img_out": null,
        "in": 0.08,
        "input": [
          "text"
        ],
        "label": "OpenAI Chat",
        "max_out": 1024,
        "max_tool_calls": null,
        "out": 0.2,
        "output": [
          "text"
        ],
        "path": "/v1/chat/completions",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "in",
                "label": "Input",
                "side": "in"
              },
              {
                "amount": 0.2,
                "amount_unit": "usd_per_million_tokens",
                "key": "out",
                "label": "Output",
                "side": "out"
              },
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "cache_read",
                "label": "Cache read",
                "side": "in"
              },
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "cache_write",
                "label": "Cache write",
                "side": "in"
              },
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "cache_write_5m",
                "label": "Cache write 5m",
                "side": "in"
              }
            ]
          }
        ],
        "request_model_id": "nemotron-lightning",
        "route_label": "Core",
        "status_reads": [],
        "tiers": [],
        "tool_prices": null,
        "unit": "token",
        "units": []
      }
    },
    {
      "html": "<div class=\"sheet-head\"><span class=\"mav\" aria-hidden=\"true\">NV</span><h2 id=\"sheet-title\">Nemotron 3.5 Lightning 30B A3B</h2><button class=\"icon-btn\" type=\"button\" data-close-sheet aria-label=\"Zapri\">×</button></div><div class=\"idline\"><span>NVIDIA /</span><code>nemotron-lightning-latest</code><button type=\"button\" id=\"copy-id\">Kopiraj ID</button></div><nav class=\"card-jump-nav\" aria-label=\"Razdelki kartice modela\"><button type=\"button\" data-card-jump=\"overview\">Začetek</button><button type=\"button\" data-card-jump=\"methods\">Vhodi in metode</button><button type=\"button\" data-card-jump=\"pricing\">Cenik</button><button type=\"button\" data-card-jump=\"examples\">Primeri</button><button type=\"button\" data-card-jump=\"results\">Rezultati</button><button type=\"button\" data-card-jump=\"aliases\">Druga imena</button></nav><div class=\"card-method-tabs\" role=\"tablist\" aria-label=\"Metode API\"><button type=\"button\" role=\"tab\" tabindex=\"0\" aria-controls=\"card-method-content\" aria-selected=\"true\" id=\"card-method-tab-0\" data-card-method=\"Core|chat|/v1/chat/completions|nemotron-lightning-latest\">Chat</button><button type=\"button\" role=\"tab\" tabindex=\"-1\" aria-controls=\"card-method-content\" aria-selected=\"false\" id=\"card-method-tab-1\" data-card-method=\"Core|messages|/v1/messages|nvidia%2Fnemotron-3.5-lightning-30b-a3b\">Messages</button></div><div class=\"idline\"><label for=\"card-model-id\">ID modela</label><select class=\"sel\" id=\"card-model-id\" style=\"min-width:0;max-width:100%\"><option value=\"Core|chat|/v1/chat/completions|nvidia%2Fnemotron-3.5-lightning-30b-a3b\">nvidia/nemotron-3.5-lightning-30b-a3b</option><option value=\"Core|chat|/v1/chat/completions|nemotron-lightning\">nemotron-lightning</option><option value=\"Core|chat|/v1/chat/completions|nemotron-lightning-latest\" selected>nemotron-lightning-latest</option></select></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\">Začetek</h3><p class=\"mdesc-full\">Nemotron 3.5 Lightning je besedilni model družbe NVIDIA za dolgotrajne agentske naloge, programiranje, iskanje po dokumentih in pogovor.</p><dl class=\"card-io\" data-card-io><div><dt>Dovoljeni vhodi</dt><dd>Besedilo</dd></div><div><dt>Rezultati</dt><dd>Besedilo</dd></div></dl><details class=\"card-about\"><summary>O modelu</summary><p class=\"note-s\" data-model-method-boundary>Ta opis zajema zmožnosti modela. Vhodi, izhodi in možnosti, ki so na voljo v Ailoot, so spodaj navedeni za izbrano metodo.</p><div class=\"mabout\" id=\"m-about\"><h4>Delovni model dolgotrajnega procesa</h4><p>Nemotron 3.5 Lightning je namenjen samostojnim agentom in zaporedjem dejanj, ki se nadaljujejo skozi več korakov. Uporablja se tudi pri pogovornih pomočnikih, iskanju na podlagi dokumentov in izvajanju navodil. Vhod in izhod sta besedilna.</p><h4>Arhitektura in kontekst</h4><p>Hibridna mešanica ekspertov združuje Mamba-2 in ločene plasti pozornosti. Model skupno vsebuje 30 milijard parametrov, aktivne pa so 3 milijarde na token. Kontekst dosega milijon tokenov.</p><p>Plasti za napovedovanje več naslednjih tokenov se dodatno učijo usklajevati svoje predloge s porazdelitvijo glavnega modela. Skupaj z izdajo so predstavljeni načini špekulativnega dekodiranja. Pomagajo organizirati ustvarjanje, vendar ne določajo zagotovljene hitrosti zahteve.</p><h4>Pet stopenj priprave</h4><ol><li>Predhodno učenje na več kot 20 bilijonih tokenov kode, matematike, znanosti in splošnega znanja s pripravo v formatu NVFP4.</li><li>Nadaljevanje predhodnega učenja plasti za napovedovanje več prihodnjih tokenov: njihovi predlogi se uskladijo s porazdelitvijo glavnega modela.</li><li>Učenje po primerih, vključno z navodili, klici orodij, strukturiranimi rezultati, iskanjem oddaljenih odsekov in združevanjem dokumentov.</li><li>Spodbujevalno učenje v več okoljih za sklepanje, kodo, znanost, večstopenjske naloge z orodji in pogovor.</li><li>Naknadno numerično stiskanje objavljene različice.</li></ol><p>Zadnja stopnja opisuje konkretno izdajo proizvajalca in ne določa natančnosti izračunov strežene zahteve. V zunanjem procesu model predlaga dejanja in besedilni rezultat; orodja izvede aplikacija.</p><h4>Jeziki in različice</h4><p>Uradno so navedeni angleščina, španščina, francoščina, nemščina, italijanščina in japonščina ter programski jeziki. Za predhodno učenje je navedena meja podatkov do septembra 2025, za nadaljnje pa do maja 2026.</p><p>Značilnosti objavljene izdaje z numeričnim stiskanjem opisujejo prav to različico. Iz imena modela ni mogoče določiti natančnosti izračunov konkretne izvedbe. Milijon tokenov je skupni kontekst in ne ločena obljuba izhodne dolžine.</p></div></details></section><section class=\"card-section\" data-card-section=\"methods\"><h3 tabindex=\"-1\">Na voljo v Ailoot · vhodi in metode</h3><details class=\"card-method\" open><summary><b>Ailoot · OpenAI Chat</b> <code>POST /v1/chat/completions</code></summary><dl class=\"method-capabilities\"><div><dt>Vhod</dt><dd><code>text</code></dd></div><div><dt>Izhod</dt><dd><code>text</code></dd></div><div><dt>Kontekst</dt><dd>4096 tokens</dd></div><div><dt>Največji izhod</dt><dd>1024 tokens</dd></div><div><dt>Izhodni format</dt><dd>json ali SSE</dd></div></dl><div class=\"tw\" data-card-parameters data-typed-parameters><table><thead><tr><th>Polje</th><th>Vrsta</th><th>Zahteva</th><th>Vrednosti in omejitve</th><th>Privzeto</th></tr></thead><tbody><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">model</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Obvezno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>nemotron-lightning-latest</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">messages</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>message[]</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Obvezno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>Najmanjše število elementov: 1</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">messages[].role</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Obvezno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>Primeri: system, user, assistant, tool, function</div><div>Pogoji: Te vloge so izrecno predstavljene s tipi združljivosti v izvorni kodi; natančen nabor vlog ostaja odvisen od modela.</div><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">messages[].content</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string|content_part[]|null</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">messages[].tool_calls</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>tool_call[]</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">messages[].tool_call_id</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>Velja, ko: role=tool; uporabite dejansko vrnjeni ID</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">messages[].name</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">messages[].reasoning_content</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>Velja, ko: Pošljite nazaj dejansko vrnjeno sklepanje, kadar ga ta model uporablja</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">messages[].reasoning_details</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>object|array</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">max_tokens</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>integer</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>Najmanj: 1</div><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">max_completion_tokens</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>integer</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>Najmanj: 1</div><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">stream</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>boolean</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span></td><td data-cell-label=\"Privzeto\" data-default=\"known\"><span class=\"card-cell-label\">Privzeto</span>false</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">stream_options.include_usage</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>boolean</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">temperature</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>number</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">top_p</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>number</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">stop</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string|string[]</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">tools</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>function_tool[]</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">tools[].type</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">tools[].function.name</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Obvezno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div>Velja, ko: podano je funkcijsko orodje</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">tools[].function.description</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_interface\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">tools[].function.parameters</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>JSON_schema</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">tool_choice</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string|object</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">parallel_tool_calls</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>boolean</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">response_format</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>object</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">reasoning_effort</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">reasoning</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>object</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">service_tier</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"source_compatibility\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">instructions</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Polje združljivosti</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">functions</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>function[]</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">function_call</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>string|object</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr><tr data-parameter-availability=\"model_dependent\"><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">prompt_cache_options</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span><code>object</code></td><td data-cell-label=\"Zahteva\"><span class=\"card-cell-label\">Zahteva</span>Izbirno</td><td data-cell-label=\"Vrednosti in omejitve\"><span class=\"card-cell-label\">Vrednosti in omejitve</span><div class=\"note-s\">Odvisno od modela</div></td><td data-cell-label=\"Privzeto\" data-default=\"unspecified\"><span class=\"card-cell-label\">Privzeto</span>—</td></tr></tbody></table></div><details class=\"card-about\" data-material-combinations><summary>Kombinacije vhodnih gradiv</summary><p class=\"note-s\"><b>Besedilo</b> · Besedilo UTF8</p><p class=\"note-s\"><code>messages[].content</code></p></details><details class=\"note-s\" data-method-contract><summary>Parametri in življenjski cikel metode</summary><div class=\"tw\" data-card-table=\"contract\"><table><thead><tr><th>Parameter</th><th>Specifikacija</th></tr></thead><tbody><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>material_types</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>text</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>required</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>model, messages</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>optional_controls</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>null</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>content_type</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>application/json</td></tr><tr><th data-cell-label=\"Parameter\" scope=\"row\"><span class=\"card-cell-label\">Parameter</span><code>text_file_material</code></th><td data-cell-label=\"Specifikacija\"><span class=\"card-cell-label\">Specifikacija</span>dejanska vsebina UTF-8 je vstavljena kot besedilo; ID datotek in URLs potrebujejo ločeno, natančno določeno podporo</td></tr></tbody></table></div><p>Življenjski cikel: <code>exact retained published method</code></p><p class=\"note-s\">Strukture metod in ID so natančno določeni; zmožnost ponudnika je ločena od sprejema zahteve.</p></details></details></section><section class=\"card-section\" data-card-section=\"pricing\"><h3 tabindex=\"-1\">Cenik</h3><h4>Cene metod Ailoot</h4><section class=\"meth\" data-route=\"Core\"><header><b><span class=\"alias\">Ailoot</span> OpenAI Chat</b><code>POST /v1/chat/completions</code></header><dl><div><dt>Vhod</dt><dd>0,00008 $ <em>/ 1K</em></dd></div><div><dt>Izhod</dt><dd>0,0002 $ <em>/ 1K</em></dd></div><div><dt>Branje predpomnilnika</dt><dd>0,00008 $ <em>/ 1K</em></dd></div><div><dt>Zapis v predpomnilnik</dt><dd>0,00008 $ <em>/ 1K</em></dd></div><div><dt>Zapis v predpomnilnik, 5 min</dt><dd>0,00008 $ <em>/ 1K tokens</em></dd></div></dl></section><p class=\"note-s\">Ailoot pred zahtevo rezervira ocenjeni znesek. Po rezultatu obračuna končni strošek na podlagi izmerjene porabe. Obračun pretakanja uporablja končni zapis porabe. <a href=\"/docs/sl/billing/reserve/\">Kako delujeta rezervacija in obračun →</a></p></section><section class=\"card-section\" data-card-section=\"examples\"><h3 tabindex=\"-1\">Primeri zahtev</h3><h4>Ailoot · OpenAI Chat</h4><div class=\"code-group\"><div class=\"cg-bar\"><div class=\"cg-tabs\" role=\"tablist\" aria-label=\"Primeri kode\"><button class=\"cg-tab\" id=\"model-code-556-tab-0\" role=\"tab\" type=\"button\" aria-controls=\"model-code-556-panel-0\" aria-selected=\"true\" tabindex=\"0\">Primer besedila</button><button class=\"cg-tab\" id=\"model-code-556-tab-1\" role=\"tab\" type=\"button\" aria-controls=\"model-code-556-panel-1\" aria-selected=\"false\" tabindex=\"-1\">Python SDK</button><button class=\"cg-tab\" id=\"model-code-556-tab-2\" role=\"tab\" type=\"button\" aria-controls=\"model-code-556-panel-2\" aria-selected=\"false\" tabindex=\"-1\">Node.js SDK</button><button class=\"cg-tab\" id=\"model-code-556-tab-3\" role=\"tab\" type=\"button\" aria-controls=\"model-code-556-panel-3\" aria-selected=\"false\" tabindex=\"-1\">Tok Python</button></div><div class=\"cg-tools\"><button class=\"cg-btn cg-copy\" type=\"button\" aria-label=\"Kopiraj kodo\"><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-556-panel-0\" role=\"tabpanel\" aria-labelledby=\"model-code-556-tab-0\"><pre data-lang=\"bash\"><code>set -eu\n: &quot;${AILOOT_API_KEY:?Set your Ailoot API key}&quot;\n: &quot;${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}&quot;\nexport AILOOT_TEXT_FILE\npython3 - &lt;&lt;&#39;PY_REQUEST&#39;\nimport json,os\nfrom pathlib import Path\np=json.loads(&#39;{&quot;model&quot;: &quot;nemotron-lightning-latest&quot;, &quot;messages&quot;: []}&#39;)\nf=Path(os.environ[&quot;AILOOT_TEXT_FILE&quot;])\nif not f.is_file():raise SystemExit(&quot;Choose your actual UTF-8 source material&quot;)\ntext=f.read_text(encoding=&quot;utf-8&quot;)\nif not text.strip():raise SystemExit(&quot;Source material must contain text&quot;)\np[&quot;messages&quot;]=[{&quot;role&quot;:&quot;user&quot;,&quot;content&quot;:&quot;Summarize this material and quote supporting source passages.\\n\\n&quot;+text}]\nPath(&quot;request.json&quot;).write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \\\n  -H &quot;Authorization: Bearer $AILOOT_API_KEY&quot; -H &#39;Content-Type: application/json&#39; \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - &lt;&lt;&#39;PY_RESULT&#39;\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(&quot;result.json&quot;).read_text()),ensure_ascii=False,indent=2))\nPY_RESULT\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-556-panel-1\" role=\"tabpanel\" aria-labelledby=\"model-code-556-tab-1\" hidden><pre data-lang=\"python\"><code>from openai import OpenAI\nimport os\n\nif not os.environ.get(&quot;AILOOT_API_KEY&quot;, &quot;&quot;).strip(): raise SystemExit(&quot;Set AILOOT_API_KEY before making a request&quot;)\nclient = OpenAI(base_url=&quot;https://api.ailoot.ai/v1&quot;, api_key=os.environ[&quot;AILOOT_API_KEY&quot;], max_retries=0)\nresp = client.chat.completions.create(\n    model=&quot;nemotron-lightning-latest&quot;,\n    messages=[{&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: &quot;Explain the difference between an observation and a hypothesis in three sentences.&quot;}],\n)\nimport base64, json\nfrom pathlib import Path\n\ndef save_result(data, stem=&quot;result&quot;):\n    # Keep every field, including usage, IDs, reasoning and tool requests.\n    Path(stem + &quot;.json&quot;).write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding=&quot;utf-8&quot;)\n    print(json.dumps(data, ensure_ascii=False, indent=2))\n    def save_blob(encoded, suffix, label):\n        raw = base64.b64decode(encoded, altchars=b&quot;-_&quot;, validate=True)\n        ext = &quot;png&quot; if raw.startswith(b&quot;\\x89PNG\\r\\n\\x1a\\n&quot;) else &quot;jpg&quot; if raw.startswith(b&quot;\\xff\\xd8&quot;) else &quot;webp&quot; if raw[:4] == b&quot;RIFF&quot; and raw[8:12] == b&quot;WEBP&quot; else suffix\n        file = Path(stem + &quot;-&quot; + label + &quot;.&quot; + ext)\n        file.write_bytes(raw)\n        print(&quot;Saved&quot;, file)\n    for index, block in enumerate(data.get(&quot;content&quot;) or []):\n        print(&quot;Content&quot;, index, json.dumps(block, ensure_ascii=False))\n    for choice in data.get(&quot;choices&quot;) or []:\n        print(&quot;Choice&quot;, choice.get(&quot;index&quot;), json.dumps(choice.get(&quot;message&quot;, choice.get(&quot;delta&quot;, {})), ensure_ascii=False))\n    for index, item in enumerate(data.get(&quot;output&quot;) or []):\n        print(&quot;Output&quot;, index, json.dumps(item, ensure_ascii=False))\n        if item.get(&quot;type&quot;) == &quot;image_generation_call&quot; and item.get(&quot;result&quot;):\n            save_blob(item[&quot;result&quot;], item.get(&quot;output_format&quot;) or &quot;bin&quot;, &quot;output-&quot; + str(index))\n    for ci, candidate in enumerate(data.get(&quot;candidates&quot;) or []):\n        for pi, part in enumerate((candidate.get(&quot;content&quot;) or {}).get(&quot;parts&quot;) or []):\n            print(&quot;Candidate/part&quot;, ci, pi, json.dumps(part, ensure_ascii=False))\n            blob = part.get(&quot;inlineData&quot;) or part.get(&quot;inline_data&quot;)\n            if blob and blob.get(&quot;data&quot;):\n                mime = blob.get(&quot;mimeType&quot;) or blob.get(&quot;mime_type&quot;)\n                suffix = {&quot;image/png&quot;:&quot;png&quot;, &quot;image/jpeg&quot;:&quot;jpg&quot;, &quot;image/webp&quot;:&quot;webp&quot;, &quot;audio/wav&quot;:&quot;wav&quot;, &quot;audio/mpeg&quot;:&quot;mp3&quot;, &quot;video/mp4&quot;:&quot;mp4&quot;}.get(mime, &quot;bin&quot;)\n                save_blob(blob[&quot;data&quot;], suffix, &quot;candidate-&quot; + str(ci) + &quot;-part-&quot; + str(pi))\n\nsave_result(resp.to_dict(mode=&quot;json&quot;))\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-556-panel-2\" role=\"tabpanel\" aria-labelledby=\"model-code-556-tab-2\" hidden><pre data-lang=\"js\"><code>import OpenAI from &quot;openai&quot;;\n\nif (!process.env.AILOOT_API_KEY?.trim()) throw new Error(&quot;Set AILOOT_API_KEY before making a request&quot;);\nconst client = new OpenAI({ baseURL: &quot;https://api.ailoot.ai/v1&quot;, apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });\nconst resp = await client.chat.completions.create({\n  model: &quot;nemotron-lightning-latest&quot;,\n  messages: [{ role: &quot;user&quot;, content: &quot;Explain the difference between an observation and a hypothesis in three sentences.&quot; }],\n});\nimport { writeFileSync } from &quot;node:fs&quot;;\n\nfunction saveResult(data, stem = &quot;result&quot;) {\n  writeFileSync(stem + &quot;.json&quot;, JSON.stringify(data, null, 2));\n  console.log(JSON.stringify(data, null, 2));\n  const saveBlob = (encoded, suffix, label) =&gt; {\n    const raw = Buffer.from(encoded, &quot;base64&quot;);\n    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? &quot;png&quot; : raw[0]===255 &amp;&amp; raw[1]===216 ? &quot;jpg&quot; : raw.subarray(0,4).toString()===&quot;RIFF&quot; &amp;&amp; raw.subarray(8,12).toString()===&quot;WEBP&quot; ? &quot;webp&quot; : suffix;\n    const file = `${stem}-${label}.${ext}`;\n    writeFileSync(file, raw); console.log(&quot;Saved&quot;, file);\n  };\n  for (const [i, block] of (data.content || []).entries()) console.log(&quot;Content&quot;, i, JSON.stringify(block));\n  for (const choice of data.choices || []) console.log(&quot;Choice&quot;, choice.index, JSON.stringify(choice.message || choice.delta || {}));\n  for (const [i, item] of (data.output || []).entries()) {\n    console.log(&quot;Output&quot;, i, JSON.stringify(item));\n    if (item.type === &quot;image_generation_call&quot; &amp;&amp; item.result) saveBlob(item.result, item.output_format || &quot;bin&quot;, `output-${i}`);\n  }\n  for (const [ci, candidate] of (data.candidates || []).entries()) {\n    for (const [pi, part] of (candidate.content?.parts || []).entries()) {\n      console.log(&quot;Candidate/part&quot;, ci, pi, JSON.stringify(part));\n      const blob = part.inlineData || part.inline_data;\n      if (blob?.data) {\n        const mime = blob.mimeType || blob.mime_type;\n        const suffix = ({&quot;image/png&quot;:&quot;png&quot;, &quot;image/jpeg&quot;:&quot;jpg&quot;, &quot;image/webp&quot;:&quot;webp&quot;, &quot;audio/wav&quot;:&quot;wav&quot;, &quot;audio/mpeg&quot;:&quot;mp3&quot;, &quot;video/mp4&quot;:&quot;mp4&quot;})[mime] || &quot;bin&quot;;\n        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);\n      }\n    }\n  }\n}\n\nsaveResult(resp);\n</code></pre></div><div class=\"cg-pane\" id=\"model-code-556-panel-3\" role=\"tabpanel\" aria-labelledby=\"model-code-556-tab-3\" hidden><pre data-lang=\"python\"><code>from openai import OpenAI\nimport os\nfrom pathlib import Path\n\nif not os.environ.get(&quot;AILOOT_API_KEY&quot;, &quot;&quot;).strip(): raise SystemExit(&quot;Set AILOOT_API_KEY before making a request&quot;)\nclient=OpenAI(base_url=&quot;https://api.ailoot.ai/v1&quot;,api_key=os.environ[&quot;AILOOT_API_KEY&quot;],max_retries=0)\nimport base64, json\nfrom pathlib import Path\n\ndef save_result(data, stem=&quot;result&quot;):\n    # Keep every field, including usage, IDs, reasoning and tool requests.\n    Path(stem + &quot;.json&quot;).write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding=&quot;utf-8&quot;)\n    print(json.dumps(data, ensure_ascii=False, indent=2))\n    def save_blob(encoded, suffix, label):\n        raw = base64.b64decode(encoded, altchars=b&quot;-_&quot;, validate=True)\n        ext = &quot;png&quot; if raw.startswith(b&quot;\\x89PNG\\r\\n\\x1a\\n&quot;) else &quot;jpg&quot; if raw.startswith(b&quot;\\xff\\xd8&quot;) else &quot;webp&quot; if raw[:4] == b&quot;RIFF&quot; and raw[8:12] == b&quot;WEBP&quot; else suffix\n        file = Path(stem + &quot;-&quot; + label + &quot;.&quot; + ext)\n        file.write_bytes(raw)\n        print(&quot;Saved&quot;, file)\n    for index, block in enumerate(data.get(&quot;content&quot;) or []):\n        print(&quot;Content&quot;, index, json.dumps(block, ensure_ascii=False))\n    for choice in data.get(&quot;choices&quot;) or []:\n        print(&quot;Choice&quot;, choice.get(&quot;index&quot;), json.dumps(choice.get(&quot;message&quot;, choice.get(&quot;delta&quot;, {})), ensure_ascii=False))\n    for index, item in enumerate(data.get(&quot;output&quot;) or []):\n        print(&quot;Output&quot;, index, json.dumps(item, ensure_ascii=False))\n        if item.get(&quot;type&quot;) == &quot;image_generation_call&quot; and item.get(&quot;result&quot;):\n            save_blob(item[&quot;result&quot;], item.get(&quot;output_format&quot;) or &quot;bin&quot;, &quot;output-&quot; + str(index))\n    for ci, candidate in enumerate(data.get(&quot;candidates&quot;) or []):\n        for pi, part in enumerate((candidate.get(&quot;content&quot;) or {}).get(&quot;parts&quot;) or []):\n            print(&quot;Candidate/part&quot;, ci, pi, json.dumps(part, ensure_ascii=False))\n            blob = part.get(&quot;inlineData&quot;) or part.get(&quot;inline_data&quot;)\n            if blob and blob.get(&quot;data&quot;):\n                mime = blob.get(&quot;mimeType&quot;) or blob.get(&quot;mime_type&quot;)\n                suffix = {&quot;image/png&quot;:&quot;png&quot;, &quot;image/jpeg&quot;:&quot;jpg&quot;, &quot;image/webp&quot;:&quot;webp&quot;, &quot;audio/wav&quot;:&quot;wav&quot;, &quot;audio/mpeg&quot;:&quot;mp3&quot;, &quot;video/mp4&quot;:&quot;mp4&quot;}.get(mime, &quot;bin&quot;)\n                save_blob(blob[&quot;data&quot;], suffix, &quot;candidate-&quot; + str(ci) + &quot;-part-&quot; + str(pi))\n\nwith client.chat.completions.stream(model=&#39;nemotron-lightning-latest&#39;,messages=[{&quot;role&quot;:&quot;user&quot;,&quot;content&quot;:&quot;Explain observations and hypotheses in three sentences.&quot;}]) as stream:\n    with Path(&quot;stream-events.jsonl&quot;).open(&quot;w&quot;,encoding=&quot;utf-8&quot;) as log:\n        for event in stream:\n            payload=event.to_dict(mode=&quot;json&quot;)\n            log.write(json.dumps(payload,ensure_ascii=False)+&quot;\\n&quot;); log.flush()\n            print(json.dumps(payload,ensure_ascii=False))\n    final=stream.get_final_completion()\n    save_result(final.to_dict(mode=&quot;json&quot;),&quot;stream-result&quot;)\n</code></pre></div></div></div></section><section class=\"card-section\" data-card-section=\"results\"><h3 tabindex=\"-1\">Prejmi in shrani rezultate</h3><h4>Ailoot · OpenAI Chat</h4><p class=\"note-s\">json ali SSE</p><div class=\"card-result-process\" data-all-results><h5>Ohrani vse dokončane rezultate</h5><p class=\"note-s\">Shranite vsak v celoti vrnjen odgovor, datoteko in del vsebine.</p><p class=\"note-s\">Ohranite vsako možnost odgovora ter njeno vsebino, klice orodij in sklepanje. V SSE sestavite delne spremembe po indeksu možnosti/orodja ter ohranite končni razlog zaključka in podatke o porabi.</p></div><div class=\"card-result-process\" data-unknown-recovery><h5>Če je treba preveriti izvirni odgovor</h5><p class=\"note-s\">Ohranite ID zahtev/odgovorov in glave. Splošni URL za pridobivanje besedilne naloge ni podan.</p></div><details class=\"card-about\" data-output-fields><summary>Polja odgovora</summary><div class=\"tw\" data-card-table=\"output\"><table><thead><tr><th>Polje</th><th>Vrsta</th></tr></thead><tbody><tr><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">choices[].index</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span>integer</td></tr><tr><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">choices[].message.content</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span>string|null</td></tr><tr><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">choices[].message.tool_calls</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span>tool_call[]</td></tr><tr><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">choices[].message.reasoning_content</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span>string</td></tr><tr><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">choices[].message.reasoning_details</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span>object|array</td></tr><tr><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">choices[].finish_reason</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span>string|null</td></tr><tr><th data-cell-label=\"Polje\" scope=\"row\"><span class=\"card-cell-label\">Polje</span><code class=\"card-field-name\">usage</code></th><td data-cell-label=\"Vrsta\" data-field-type><span class=\"card-cell-label\">Vrsta</span>object</td></tr></tbody></table></div></details><details class=\"card-about\" data-method-errors><summary>Napake in naslednji koraki</summary><div class=\"tw\" data-card-table=\"errors\"><table><thead><tr><th>Odgovor</th><th>Pogoj</th><th>Naslednji korak</th></tr></thead><tbody><tr><th data-cell-label=\"Odgovor\" scope=\"row\"><span class=\"card-cell-label\">Odgovor</span>400 · <code>invalid_request_error</code></th><td data-cell-label=\"Pogoj\"><span class=\"card-cell-label\">Pogoj</span>Neveljavna obvezna polja, predstavitev gradiva ali vrednost parametra</td><td data-cell-label=\"Naslednji korak\"><span class=\"card-cell-label\">Naslednji korak</span>Pred novo zahtevo za ustvarjanje popravite navedena polja.</td></tr></tbody></table></div></details></section><section class=\"card-section\" data-card-section=\"aliases\"><h3 tabindex=\"-1\">Druga imena</h3><h4>Druga imena modelov</h4><p class=\"note-s\"><span data-model-alias-route=\"Core\"><b>Ailoot</b> <a href=\"#m=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;route=Core&amp;caller=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;fmt=chat\"><code>nvidia/nemotron-3.5-lightning-30b-a3b</code></a>, <a href=\"#m=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;route=Core&amp;caller=nemotron-lightning&amp;fmt=chat\"><code>nemotron-lightning</code></a>, <a href=\"#m=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;route=Core&amp;caller=nemotron-lightning-latest&amp;fmt=chat\"><code>nemotron-lightning-latest</code></a></span></p><h4>Druga imena poti metod</h4><p class=\"note-s\">Uporabite zgoraj navedene poti metod.</p><h4>Povezani ID-ji za klic</h4><p class=\"note-s\"><a href=\"#m=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;route=Core&amp;caller=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;fmt=chat\"><code>nvidia/nemotron-3.5-lightning-30b-a3b</code></a>, <a href=\"#m=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;route=Core&amp;caller=nemotron-lightning&amp;fmt=chat\"><code>nemotron-lightning</code></a>, <a href=\"#m=nvidia%2Fnemotron-3.5-lightning-30b-a3b&amp;route=Core&amp;caller=nemotron-lightning-latest&amp;fmt=chat\"><code>nemotron-lightning-latest</code></a></p></section></div>",
      "method_identity": {
        "effective_request_model_id": "nemotron-lightning-latest",
        "fmt": "chat",
        "http": "POST",
        "path": "/v1/chat/completions",
        "request_model_id": "nemotron-lightning-latest",
        "route_label": "Core"
      },
      "method_key": "Core|chat|/v1/chat/completions|nemotron-lightning-latest",
      "ordinal": 3,
      "rawMethod": {
        "cache_read": 0.08,
        "cache_write": 0.08,
        "cache_write_1h": null,
        "cache_write_5m": 0.08,
        "conditional_meter": null,
        "contract": {
          "data": {
            "all_results": "Keep every choice and its content/tool calls/reasoning. In SSE assemble deltas by choice/tool index, retain the final finish reason and usage.",
            "authentication": {
              "api_key_source": "AILOOT_API_KEY",
              "header": "Authorization: Bearer"
            },
            "errors": [
              {
                "code": null,
                "condition": "Neveljavna obvezna polja, predstavitev gradiva ali vrednost parametra",
                "http_status": 400,
                "recovery": "Pred novo zahtevo za ustvarjanje popravite navedena polja.",
                "type": "invalid_request_error"
              }
            ],
            "hints": [
              "Model context is not an output cap.",
              "A model-dependent field needs the exact published model profile; unspecified defaults/enums are not guessed.",
              "Tool calls propose actions; the client application returns actual observations with the returned call ID."
            ],
            "ignored_fields": [],
            "lifecycle": {
              "create": {
                "http": "POST",
                "path": "/v1/chat/completions"
              },
              "job_read": null,
              "mode": "synchronous_or_streamed",
              "unknown": "Ohranite ID zahtev/odgovorov in glave. Splošni URL za pridobivanje besedilne naloge ni podan."
            },
            "material_combinations": [
              {
                "mode": "text",
                "representation": "messages[].content",
                "required_material": "Besedilo UTF8"
              }
            ],
            "operation_modes": [
              "conversation",
              "function_tool_continuation",
              "streaming"
            ],
            "outputs": {
              "all_results": "Ohranite vsako možnost odgovora ter njeno vsebino, klice orodij in sklepanje. V SSE sestavite delne spremembe po indeksu možnosti/orodja ter ohranite končni razlog zaključka in podatke o porabi.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "choices[].index",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "choices[].message.content",
                  "type": "string|null"
                },
                {
                  "description": null,
                  "name": "choices[].message.tool_calls",
                  "type": "tool_call[]"
                },
                {
                  "description": null,
                  "name": "choices[].message.reasoning_content",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "choices[].message.reasoning_details",
                  "type": "object|array"
                },
                {
                  "description": null,
                  "name": "choices[].finish_reason",
                  "type": "string|null"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                }
              ],
              "format": "json ali SSE"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "nemotron-lightning-latest"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_items": 1,
                "name": "messages",
                "required": true,
                "type": "message[]"
              },
              {
                "availability": "model_dependent",
                "conditions": "Te vloge so izrecno predstavljene s tipi združljivosti v izvorni kodi; natančen nabor vlog ostaja odvisen od modela.",
                "default": null,
                "default_known": false,
                "enum": [
                  "system",
                  "user",
                  "assistant",
                  "tool",
                  "function"
                ],
                "enum_exhaustive": false,
                "enum_known": true,
                "name": "messages[].role",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].content",
                "required": false,
                "type": "string|content_part[]|null"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].tool_calls",
                "required": false,
                "type": "tool_call[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].tool_call_id",
                "required": false,
                "type": "string",
                "when": "role=tool; uporabite dejansko vrnjeni ID"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].name",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].reasoning_content",
                "required": false,
                "type": "string",
                "when": "Pošljite nazaj dejansko vrnjeno sklepanje, kadar ga ta model uporablja"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].reasoning_details",
                "required": false,
                "type": "object|array"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minimum": 1,
                "name": "max_tokens",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minimum": 1,
                "name": "max_completion_tokens",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": false,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "stream",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "stream_options.include_usage",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "temperature",
                "required": false,
                "type": "number"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "top_p",
                "required": false,
                "type": "number"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "stop",
                "required": false,
                "type": "string|string[]"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools",
                "required": false,
                "type": "function_tool[]"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].type",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].function.name",
                "required": true,
                "type": "string",
                "when": "podano je funkcijsko orodje"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].function.description",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].function.parameters",
                "required": false,
                "type": "JSON_schema"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tool_choice",
                "required": false,
                "type": "string|object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "parallel_tool_calls",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "response_format",
                "required": false,
                "type": "object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "reasoning_effort",
                "required": false,
                "type": "string"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "reasoning",
                "required": false,
                "type": "object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "service_tier",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_compatibility",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "instructions",
                "required": false,
                "type": "string"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "functions",
                "required": false,
                "type": "function[]"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "function_call",
                "required": false,
                "type": "string|object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "prompt_cache_options",
                "required": false,
                "type": "object"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": []
          },
          "hints": [
            "Strukture metod in ID so natančno določeni; zmožnost ponudnika je ločena od sprejema zahteve."
          ],
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional_controls": null,
            "required": [
              "model",
              "messages"
            ],
            "text_file_material": "dejanska vsebina UTF-8 je vstavljena kot besedilo; ID datotek in URLs potrebujejo ločeno, natančno določeno podporo"
          },
          "lifecycle": {
            "mode": "exact retained published method"
          },
          "method": {
            "http": "POST",
            "path": "/v1/chat/completions"
          },
          "operation_modes": [
            "chat_completions"
          ],
          "output": {
            "family": [
              "text"
            ],
            "format": "JSON or supported SSE",
            "multioutputs": "retain every actual response output"
          }
        },
        "ctx": 4096,
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}\"\nexport AILOOT_TEXT_FILE\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"nemotron-lightning-latest\", \"messages\": []}')\nf=Path(os.environ[\"AILOOT_TEXT_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose your actual UTF-8 source material\")\ntext=f.read_text(encoding=\"utf-8\")\nif not text.strip():raise SystemExit(\"Source material must contain text\")\np[\"messages\"]=[{\"role\":\"user\",\"content\":\"Summarize this material and quote supporting source passages.\\n\\n\"+text}]\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"result.json\").read_text()),ensure_ascii=False,indent=2))\nPY_RESULT\n",
            "label": "Use actual text material",
            "language": "bash"
          },
          {
            "code": "from openai import OpenAI\nimport os\n\nif not os.environ.get(\"AILOOT_API_KEY\", \"\").strip(): raise SystemExit(\"Set AILOOT_API_KEY before making a request\")\nclient = OpenAI(base_url=\"https://api.ailoot.ai/v1\", api_key=os.environ[\"AILOOT_API_KEY\"], max_retries=0)\nresp = client.chat.completions.create(\n    model=\"nemotron-lightning-latest\",\n    messages=[{\"role\": \"user\", \"content\": \"Explain the difference between an observation and a hypothesis in three sentences.\"}],\n)\nimport base64, json\nfrom pathlib import Path\n\ndef save_result(data, stem=\"result\"):\n    # Keep every field, including usage, IDs, reasoning and tool requests.\n    Path(stem + \".json\").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding=\"utf-8\")\n    print(json.dumps(data, ensure_ascii=False, indent=2))\n    def save_blob(encoded, suffix, label):\n        raw = base64.b64decode(encoded, altchars=b\"-_\", validate=True)\n        ext = \"png\" if raw.startswith(b\"\\x89PNG\\r\\n\\x1a\\n\") else \"jpg\" if raw.startswith(b\"\\xff\\xd8\") else \"webp\" if raw[:4] == b\"RIFF\" and raw[8:12] == b\"WEBP\" else suffix\n        file = Path(stem + \"-\" + label + \".\" + ext)\n        file.write_bytes(raw)\n        print(\"Saved\", file)\n    for index, block in enumerate(data.get(\"content\") or []):\n        print(\"Content\", index, json.dumps(block, ensure_ascii=False))\n    for choice in data.get(\"choices\") or []:\n        print(\"Choice\", choice.get(\"index\"), json.dumps(choice.get(\"message\", choice.get(\"delta\", {})), ensure_ascii=False))\n    for index, item in enumerate(data.get(\"output\") or []):\n        print(\"Output\", index, json.dumps(item, ensure_ascii=False))\n        if item.get(\"type\") == \"image_generation_call\" and item.get(\"result\"):\n            save_blob(item[\"result\"], item.get(\"output_format\") or \"bin\", \"output-\" + str(index))\n    for ci, candidate in enumerate(data.get(\"candidates\") or []):\n        for pi, part in enumerate((candidate.get(\"content\") or {}).get(\"parts\") or []):\n            print(\"Candidate/part\", ci, pi, json.dumps(part, ensure_ascii=False))\n            blob = part.get(\"inlineData\") or part.get(\"inline_data\")\n            if blob and blob.get(\"data\"):\n                mime = blob.get(\"mimeType\") or blob.get(\"mime_type\")\n                suffix = {\"image/png\":\"png\", \"image/jpeg\":\"jpg\", \"image/webp\":\"webp\", \"audio/wav\":\"wav\", \"audio/mpeg\":\"mp3\", \"video/mp4\":\"mp4\"}.get(mime, \"bin\")\n                save_blob(blob[\"data\"], suffix, \"candidate-\" + str(ci) + \"-part-\" + str(pi))\n\nsave_result(resp.to_dict(mode=\"json\"))\n",
            "label": "Python · retained SDK call",
            "language": "python"
          },
          {
            "SDK_retry_proof": {
              "field": "maxRetries",
              "scope": "normalclient options; no provider/account/proxy switches",
              "source_urls": [
                "https://raw.githubusercontent.com/openai/openai-node/master/src/client.ts",
                "https://raw.githubusercontent.com/anthropics/anthropic-sdk-typescript/main/src/client.ts"
              ],
              "value": 0
            },
            "code": "import OpenAI from \"openai\";\n\nif (!process.env.AILOOT_API_KEY?.trim()) throw new Error(\"Set AILOOT_API_KEY before making a request\");\nconst client = new OpenAI({ baseURL: \"https://api.ailoot.ai/v1\", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });\nconst resp = await client.chat.completions.create({\n  model: \"nemotron-lightning-latest\",\n  messages: [{ role: \"user\", content: \"Explain the difference between an observation and a hypothesis in three sentences.\" }],\n});\nimport { writeFileSync } from \"node:fs\";\n\nfunction saveResult(data, stem = \"result\") {\n  writeFileSync(stem + \".json\", JSON.stringify(data, null, 2));\n  console.log(JSON.stringify(data, null, 2));\n  const saveBlob = (encoded, suffix, label) => {\n    const raw = Buffer.from(encoded, \"base64\");\n    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? \"png\" : raw[0]===255 && raw[1]===216 ? \"jpg\" : raw.subarray(0,4).toString()===\"RIFF\" && raw.subarray(8,12).toString()===\"WEBP\" ? \"webp\" : suffix;\n    const file = `${stem}-${label}.${ext}`;\n    writeFileSync(file, raw); console.log(\"Saved\", file);\n  };\n  for (const [i, block] of (data.content || []).entries()) console.log(\"Content\", i, JSON.stringify(block));\n  for (const choice of data.choices || []) console.log(\"Choice\", choice.index, JSON.stringify(choice.message || choice.delta || {}));\n  for (const [i, item] of (data.output || []).entries()) {\n    console.log(\"Output\", i, JSON.stringify(item));\n    if (item.type === \"image_generation_call\" && item.result) saveBlob(item.result, item.output_format || \"bin\", `output-${i}`);\n  }\n  for (const [ci, candidate] of (data.candidates || []).entries()) {\n    for (const [pi, part] of (candidate.content?.parts || []).entries()) {\n      console.log(\"Candidate/part\", ci, pi, JSON.stringify(part));\n      const blob = part.inlineData || part.inline_data;\n      if (blob?.data) {\n        const mime = blob.mimeType || blob.mime_type;\n        const suffix = ({\"image/png\":\"png\", \"image/jpeg\":\"jpg\", \"image/webp\":\"webp\", \"audio/wav\":\"wav\", \"audio/mpeg\":\"mp3\", \"video/mp4\":\"mp4\"})[mime] || \"bin\";\n        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);\n      }\n    }\n  }\n}\n\nsaveResult(resp);\n",
            "label": "Node.js · retained SDK call",
            "language": "js"
          },
          {
            "code": "from openai import OpenAI\nimport os\nfrom pathlib import Path\n\nif not os.environ.get(\"AILOOT_API_KEY\", \"\").strip(): raise SystemExit(\"Set AILOOT_API_KEY before making a request\")\nclient=OpenAI(base_url=\"https://api.ailoot.ai/v1\",api_key=os.environ[\"AILOOT_API_KEY\"],max_retries=0)\nimport base64, json\nfrom pathlib import Path\n\ndef save_result(data, stem=\"result\"):\n    # Keep every field, including usage, IDs, reasoning and tool requests.\n    Path(stem + \".json\").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding=\"utf-8\")\n    print(json.dumps(data, ensure_ascii=False, indent=2))\n    def save_blob(encoded, suffix, label):\n        raw = base64.b64decode(encoded, altchars=b\"-_\", validate=True)\n        ext = \"png\" if raw.startswith(b\"\\x89PNG\\r\\n\\x1a\\n\") else \"jpg\" if raw.startswith(b\"\\xff\\xd8\") else \"webp\" if raw[:4] == b\"RIFF\" and raw[8:12] == b\"WEBP\" else suffix\n        file = Path(stem + \"-\" + label + \".\" + ext)\n        file.write_bytes(raw)\n        print(\"Saved\", file)\n    for index, block in enumerate(data.get(\"content\") or []):\n        print(\"Content\", index, json.dumps(block, ensure_ascii=False))\n    for choice in data.get(\"choices\") or []:\n        print(\"Choice\", choice.get(\"index\"), json.dumps(choice.get(\"message\", choice.get(\"delta\", {})), ensure_ascii=False))\n    for index, item in enumerate(data.get(\"output\") or []):\n        print(\"Output\", index, json.dumps(item, ensure_ascii=False))\n        if item.get(\"type\") == \"image_generation_call\" and item.get(\"result\"):\n            save_blob(item[\"result\"], item.get(\"output_format\") or \"bin\", \"output-\" + str(index))\n    for ci, candidate in enumerate(data.get(\"candidates\") or []):\n        for pi, part in enumerate((candidate.get(\"content\") or {}).get(\"parts\") or []):\n            print(\"Candidate/part\", ci, pi, json.dumps(part, ensure_ascii=False))\n            blob = part.get(\"inlineData\") or part.get(\"inline_data\")\n            if blob and blob.get(\"data\"):\n                mime = blob.get(\"mimeType\") or blob.get(\"mime_type\")\n                suffix = {\"image/png\":\"png\", \"image/jpeg\":\"jpg\", \"image/webp\":\"webp\", \"audio/wav\":\"wav\", \"audio/mpeg\":\"mp3\", \"video/mp4\":\"mp4\"}.get(mime, \"bin\")\n                save_blob(blob[\"data\"], suffix, \"candidate-\" + str(ci) + \"-part-\" + str(pi))\n\nwith client.chat.completions.stream(model='nemotron-lightning-latest',messages=[{\"role\":\"user\",\"content\":\"Explain observations and hypotheses in three sentences.\"}]) as stream:\n    with Path(\"stream-events.jsonl\").open(\"w\",encoding=\"utf-8\") as log:\n        for event in stream:\n            payload=event.to_dict(mode=\"json\")\n            log.write(json.dumps(payload,ensure_ascii=False)+\"\\n\"); log.flush()\n            print(json.dumps(payload,ensure_ascii=False))\n    final=stream.get_final_completion()\n    save_result(final.to_dict(mode=\"json\"),\"stream-result\")\n",
            "label": "Python streaming · retain all events",
            "language": "python"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "chat",
        "http": "POST",
        "img_in": null,
        "img_out": null,
        "in": 0.08,
        "input": [
          "text"
        ],
        "label": "OpenAI Chat",
        "max_out": 1024,
        "max_tool_calls": null,
        "out": 0.2,
        "output": [
          "text"
        ],
        "path": "/v1/chat/completions",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "in",
                "label": "Input",
                "side": "in"
              },
              {
                "amount": 0.2,
                "amount_unit": "usd_per_million_tokens",
                "key": "out",
                "label": "Output",
                "side": "out"
              },
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "cache_read",
                "label": "Cache read",
                "side": "in"
              },
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "cache_write",
                "label": "Cache write",
                "side": "in"
              },
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "cache_write_5m",
                "label": "Cache write 5m",
                "side": "in"
              }
            ]
          }
        ],
        "request_model_id": "nemotron-lightning-latest",
        "route_label": "Core",
        "status_reads": [],
        "tiers": [],
        "tool_prices": null,
        "unit": "token",
        "units": []
      }
    }
  ],
  "model_id": "nvidia/nemotron-3.5-lightning-30b-a3b",
  "nativeProvenance": {
    "input_facts_canonical_sha256": "d11dce96a1388851a4a857642bcf6c1ee9040e77f0209bd1e57b63ecef9bb9a8",
    "input_html_sha256": "5de15ba82aa684378fd9b0aa1bcb2cb556abdbaf2c6da495defebc18c187415c",
    "private_audit_sha256": "a7667c82a50444813bd8a6a43e9f9eba0868e31a75430c53088e508df9f0e63e",
    "role": "historical-normalized-input-audit-hashes",
    "schema": "ailoot-native-model-provenance-v2"
  },
  "page": {
    "canonical": "https://ailoot.ai/models/sl/nvidia-nemotron-3-5-lightning-30b-a3b/",
    "description": "Nemotron 3.5 Lightning je besedilni model družbe NVIDIA za dolgotrajne agentske naloge, programiranje, iskanje po dokumentih in pogovor.",
    "locale": "sl",
    "md_url": "https://ailoot.ai/models/sl/nvidia-nemotron-3-5-lightning-30b-a3b/index.md",
    "title": "Nemotron 3.5 Lightning 30B A3B — Ailoot",
    "url": "https://ailoot.ai/models/sl/nvidia-nemotron-3-5-lightning-30b-a3b/"
  },
  "practicalHtml": "<h3>Praktična naloga</h3><p>Tehnični primer v angleščini</p><pre><code>Apply a document-grounded procedure\n\nUse these procedure excerpts to draft the next action for case C-09. [Rule 1] Packages with a damaged seal go to inspection. [Rule 2] Only inspection-cleared packages enter stock. [Record] C-09 has a damaged seal and no inspection result. Return the current permitted step, blocked step and supporting rule labels.</code></pre><h4>Pričakovani rezultat</h4><pre><code>Three concise fields covering the permitted inspection step, blocked stocking and source evidence.</code></pre><h4>Preverjanje rezultata</h4><pre><code>Check that missing inspection clearance prevents stocking and does not become an assumed failed inspection.</code></pre>",
  "practicalText": "Praktična naloga Tehnični primer v angleščini Apply a document-grounded procedure Use these procedure excerpts to draft the next action for case C-09. [Rule 1] Packages with a damaged seal go to inspection. [Rule 2] Only inspection-cleared packages enter stock. [Record] C-09 has a damaged seal and no inspection result. Return the current permitted step, blocked step and supporting rule labels. Pričakovani rezultat Three concise fields covering the permitted inspection step, blocked stocking and source evidence. Preverjanje rezultata Check that missing inspection clearance prevents stocking and does not become an assumed failed inspection.",
  "rawModel": {
    "about": "### Delovni model dolgotrajnega procesa\n\nNemotron 3.5 Lightning je namenjen samostojnim agentom in zaporedjem dejanj, ki se nadaljujejo skozi več korakov. Uporablja se tudi pri pogovornih pomočnikih, iskanju na podlagi dokumentov in izvajanju navodil. Vhod in izhod sta besedilna.\n\n### Arhitektura in kontekst\n\nHibridna mešanica ekspertov združuje Mamba-2 in ločene plasti pozornosti. Model skupno vsebuje 30 milijard parametrov, aktivne pa so 3 milijarde na token. Kontekst dosega milijon tokenov.\n\nPlasti za napovedovanje več naslednjih tokenov se dodatno učijo usklajevati svoje predloge s porazdelitvijo glavnega modela. Skupaj z izdajo so predstavljeni načini špekulativnega dekodiranja. Pomagajo organizirati ustvarjanje, vendar ne določajo zagotovljene hitrosti zahteve.\n\n### Pet stopenj priprave\n\n1. Predhodno učenje na več kot 20 bilijonih tokenov kode, matematike, znanosti in splošnega znanja s pripravo v formatu NVFP4.\n2. Nadaljevanje predhodnega učenja plasti za napovedovanje več prihodnjih tokenov: njihovi predlogi se uskladijo s porazdelitvijo glavnega modela.\n3. Učenje po primerih, vključno z navodili, klici orodij, strukturiranimi rezultati, iskanjem oddaljenih odsekov in združevanjem dokumentov.\n4. Spodbujevalno učenje v več okoljih za sklepanje, kodo, znanost, večstopenjske naloge z orodji in pogovor.\n5. Naknadno numerično stiskanje objavljene različice.\n\nZadnja stopnja opisuje konkretno izdajo proizvajalca in ne določa natančnosti izračunov strežene zahteve. V zunanjem procesu model predlaga dejanja in besedilni rezultat; orodja izvede aplikacija.\n\n### Jeziki in različice\n\nUradno so navedeni angleščina, španščina, francoščina, nemščina, italijanščina in japonščina ter programski jeziki. Za predhodno učenje je navedena meja podatkov do septembra 2025, za nadaljnje pa do maja 2026.\n\nZnačilnosti objavljene izdaje z numeričnim stiskanjem opisujejo prav to različico. Iz imena modela ni mogoče določiti natančnosti izračunov konkretne izvedbe. Milijon tokenov je skupni kontekst in ne ločena obljuba izhodne dolžine.",
    "alias_of": null,
    "aliases": [
      "nemotron-lightning",
      "nemotron-lightning-latest"
    ],
    "author": "NVIDIA",
    "ctx": 262144,
    "display_name": "Nemotron 3.5 Lightning 30B A3B",
    "formats": [
      "messages",
      "chat"
    ],
    "id": "nvidia/nemotron-3.5-lightning-30b-a3b",
    "input": [
      "text"
    ],
    "kind": "text",
    "max_out": 32768,
    "methods": [
      {
        "cache_read": 0.08,
        "cache_write": 0.08,
        "cache_write_1h": null,
        "cache_write_5m": 0.08,
        "conditional_meter": null,
        "contract": {
          "data": {
            "all_results": "Keep all content blocks, thinking signatures and actual tool-use IDs. Assemble all SSE block deltas; a first text block is not the complete output.",
            "authentication": {
              "api_key_source": "AILOOT_API_KEY",
              "headers": [
                "x-api-key",
                "anthropic-version"
              ],
              "version_example": "2023-06-01"
            },
            "errors": [
              {
                "code": null,
                "condition": "Neveljavna obvezna polja, predstavitev gradiva ali vrednost parametra",
                "http_status": 400,
                "recovery": "Pred novo zahtevo za ustvarjanje popravite navedena polja.",
                "type": "invalid_request_error"
              }
            ],
            "hints": [
              "Model context is not an output cap.",
              "A model-dependent field needs the exact published model profile; unspecified defaults/enums are not guessed.",
              "Tool calls propose actions; the client application returns actual observations with the returned call ID."
            ],
            "ignored_fields": [],
            "lifecycle": {
              "create": {
                "http": "POST",
                "path": "/v1/messages"
              },
              "job_read": null,
              "mode": "synchronous_or_streamed",
              "unknown": "Ohranite ID zahtev/odgovorov in glave. Splošni URL za pridobivanje besedilne naloge ni podan."
            },
            "material_combinations": [
              {
                "mode": "text",
                "representation": "messages[].content ali blok type=text",
                "required_material": "Besedilo UTF8"
              }
            ],
            "operation_modes": [
              "conversation",
              "function_tool_continuation",
              "streaming"
            ],
            "outputs": {
              "all_results": "Ohranite vse vsebinske bloke, podpise sklepanja in dejanske ID uporabe orodij. Sestavite vse delne spremembe blokov SSE; prvi besedilni blok ni celoten izhod.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "id",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "model",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "content[]",
                  "type": "text|thinking|tool_use|other content block"
                },
                {
                  "description": null,
                  "name": "stop_reason",
                  "type": "string|null"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                }
              ],
              "format": "json ali SSE"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "nvidia/nemotron-3.5-lightning-30b-a3b"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_items": 1,
                "name": "messages",
                "required": true,
                "type": "message[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "user",
                  "assistant"
                ],
                "enum_known": true,
                "name": "messages[].role",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].content",
                "required": true,
                "type": "string|content_block[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "system",
                "required": false,
                "type": "string|content_block[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "limit_scope": "natančna zgornja meja izbranega modela/kartice",
                "minimum": 1,
                "name": "max_tokens",
                "required": true,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": false,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "stream",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "temperature",
                "required": false,
                "type": "number"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "top_p",
                "required": false,
                "type": "number"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "stop_sequences",
                "required": false,
                "type": "string[]"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools",
                "required": false,
                "type": "tool[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].name",
                "required": false,
                "type": "string",
                "when": "podano je orodje"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].description",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].input_schema",
                "required": false,
                "type": "JSON_schema"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tool_choice",
                "required": false,
                "type": "object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "thinking.type",
                "required": false,
                "type": "string"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "thinking.budget_tokens",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "output_config.effort",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "metadata",
                "required": false,
                "type": "object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "cache_control",
                "required": false,
                "type": "object"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": []
          },
          "hints": [
            "Strukture metod in ID so natančno določeni; zmožnost ponudnika je ločena od sprejema zahteve."
          ],
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional_controls": null,
            "required": [
              "model",
              "messages",
              "max_tokens"
            ],
            "text_file_material": "dejanska vsebina UTF-8 je vstavljena kot besedilo; ID datotek in URLs potrebujejo ločeno, natančno določeno podporo"
          },
          "lifecycle": {
            "mode": "exact retained published method"
          },
          "method": {
            "http": "POST",
            "path": "/v1/messages"
          },
          "operation_modes": [
            "messages"
          ],
          "output": {
            "family": [
              "text"
            ],
            "format": "JSON or supported SSE",
            "multioutputs": "retain every actual response output"
          }
        },
        "ctx": 262144,
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}\"\nexport AILOOT_TEXT_FILE\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"nvidia/nemotron-3.5-lightning-30b-a3b\", \"max_tokens\": 1024, \"messages\": []}')\nf=Path(os.environ[\"AILOOT_TEXT_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose your actual UTF-8 source material\")\ntext=f.read_text(encoding=\"utf-8\")\nif not text.strip():raise SystemExit(\"Source material must contain text\")\np[\"messages\"]=[{\"role\":\"user\",\"content\":\"Summarize this material and quote supporting source passages.\\n\\n\"+text}]\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \\\n  -H \"x-api-key: $AILOOT_API_KEY\" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"result.json\").read_text()),ensure_ascii=False,indent=2))\nPY_RESULT\n",
            "label": "Use actual text material",
            "language": "bash"
          },
          {
            "code": "import anthropic\nimport os\n\nif not os.environ.get(\"AILOOT_API_KEY\", \"\").strip(): raise SystemExit(\"Set AILOOT_API_KEY before making a request\")\nclient = anthropic.Anthropic(base_url=\"https://api.ailoot.ai\", api_key=os.environ[\"AILOOT_API_KEY\"], max_retries=0)\nmsg = client.messages.create(\n    model=\"nvidia/nemotron-3.5-lightning-30b-a3b\",\n    max_tokens=1024,\n    messages=[{\"role\": \"user\", \"content\": \"Explain the difference between an observation and a hypothesis in three sentences.\"}],\n)\nimport base64, json\nfrom pathlib import Path\n\ndef save_result(data, stem=\"result\"):\n    # Keep every field, including usage, IDs, reasoning and tool requests.\n    Path(stem + \".json\").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding=\"utf-8\")\n    print(json.dumps(data, ensure_ascii=False, indent=2))\n    def save_blob(encoded, suffix, label):\n        raw = base64.b64decode(encoded, altchars=b\"-_\", validate=True)\n        ext = \"png\" if raw.startswith(b\"\\x89PNG\\r\\n\\x1a\\n\") else \"jpg\" if raw.startswith(b\"\\xff\\xd8\") else \"webp\" if raw[:4] == b\"RIFF\" and raw[8:12] == b\"WEBP\" else suffix\n        file = Path(stem + \"-\" + label + \".\" + ext)\n        file.write_bytes(raw)\n        print(\"Saved\", file)\n    for index, block in enumerate(data.get(\"content\") or []):\n        print(\"Content\", index, json.dumps(block, ensure_ascii=False))\n    for choice in data.get(\"choices\") or []:\n        print(\"Choice\", choice.get(\"index\"), json.dumps(choice.get(\"message\", choice.get(\"delta\", {})), ensure_ascii=False))\n    for index, item in enumerate(data.get(\"output\") or []):\n        print(\"Output\", index, json.dumps(item, ensure_ascii=False))\n        if item.get(\"type\") == \"image_generation_call\" and item.get(\"result\"):\n            save_blob(item[\"result\"], item.get(\"output_format\") or \"bin\", \"output-\" + str(index))\n    for ci, candidate in enumerate(data.get(\"candidates\") or []):\n        for pi, part in enumerate((candidate.get(\"content\") or {}).get(\"parts\") or []):\n            print(\"Candidate/part\", ci, pi, json.dumps(part, ensure_ascii=False))\n            blob = part.get(\"inlineData\") or part.get(\"inline_data\")\n            if blob and blob.get(\"data\"):\n                mime = blob.get(\"mimeType\") or blob.get(\"mime_type\")\n                suffix = {\"image/png\":\"png\", \"image/jpeg\":\"jpg\", \"image/webp\":\"webp\", \"audio/wav\":\"wav\", \"audio/mpeg\":\"mp3\", \"video/mp4\":\"mp4\"}.get(mime, \"bin\")\n                save_blob(blob[\"data\"], suffix, \"candidate-\" + str(ci) + \"-part-\" + str(pi))\n\nsave_result(msg.to_dict(mode=\"json\"))\n",
            "label": "Python · retained SDK call",
            "language": "python"
          },
          {
            "SDK_retry_proof": {
              "field": "maxRetries",
              "scope": "normalclient options; no provider/account/proxy switches",
              "source_urls": [
                "https://raw.githubusercontent.com/openai/openai-node/master/src/client.ts",
                "https://raw.githubusercontent.com/anthropics/anthropic-sdk-typescript/main/src/client.ts"
              ],
              "value": 0
            },
            "code": "import Anthropic from \"@anthropic-ai/sdk\";\n\nif (!process.env.AILOOT_API_KEY?.trim()) throw new Error(\"Set AILOOT_API_KEY before making a request\");\nconst client = new Anthropic({ baseURL: \"https://api.ailoot.ai\", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });\nconst msg = await client.messages.create({\n  model: \"nvidia/nemotron-3.5-lightning-30b-a3b\",\n  max_tokens: 1024,\n  messages: [{ role: \"user\", content: \"Explain the difference between an observation and a hypothesis in three sentences.\" }],\n});\nimport { writeFileSync } from \"node:fs\";\n\nfunction saveResult(data, stem = \"result\") {\n  writeFileSync(stem + \".json\", JSON.stringify(data, null, 2));\n  console.log(JSON.stringify(data, null, 2));\n  const saveBlob = (encoded, suffix, label) => {\n    const raw = Buffer.from(encoded, \"base64\");\n    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? \"png\" : raw[0]===255 && raw[1]===216 ? \"jpg\" : raw.subarray(0,4).toString()===\"RIFF\" && raw.subarray(8,12).toString()===\"WEBP\" ? \"webp\" : suffix;\n    const file = `${stem}-${label}.${ext}`;\n    writeFileSync(file, raw); console.log(\"Saved\", file);\n  };\n  for (const [i, block] of (data.content || []).entries()) console.log(\"Content\", i, JSON.stringify(block));\n  for (const choice of data.choices || []) console.log(\"Choice\", choice.index, JSON.stringify(choice.message || choice.delta || {}));\n  for (const [i, item] of (data.output || []).entries()) {\n    console.log(\"Output\", i, JSON.stringify(item));\n    if (item.type === \"image_generation_call\" && item.result) saveBlob(item.result, item.output_format || \"bin\", `output-${i}`);\n  }\n  for (const [ci, candidate] of (data.candidates || []).entries()) {\n    for (const [pi, part] of (candidate.content?.parts || []).entries()) {\n      console.log(\"Candidate/part\", ci, pi, JSON.stringify(part));\n      const blob = part.inlineData || part.inline_data;\n      if (blob?.data) {\n        const mime = blob.mimeType || blob.mime_type;\n        const suffix = ({\"image/png\":\"png\", \"image/jpeg\":\"jpg\", \"image/webp\":\"webp\", \"audio/wav\":\"wav\", \"audio/mpeg\":\"mp3\", \"video/mp4\":\"mp4\"})[mime] || \"bin\";\n        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);\n      }\n    }\n  }\n}\n\nsaveResult(msg);\n",
            "label": "Node.js · retained SDK call",
            "language": "js"
          },
          {
            "code": "import anthropic,os\nfrom pathlib import Path\n\nif not os.environ.get(\"AILOOT_API_KEY\", \"\").strip(): raise SystemExit(\"Set AILOOT_API_KEY before making a request\")\nclient=anthropic.Anthropic(base_url=\"https://api.ailoot.ai\",api_key=os.environ[\"AILOOT_API_KEY\"],max_retries=0)\nimport base64, json\nfrom pathlib import Path\n\ndef save_result(data, stem=\"result\"):\n    # Keep every field, including usage, IDs, reasoning and tool requests.\n    Path(stem + \".json\").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding=\"utf-8\")\n    print(json.dumps(data, ensure_ascii=False, indent=2))\n    def save_blob(encoded, suffix, label):\n        raw = base64.b64decode(encoded, altchars=b\"-_\", validate=True)\n        ext = \"png\" if raw.startswith(b\"\\x89PNG\\r\\n\\x1a\\n\") else \"jpg\" if raw.startswith(b\"\\xff\\xd8\") else \"webp\" if raw[:4] == b\"RIFF\" and raw[8:12] == b\"WEBP\" else suffix\n        file = Path(stem + \"-\" + label + \".\" + ext)\n        file.write_bytes(raw)\n        print(\"Saved\", file)\n    for index, block in enumerate(data.get(\"content\") or []):\n        print(\"Content\", index, json.dumps(block, ensure_ascii=False))\n    for choice in data.get(\"choices\") or []:\n        print(\"Choice\", choice.get(\"index\"), json.dumps(choice.get(\"message\", choice.get(\"delta\", {})), ensure_ascii=False))\n    for index, item in enumerate(data.get(\"output\") or []):\n        print(\"Output\", index, json.dumps(item, ensure_ascii=False))\n        if item.get(\"type\") == \"image_generation_call\" and item.get(\"result\"):\n            save_blob(item[\"result\"], item.get(\"output_format\") or \"bin\", \"output-\" + str(index))\n    for ci, candidate in enumerate(data.get(\"candidates\") or []):\n        for pi, part in enumerate((candidate.get(\"content\") or {}).get(\"parts\") or []):\n            print(\"Candidate/part\", ci, pi, json.dumps(part, ensure_ascii=False))\n            blob = part.get(\"inlineData\") or part.get(\"inline_data\")\n            if blob and blob.get(\"data\"):\n                mime = blob.get(\"mimeType\") or blob.get(\"mime_type\")\n                suffix = {\"image/png\":\"png\", \"image/jpeg\":\"jpg\", \"image/webp\":\"webp\", \"audio/wav\":\"wav\", \"audio/mpeg\":\"mp3\", \"video/mp4\":\"mp4\"}.get(mime, \"bin\")\n                save_blob(blob[\"data\"], suffix, \"candidate-\" + str(ci) + \"-part-\" + str(pi))\n\nwith client.messages.stream(model='nvidia/nemotron-3.5-lightning-30b-a3b',max_tokens=1024,messages=[{\"role\":\"user\",\"content\":\"Explain observations and hypotheses in three sentences.\"}]) as stream:\n    with Path(\"stream-events.jsonl\").open(\"w\",encoding=\"utf-8\") as log:\n        for event in stream:\n            payload=event.to_dict(mode=\"json\")\n            log.write(json.dumps(payload,ensure_ascii=False)+\"\\n\"); log.flush()\n            print(json.dumps(payload,ensure_ascii=False))\n    final=stream.get_final_message()\n    save_result(final.to_dict(mode=\"json\"),\"stream-result\")\n",
            "label": "Python streaming · complete final message",
            "language": "python"
          }
        ],
        "family": "anthropic",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "messages",
        "http": "POST",
        "img_in": null,
        "img_out": null,
        "in": 0.08,
        "input": [
          "text"
        ],
        "label": "Anthropic Messages",
        "max_out": 32768,
        "max_tool_calls": null,
        "out": 0.2,
        "output": [
          "text"
        ],
        "path": "/v1/messages",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "in",
                "label": "Input",
                "side": "in"
              },
              {
                "amount": 0.2,
                "amount_unit": "usd_per_million_tokens",
                "key": "out",
                "label": "Output",
                "side": "out"
              },
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "cache_read",
                "label": "Cache read",
                "side": "in"
              },
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "cache_write",
                "label": "Cache write",
                "side": "in"
              },
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "cache_write_5m",
                "label": "Cache write 5m",
                "side": "in"
              }
            ]
          }
        ],
        "request_model_id": "nvidia/nemotron-3.5-lightning-30b-a3b",
        "route_label": "Core",
        "status_reads": [],
        "tiers": [],
        "tool_prices": null,
        "unit": "token",
        "units": []
      },
      {
        "cache_read": 0.08,
        "cache_write": 0.08,
        "cache_write_1h": null,
        "cache_write_5m": 0.08,
        "conditional_meter": null,
        "contract": {
          "data": {
            "all_results": "Keep every choice and its content/tool calls/reasoning. In SSE assemble deltas by choice/tool index, retain the final finish reason and usage.",
            "authentication": {
              "api_key_source": "AILOOT_API_KEY",
              "header": "Authorization: Bearer"
            },
            "errors": [
              {
                "code": null,
                "condition": "Neveljavna obvezna polja, predstavitev gradiva ali vrednost parametra",
                "http_status": 400,
                "recovery": "Pred novo zahtevo za ustvarjanje popravite navedena polja.",
                "type": "invalid_request_error"
              }
            ],
            "hints": [
              "Model context is not an output cap.",
              "A model-dependent field needs the exact published model profile; unspecified defaults/enums are not guessed.",
              "Tool calls propose actions; the client application returns actual observations with the returned call ID."
            ],
            "ignored_fields": [],
            "lifecycle": {
              "create": {
                "http": "POST",
                "path": "/v1/chat/completions"
              },
              "job_read": null,
              "mode": "synchronous_or_streamed",
              "unknown": "Ohranite ID zahtev/odgovorov in glave. Splošni URL za pridobivanje besedilne naloge ni podan."
            },
            "material_combinations": [
              {
                "mode": "text",
                "representation": "messages[].content",
                "required_material": "Besedilo UTF8"
              }
            ],
            "operation_modes": [
              "conversation",
              "function_tool_continuation",
              "streaming"
            ],
            "outputs": {
              "all_results": "Ohranite vsako možnost odgovora ter njeno vsebino, klice orodij in sklepanje. V SSE sestavite delne spremembe po indeksu možnosti/orodja ter ohranite končni razlog zaključka in podatke o porabi.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "choices[].index",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "choices[].message.content",
                  "type": "string|null"
                },
                {
                  "description": null,
                  "name": "choices[].message.tool_calls",
                  "type": "tool_call[]"
                },
                {
                  "description": null,
                  "name": "choices[].message.reasoning_content",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "choices[].message.reasoning_details",
                  "type": "object|array"
                },
                {
                  "description": null,
                  "name": "choices[].finish_reason",
                  "type": "string|null"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                }
              ],
              "format": "json ali SSE"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "nvidia/nemotron-3.5-lightning-30b-a3b"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_items": 1,
                "name": "messages",
                "required": true,
                "type": "message[]"
              },
              {
                "availability": "model_dependent",
                "conditions": "Te vloge so izrecno predstavljene s tipi združljivosti v izvorni kodi; natančen nabor vlog ostaja odvisen od modela.",
                "default": null,
                "default_known": false,
                "enum": [
                  "system",
                  "user",
                  "assistant",
                  "tool",
                  "function"
                ],
                "enum_exhaustive": false,
                "enum_known": true,
                "name": "messages[].role",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].content",
                "required": false,
                "type": "string|content_part[]|null"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].tool_calls",
                "required": false,
                "type": "tool_call[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].tool_call_id",
                "required": false,
                "type": "string",
                "when": "role=tool; uporabite dejansko vrnjeni ID"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].name",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].reasoning_content",
                "required": false,
                "type": "string",
                "when": "Pošljite nazaj dejansko vrnjeno sklepanje, kadar ga ta model uporablja"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].reasoning_details",
                "required": false,
                "type": "object|array"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minimum": 1,
                "name": "max_tokens",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minimum": 1,
                "name": "max_completion_tokens",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": false,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "stream",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "stream_options.include_usage",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "temperature",
                "required": false,
                "type": "number"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "top_p",
                "required": false,
                "type": "number"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "stop",
                "required": false,
                "type": "string|string[]"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools",
                "required": false,
                "type": "function_tool[]"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].type",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].function.name",
                "required": true,
                "type": "string",
                "when": "podano je funkcijsko orodje"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].function.description",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].function.parameters",
                "required": false,
                "type": "JSON_schema"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tool_choice",
                "required": false,
                "type": "string|object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "parallel_tool_calls",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "response_format",
                "required": false,
                "type": "object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "reasoning_effort",
                "required": false,
                "type": "string"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "reasoning",
                "required": false,
                "type": "object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "service_tier",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_compatibility",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "instructions",
                "required": false,
                "type": "string"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "functions",
                "required": false,
                "type": "function[]"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "function_call",
                "required": false,
                "type": "string|object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "prompt_cache_options",
                "required": false,
                "type": "object"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": []
          },
          "hints": [
            "Strukture metod in ID so natančno določeni; zmožnost ponudnika je ločena od sprejema zahteve."
          ],
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional_controls": null,
            "required": [
              "model",
              "messages"
            ],
            "text_file_material": "dejanska vsebina UTF-8 je vstavljena kot besedilo; ID datotek in URLs potrebujejo ločeno, natančno določeno podporo"
          },
          "lifecycle": {
            "mode": "exact retained published method"
          },
          "method": {
            "http": "POST",
            "path": "/v1/chat/completions"
          },
          "operation_modes": [
            "chat_completions"
          ],
          "output": {
            "family": [
              "text"
            ],
            "format": "JSON or supported SSE",
            "multioutputs": "retain every actual response output"
          }
        },
        "ctx": 4096,
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}\"\nexport AILOOT_TEXT_FILE\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"nvidia/nemotron-3.5-lightning-30b-a3b\", \"messages\": []}')\nf=Path(os.environ[\"AILOOT_TEXT_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose your actual UTF-8 source material\")\ntext=f.read_text(encoding=\"utf-8\")\nif not text.strip():raise SystemExit(\"Source material must contain text\")\np[\"messages\"]=[{\"role\":\"user\",\"content\":\"Summarize this material and quote supporting source passages.\\n\\n\"+text}]\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"result.json\").read_text()),ensure_ascii=False,indent=2))\nPY_RESULT\n",
            "label": "Use actual text material",
            "language": "bash"
          },
          {
            "code": "from openai import OpenAI\nimport os\n\nif not os.environ.get(\"AILOOT_API_KEY\", \"\").strip(): raise SystemExit(\"Set AILOOT_API_KEY before making a request\")\nclient = OpenAI(base_url=\"https://api.ailoot.ai/v1\", api_key=os.environ[\"AILOOT_API_KEY\"], max_retries=0)\nresp = client.chat.completions.create(\n    model=\"nvidia/nemotron-3.5-lightning-30b-a3b\",\n    messages=[{\"role\": \"user\", \"content\": \"Explain the difference between an observation and a hypothesis in three sentences.\"}],\n)\nimport base64, json\nfrom pathlib import Path\n\ndef save_result(data, stem=\"result\"):\n    # Keep every field, including usage, IDs, reasoning and tool requests.\n    Path(stem + \".json\").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding=\"utf-8\")\n    print(json.dumps(data, ensure_ascii=False, indent=2))\n    def save_blob(encoded, suffix, label):\n        raw = base64.b64decode(encoded, altchars=b\"-_\", validate=True)\n        ext = \"png\" if raw.startswith(b\"\\x89PNG\\r\\n\\x1a\\n\") else \"jpg\" if raw.startswith(b\"\\xff\\xd8\") else \"webp\" if raw[:4] == b\"RIFF\" and raw[8:12] == b\"WEBP\" else suffix\n        file = Path(stem + \"-\" + label + \".\" + ext)\n        file.write_bytes(raw)\n        print(\"Saved\", file)\n    for index, block in enumerate(data.get(\"content\") or []):\n        print(\"Content\", index, json.dumps(block, ensure_ascii=False))\n    for choice in data.get(\"choices\") or []:\n        print(\"Choice\", choice.get(\"index\"), json.dumps(choice.get(\"message\", choice.get(\"delta\", {})), ensure_ascii=False))\n    for index, item in enumerate(data.get(\"output\") or []):\n        print(\"Output\", index, json.dumps(item, ensure_ascii=False))\n        if item.get(\"type\") == \"image_generation_call\" and item.get(\"result\"):\n            save_blob(item[\"result\"], item.get(\"output_format\") or \"bin\", \"output-\" + str(index))\n    for ci, candidate in enumerate(data.get(\"candidates\") or []):\n        for pi, part in enumerate((candidate.get(\"content\") or {}).get(\"parts\") or []):\n            print(\"Candidate/part\", ci, pi, json.dumps(part, ensure_ascii=False))\n            blob = part.get(\"inlineData\") or part.get(\"inline_data\")\n            if blob and blob.get(\"data\"):\n                mime = blob.get(\"mimeType\") or blob.get(\"mime_type\")\n                suffix = {\"image/png\":\"png\", \"image/jpeg\":\"jpg\", \"image/webp\":\"webp\", \"audio/wav\":\"wav\", \"audio/mpeg\":\"mp3\", \"video/mp4\":\"mp4\"}.get(mime, \"bin\")\n                save_blob(blob[\"data\"], suffix, \"candidate-\" + str(ci) + \"-part-\" + str(pi))\n\nsave_result(resp.to_dict(mode=\"json\"))\n",
            "label": "Python · retained SDK call",
            "language": "python"
          },
          {
            "SDK_retry_proof": {
              "field": "maxRetries",
              "scope": "normalclient options; no provider/account/proxy switches",
              "source_urls": [
                "https://raw.githubusercontent.com/openai/openai-node/master/src/client.ts",
                "https://raw.githubusercontent.com/anthropics/anthropic-sdk-typescript/main/src/client.ts"
              ],
              "value": 0
            },
            "code": "import OpenAI from \"openai\";\n\nif (!process.env.AILOOT_API_KEY?.trim()) throw new Error(\"Set AILOOT_API_KEY before making a request\");\nconst client = new OpenAI({ baseURL: \"https://api.ailoot.ai/v1\", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });\nconst resp = await client.chat.completions.create({\n  model: \"nvidia/nemotron-3.5-lightning-30b-a3b\",\n  messages: [{ role: \"user\", content: \"Explain the difference between an observation and a hypothesis in three sentences.\" }],\n});\nimport { writeFileSync } from \"node:fs\";\n\nfunction saveResult(data, stem = \"result\") {\n  writeFileSync(stem + \".json\", JSON.stringify(data, null, 2));\n  console.log(JSON.stringify(data, null, 2));\n  const saveBlob = (encoded, suffix, label) => {\n    const raw = Buffer.from(encoded, \"base64\");\n    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? \"png\" : raw[0]===255 && raw[1]===216 ? \"jpg\" : raw.subarray(0,4).toString()===\"RIFF\" && raw.subarray(8,12).toString()===\"WEBP\" ? \"webp\" : suffix;\n    const file = `${stem}-${label}.${ext}`;\n    writeFileSync(file, raw); console.log(\"Saved\", file);\n  };\n  for (const [i, block] of (data.content || []).entries()) console.log(\"Content\", i, JSON.stringify(block));\n  for (const choice of data.choices || []) console.log(\"Choice\", choice.index, JSON.stringify(choice.message || choice.delta || {}));\n  for (const [i, item] of (data.output || []).entries()) {\n    console.log(\"Output\", i, JSON.stringify(item));\n    if (item.type === \"image_generation_call\" && item.result) saveBlob(item.result, item.output_format || \"bin\", `output-${i}`);\n  }\n  for (const [ci, candidate] of (data.candidates || []).entries()) {\n    for (const [pi, part] of (candidate.content?.parts || []).entries()) {\n      console.log(\"Candidate/part\", ci, pi, JSON.stringify(part));\n      const blob = part.inlineData || part.inline_data;\n      if (blob?.data) {\n        const mime = blob.mimeType || blob.mime_type;\n        const suffix = ({\"image/png\":\"png\", \"image/jpeg\":\"jpg\", \"image/webp\":\"webp\", \"audio/wav\":\"wav\", \"audio/mpeg\":\"mp3\", \"video/mp4\":\"mp4\"})[mime] || \"bin\";\n        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);\n      }\n    }\n  }\n}\n\nsaveResult(resp);\n",
            "label": "Node.js · retained SDK call",
            "language": "js"
          },
          {
            "code": "from openai import OpenAI\nimport os\nfrom pathlib import Path\n\nif not os.environ.get(\"AILOOT_API_KEY\", \"\").strip(): raise SystemExit(\"Set AILOOT_API_KEY before making a request\")\nclient=OpenAI(base_url=\"https://api.ailoot.ai/v1\",api_key=os.environ[\"AILOOT_API_KEY\"],max_retries=0)\nimport base64, json\nfrom pathlib import Path\n\ndef save_result(data, stem=\"result\"):\n    # Keep every field, including usage, IDs, reasoning and tool requests.\n    Path(stem + \".json\").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding=\"utf-8\")\n    print(json.dumps(data, ensure_ascii=False, indent=2))\n    def save_blob(encoded, suffix, label):\n        raw = base64.b64decode(encoded, altchars=b\"-_\", validate=True)\n        ext = \"png\" if raw.startswith(b\"\\x89PNG\\r\\n\\x1a\\n\") else \"jpg\" if raw.startswith(b\"\\xff\\xd8\") else \"webp\" if raw[:4] == b\"RIFF\" and raw[8:12] == b\"WEBP\" else suffix\n        file = Path(stem + \"-\" + label + \".\" + ext)\n        file.write_bytes(raw)\n        print(\"Saved\", file)\n    for index, block in enumerate(data.get(\"content\") or []):\n        print(\"Content\", index, json.dumps(block, ensure_ascii=False))\n    for choice in data.get(\"choices\") or []:\n        print(\"Choice\", choice.get(\"index\"), json.dumps(choice.get(\"message\", choice.get(\"delta\", {})), ensure_ascii=False))\n    for index, item in enumerate(data.get(\"output\") or []):\n        print(\"Output\", index, json.dumps(item, ensure_ascii=False))\n        if item.get(\"type\") == \"image_generation_call\" and item.get(\"result\"):\n            save_blob(item[\"result\"], item.get(\"output_format\") or \"bin\", \"output-\" + str(index))\n    for ci, candidate in enumerate(data.get(\"candidates\") or []):\n        for pi, part in enumerate((candidate.get(\"content\") or {}).get(\"parts\") or []):\n            print(\"Candidate/part\", ci, pi, json.dumps(part, ensure_ascii=False))\n            blob = part.get(\"inlineData\") or part.get(\"inline_data\")\n            if blob and blob.get(\"data\"):\n                mime = blob.get(\"mimeType\") or blob.get(\"mime_type\")\n                suffix = {\"image/png\":\"png\", \"image/jpeg\":\"jpg\", \"image/webp\":\"webp\", \"audio/wav\":\"wav\", \"audio/mpeg\":\"mp3\", \"video/mp4\":\"mp4\"}.get(mime, \"bin\")\n                save_blob(blob[\"data\"], suffix, \"candidate-\" + str(ci) + \"-part-\" + str(pi))\n\nwith client.chat.completions.stream(model='nvidia/nemotron-3.5-lightning-30b-a3b',messages=[{\"role\":\"user\",\"content\":\"Explain observations and hypotheses in three sentences.\"}]) as stream:\n    with Path(\"stream-events.jsonl\").open(\"w\",encoding=\"utf-8\") as log:\n        for event in stream:\n            payload=event.to_dict(mode=\"json\")\n            log.write(json.dumps(payload,ensure_ascii=False)+\"\\n\"); log.flush()\n            print(json.dumps(payload,ensure_ascii=False))\n    final=stream.get_final_completion()\n    save_result(final.to_dict(mode=\"json\"),\"stream-result\")\n",
            "label": "Python streaming · retain all events",
            "language": "python"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "chat",
        "http": "POST",
        "img_in": null,
        "img_out": null,
        "in": 0.08,
        "input": [
          "text"
        ],
        "label": "OpenAI Chat",
        "max_out": 1024,
        "max_tool_calls": null,
        "out": 0.2,
        "output": [
          "text"
        ],
        "path": "/v1/chat/completions",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "in",
                "label": "Input",
                "side": "in"
              },
              {
                "amount": 0.2,
                "amount_unit": "usd_per_million_tokens",
                "key": "out",
                "label": "Output",
                "side": "out"
              },
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "cache_read",
                "label": "Cache read",
                "side": "in"
              },
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "cache_write",
                "label": "Cache write",
                "side": "in"
              },
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "cache_write_5m",
                "label": "Cache write 5m",
                "side": "in"
              }
            ]
          }
        ],
        "request_model_id": "nvidia/nemotron-3.5-lightning-30b-a3b",
        "route_label": "Core",
        "status_reads": [],
        "tiers": [],
        "tool_prices": null,
        "unit": "token",
        "units": []
      },
      {
        "cache_read": 0.08,
        "cache_write": 0.08,
        "cache_write_1h": null,
        "cache_write_5m": 0.08,
        "conditional_meter": null,
        "contract": {
          "data": {
            "all_results": "Keep every choice and its content/tool calls/reasoning. In SSE assemble deltas by choice/tool index, retain the final finish reason and usage.",
            "authentication": {
              "api_key_source": "AILOOT_API_KEY",
              "header": "Authorization: Bearer"
            },
            "errors": [
              {
                "code": null,
                "condition": "Neveljavna obvezna polja, predstavitev gradiva ali vrednost parametra",
                "http_status": 400,
                "recovery": "Pred novo zahtevo za ustvarjanje popravite navedena polja.",
                "type": "invalid_request_error"
              }
            ],
            "hints": [
              "Model context is not an output cap.",
              "A model-dependent field needs the exact published model profile; unspecified defaults/enums are not guessed.",
              "Tool calls propose actions; the client application returns actual observations with the returned call ID."
            ],
            "ignored_fields": [],
            "lifecycle": {
              "create": {
                "http": "POST",
                "path": "/v1/chat/completions"
              },
              "job_read": null,
              "mode": "synchronous_or_streamed",
              "unknown": "Ohranite ID zahtev/odgovorov in glave. Splošni URL za pridobivanje besedilne naloge ni podan."
            },
            "material_combinations": [
              {
                "mode": "text",
                "representation": "messages[].content",
                "required_material": "Besedilo UTF8"
              }
            ],
            "operation_modes": [
              "conversation",
              "function_tool_continuation",
              "streaming"
            ],
            "outputs": {
              "all_results": "Ohranite vsako možnost odgovora ter njeno vsebino, klice orodij in sklepanje. V SSE sestavite delne spremembe po indeksu možnosti/orodja ter ohranite končni razlog zaključka in podatke o porabi.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "choices[].index",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "choices[].message.content",
                  "type": "string|null"
                },
                {
                  "description": null,
                  "name": "choices[].message.tool_calls",
                  "type": "tool_call[]"
                },
                {
                  "description": null,
                  "name": "choices[].message.reasoning_content",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "choices[].message.reasoning_details",
                  "type": "object|array"
                },
                {
                  "description": null,
                  "name": "choices[].finish_reason",
                  "type": "string|null"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                }
              ],
              "format": "json ali SSE"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "nemotron-lightning"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_items": 1,
                "name": "messages",
                "required": true,
                "type": "message[]"
              },
              {
                "availability": "model_dependent",
                "conditions": "Te vloge so izrecno predstavljene s tipi združljivosti v izvorni kodi; natančen nabor vlog ostaja odvisen od modela.",
                "default": null,
                "default_known": false,
                "enum": [
                  "system",
                  "user",
                  "assistant",
                  "tool",
                  "function"
                ],
                "enum_exhaustive": false,
                "enum_known": true,
                "name": "messages[].role",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].content",
                "required": false,
                "type": "string|content_part[]|null"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].tool_calls",
                "required": false,
                "type": "tool_call[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].tool_call_id",
                "required": false,
                "type": "string",
                "when": "role=tool; uporabite dejansko vrnjeni ID"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].name",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].reasoning_content",
                "required": false,
                "type": "string",
                "when": "Pošljite nazaj dejansko vrnjeno sklepanje, kadar ga ta model uporablja"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].reasoning_details",
                "required": false,
                "type": "object|array"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minimum": 1,
                "name": "max_tokens",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minimum": 1,
                "name": "max_completion_tokens",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": false,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "stream",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "stream_options.include_usage",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "temperature",
                "required": false,
                "type": "number"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "top_p",
                "required": false,
                "type": "number"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "stop",
                "required": false,
                "type": "string|string[]"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools",
                "required": false,
                "type": "function_tool[]"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].type",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].function.name",
                "required": true,
                "type": "string",
                "when": "podano je funkcijsko orodje"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].function.description",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].function.parameters",
                "required": false,
                "type": "JSON_schema"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tool_choice",
                "required": false,
                "type": "string|object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "parallel_tool_calls",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "response_format",
                "required": false,
                "type": "object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "reasoning_effort",
                "required": false,
                "type": "string"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "reasoning",
                "required": false,
                "type": "object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "service_tier",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_compatibility",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "instructions",
                "required": false,
                "type": "string"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "functions",
                "required": false,
                "type": "function[]"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "function_call",
                "required": false,
                "type": "string|object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "prompt_cache_options",
                "required": false,
                "type": "object"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": []
          },
          "hints": [
            "Strukture metod in ID so natančno določeni; zmožnost ponudnika je ločena od sprejema zahteve."
          ],
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional_controls": null,
            "required": [
              "model",
              "messages"
            ],
            "text_file_material": "dejanska vsebina UTF-8 je vstavljena kot besedilo; ID datotek in URLs potrebujejo ločeno, natančno določeno podporo"
          },
          "lifecycle": {
            "mode": "exact retained published method"
          },
          "method": {
            "http": "POST",
            "path": "/v1/chat/completions"
          },
          "operation_modes": [
            "chat_completions"
          ],
          "output": {
            "family": [
              "text"
            ],
            "format": "JSON or supported SSE",
            "multioutputs": "retain every actual response output"
          }
        },
        "ctx": 4096,
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}\"\nexport AILOOT_TEXT_FILE\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"nemotron-lightning\", \"messages\": []}')\nf=Path(os.environ[\"AILOOT_TEXT_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose your actual UTF-8 source material\")\ntext=f.read_text(encoding=\"utf-8\")\nif not text.strip():raise SystemExit(\"Source material must contain text\")\np[\"messages\"]=[{\"role\":\"user\",\"content\":\"Summarize this material and quote supporting source passages.\\n\\n\"+text}]\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"result.json\").read_text()),ensure_ascii=False,indent=2))\nPY_RESULT\n",
            "label": "Use actual text material",
            "language": "bash"
          },
          {
            "code": "from openai import OpenAI\nimport os\n\nif not os.environ.get(\"AILOOT_API_KEY\", \"\").strip(): raise SystemExit(\"Set AILOOT_API_KEY before making a request\")\nclient = OpenAI(base_url=\"https://api.ailoot.ai/v1\", api_key=os.environ[\"AILOOT_API_KEY\"], max_retries=0)\nresp = client.chat.completions.create(\n    model=\"nemotron-lightning\",\n    messages=[{\"role\": \"user\", \"content\": \"Explain the difference between an observation and a hypothesis in three sentences.\"}],\n)\nimport base64, json\nfrom pathlib import Path\n\ndef save_result(data, stem=\"result\"):\n    # Keep every field, including usage, IDs, reasoning and tool requests.\n    Path(stem + \".json\").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding=\"utf-8\")\n    print(json.dumps(data, ensure_ascii=False, indent=2))\n    def save_blob(encoded, suffix, label):\n        raw = base64.b64decode(encoded, altchars=b\"-_\", validate=True)\n        ext = \"png\" if raw.startswith(b\"\\x89PNG\\r\\n\\x1a\\n\") else \"jpg\" if raw.startswith(b\"\\xff\\xd8\") else \"webp\" if raw[:4] == b\"RIFF\" and raw[8:12] == b\"WEBP\" else suffix\n        file = Path(stem + \"-\" + label + \".\" + ext)\n        file.write_bytes(raw)\n        print(\"Saved\", file)\n    for index, block in enumerate(data.get(\"content\") or []):\n        print(\"Content\", index, json.dumps(block, ensure_ascii=False))\n    for choice in data.get(\"choices\") or []:\n        print(\"Choice\", choice.get(\"index\"), json.dumps(choice.get(\"message\", choice.get(\"delta\", {})), ensure_ascii=False))\n    for index, item in enumerate(data.get(\"output\") or []):\n        print(\"Output\", index, json.dumps(item, ensure_ascii=False))\n        if item.get(\"type\") == \"image_generation_call\" and item.get(\"result\"):\n            save_blob(item[\"result\"], item.get(\"output_format\") or \"bin\", \"output-\" + str(index))\n    for ci, candidate in enumerate(data.get(\"candidates\") or []):\n        for pi, part in enumerate((candidate.get(\"content\") or {}).get(\"parts\") or []):\n            print(\"Candidate/part\", ci, pi, json.dumps(part, ensure_ascii=False))\n            blob = part.get(\"inlineData\") or part.get(\"inline_data\")\n            if blob and blob.get(\"data\"):\n                mime = blob.get(\"mimeType\") or blob.get(\"mime_type\")\n                suffix = {\"image/png\":\"png\", \"image/jpeg\":\"jpg\", \"image/webp\":\"webp\", \"audio/wav\":\"wav\", \"audio/mpeg\":\"mp3\", \"video/mp4\":\"mp4\"}.get(mime, \"bin\")\n                save_blob(blob[\"data\"], suffix, \"candidate-\" + str(ci) + \"-part-\" + str(pi))\n\nsave_result(resp.to_dict(mode=\"json\"))\n",
            "label": "Python · retained SDK call",
            "language": "python"
          },
          {
            "SDK_retry_proof": {
              "field": "maxRetries",
              "scope": "normalclient options; no provider/account/proxy switches",
              "source_urls": [
                "https://raw.githubusercontent.com/openai/openai-node/master/src/client.ts",
                "https://raw.githubusercontent.com/anthropics/anthropic-sdk-typescript/main/src/client.ts"
              ],
              "value": 0
            },
            "code": "import OpenAI from \"openai\";\n\nif (!process.env.AILOOT_API_KEY?.trim()) throw new Error(\"Set AILOOT_API_KEY before making a request\");\nconst client = new OpenAI({ baseURL: \"https://api.ailoot.ai/v1\", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });\nconst resp = await client.chat.completions.create({\n  model: \"nemotron-lightning\",\n  messages: [{ role: \"user\", content: \"Explain the difference between an observation and a hypothesis in three sentences.\" }],\n});\nimport { writeFileSync } from \"node:fs\";\n\nfunction saveResult(data, stem = \"result\") {\n  writeFileSync(stem + \".json\", JSON.stringify(data, null, 2));\n  console.log(JSON.stringify(data, null, 2));\n  const saveBlob = (encoded, suffix, label) => {\n    const raw = Buffer.from(encoded, \"base64\");\n    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? \"png\" : raw[0]===255 && raw[1]===216 ? \"jpg\" : raw.subarray(0,4).toString()===\"RIFF\" && raw.subarray(8,12).toString()===\"WEBP\" ? \"webp\" : suffix;\n    const file = `${stem}-${label}.${ext}`;\n    writeFileSync(file, raw); console.log(\"Saved\", file);\n  };\n  for (const [i, block] of (data.content || []).entries()) console.log(\"Content\", i, JSON.stringify(block));\n  for (const choice of data.choices || []) console.log(\"Choice\", choice.index, JSON.stringify(choice.message || choice.delta || {}));\n  for (const [i, item] of (data.output || []).entries()) {\n    console.log(\"Output\", i, JSON.stringify(item));\n    if (item.type === \"image_generation_call\" && item.result) saveBlob(item.result, item.output_format || \"bin\", `output-${i}`);\n  }\n  for (const [ci, candidate] of (data.candidates || []).entries()) {\n    for (const [pi, part] of (candidate.content?.parts || []).entries()) {\n      console.log(\"Candidate/part\", ci, pi, JSON.stringify(part));\n      const blob = part.inlineData || part.inline_data;\n      if (blob?.data) {\n        const mime = blob.mimeType || blob.mime_type;\n        const suffix = ({\"image/png\":\"png\", \"image/jpeg\":\"jpg\", \"image/webp\":\"webp\", \"audio/wav\":\"wav\", \"audio/mpeg\":\"mp3\", \"video/mp4\":\"mp4\"})[mime] || \"bin\";\n        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);\n      }\n    }\n  }\n}\n\nsaveResult(resp);\n",
            "label": "Node.js · retained SDK call",
            "language": "js"
          },
          {
            "code": "from openai import OpenAI\nimport os\nfrom pathlib import Path\n\nif not os.environ.get(\"AILOOT_API_KEY\", \"\").strip(): raise SystemExit(\"Set AILOOT_API_KEY before making a request\")\nclient=OpenAI(base_url=\"https://api.ailoot.ai/v1\",api_key=os.environ[\"AILOOT_API_KEY\"],max_retries=0)\nimport base64, json\nfrom pathlib import Path\n\ndef save_result(data, stem=\"result\"):\n    # Keep every field, including usage, IDs, reasoning and tool requests.\n    Path(stem + \".json\").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding=\"utf-8\")\n    print(json.dumps(data, ensure_ascii=False, indent=2))\n    def save_blob(encoded, suffix, label):\n        raw = base64.b64decode(encoded, altchars=b\"-_\", validate=True)\n        ext = \"png\" if raw.startswith(b\"\\x89PNG\\r\\n\\x1a\\n\") else \"jpg\" if raw.startswith(b\"\\xff\\xd8\") else \"webp\" if raw[:4] == b\"RIFF\" and raw[8:12] == b\"WEBP\" else suffix\n        file = Path(stem + \"-\" + label + \".\" + ext)\n        file.write_bytes(raw)\n        print(\"Saved\", file)\n    for index, block in enumerate(data.get(\"content\") or []):\n        print(\"Content\", index, json.dumps(block, ensure_ascii=False))\n    for choice in data.get(\"choices\") or []:\n        print(\"Choice\", choice.get(\"index\"), json.dumps(choice.get(\"message\", choice.get(\"delta\", {})), ensure_ascii=False))\n    for index, item in enumerate(data.get(\"output\") or []):\n        print(\"Output\", index, json.dumps(item, ensure_ascii=False))\n        if item.get(\"type\") == \"image_generation_call\" and item.get(\"result\"):\n            save_blob(item[\"result\"], item.get(\"output_format\") or \"bin\", \"output-\" + str(index))\n    for ci, candidate in enumerate(data.get(\"candidates\") or []):\n        for pi, part in enumerate((candidate.get(\"content\") or {}).get(\"parts\") or []):\n            print(\"Candidate/part\", ci, pi, json.dumps(part, ensure_ascii=False))\n            blob = part.get(\"inlineData\") or part.get(\"inline_data\")\n            if blob and blob.get(\"data\"):\n                mime = blob.get(\"mimeType\") or blob.get(\"mime_type\")\n                suffix = {\"image/png\":\"png\", \"image/jpeg\":\"jpg\", \"image/webp\":\"webp\", \"audio/wav\":\"wav\", \"audio/mpeg\":\"mp3\", \"video/mp4\":\"mp4\"}.get(mime, \"bin\")\n                save_blob(blob[\"data\"], suffix, \"candidate-\" + str(ci) + \"-part-\" + str(pi))\n\nwith client.chat.completions.stream(model='nemotron-lightning',messages=[{\"role\":\"user\",\"content\":\"Explain observations and hypotheses in three sentences.\"}]) as stream:\n    with Path(\"stream-events.jsonl\").open(\"w\",encoding=\"utf-8\") as log:\n        for event in stream:\n            payload=event.to_dict(mode=\"json\")\n            log.write(json.dumps(payload,ensure_ascii=False)+\"\\n\"); log.flush()\n            print(json.dumps(payload,ensure_ascii=False))\n    final=stream.get_final_completion()\n    save_result(final.to_dict(mode=\"json\"),\"stream-result\")\n",
            "label": "Python streaming · retain all events",
            "language": "python"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "chat",
        "http": "POST",
        "img_in": null,
        "img_out": null,
        "in": 0.08,
        "input": [
          "text"
        ],
        "label": "OpenAI Chat",
        "max_out": 1024,
        "max_tool_calls": null,
        "out": 0.2,
        "output": [
          "text"
        ],
        "path": "/v1/chat/completions",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "in",
                "label": "Input",
                "side": "in"
              },
              {
                "amount": 0.2,
                "amount_unit": "usd_per_million_tokens",
                "key": "out",
                "label": "Output",
                "side": "out"
              },
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "cache_read",
                "label": "Cache read",
                "side": "in"
              },
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "cache_write",
                "label": "Cache write",
                "side": "in"
              },
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "cache_write_5m",
                "label": "Cache write 5m",
                "side": "in"
              }
            ]
          }
        ],
        "request_model_id": "nemotron-lightning",
        "route_label": "Core",
        "status_reads": [],
        "tiers": [],
        "tool_prices": null,
        "unit": "token",
        "units": []
      },
      {
        "cache_read": 0.08,
        "cache_write": 0.08,
        "cache_write_1h": null,
        "cache_write_5m": 0.08,
        "conditional_meter": null,
        "contract": {
          "data": {
            "all_results": "Keep every choice and its content/tool calls/reasoning. In SSE assemble deltas by choice/tool index, retain the final finish reason and usage.",
            "authentication": {
              "api_key_source": "AILOOT_API_KEY",
              "header": "Authorization: Bearer"
            },
            "errors": [
              {
                "code": null,
                "condition": "Neveljavna obvezna polja, predstavitev gradiva ali vrednost parametra",
                "http_status": 400,
                "recovery": "Pred novo zahtevo za ustvarjanje popravite navedena polja.",
                "type": "invalid_request_error"
              }
            ],
            "hints": [
              "Model context is not an output cap.",
              "A model-dependent field needs the exact published model profile; unspecified defaults/enums are not guessed.",
              "Tool calls propose actions; the client application returns actual observations with the returned call ID."
            ],
            "ignored_fields": [],
            "lifecycle": {
              "create": {
                "http": "POST",
                "path": "/v1/chat/completions"
              },
              "job_read": null,
              "mode": "synchronous_or_streamed",
              "unknown": "Ohranite ID zahtev/odgovorov in glave. Splošni URL za pridobivanje besedilne naloge ni podan."
            },
            "material_combinations": [
              {
                "mode": "text",
                "representation": "messages[].content",
                "required_material": "Besedilo UTF8"
              }
            ],
            "operation_modes": [
              "conversation",
              "function_tool_continuation",
              "streaming"
            ],
            "outputs": {
              "all_results": "Ohranite vsako možnost odgovora ter njeno vsebino, klice orodij in sklepanje. V SSE sestavite delne spremembe po indeksu možnosti/orodja ter ohranite končni razlog zaključka in podatke o porabi.",
              "family": "text",
              "fields": [
                {
                  "description": null,
                  "name": "choices[].index",
                  "type": "integer"
                },
                {
                  "description": null,
                  "name": "choices[].message.content",
                  "type": "string|null"
                },
                {
                  "description": null,
                  "name": "choices[].message.tool_calls",
                  "type": "tool_call[]"
                },
                {
                  "description": null,
                  "name": "choices[].message.reasoning_content",
                  "type": "string"
                },
                {
                  "description": null,
                  "name": "choices[].message.reasoning_details",
                  "type": "object|array"
                },
                {
                  "description": null,
                  "name": "choices[].finish_reason",
                  "type": "string|null"
                },
                {
                  "description": null,
                  "name": "usage",
                  "type": "object"
                }
              ],
              "format": "json ali SSE"
            },
            "parameters": [
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": [
                  "nemotron-lightning-latest"
                ],
                "enum_known": true,
                "name": "model",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "min_items": 1,
                "name": "messages",
                "required": true,
                "type": "message[]"
              },
              {
                "availability": "model_dependent",
                "conditions": "Te vloge so izrecno predstavljene s tipi združljivosti v izvorni kodi; natančen nabor vlog ostaja odvisen od modela.",
                "default": null,
                "default_known": false,
                "enum": [
                  "system",
                  "user",
                  "assistant",
                  "tool",
                  "function"
                ],
                "enum_exhaustive": false,
                "enum_known": true,
                "name": "messages[].role",
                "required": true,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].content",
                "required": false,
                "type": "string|content_part[]|null"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].tool_calls",
                "required": false,
                "type": "tool_call[]"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].tool_call_id",
                "required": false,
                "type": "string",
                "when": "role=tool; uporabite dejansko vrnjeni ID"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].name",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].reasoning_content",
                "required": false,
                "type": "string",
                "when": "Pošljite nazaj dejansko vrnjeno sklepanje, kadar ga ta model uporablja"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "messages[].reasoning_details",
                "required": false,
                "type": "object|array"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minimum": 1,
                "name": "max_tokens",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "minimum": 1,
                "name": "max_completion_tokens",
                "required": false,
                "type": "integer"
              },
              {
                "availability": "source_interface",
                "default": false,
                "default_known": true,
                "enum": null,
                "enum_known": false,
                "name": "stream",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "stream_options.include_usage",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "temperature",
                "required": false,
                "type": "number"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "top_p",
                "required": false,
                "type": "number"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "stop",
                "required": false,
                "type": "string|string[]"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools",
                "required": false,
                "type": "function_tool[]"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].type",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].function.name",
                "required": true,
                "type": "string",
                "when": "podano je funkcijsko orodje"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].function.description",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_interface",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tools[].function.parameters",
                "required": false,
                "type": "JSON_schema"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "tool_choice",
                "required": false,
                "type": "string|object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "parallel_tool_calls",
                "required": false,
                "type": "boolean"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "response_format",
                "required": false,
                "type": "object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "reasoning_effort",
                "required": false,
                "type": "string"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "reasoning",
                "required": false,
                "type": "object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "service_tier",
                "required": false,
                "type": "string"
              },
              {
                "availability": "source_compatibility",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "instructions",
                "required": false,
                "type": "string"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "functions",
                "required": false,
                "type": "function[]"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "function_call",
                "required": false,
                "type": "string|object"
              },
              {
                "availability": "model_dependent",
                "default": null,
                "default_known": false,
                "enum": null,
                "enum_known": false,
                "name": "prompt_cache_options",
                "required": false,
                "type": "object"
              }
            ],
            "profile_binding": "Exact existing Ailoot model and method; interface constraints below do not assert provider qualification.",
            "unsupported": []
          },
          "hints": [
            "Strukture metod in ID so natančno določeni; zmožnost ponudnika je ločena od sprejema zahteve."
          ],
          "input": {
            "content_type": "application/json",
            "material_types": [
              "text"
            ],
            "optional_controls": null,
            "required": [
              "model",
              "messages"
            ],
            "text_file_material": "dejanska vsebina UTF-8 je vstavljena kot besedilo; ID datotek in URLs potrebujejo ločeno, natančno določeno podporo"
          },
          "lifecycle": {
            "mode": "exact retained published method"
          },
          "method": {
            "http": "POST",
            "path": "/v1/chat/completions"
          },
          "operation_modes": [
            "chat_completions"
          ],
          "output": {
            "family": [
              "text"
            ],
            "format": "JSON or supported SSE",
            "multioutputs": "retain every actual response output"
          }
        },
        "ctx": 4096,
        "examples": [
          {
            "code": "set -eu\n: \"${AILOOT_API_KEY:?Set your Ailoot API key}\"\n: \"${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}\"\nexport AILOOT_TEXT_FILE\npython3 - <<'PY_REQUEST'\nimport json,os\nfrom pathlib import Path\np=json.loads('{\"model\": \"nemotron-lightning-latest\", \"messages\": []}')\nf=Path(os.environ[\"AILOOT_TEXT_FILE\"])\nif not f.is_file():raise SystemExit(\"Choose your actual UTF-8 source material\")\ntext=f.read_text(encoding=\"utf-8\")\nif not text.strip():raise SystemExit(\"Source material must contain text\")\np[\"messages\"]=[{\"role\":\"user\",\"content\":\"Summarize this material and quote supporting source passages.\\n\\n\"+text}]\nPath(\"request.json\").write_text(json.dumps(p,ensure_ascii=False))\nPY_REQUEST\ncurl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \\\n  -H \"Authorization: Bearer $AILOOT_API_KEY\" -H 'Content-Type: application/json' \\\n  --data-binary @request.json -D response-headers.txt -o result.json\npython3 - <<'PY_RESULT'\nimport json\nfrom pathlib import Path\nprint(json.dumps(json.loads(Path(\"result.json\").read_text()),ensure_ascii=False,indent=2))\nPY_RESULT\n",
            "label": "Use actual text material",
            "language": "bash"
          },
          {
            "code": "from openai import OpenAI\nimport os\n\nif not os.environ.get(\"AILOOT_API_KEY\", \"\").strip(): raise SystemExit(\"Set AILOOT_API_KEY before making a request\")\nclient = OpenAI(base_url=\"https://api.ailoot.ai/v1\", api_key=os.environ[\"AILOOT_API_KEY\"], max_retries=0)\nresp = client.chat.completions.create(\n    model=\"nemotron-lightning-latest\",\n    messages=[{\"role\": \"user\", \"content\": \"Explain the difference between an observation and a hypothesis in three sentences.\"}],\n)\nimport base64, json\nfrom pathlib import Path\n\ndef save_result(data, stem=\"result\"):\n    # Keep every field, including usage, IDs, reasoning and tool requests.\n    Path(stem + \".json\").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding=\"utf-8\")\n    print(json.dumps(data, ensure_ascii=False, indent=2))\n    def save_blob(encoded, suffix, label):\n        raw = base64.b64decode(encoded, altchars=b\"-_\", validate=True)\n        ext = \"png\" if raw.startswith(b\"\\x89PNG\\r\\n\\x1a\\n\") else \"jpg\" if raw.startswith(b\"\\xff\\xd8\") else \"webp\" if raw[:4] == b\"RIFF\" and raw[8:12] == b\"WEBP\" else suffix\n        file = Path(stem + \"-\" + label + \".\" + ext)\n        file.write_bytes(raw)\n        print(\"Saved\", file)\n    for index, block in enumerate(data.get(\"content\") or []):\n        print(\"Content\", index, json.dumps(block, ensure_ascii=False))\n    for choice in data.get(\"choices\") or []:\n        print(\"Choice\", choice.get(\"index\"), json.dumps(choice.get(\"message\", choice.get(\"delta\", {})), ensure_ascii=False))\n    for index, item in enumerate(data.get(\"output\") or []):\n        print(\"Output\", index, json.dumps(item, ensure_ascii=False))\n        if item.get(\"type\") == \"image_generation_call\" and item.get(\"result\"):\n            save_blob(item[\"result\"], item.get(\"output_format\") or \"bin\", \"output-\" + str(index))\n    for ci, candidate in enumerate(data.get(\"candidates\") or []):\n        for pi, part in enumerate((candidate.get(\"content\") or {}).get(\"parts\") or []):\n            print(\"Candidate/part\", ci, pi, json.dumps(part, ensure_ascii=False))\n            blob = part.get(\"inlineData\") or part.get(\"inline_data\")\n            if blob and blob.get(\"data\"):\n                mime = blob.get(\"mimeType\") or blob.get(\"mime_type\")\n                suffix = {\"image/png\":\"png\", \"image/jpeg\":\"jpg\", \"image/webp\":\"webp\", \"audio/wav\":\"wav\", \"audio/mpeg\":\"mp3\", \"video/mp4\":\"mp4\"}.get(mime, \"bin\")\n                save_blob(blob[\"data\"], suffix, \"candidate-\" + str(ci) + \"-part-\" + str(pi))\n\nsave_result(resp.to_dict(mode=\"json\"))\n",
            "label": "Python · retained SDK call",
            "language": "python"
          },
          {
            "SDK_retry_proof": {
              "field": "maxRetries",
              "scope": "normalclient options; no provider/account/proxy switches",
              "source_urls": [
                "https://raw.githubusercontent.com/openai/openai-node/master/src/client.ts",
                "https://raw.githubusercontent.com/anthropics/anthropic-sdk-typescript/main/src/client.ts"
              ],
              "value": 0
            },
            "code": "import OpenAI from \"openai\";\n\nif (!process.env.AILOOT_API_KEY?.trim()) throw new Error(\"Set AILOOT_API_KEY before making a request\");\nconst client = new OpenAI({ baseURL: \"https://api.ailoot.ai/v1\", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });\nconst resp = await client.chat.completions.create({\n  model: \"nemotron-lightning-latest\",\n  messages: [{ role: \"user\", content: \"Explain the difference between an observation and a hypothesis in three sentences.\" }],\n});\nimport { writeFileSync } from \"node:fs\";\n\nfunction saveResult(data, stem = \"result\") {\n  writeFileSync(stem + \".json\", JSON.stringify(data, null, 2));\n  console.log(JSON.stringify(data, null, 2));\n  const saveBlob = (encoded, suffix, label) => {\n    const raw = Buffer.from(encoded, \"base64\");\n    const ext = raw.subarray(0,8).equals(Buffer.from([137,80,78,71,13,10,26,10])) ? \"png\" : raw[0]===255 && raw[1]===216 ? \"jpg\" : raw.subarray(0,4).toString()===\"RIFF\" && raw.subarray(8,12).toString()===\"WEBP\" ? \"webp\" : suffix;\n    const file = `${stem}-${label}.${ext}`;\n    writeFileSync(file, raw); console.log(\"Saved\", file);\n  };\n  for (const [i, block] of (data.content || []).entries()) console.log(\"Content\", i, JSON.stringify(block));\n  for (const choice of data.choices || []) console.log(\"Choice\", choice.index, JSON.stringify(choice.message || choice.delta || {}));\n  for (const [i, item] of (data.output || []).entries()) {\n    console.log(\"Output\", i, JSON.stringify(item));\n    if (item.type === \"image_generation_call\" && item.result) saveBlob(item.result, item.output_format || \"bin\", `output-${i}`);\n  }\n  for (const [ci, candidate] of (data.candidates || []).entries()) {\n    for (const [pi, part] of (candidate.content?.parts || []).entries()) {\n      console.log(\"Candidate/part\", ci, pi, JSON.stringify(part));\n      const blob = part.inlineData || part.inline_data;\n      if (blob?.data) {\n        const mime = blob.mimeType || blob.mime_type;\n        const suffix = ({\"image/png\":\"png\", \"image/jpeg\":\"jpg\", \"image/webp\":\"webp\", \"audio/wav\":\"wav\", \"audio/mpeg\":\"mp3\", \"video/mp4\":\"mp4\"})[mime] || \"bin\";\n        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);\n      }\n    }\n  }\n}\n\nsaveResult(resp);\n",
            "label": "Node.js · retained SDK call",
            "language": "js"
          },
          {
            "code": "from openai import OpenAI\nimport os\nfrom pathlib import Path\n\nif not os.environ.get(\"AILOOT_API_KEY\", \"\").strip(): raise SystemExit(\"Set AILOOT_API_KEY before making a request\")\nclient=OpenAI(base_url=\"https://api.ailoot.ai/v1\",api_key=os.environ[\"AILOOT_API_KEY\"],max_retries=0)\nimport base64, json\nfrom pathlib import Path\n\ndef save_result(data, stem=\"result\"):\n    # Keep every field, including usage, IDs, reasoning and tool requests.\n    Path(stem + \".json\").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding=\"utf-8\")\n    print(json.dumps(data, ensure_ascii=False, indent=2))\n    def save_blob(encoded, suffix, label):\n        raw = base64.b64decode(encoded, altchars=b\"-_\", validate=True)\n        ext = \"png\" if raw.startswith(b\"\\x89PNG\\r\\n\\x1a\\n\") else \"jpg\" if raw.startswith(b\"\\xff\\xd8\") else \"webp\" if raw[:4] == b\"RIFF\" and raw[8:12] == b\"WEBP\" else suffix\n        file = Path(stem + \"-\" + label + \".\" + ext)\n        file.write_bytes(raw)\n        print(\"Saved\", file)\n    for index, block in enumerate(data.get(\"content\") or []):\n        print(\"Content\", index, json.dumps(block, ensure_ascii=False))\n    for choice in data.get(\"choices\") or []:\n        print(\"Choice\", choice.get(\"index\"), json.dumps(choice.get(\"message\", choice.get(\"delta\", {})), ensure_ascii=False))\n    for index, item in enumerate(data.get(\"output\") or []):\n        print(\"Output\", index, json.dumps(item, ensure_ascii=False))\n        if item.get(\"type\") == \"image_generation_call\" and item.get(\"result\"):\n            save_blob(item[\"result\"], item.get(\"output_format\") or \"bin\", \"output-\" + str(index))\n    for ci, candidate in enumerate(data.get(\"candidates\") or []):\n        for pi, part in enumerate((candidate.get(\"content\") or {}).get(\"parts\") or []):\n            print(\"Candidate/part\", ci, pi, json.dumps(part, ensure_ascii=False))\n            blob = part.get(\"inlineData\") or part.get(\"inline_data\")\n            if blob and blob.get(\"data\"):\n                mime = blob.get(\"mimeType\") or blob.get(\"mime_type\")\n                suffix = {\"image/png\":\"png\", \"image/jpeg\":\"jpg\", \"image/webp\":\"webp\", \"audio/wav\":\"wav\", \"audio/mpeg\":\"mp3\", \"video/mp4\":\"mp4\"}.get(mime, \"bin\")\n                save_blob(blob[\"data\"], suffix, \"candidate-\" + str(ci) + \"-part-\" + str(pi))\n\nwith client.chat.completions.stream(model='nemotron-lightning-latest',messages=[{\"role\":\"user\",\"content\":\"Explain observations and hypotheses in three sentences.\"}]) as stream:\n    with Path(\"stream-events.jsonl\").open(\"w\",encoding=\"utf-8\") as log:\n        for event in stream:\n            payload=event.to_dict(mode=\"json\")\n            log.write(json.dumps(payload,ensure_ascii=False)+\"\\n\"); log.flush()\n            print(json.dumps(payload,ensure_ascii=False))\n    final=stream.get_final_completion()\n    save_result(final.to_dict(mode=\"json\"),\"stream-result\")\n",
            "label": "Python streaming · retain all events",
            "language": "python"
          }
        ],
        "family": "openai",
        "fast_multiplier": null,
        "flex_multiplier": null,
        "fmt": "chat",
        "http": "POST",
        "img_in": null,
        "img_out": null,
        "in": 0.08,
        "input": [
          "text"
        ],
        "label": "OpenAI Chat",
        "max_out": 1024,
        "max_tool_calls": null,
        "out": 0.2,
        "output": [
          "text"
        ],
        "path": "/v1/chat/completions",
        "pricing_profiles": [
          {
            "dimensions": {},
            "label": "Core",
            "units": [
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "in",
                "label": "Input",
                "side": "in"
              },
              {
                "amount": 0.2,
                "amount_unit": "usd_per_million_tokens",
                "key": "out",
                "label": "Output",
                "side": "out"
              },
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "cache_read",
                "label": "Cache read",
                "side": "in"
              },
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "cache_write",
                "label": "Cache write",
                "side": "in"
              },
              {
                "amount": 0.08,
                "amount_unit": "usd_per_million_tokens",
                "key": "cache_write_5m",
                "label": "Cache write 5m",
                "side": "in"
              }
            ]
          }
        ],
        "request_model_id": "nemotron-lightning-latest",
        "route_label": "Core",
        "status_reads": [],
        "tiers": [],
        "tool_prices": null,
        "unit": "token",
        "units": []
      }
    ],
    "model_aliases": [
      {
        "canonical_model_id": "nvidia/nemotron-3.5-lightning-30b-a3b",
        "request_model_id": "nvidia/nemotron-3.5-lightning-30b-a3b",
        "route_label": "Core"
      },
      {
        "canonical_model_id": "nvidia/nemotron-3.5-lightning-30b-a3b",
        "request_model_id": "nemotron-lightning",
        "route_label": "Core"
      },
      {
        "canonical_model_id": "nvidia/nemotron-3.5-lightning-30b-a3b",
        "request_model_id": "nemotron-lightning-latest",
        "route_label": "Core"
      }
    ],
    "name": "nvidia/nemotron-3.5-lightning-30b-a3b",
    "price": {
      "in": 0.08,
      "in_label": null,
      "out": 0.2,
      "out_label": null,
      "sort_in": 0.08,
      "sort_out": 0.2,
      "varies": false
    },
    "short": "Nemotron 3.5 Lightning je besedilni model družbe NVIDIA za dolgotrajne agentske naloge, programiranje, iskanje po dokumentih in pogovor."
  },
  "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
        },
        {
          "contract_json_pointer": "/methods/1/rawMethod/contract",
          "html_json_pointer": "/methods/1/html",
          "method_ordinal": 1
        },
        {
          "contract_json_pointer": "/methods/2/rawMethod/contract",
          "html_json_pointer": "/methods/2/html",
          "method_ordinal": 2
        },
        {
          "contract_json_pointer": "/methods/3/rawMethod/contract",
          "html_json_pointer": "/methods/3/html",
          "method_ordinal": 3
        }
      ],
      "role": "current-semantic-reference"
    },
    "raw_input": {
      "examples_role": "historical-input-not-current-ready-examples",
      "json_pointers": [
        "/rawModel",
        "/methods/0/rawMethod",
        "/methods/1/rawMethod",
        "/methods/2/rawMethod",
        "/methods/3/rawMethod"
      ],
      "role": "historical-owner-input"
    },
    "schema": "ailoot-native-model-representations-v1"
  },
  "schema": "ailoot-static-model-facts-v1",
  "schema_version": 1,
  "shortText": "Nemotron 3.5 Lightning je besedilni model družbe NVIDIA za dolgotrajne agentske naloge, programiranje, iskanje po dokumentih in pogovor.",
  "source": {
    "audit_sha256": "2e00086bcbfc28e64d0cebe97aa47c17d8d5618963027f8ffb9dc6123d7d25b1",
    "bridge_map_sha256": "1125275768b9636fc8461bc7da5061239a81ddfe508e2557843ca42c58ab0036",
    "raw_model_json_sha256": "a74385793787b1efd5e0cf6d9bc0ce7e409023bd3e2c4b8c3aea051e8912c1b4",
    "renderer_sha256": "dcba2271c18b0f9570a8b166e8d1e3166f121e096a58609c3a46da31562a1bf2"
  },
  "sourceRevision": "d141d5b4449a645f00d30bda91a7ffdfce92226fa1187008d9275dd5adbf0648"
}
