Source: https://ailoot.ai/models/pt-pt/nvidia-nemotron-3-super-120b-a12b/
Canonical: https://ailoot.ai/models/pt-pt/nvidia-nemotron-3-super-120b-a12b/
Language: pt-pt

# NVIDIA: Nemotron 3 Super

[Markdown](https://ailoot.ai/models/pt-pt/nvidia-nemotron-3-super-120b-a12b/index.md) · [JSON](https://ailoot.ai/models/pt-pt/nvidia-nemotron-3-super-120b-a12b/facts.json)

## [NVIDIA: Nemotron 3 Super](https://ailoot.ai/models/pt-pt/nvidia-nemotron-3-super-120b-a12b/)

Nemotron 3 Super é o modelo de texto da NVIDIA para aplicações complexas com agentes, com 12B parâmetros ativos de um total de 120B. A sua conceção híbrida Mamba–Transformer de mistura de especialistas suporta raciocínio, ferramentas de função e controlos de saída estruturada.

- [**Ailoot · Anthropic Messages** `POST /v1/messages` `nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/nvidia-nemotron-3-super-120b-a12b/#method-0)
- [**Ailoot · OpenAI Chat** `POST /v1/chat/completions` `nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/nvidia-nemotron-3-super-120b-a12b/#method-1)
- [**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/nvidia-nemotron-3-super-120b-a12b/#method-2)
- [**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/nvidia-nemotron-3-super-120b-a12b/#method-3)
- [**Ailoot · Anthropic Messages** `POST /v1/messages` `nemotron-3-super`](https://ailoot.ai/models/pt-pt/nvidia-nemotron-3-super-120b-a12b/#method-4)
- [**Ailoot · OpenAI Chat** `POST /v1/chat/completions` `nemotron-3-super`](https://ailoot.ai/models/pt-pt/nvidia-nemotron-3-super-120b-a12b/#method-5)
- [**Ailoot · Anthropic Messages** `POST /v1/messages` `nemotron-3-super-latest`](https://ailoot.ai/models/pt-pt/nvidia-nemotron-3-super-120b-a12b/#method-6)
- [**Ailoot · OpenAI Chat** `POST /v1/chat/completions` `nemotron-3-super-latest`](https://ailoot.ai/models/pt-pt/nvidia-nemotron-3-super-120b-a12b/#method-7)

Sobre o modelo

Esta descrição apresenta as capacidades do modelo. As entradas, saídas e opções disponíveis no Ailoot para o método selecionado estão indicadas abaixo.

Nemotron 3 Super é o modelo aberto híbrido de mistura de especialistas da NVIDIA para aplicações complexas com agentes. Tem 120 mil milhões de parâmetros no total e ativa 12 mil milhões de parâmetros. A arquitetura combina componentes Mamba e Transformer. A entrada de texto produz saída de texto, com raciocínio, ferramentas de função e controlos de saída estruturada no perfil de alojamento publicado.

#### Coordene uma tarefa em torno das suas evidências

Identifique o resultado necessário e a informação que determina cada etapa. Uma tarefa de programação pode fornecer o código-fonte afetado, o comportamento observado e as condições de aceitação. Uma comparação pode fornecer as alternativas e os critérios, com fontes identificadas para os factos em avaliação. Mantenha o objetivo visível à medida que são acrescentadas observações intermédias.

Para trabalhos que envolvam várias operações relacionadas, preserve a associação entre cada ação e a observação que produziu. Uma aplicação executa uma operação de ferramenta proposta e devolve ao modelo o seu resultado real. Esse resultado pode então sustentar uma decisão posterior ou revelar a questão seguinte a resolver.

#### Raciocínio e resultados estruturados

Especifique a profundidade e o resultado final exigidos pelo problema. Uma resposta concisa pode, ainda assim, exigir uma análise substancial de um caso difícil. Para processamento por software, defina os campos e tipos esperados e valide depois a estrutura e o conteúdo devolvidos com as respetivas fontes.

Mantenha os identificadores de fonte, os pressupostos e os resultados relevantes das ferramentas junto de um relatório ou registo de planeamento. Para código, conserve a alteração proposta ou aplicada e as verificações que avaliam o comportamento pretendido. Isto torna a saída útil para além da conversa em que foi produzida.

#### Contexto para trabalho continuado

O perfil do catálogo alojado indica uma janela de contexto de 262 144 tokens. Planeie de acordo com o espaço de trabalho efetivamente permitido pela interface de disponibilização, reservando lugar para a resposta. Conserve as decisões e evidências necessárias à tarefa atual enquanto remove repetições irrelevantes.

Um resultado útil do Super deixa um material passível de exame e o estado necessário para a etapa seguinte. O modelo fornece texto e pedidos de ferramentas; a aplicação envolvente fornece as operações e as observações reais que completam um fluxo de trabalho mais amplo.

Tarefa prática

### Tarefa prática

Exemplo técnico em inglês

```
Assemble an evidence-based incident handoff

Prepare an incident handoff from three observations. Monitor M: checkout error rate rose at 10:05. Deployment D: release 6.4 finished at 10:00. Database B: connection pool was exhausted at 10:06. Separate the timeline, plausible investigation leads and facts still needed. Keep observation labels beside claims and do not assert that deployment caused the errors.
```

#### Resultado esperado

```
A labelled timeline, bounded investigation leads and a short list of evidence needed to distinguish causes.
```

#### Verificar o resultado

```
Temporal proximity is not presented as established causality, and all times and labels remain intact.
```

**Ailoot · Anthropic Messages** `POST /v1/messages` `nvidia/nemotron-3-super-120b-a12b`

[`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=messages)

NVIDIA /`nvidia/nemotron-3-super-120b-a12b`

ID do modelo

- `nvidia/nemotron-3-super-120b-a12b`
- `nemotron-3-super`
- `nemotron-3-super-latest`

### Introdução

Nemotron 3 Super é o modelo de texto da NVIDIA para aplicações complexas com agentes, com 12B parâmetros ativos de um total de 120B. A sua conceção híbrida Mamba–Transformer de mistura de especialistas suporta raciocínio, ferramentas de função e controlos de saída estruturada.

Entradas aceites

Texto

Resultados

Texto

### Disponível no Ailoot · entradas e métodos

**Ailoot · Anthropic Messages** `POST /v1/messages`

Entrada

`text`

Saída

`text`

Contexto

262 144 tokens

Saída máxima

32 768 tokens

Formato de saída

json ou SSE

| Campo | Tipo | Requisito | Valores e limites | Predefinição |
| --- | --- | --- | --- | --- |
| Campo`model` | Tipo`string` | RequisitoObrigatório | Valores e limites nvidia/nemotron-3-super-120b-a12b | Predefinição— |
| Campo`messages` | Tipo`message[]` | RequisitoObrigatório | Valores e limites Número mínimo de elementos: 1 | Predefinição— |
| Campo`messages[].role` | Tipo`string` | RequisitoObrigatório | Valores e limites user, assistant | Predefinição— |
| Campo`messages[].content` | Tipo`string\|content_block[]` | RequisitoObrigatório | Valores e limites | Predefinição— |
| Campo`system` | Tipo`string\|content_block[]` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`max_tokens` | Tipo`integer` | RequisitoObrigatório | Valores e limites Mínimo: 1 O limite aplica-se a: Limite exato do modelo ou da ficha selecionados | Predefinição— |
| Campo`stream` | Tipo`boolean` | RequisitoOpcional | Valores e limites | Predefiniçãofalse |
| Campo`temperature` | Tipo`number` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`top_p` | Tipo`number` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`stop_sequences` | Tipo`string[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tools` | Tipo`tool[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tools[].name` | Tipo`string` | RequisitoOpcional | Valores e limites Aplica-se quando: Ferramenta fornecida | Predefinição— |
| Campo`tools[].description` | Tipo`string` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`tools[].input_schema` | Tipo`JSON_schema` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`tool_choice` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`thinking.type` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`thinking.budget_tokens` | Tipo`integer` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`output_config.effort` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`metadata` | Tipo`object` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`cache_control` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |

Combinações de materiais de entrada

**Texto** · Texto UTF8

`messages[].content ou bloco type=text`

Parâmetros e ciclo de vida do método

| Parâmetro | Contrato |
| --- | --- |
| Parâmetro`material_types` | Contratotext |
| Parâmetro`required` | Contratomodel, messages, max\_tokens |
| Parâmetro`optional_controls` | Contratonull |
| Parâmetro`content_type` | Contratoapplication/json |
| Parâmetro`text_file_material` | ContratoConteúdo UTF-8 real inserido como texto; ID de ficheiros/URLs precisam de suporte separado e exato |

Ciclo de vida: `exact retained published method`

As estruturas dos métodos e os ID são exatos; a capacidade do fornecedor é distinta da admissão dos pedidos.

### Tarifários

#### Tarifas dos métodos Ailoot

Entrada

0,00008 US$ */ 1K*

Saída

0,00045 US$ */ 1K*

Leitura da cache

0,00008 US$ */ 1K*

Escrita na cache

0,00008 US$ */ 1K*

Escrita na cache, 5 min

0,00008 US$ */ 1K tokens*

O Ailoot reserva um montante estimado antes de um pedido. Após o resultado, liquida o custo final com base na utilização medida. No streaming, a liquidação usa o registo final de utilização. [Como funcionam a reserva e a liquidação →](https://ailoot.ai/docs/pt-pt/billing/reserve/)

#### Detalhes da tarifa de referência

As tabelas de referência do modelo não alteram a seleção do método, as cotações ou os custos. Os custos ativos usam as tarifas do método Ailoot selecionado.

Tabelas de referência do modelo

#### Preços por configuração

Associe cada custo às condições apresentadas. Use uma única tarifa para cada conjunto de configurações alternativas.

| Configuração | Tabela de tarifas | Tokens de contexto, mais de | Tokens de contexto, até ao limite inclusive | Custo |
| --- | --- | --- | --- | --- |
| ConfiguraçãoOpenAI Chat · Tarifas de base por token | Tabela de tarifasTarifa base | Tokens de contexto, mais de— | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.00017** / 1K tokens Saída · Tokens de saída **$0.0008** / 1K tokens Entrada · Leitura da cache **—** / 1K tokens Entrada · Escrita na cache **—** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoOpenAI Chat · Escalão 1 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de0 | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.00017** / 1K tokens Saída · Tokens de saída **$0.0008** / 1K tokens Entrada · Leitura da cache **—** / 1K tokens Entrada · Escrita na cache **—** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoAnthropic Messages · Tarifas de base por token | Tabela de tarifasTarifa base | Tokens de contexto, mais de— | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.00017** / 1K tokens Saída · Tokens de saída **$0.0008** / 1K tokens Entrada · Leitura da cache **—** / 1K tokens Entrada · Escrita na cache **—** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoAnthropic Messages · Escalão 1 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de0 | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.00017** / 1K tokens Saída · Tokens de saída **$0.0008** / 1K tokens Entrada · Leitura da cache **—** / 1K tokens Entrada · Escrita na cache **—** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |

### Exemplos de pedidos

#### Ailoot · Anthropic Messages

Exemplo de textoPython SDKNode.js SDKStreaming em Python

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "nvidia/nemotron-3-super-120b-a12b", "max_tokens": 1024, "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

```python
import anthropic
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = anthropic.Anthropic(base_url="https://api.ailoot.ai", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
msg = client.messages.create(
    model="nvidia/nemotron-3-super-120b-a12b",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        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
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(msg.to_dict(mode="json"))
```

```js
import Anthropic from "@anthropic-ai/sdk";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new Anthropic({ baseURL: "https://api.ailoot.ai", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const msg = await client.messages.create({
  model: "nvidia/nemotron-3-super-120b-a12b",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    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;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(msg);
```

```python
import anthropic,os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=anthropic.Anthropic(base_url="https://api.ailoot.ai",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        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
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.messages.stream(model='nvidia/nemotron-3-super-120b-a12b',max_tokens=1024,messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_message()
    save_result(final.to_dict(mode="json"),"stream-result")
```

### Receber e guardar os resultados

#### Ailoot · Anthropic Messages

json ou SSE

##### Guardar todos os resultados concluídos

Guarde cada resposta, ficheiro e parte de conteúdo devolvidos na íntegra.

Conserve todos os blocos de conteúdo, as assinaturas de raciocínio e os ID reais de utilização de ferramentas. Junte todos os deltas de blocos SSE; o primeiro bloco de texto não é a saída completa.

##### Se for necessário verificar a resposta original

Conserve os ID e cabeçalhos de pedido/resposta. Não é fornecido um URL genérico para obter uma tarefa textual.

Campos da resposta

| Campo | Tipo |
| --- | --- |
| Campo`id` | Tipostring |
| Campo`model` | Tipostring |
| Campo`content[]` | Tipotext\|thinking\|tool\_use\|other content block |
| Campo`stop_reason` | Tipostring\|null |
| Campo`usage` | Tipoobject |

Erros e passos seguintes

| Resposta | Condição | Passo seguinte |
| --- | --- | --- |
| Resposta400 · `invalid_request_error` | CondiçãoCampos obrigatórios, representação do material ou valor do parâmetro inválidos | Passo seguinteCorrija os campos indicados antes de um novo pedido de criação. |

### Aliases

#### Aliases do modelo

<strong>Ailoot</strong> [`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=messages), [`nemotron-3-super`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super&fmt=messages), [`nemotron-3-super-latest`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super-latest&fmt=messages)
**Ailoot Ultra** [`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Ultra&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=messages)

#### Aliases dos caminhos dos métodos

Use os caminhos dos métodos indicados acima.

#### IDs de chamada relacionados

[`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=messages), [`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Ultra&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=messages), [`nemotron-3-super`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super&fmt=messages), [`nemotron-3-super-latest`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super-latest&fmt=messages)

**Ailoot · OpenAI Chat** `POST /v1/chat/completions` `nvidia/nemotron-3-super-120b-a12b`

[`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=chat)

NVIDIA /`nvidia/nemotron-3-super-120b-a12b`

ID do modelo

- `nvidia/nemotron-3-super-120b-a12b`
- `nemotron-3-super`
- `nemotron-3-super-latest`

### Introdução

Nemotron 3 Super é o modelo de texto da NVIDIA para aplicações complexas com agentes, com 12B parâmetros ativos de um total de 120B. A sua conceção híbrida Mamba–Transformer de mistura de especialistas suporta raciocínio, ferramentas de função e controlos de saída estruturada.

Entradas aceites

Texto

Resultados

Texto

### Disponível no Ailoot · entradas e métodos

**Ailoot · OpenAI Chat** `POST /v1/chat/completions`

Entrada

`text`

Saída

`text`

Contexto

4096 tokens

Saída máxima

1024 tokens

Formato de saída

json ou SSE

| Campo | Tipo | Requisito | Valores e limites | Predefinição |
| --- | --- | --- | --- | --- |
| Campo`model` | Tipo`string` | RequisitoObrigatório | Valores e limites nvidia/nemotron-3-super-120b-a12b | Predefinição— |
| Campo`messages` | Tipo`message[]` | RequisitoObrigatório | Valores e limites Número mínimo de elementos: 1 | Predefinição— |
| Campo`messages[].role` | Tipo`string` | RequisitoObrigatório | Valores e limites Exemplos: system, user, assistant, tool, function Condições: Estes papéis são representados explicitamente pelos tipos de compatibilidade do código-fonte; o conjunto exato de papéis continua específico do modelo. Depende do modelo | Predefinição— |
| Campo`messages[].content` | Tipo`string\|content_part[]\|null` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`messages[].tool_calls` | Tipo`tool_call[]` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`messages[].tool_call_id` | Tipo`string` | RequisitoOpcional | Valores e limites Aplica-se quando: role=tool; use o ID realmente devolvido | Predefinição— |
| Campo`messages[].name` | Tipo`string` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`messages[].reasoning_content` | Tipo`string` | RequisitoOpcional | Valores e limites Aplica-se quando: Reintroduza o raciocínio realmente devolvido quando este modelo o utiliza | Predefinição— |
| Campo`messages[].reasoning_details` | Tipo`object\|array` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`max_tokens` | Tipo`integer` | RequisitoOpcional | Valores e limites Mínimo: 1 Depende do modelo | Predefinição— |
| Campo`max_completion_tokens` | Tipo`integer` | RequisitoOpcional | Valores e limites Mínimo: 1 Depende do modelo | Predefinição— |
| Campo`stream` | Tipo`boolean` | RequisitoOpcional | Valores e limites | Predefiniçãofalse |
| Campo`stream_options.include_usage` | Tipo`boolean` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`temperature` | Tipo`number` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`top_p` | Tipo`number` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`stop` | Tipo`string\|string[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tools` | Tipo`function_tool[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tools[].type` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tools[].function.name` | Tipo`string` | RequisitoObrigatório | Valores e limites Aplica-se quando: Função fornecida como ferramenta | Predefinição— |
| Campo`tools[].function.description` | Tipo`string` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`tools[].function.parameters` | Tipo`JSON_schema` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`tool_choice` | Tipo`string\|object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`parallel_tool_calls` | Tipo`boolean` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`response_format` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`reasoning_effort` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`reasoning` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`service_tier` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`instructions` | Tipo`string` | RequisitoOpcional | Valores e limites Campo de compatibilidade | Predefinição— |
| Campo`functions` | Tipo`function[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`function_call` | Tipo`string\|object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`prompt_cache_options` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |

Combinações de materiais de entrada

**Texto** · Texto UTF8

`messages[].content`

Parâmetros e ciclo de vida do método

| Parâmetro | Contrato |
| --- | --- |
| Parâmetro`material_types` | Contratotext |
| Parâmetro`required` | Contratomodel, messages |
| Parâmetro`optional_controls` | Contratonull |
| Parâmetro`content_type` | Contratoapplication/json |
| Parâmetro`text_file_material` | ContratoConteúdo UTF-8 real inserido como texto; ID de ficheiros/URLs precisam de suporte separado e exato |

Ciclo de vida: `exact retained published method`

As estruturas dos métodos e os ID são exatos; a capacidade do fornecedor é distinta da admissão dos pedidos.

### Tarifários

#### Tarifas dos métodos Ailoot

Entrada

0,00008 US$ */ 1K*

Saída

0,00045 US$ */ 1K*

Leitura da cache

0,00008 US$ */ 1K*

Escrita na cache

0,00008 US$ */ 1K*

Escrita na cache, 5 min

0,00008 US$ */ 1K tokens*

O Ailoot reserva um montante estimado antes de um pedido. Após o resultado, liquida o custo final com base na utilização medida. No streaming, a liquidação usa o registo final de utilização. [Como funcionam a reserva e a liquidação →](https://ailoot.ai/docs/pt-pt/billing/reserve/)

#### Detalhes da tarifa de referência

As tabelas de referência do modelo não alteram a seleção do método, as cotações ou os custos. Os custos ativos usam as tarifas do método Ailoot selecionado.

Tabelas de referência do modelo

#### Preços por configuração

Associe cada custo às condições apresentadas. Use uma única tarifa para cada conjunto de configurações alternativas.

| Configuração | Tabela de tarifas | Tokens de contexto, mais de | Tokens de contexto, até ao limite inclusive | Custo |
| --- | --- | --- | --- | --- |
| ConfiguraçãoOpenAI Chat · Tarifas de base por token | Tabela de tarifasTarifa base | Tokens de contexto, mais de— | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.00017** / 1K tokens Saída · Tokens de saída **$0.0008** / 1K tokens Entrada · Leitura da cache **—** / 1K tokens Entrada · Escrita na cache **—** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoOpenAI Chat · Escalão 1 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de0 | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.00017** / 1K tokens Saída · Tokens de saída **$0.0008** / 1K tokens Entrada · Leitura da cache **—** / 1K tokens Entrada · Escrita na cache **—** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoAnthropic Messages · Tarifas de base por token | Tabela de tarifasTarifa base | Tokens de contexto, mais de— | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.00017** / 1K tokens Saída · Tokens de saída **$0.0008** / 1K tokens Entrada · Leitura da cache **—** / 1K tokens Entrada · Escrita na cache **—** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoAnthropic Messages · Escalão 1 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de0 | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.00017** / 1K tokens Saída · Tokens de saída **$0.0008** / 1K tokens Entrada · Leitura da cache **—** / 1K tokens Entrada · Escrita na cache **—** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |

### Exemplos de pedidos

#### Ailoot · OpenAI Chat

Exemplo de textoPython SDKNode.js SDKStreaming em Python

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "nvidia/nemotron-3-super-120b-a12b", "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

```python
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = OpenAI(base_url="https://api.ailoot.ai/v1", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
resp = client.chat.completions.create(
    model="nvidia/nemotron-3-super-120b-a12b",
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        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
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(resp.to_dict(mode="json"))
```

```js
import OpenAI from "openai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.chat.completions.create({
  model: "nvidia/nemotron-3-super-120b-a12b",
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    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;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(resp);
```

```python
from openai import OpenAI
import os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        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
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.chat.completions.stream(model='nvidia/nemotron-3-super-120b-a12b',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_completion()
    save_result(final.to_dict(mode="json"),"stream-result")
```

### Receber e guardar os resultados

#### Ailoot · OpenAI Chat

json ou SSE

##### Guardar todos os resultados concluídos

Guarde cada resposta, ficheiro e parte de conteúdo devolvidos na íntegra.

Conserve cada opção com o conteúdo, as chamadas de ferramentas e o raciocínio. Em SSE, junte os deltas por índice de opção e ferramenta e mantenha o motivo final de conclusão e os dados de utilização.

##### Se for necessário verificar a resposta original

Conserve os ID e cabeçalhos de pedido/resposta. Não é fornecido um URL genérico para obter uma tarefa textual.

Campos da resposta

| Campo | Tipo |
| --- | --- |
| Campo`choices[].index` | Tipointeger |
| Campo`choices[].message.content` | Tipostring\|null |
| Campo`choices[].message.tool_calls` | Tipotool\_call\[\] |
| Campo`choices[].message.reasoning_content` | Tipostring |
| Campo`choices[].message.reasoning_details` | Tipoobject\|array |
| Campo`choices[].finish_reason` | Tipostring\|null |
| Campo`usage` | Tipoobject |

Erros e passos seguintes

| Resposta | Condição | Passo seguinte |
| --- | --- | --- |
| Resposta400 · `invalid_request_error` | CondiçãoCampos obrigatórios, representação do material ou valor do parâmetro inválidos | Passo seguinteCorrija os campos indicados antes de um novo pedido de criação. |

### Aliases

#### Aliases do modelo

<strong>Ailoot</strong> [`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=chat), [`nemotron-3-super`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super&fmt=chat), [`nemotron-3-super-latest`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super-latest&fmt=chat)
**Ailoot Ultra** [`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Ultra&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=chat)

#### Aliases dos caminhos dos métodos

Use os caminhos dos métodos indicados acima.

#### IDs de chamada relacionados

[`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=chat), [`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Ultra&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=chat), [`nemotron-3-super`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super&fmt=chat), [`nemotron-3-super-latest`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super-latest&fmt=chat)

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `nvidia/nemotron-3-super-120b-a12b`

[`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Ultra&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=chat)

NVIDIA /`nvidia/nemotron-3-super-120b-a12b`

### Introdução

Nemotron 3 Super é o modelo de texto da NVIDIA para aplicações complexas com agentes, com 12B parâmetros ativos de um total de 120B. A sua conceção híbrida Mamba–Transformer de mistura de especialistas suporta raciocínio, ferramentas de função e controlos de saída estruturada.

Entradas aceites

Texto

Resultados

Texto

### Disponível no Ailoot · entradas e métodos

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions`

Entrada

`text`

Saída

`text`

Formato de saída

json ou SSE

| Campo | Tipo | Requisito | Valores e limites | Predefinição |
| --- | --- | --- | --- | --- |
| Campo`model` | Tipo`string` | RequisitoObrigatório | Valores e limites nvidia/nemotron-3-super-120b-a12b | Predefinição— |
| Campo`messages` | Tipo`message[]` | RequisitoObrigatório | Valores e limites Número mínimo de elementos: 1 | Predefinição— |
| Campo`messages[].role` | Tipo`string` | RequisitoObrigatório | Valores e limites Exemplos: system, user, assistant, tool, function Condições: Estes papéis são representados explicitamente pelos tipos de compatibilidade do código-fonte; o conjunto exato de papéis continua específico do modelo. Depende do modelo | Predefinição— |
| Campo`messages[].content` | Tipo`string\|content_part[]\|null` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`messages[].tool_calls` | Tipo`tool_call[]` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`messages[].tool_call_id` | Tipo`string` | RequisitoOpcional | Valores e limites Aplica-se quando: role=tool; use o ID realmente devolvido | Predefinição— |
| Campo`messages[].name` | Tipo`string` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`messages[].reasoning_content` | Tipo`string` | RequisitoOpcional | Valores e limites Aplica-se quando: Reintroduza o raciocínio realmente devolvido quando este modelo o utiliza | Predefinição— |
| Campo`messages[].reasoning_details` | Tipo`object\|array` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`max_tokens` | Tipo`integer` | RequisitoOpcional | Valores e limites Mínimo: 1 Depende do modelo | Predefinição— |
| Campo`max_completion_tokens` | Tipo`integer` | RequisitoOpcional | Valores e limites Mínimo: 1 Depende do modelo | Predefinição— |
| Campo`stream` | Tipo`boolean` | RequisitoOpcional | Valores e limites | Predefiniçãofalse |
| Campo`stream_options.include_usage` | Tipo`boolean` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`temperature` | Tipo`number` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`top_p` | Tipo`number` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`stop` | Tipo`string\|string[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tools` | Tipo`function_tool[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tools[].type` | Tipo`string` | RequisitoOpcional | Valores e limites function Depende do modelo | Predefinição— |
| Campo`tools[].function.name` | Tipo`string` | RequisitoObrigatório | Valores e limites Aplica-se quando: Função fornecida como ferramenta | Predefinição— |
| Campo`tools[].function.description` | Tipo`string` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`tools[].function.parameters` | Tipo`JSON_schema` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`tool_choice` | Tipo`string\|object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`parallel_tool_calls` | Tipo`boolean` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`response_format` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`reasoning_effort` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`reasoning` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`service_tier` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`instructions` | Tipo`string` | RequisitoOpcional | Valores e limites Campo de compatibilidade | Predefinição— |
| Campo`functions` | Tipo`function[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`function_call` | Tipo`string\|object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`prompt_cache_options` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`modalities` | Tipo`string[]` | RequisitoOpcional | Valores e limites text | Predefinição— |
| Campo`provider` | Tipo`object` | RequisitoOpcional | Valores e limites Condições: provider.options é rejeitado nesta rota textual Ultra | Predefinição— |
| Campo`cache_control.ttl` | Tipo`string` | RequisitoOpcional | Valores e limites Condições: 1h é rejeitado nos locais efetivos da cache de prompts | Predefinição— |

Combinações de materiais de entrada

**Texto** · Texto UTF8

`messages[].content`

Parâmetros e ciclo de vida do método

| Parâmetro | Contrato |
| --- | --- |
| Parâmetro`content_type` | Contratoapplication/json |
| Parâmetro`required` | Contratomodel, messages |
| Parâmetro`material_types` | Contratotext |
| Parâmetro`messages` | ContratoLista de mensagens com estrutura role/content |
| Parâmetro`file_material` | ContratoDocumento UTF-8 real inserido como texto literal; nenhum ID de ficheiro inferido |
| Parâmetro`optional_controls` | Contratostream, temperature, top\_p, stop, max\_tokens, max\_completion\_tokens, reasoning, response\_format, tools, tool\_choice |
| Parâmetro`control_scope` | ContratoEspecífico do modelo; as ferramentas de funções do utilizador diferem das ferramentas alojadas |
| Parâmetro`output_modalities` | Contratotext |
| Parâmetro`hosted_operations` | Contratofalse |
| Parâmetro`multimodal_input_binding` | Contratonull |

Ciclo de vida: `synchronous_or_streamed`

Envie o ID exato do modelo com messages.

O comprimento do contexto não é um limite de saída.

Um ficheiro de texto pode fornecer texto literal; as entradas de imagem/áudio/objeto de ficheiro exigem uma associação exata.

### Tarifários

As referências tarifárias não acrescentam opções ao pedido. Os parâmetros suportados constam do método selecionado.

Modo rápido

Tarifa normal Quando o modo rápido está selecionado

Modo flex

Tarifa normal Quando o modo flex está selecionado

Esforço máximo de raciocínio

Tarifa normal Quando o esforço máximo de raciocínio usa o ajuste predefinido (default)

Esforço de raciocínio · baixo

Tarifa normal Quando o esforço de raciocínio é baixo

Esforço de raciocínio · médio

Tarifa normal Quando o esforço de raciocínio é médio

#### Tarifas Ailoot

#### Preços por configuração

Associe cada custo às condições apresentadas. Use uma única tarifa para cada conjunto de configurações alternativas.

| Configuração | Tabela de tarifas | Tokens de contexto, mais de | Tokens de contexto, até ao limite inclusive | Custo |
| --- | --- | --- | --- | --- |
| ConfiguraçãoTarifas base dos tokens | Tabela de tarifasTarifa base | Tokens de contexto, mais de— | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.00017** / 1K tokens Saída · Tokens de saída **$0.0008** / 1K tokens Entrada · Leitura da cache **—** / 1K tokens Entrada · Escrita na cache **—** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoEscalão 1 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de0 | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.00017** / 1K tokens Saída · Tokens de saída **$0.0008** / 1K tokens Entrada · Leitura da cache **—** / 1K tokens Entrada · Escrita na cache **—** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |

O Ailoot reserva um montante estimado antes de um pedido. Após o resultado, liquida o custo final com base na utilização medida. No streaming, a liquidação usa o registo final de utilização. [Como funcionam a reserva e a liquidação →](https://ailoot.ai/docs/pt-pt/billing/reserve/)

### Exemplos de pedidos

#### Ailoot Ultra · OpenAI Chat

curlPython SDKStreaming em Python

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "nvidia/nemotron-3-super-120b-a12b", "messages": [{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}]}')

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
    if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
```

```python
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model='nvidia/nemotron-3-super-120b-a12b',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}])
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        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
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(result.to_dict(mode="json"))
```

```python
from openai import OpenAI
import os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        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
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.chat.completions.stream(model='nvidia/nemotron-3-super-120b-a12b',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_completion()
    save_result(final.to_dict(mode="json"),"stream-result")
```

### Receber e guardar os resultados

#### Ailoot Ultra · OpenAI Chat

json ou SSE

##### Guardar todos os resultados concluídos

Guarde cada resposta, ficheiro e parte de conteúdo devolvidos na íntegra.

Conserve cada opção com o conteúdo, as chamadas de ferramentas e o raciocínio. Em SSE, junte os deltas por índice de opção e ferramenta e mantenha o motivo final de conclusão e os dados de utilização.

##### Se for necessário verificar a resposta original

Conserve os ID e cabeçalhos de pedido/resposta. Não é fornecido um URL genérico para obter uma tarefa textual.

Campos da resposta

| Campo | Tipo |
| --- | --- |
| Campo`choices[].index` | Tipointeger |
| Campo`choices[].message.content` | Tipostring\|null |
| Campo`choices[].message.tool_calls` | Tipotool\_call\[\] |
| Campo`choices[].message.reasoning_content` | Tipostring |
| Campo`choices[].message.reasoning_details` | Tipoobject\|array |
| Campo`choices[].finish_reason` | Tipostring\|null |
| Campo`usage` | Tipoobject |

Erros e passos seguintes

| Resposta | Condição | Passo seguinte |
| --- | --- | --- |
| Resposta400 · `invalid_request_error` | CondiçãoCampos obrigatórios, representação do material ou valor do parâmetro inválidos | Passo seguinteCorrija os campos indicados antes de um novo pedido de criação. |

### Aliases

#### Aliases do modelo

<strong>Ailoot</strong> [`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=chat), [`nemotron-3-super`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super&fmt=chat), [`nemotron-3-super-latest`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super-latest&fmt=chat)
**Ailoot Ultra** [`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Ultra&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=chat)

#### Aliases dos caminhos dos métodos

Use os caminhos dos métodos indicados acima.

#### IDs de chamada relacionados

[`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=chat), [`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Ultra&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=chat), [`nemotron-3-super`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super&fmt=chat), [`nemotron-3-super-latest`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super-latest&fmt=chat)

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `nvidia/nemotron-3-super-120b-a12b`

[`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Ultra&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=messages)

NVIDIA /`nvidia/nemotron-3-super-120b-a12b`

### Introdução

Nemotron 3 Super é o modelo de texto da NVIDIA para aplicações complexas com agentes, com 12B parâmetros ativos de um total de 120B. A sua conceção híbrida Mamba–Transformer de mistura de especialistas suporta raciocínio, ferramentas de função e controlos de saída estruturada.

Entradas aceites

Texto

Resultados

json · sse

### Disponível no Ailoot · entradas e métodos

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages`

Entrada

`text`

Saída

`json`, `sse`

Formato de saída

JSON ou SSE

| Campo | Tipo | Requisito | Valores e limites | Predefinição |
| --- | --- | --- | --- | --- |
| Campo`model` | Tipo`string` | RequisitoObrigatório | Valores e limites nvidia/nemotron-3-super-120b-a12b | Predefinição— |
| Campo`messages` | Tipo`message[]` | RequisitoObrigatório | Valores e limites | Predefinição— |
| Campo`messages[].role` | Tipo`string` | RequisitoObrigatório | Valores e limites user, assistant | Predefinição— |
| Campo`messages[].content` | Tipo`string` | RequisitoObrigatório | Valores e limites | Predefinição— |
| Campo`max_tokens` | Tipo`integer` | RequisitoObrigatório | Valores e limites | Predefinição— |
| Campo`stream` | Tipo`boolean` | RequisitoOpcional | Valores e limites | Predefiniçãofalse |

Combinações de materiais de entrada

**Texto** · Texto UTF-8

`Cadeia de caracteres messages[].content`

Parâmetros e ciclo de vida do método

| Parâmetro | Contrato |
| --- | --- |
| Parâmetro`content_type` | Contratoapplication/json |
| Parâmetro`required` | Contratomodel, messages, max\_tokens |
| Parâmetro`optional_controls` | Contratostream |
| Parâmetro`material_types` | Contratotext |
| Parâmetro`text_file_material` | ContratoLeia o documento UTF-8 real e coloque o texto na entrada indicada ou na cadeia de conteúdo da mensagem. |

Ciclo de vida: `synchronous_or_streamed`

### Tarifários

As referências tarifárias não acrescentam opções ao pedido. Os parâmetros suportados constam do método selecionado.

Modo rápido

Tarifa normal Quando o modo rápido está selecionado

Modo flex

Tarifa normal Quando o modo flex está selecionado

Esforço máximo de raciocínio

Tarifa normal Quando o esforço máximo de raciocínio usa o ajuste predefinido (default)

Esforço de raciocínio · baixo

Tarifa normal Quando o esforço de raciocínio é baixo

Esforço de raciocínio · médio

Tarifa normal Quando o esforço de raciocínio é médio

#### Tarifas Ailoot

#### Preços por configuração

Associe cada custo às condições apresentadas. Use uma única tarifa para cada conjunto de configurações alternativas.

| Configuração | Tabela de tarifas | Tokens de contexto, mais de | Tokens de contexto, até ao limite inclusive | Custo |
| --- | --- | --- | --- | --- |
| ConfiguraçãoTarifas base dos tokens | Tabela de tarifasTarifa base | Tokens de contexto, mais de— | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.00017** / 1K tokens Saída · Tokens de saída **$0.0008** / 1K tokens Entrada · Leitura da cache **—** / 1K tokens Entrada · Escrita na cache **—** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoEscalão 1 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de0 | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.00017** / 1K tokens Saída · Tokens de saída **$0.0008** / 1K tokens Entrada · Leitura da cache **—** / 1K tokens Entrada · Escrita na cache **—** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |

O Ailoot reserva um montante estimado antes de um pedido. Após o resultado, liquida o custo final com base na utilização medida. No streaming, a liquidação usa o registo final de utilização. [Como funcionam a reserva e a liquidação →](https://ailoot.ai/docs/pt-pt/billing/reserve/)

### Exemplos de pedidos

#### Ailoot Ultra · Anthropic Messages

Corpo JSON mínimo completocurl · use o seu documento UTF-8Python · guarde o resultado completo

```json
{
  "model": "nvidia/nemotron-3-super-120b-a12b",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'nvidia/nemotron-3-super-120b-a12b', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
```

```python
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'nvidia/nemotron-3-super-120b-a12b', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError

api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
    raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
    with urlopen(request, timeout=120) as response:
        raw = response.read()
        Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
    Path('result.json').write_bytes(error.read())
    Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
    raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
```

### Receber e guardar os resultados

#### Ailoot Ultra · Anthropic Messages

JSON ou SSE

##### Guardar todos os resultados concluídos

Guarde cada resposta, ficheiro e parte de conteúdo devolvidos na íntegra.

Conserve todos os blocos de conteúdo, as assinaturas de raciocínio e os ID reais de utilização de ferramentas. Junte todos os deltas de blocos SSE; o primeiro bloco de texto não é a saída completa.

##### Se for necessário verificar a resposta original

Conserve os ID e cabeçalhos de pedido/resposta. Não é fornecido um URL genérico para obter uma tarefa textual.

Campos da resposta

| Campo | Tipo |
| --- | --- |
| Campo`id` | Tipostring |
| Campo`model` | Tipostring |
| Campo`content[]` | Tipotext\|thinking\|tool\_use\|other content block |
| Campo`stop_reason` | Tipostring\|null |
| Campo`usage` | Tipoobject |

Erros e passos seguintes

| Resposta | Condição | Passo seguinte |
| --- | --- | --- |
| Resposta400 · `invalid_request_error` | CondiçãoCampos obrigatórios, representação do material ou valor do parâmetro inválidos | Passo seguinteCorrija os campos indicados antes de um novo pedido de criação. |

### Aliases

#### Aliases do modelo

<strong>Ailoot</strong> [`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=messages), [`nemotron-3-super`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super&fmt=messages), [`nemotron-3-super-latest`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super-latest&fmt=messages)
**Ailoot Ultra** [`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Ultra&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=messages)

#### Aliases dos caminhos dos métodos

Use os caminhos dos métodos indicados acima.

#### IDs de chamada relacionados

[`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=messages), [`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Ultra&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=messages), [`nemotron-3-super`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super&fmt=messages), [`nemotron-3-super-latest`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super-latest&fmt=messages)

**Ailoot · Anthropic Messages** `POST /v1/messages` `nemotron-3-super`

[`nemotron-3-super`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super&fmt=messages)

NVIDIA /`nemotron-3-super`

ID do modelo

- `nvidia/nemotron-3-super-120b-a12b`
- `nemotron-3-super`
- `nemotron-3-super-latest`

### Introdução

Nemotron 3 Super é o modelo de texto da NVIDIA para aplicações complexas com agentes, com 12B parâmetros ativos de um total de 120B. A sua conceção híbrida Mamba–Transformer de mistura de especialistas suporta raciocínio, ferramentas de função e controlos de saída estruturada.

Entradas aceites

Texto

Resultados

Texto

### Disponível no Ailoot · entradas e métodos

**Ailoot · Anthropic Messages** `POST /v1/messages`

Entrada

`text`

Saída

`text`

Contexto

262 144 tokens

Saída máxima

32 768 tokens

Formato de saída

json ou SSE

| Campo | Tipo | Requisito | Valores e limites | Predefinição |
| --- | --- | --- | --- | --- |
| Campo`model` | Tipo`string` | RequisitoObrigatório | Valores e limites nemotron-3-super | Predefinição— |
| Campo`messages` | Tipo`message[]` | RequisitoObrigatório | Valores e limites Número mínimo de elementos: 1 | Predefinição— |
| Campo`messages[].role` | Tipo`string` | RequisitoObrigatório | Valores e limites user, assistant | Predefinição— |
| Campo`messages[].content` | Tipo`string\|content_block[]` | RequisitoObrigatório | Valores e limites | Predefinição— |
| Campo`system` | Tipo`string\|content_block[]` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`max_tokens` | Tipo`integer` | RequisitoObrigatório | Valores e limites Mínimo: 1 O limite aplica-se a: Limite exato do modelo ou da ficha selecionados | Predefinição— |
| Campo`stream` | Tipo`boolean` | RequisitoOpcional | Valores e limites | Predefiniçãofalse |
| Campo`temperature` | Tipo`number` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`top_p` | Tipo`number` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`stop_sequences` | Tipo`string[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tools` | Tipo`tool[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tools[].name` | Tipo`string` | RequisitoOpcional | Valores e limites Aplica-se quando: Ferramenta fornecida | Predefinição— |
| Campo`tools[].description` | Tipo`string` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`tools[].input_schema` | Tipo`JSON_schema` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`tool_choice` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`thinking.type` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`thinking.budget_tokens` | Tipo`integer` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`output_config.effort` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`metadata` | Tipo`object` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`cache_control` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |

Combinações de materiais de entrada

**Texto** · Texto UTF8

`messages[].content ou bloco type=text`

Parâmetros e ciclo de vida do método

| Parâmetro | Contrato |
| --- | --- |
| Parâmetro`material_types` | Contratotext |
| Parâmetro`required` | Contratomodel, messages, max\_tokens |
| Parâmetro`optional_controls` | Contratonull |
| Parâmetro`content_type` | Contratoapplication/json |
| Parâmetro`text_file_material` | ContratoConteúdo UTF-8 real inserido como texto; ID de ficheiros/URLs precisam de suporte separado e exato |

Ciclo de vida: `exact retained published method`

As estruturas dos métodos e os ID são exatos; a capacidade do fornecedor é distinta da admissão dos pedidos.

### Tarifários

#### Tarifas dos métodos Ailoot

Entrada

0,00008 US$ */ 1K*

Saída

0,00045 US$ */ 1K*

Leitura da cache

0,00008 US$ */ 1K*

Escrita na cache

0,00008 US$ */ 1K*

Escrita na cache, 5 min

0,00008 US$ */ 1K tokens*

O Ailoot reserva um montante estimado antes de um pedido. Após o resultado, liquida o custo final com base na utilização medida. No streaming, a liquidação usa o registo final de utilização. [Como funcionam a reserva e a liquidação →](https://ailoot.ai/docs/pt-pt/billing/reserve/)

#### Detalhes da tarifa de referência

As tabelas de referência do modelo não alteram a seleção do método, as cotações ou os custos. Os custos ativos usam as tarifas do método Ailoot selecionado.

Tabelas de referência do modelo

#### Preços por configuração

Associe cada custo às condições apresentadas. Use uma única tarifa para cada conjunto de configurações alternativas.

| Configuração | Tabela de tarifas | Tokens de contexto, mais de | Tokens de contexto, até ao limite inclusive | Custo |
| --- | --- | --- | --- | --- |
| ConfiguraçãoOpenAI Chat · Tarifas de base por token | Tabela de tarifasTarifa base | Tokens de contexto, mais de— | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.00017** / 1K tokens Saída · Tokens de saída **$0.0008** / 1K tokens Entrada · Leitura da cache **—** / 1K tokens Entrada · Escrita na cache **—** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoOpenAI Chat · Escalão 1 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de0 | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.00017** / 1K tokens Saída · Tokens de saída **$0.0008** / 1K tokens Entrada · Leitura da cache **—** / 1K tokens Entrada · Escrita na cache **—** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoAnthropic Messages · Tarifas de base por token | Tabela de tarifasTarifa base | Tokens de contexto, mais de— | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.00017** / 1K tokens Saída · Tokens de saída **$0.0008** / 1K tokens Entrada · Leitura da cache **—** / 1K tokens Entrada · Escrita na cache **—** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoAnthropic Messages · Escalão 1 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de0 | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.00017** / 1K tokens Saída · Tokens de saída **$0.0008** / 1K tokens Entrada · Leitura da cache **—** / 1K tokens Entrada · Escrita na cache **—** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |

### Exemplos de pedidos

#### Ailoot · Anthropic Messages

Exemplo de textoPython SDKNode.js SDKStreaming em Python

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "nemotron-3-super", "max_tokens": 1024, "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

```python
import anthropic
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = anthropic.Anthropic(base_url="https://api.ailoot.ai", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
msg = client.messages.create(
    model="nemotron-3-super",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        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
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(msg.to_dict(mode="json"))
```

```js
import Anthropic from "@anthropic-ai/sdk";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new Anthropic({ baseURL: "https://api.ailoot.ai", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const msg = await client.messages.create({
  model: "nemotron-3-super",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    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;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(msg);
```

```python
import anthropic,os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=anthropic.Anthropic(base_url="https://api.ailoot.ai",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        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
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.messages.stream(model='nemotron-3-super',max_tokens=1024,messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_message()
    save_result(final.to_dict(mode="json"),"stream-result")
```

### Receber e guardar os resultados

#### Ailoot · Anthropic Messages

json ou SSE

##### Guardar todos os resultados concluídos

Guarde cada resposta, ficheiro e parte de conteúdo devolvidos na íntegra.

Conserve todos os blocos de conteúdo, as assinaturas de raciocínio e os ID reais de utilização de ferramentas. Junte todos os deltas de blocos SSE; o primeiro bloco de texto não é a saída completa.

##### Se for necessário verificar a resposta original

Conserve os ID e cabeçalhos de pedido/resposta. Não é fornecido um URL genérico para obter uma tarefa textual.

Campos da resposta

| Campo | Tipo |
| --- | --- |
| Campo`id` | Tipostring |
| Campo`model` | Tipostring |
| Campo`content[]` | Tipotext\|thinking\|tool\_use\|other content block |
| Campo`stop_reason` | Tipostring\|null |
| Campo`usage` | Tipoobject |

Erros e passos seguintes

| Resposta | Condição | Passo seguinte |
| --- | --- | --- |
| Resposta400 · `invalid_request_error` | CondiçãoCampos obrigatórios, representação do material ou valor do parâmetro inválidos | Passo seguinteCorrija os campos indicados antes de um novo pedido de criação. |

### Aliases

#### Aliases do modelo

<strong>Ailoot</strong> [`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=messages), [`nemotron-3-super`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super&fmt=messages), [`nemotron-3-super-latest`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super-latest&fmt=messages)
**Ailoot Ultra** [`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Ultra&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=messages)

#### Aliases dos caminhos dos métodos

Use os caminhos dos métodos indicados acima.

#### IDs de chamada relacionados

[`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=messages), [`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Ultra&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=messages), [`nemotron-3-super`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super&fmt=messages), [`nemotron-3-super-latest`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super-latest&fmt=messages)

**Ailoot · OpenAI Chat** `POST /v1/chat/completions` `nemotron-3-super`

[`nemotron-3-super`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super&fmt=chat)

NVIDIA /`nemotron-3-super`

ID do modelo

- `nvidia/nemotron-3-super-120b-a12b`
- `nemotron-3-super`
- `nemotron-3-super-latest`

### Introdução

Nemotron 3 Super é o modelo de texto da NVIDIA para aplicações complexas com agentes, com 12B parâmetros ativos de um total de 120B. A sua conceção híbrida Mamba–Transformer de mistura de especialistas suporta raciocínio, ferramentas de função e controlos de saída estruturada.

Entradas aceites

Texto

Resultados

Texto

### Disponível no Ailoot · entradas e métodos

**Ailoot · OpenAI Chat** `POST /v1/chat/completions`

Entrada

`text`

Saída

`text`

Contexto

4096 tokens

Saída máxima

1024 tokens

Formato de saída

json ou SSE

| Campo | Tipo | Requisito | Valores e limites | Predefinição |
| --- | --- | --- | --- | --- |
| Campo`model` | Tipo`string` | RequisitoObrigatório | Valores e limites nemotron-3-super | Predefinição— |
| Campo`messages` | Tipo`message[]` | RequisitoObrigatório | Valores e limites Número mínimo de elementos: 1 | Predefinição— |
| Campo`messages[].role` | Tipo`string` | RequisitoObrigatório | Valores e limites Exemplos: system, user, assistant, tool, function Condições: Estes papéis são representados explicitamente pelos tipos de compatibilidade do código-fonte; o conjunto exato de papéis continua específico do modelo. Depende do modelo | Predefinição— |
| Campo`messages[].content` | Tipo`string\|content_part[]\|null` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`messages[].tool_calls` | Tipo`tool_call[]` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`messages[].tool_call_id` | Tipo`string` | RequisitoOpcional | Valores e limites Aplica-se quando: role=tool; use o ID realmente devolvido | Predefinição— |
| Campo`messages[].name` | Tipo`string` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`messages[].reasoning_content` | Tipo`string` | RequisitoOpcional | Valores e limites Aplica-se quando: Reintroduza o raciocínio realmente devolvido quando este modelo o utiliza | Predefinição— |
| Campo`messages[].reasoning_details` | Tipo`object\|array` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`max_tokens` | Tipo`integer` | RequisitoOpcional | Valores e limites Mínimo: 1 Depende do modelo | Predefinição— |
| Campo`max_completion_tokens` | Tipo`integer` | RequisitoOpcional | Valores e limites Mínimo: 1 Depende do modelo | Predefinição— |
| Campo`stream` | Tipo`boolean` | RequisitoOpcional | Valores e limites | Predefiniçãofalse |
| Campo`stream_options.include_usage` | Tipo`boolean` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`temperature` | Tipo`number` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`top_p` | Tipo`number` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`stop` | Tipo`string\|string[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tools` | Tipo`function_tool[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tools[].type` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tools[].function.name` | Tipo`string` | RequisitoObrigatório | Valores e limites Aplica-se quando: Função fornecida como ferramenta | Predefinição— |
| Campo`tools[].function.description` | Tipo`string` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`tools[].function.parameters` | Tipo`JSON_schema` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`tool_choice` | Tipo`string\|object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`parallel_tool_calls` | Tipo`boolean` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`response_format` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`reasoning_effort` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`reasoning` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`service_tier` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`instructions` | Tipo`string` | RequisitoOpcional | Valores e limites Campo de compatibilidade | Predefinição— |
| Campo`functions` | Tipo`function[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`function_call` | Tipo`string\|object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`prompt_cache_options` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |

Combinações de materiais de entrada

**Texto** · Texto UTF8

`messages[].content`

Parâmetros e ciclo de vida do método

| Parâmetro | Contrato |
| --- | --- |
| Parâmetro`material_types` | Contratotext |
| Parâmetro`required` | Contratomodel, messages |
| Parâmetro`optional_controls` | Contratonull |
| Parâmetro`content_type` | Contratoapplication/json |
| Parâmetro`text_file_material` | ContratoConteúdo UTF-8 real inserido como texto; ID de ficheiros/URLs precisam de suporte separado e exato |

Ciclo de vida: `exact retained published method`

As estruturas dos métodos e os ID são exatos; a capacidade do fornecedor é distinta da admissão dos pedidos.

### Tarifários

#### Tarifas dos métodos Ailoot

Entrada

0,00008 US$ */ 1K*

Saída

0,00045 US$ */ 1K*

Leitura da cache

0,00008 US$ */ 1K*

Escrita na cache

0,00008 US$ */ 1K*

Escrita na cache, 5 min

0,00008 US$ */ 1K tokens*

O Ailoot reserva um montante estimado antes de um pedido. Após o resultado, liquida o custo final com base na utilização medida. No streaming, a liquidação usa o registo final de utilização. [Como funcionam a reserva e a liquidação →](https://ailoot.ai/docs/pt-pt/billing/reserve/)

#### Detalhes da tarifa de referência

As tabelas de referência do modelo não alteram a seleção do método, as cotações ou os custos. Os custos ativos usam as tarifas do método Ailoot selecionado.

Tabelas de referência do modelo

#### Preços por configuração

Associe cada custo às condições apresentadas. Use uma única tarifa para cada conjunto de configurações alternativas.

| Configuração | Tabela de tarifas | Tokens de contexto, mais de | Tokens de contexto, até ao limite inclusive | Custo |
| --- | --- | --- | --- | --- |
| ConfiguraçãoOpenAI Chat · Tarifas de base por token | Tabela de tarifasTarifa base | Tokens de contexto, mais de— | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.00017** / 1K tokens Saída · Tokens de saída **$0.0008** / 1K tokens Entrada · Leitura da cache **—** / 1K tokens Entrada · Escrita na cache **—** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoOpenAI Chat · Escalão 1 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de0 | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.00017** / 1K tokens Saída · Tokens de saída **$0.0008** / 1K tokens Entrada · Leitura da cache **—** / 1K tokens Entrada · Escrita na cache **—** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoAnthropic Messages · Tarifas de base por token | Tabela de tarifasTarifa base | Tokens de contexto, mais de— | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.00017** / 1K tokens Saída · Tokens de saída **$0.0008** / 1K tokens Entrada · Leitura da cache **—** / 1K tokens Entrada · Escrita na cache **—** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoAnthropic Messages · Escalão 1 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de0 | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.00017** / 1K tokens Saída · Tokens de saída **$0.0008** / 1K tokens Entrada · Leitura da cache **—** / 1K tokens Entrada · Escrita na cache **—** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |

### Exemplos de pedidos

#### Ailoot · OpenAI Chat

Exemplo de textoPython SDKNode.js SDKStreaming em Python

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "nemotron-3-super", "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

```python
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = OpenAI(base_url="https://api.ailoot.ai/v1", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
resp = client.chat.completions.create(
    model="nemotron-3-super",
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        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
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(resp.to_dict(mode="json"))
```

```js
import OpenAI from "openai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.chat.completions.create({
  model: "nemotron-3-super",
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    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;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(resp);
```

```python
from openai import OpenAI
import os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        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
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.chat.completions.stream(model='nemotron-3-super',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_completion()
    save_result(final.to_dict(mode="json"),"stream-result")
```

### Receber e guardar os resultados

#### Ailoot · OpenAI Chat

json ou SSE

##### Guardar todos os resultados concluídos

Guarde cada resposta, ficheiro e parte de conteúdo devolvidos na íntegra.

Conserve cada opção com o conteúdo, as chamadas de ferramentas e o raciocínio. Em SSE, junte os deltas por índice de opção e ferramenta e mantenha o motivo final de conclusão e os dados de utilização.

##### Se for necessário verificar a resposta original

Conserve os ID e cabeçalhos de pedido/resposta. Não é fornecido um URL genérico para obter uma tarefa textual.

Campos da resposta

| Campo | Tipo |
| --- | --- |
| Campo`choices[].index` | Tipointeger |
| Campo`choices[].message.content` | Tipostring\|null |
| Campo`choices[].message.tool_calls` | Tipotool\_call\[\] |
| Campo`choices[].message.reasoning_content` | Tipostring |
| Campo`choices[].message.reasoning_details` | Tipoobject\|array |
| Campo`choices[].finish_reason` | Tipostring\|null |
| Campo`usage` | Tipoobject |

Erros e passos seguintes

| Resposta | Condição | Passo seguinte |
| --- | --- | --- |
| Resposta400 · `invalid_request_error` | CondiçãoCampos obrigatórios, representação do material ou valor do parâmetro inválidos | Passo seguinteCorrija os campos indicados antes de um novo pedido de criação. |

### Aliases

#### Aliases do modelo

<strong>Ailoot</strong> [`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=chat), [`nemotron-3-super`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super&fmt=chat), [`nemotron-3-super-latest`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super-latest&fmt=chat)
**Ailoot Ultra** [`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Ultra&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=chat)

#### Aliases dos caminhos dos métodos

Use os caminhos dos métodos indicados acima.

#### IDs de chamada relacionados

[`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=chat), [`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Ultra&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=chat), [`nemotron-3-super`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super&fmt=chat), [`nemotron-3-super-latest`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super-latest&fmt=chat)

**Ailoot · Anthropic Messages** `POST /v1/messages` `nemotron-3-super-latest`

[`nemotron-3-super-latest`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super-latest&fmt=messages)

NVIDIA /`nemotron-3-super-latest`

ID do modelo

- `nvidia/nemotron-3-super-120b-a12b`
- `nemotron-3-super`
- `nemotron-3-super-latest`

### Introdução

Nemotron 3 Super é o modelo de texto da NVIDIA para aplicações complexas com agentes, com 12B parâmetros ativos de um total de 120B. A sua conceção híbrida Mamba–Transformer de mistura de especialistas suporta raciocínio, ferramentas de função e controlos de saída estruturada.

Entradas aceites

Texto

Resultados

Texto

### Disponível no Ailoot · entradas e métodos

**Ailoot · Anthropic Messages** `POST /v1/messages`

Entrada

`text`

Saída

`text`

Contexto

262 144 tokens

Saída máxima

32 768 tokens

Formato de saída

json ou SSE

| Campo | Tipo | Requisito | Valores e limites | Predefinição |
| --- | --- | --- | --- | --- |
| Campo`model` | Tipo`string` | RequisitoObrigatório | Valores e limites nemotron-3-super-latest | Predefinição— |
| Campo`messages` | Tipo`message[]` | RequisitoObrigatório | Valores e limites Número mínimo de elementos: 1 | Predefinição— |
| Campo`messages[].role` | Tipo`string` | RequisitoObrigatório | Valores e limites user, assistant | Predefinição— |
| Campo`messages[].content` | Tipo`string\|content_block[]` | RequisitoObrigatório | Valores e limites | Predefinição— |
| Campo`system` | Tipo`string\|content_block[]` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`max_tokens` | Tipo`integer` | RequisitoObrigatório | Valores e limites Mínimo: 1 O limite aplica-se a: Limite exato do modelo ou da ficha selecionados | Predefinição— |
| Campo`stream` | Tipo`boolean` | RequisitoOpcional | Valores e limites | Predefiniçãofalse |
| Campo`temperature` | Tipo`number` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`top_p` | Tipo`number` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`stop_sequences` | Tipo`string[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tools` | Tipo`tool[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tools[].name` | Tipo`string` | RequisitoOpcional | Valores e limites Aplica-se quando: Ferramenta fornecida | Predefinição— |
| Campo`tools[].description` | Tipo`string` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`tools[].input_schema` | Tipo`JSON_schema` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`tool_choice` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`thinking.type` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`thinking.budget_tokens` | Tipo`integer` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`output_config.effort` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`metadata` | Tipo`object` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`cache_control` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |

Combinações de materiais de entrada

**Texto** · Texto UTF8

`messages[].content ou bloco type=text`

Parâmetros e ciclo de vida do método

| Parâmetro | Contrato |
| --- | --- |
| Parâmetro`material_types` | Contratotext |
| Parâmetro`required` | Contratomodel, messages, max\_tokens |
| Parâmetro`optional_controls` | Contratonull |
| Parâmetro`content_type` | Contratoapplication/json |
| Parâmetro`text_file_material` | ContratoConteúdo UTF-8 real inserido como texto; ID de ficheiros/URLs precisam de suporte separado e exato |

Ciclo de vida: `exact retained published method`

As estruturas dos métodos e os ID são exatos; a capacidade do fornecedor é distinta da admissão dos pedidos.

### Tarifários

#### Tarifas dos métodos Ailoot

Entrada

0,00008 US$ */ 1K*

Saída

0,00045 US$ */ 1K*

Leitura da cache

0,00008 US$ */ 1K*

Escrita na cache

0,00008 US$ */ 1K*

Escrita na cache, 5 min

0,00008 US$ */ 1K tokens*

O Ailoot reserva um montante estimado antes de um pedido. Após o resultado, liquida o custo final com base na utilização medida. No streaming, a liquidação usa o registo final de utilização. [Como funcionam a reserva e a liquidação →](https://ailoot.ai/docs/pt-pt/billing/reserve/)

#### Detalhes da tarifa de referência

As tabelas de referência do modelo não alteram a seleção do método, as cotações ou os custos. Os custos ativos usam as tarifas do método Ailoot selecionado.

Tabelas de referência do modelo

#### Preços por configuração

Associe cada custo às condições apresentadas. Use uma única tarifa para cada conjunto de configurações alternativas.

| Configuração | Tabela de tarifas | Tokens de contexto, mais de | Tokens de contexto, até ao limite inclusive | Custo |
| --- | --- | --- | --- | --- |
| ConfiguraçãoOpenAI Chat · Tarifas de base por token | Tabela de tarifasTarifa base | Tokens de contexto, mais de— | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.00017** / 1K tokens Saída · Tokens de saída **$0.0008** / 1K tokens Entrada · Leitura da cache **—** / 1K tokens Entrada · Escrita na cache **—** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoOpenAI Chat · Escalão 1 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de0 | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.00017** / 1K tokens Saída · Tokens de saída **$0.0008** / 1K tokens Entrada · Leitura da cache **—** / 1K tokens Entrada · Escrita na cache **—** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoAnthropic Messages · Tarifas de base por token | Tabela de tarifasTarifa base | Tokens de contexto, mais de— | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.00017** / 1K tokens Saída · Tokens de saída **$0.0008** / 1K tokens Entrada · Leitura da cache **—** / 1K tokens Entrada · Escrita na cache **—** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoAnthropic Messages · Escalão 1 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de0 | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.00017** / 1K tokens Saída · Tokens de saída **$0.0008** / 1K tokens Entrada · Leitura da cache **—** / 1K tokens Entrada · Escrita na cache **—** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |

### Exemplos de pedidos

#### Ailoot · Anthropic Messages

Exemplo de textoPython SDKNode.js SDKStreaming em Python

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "nemotron-3-super-latest", "max_tokens": 1024, "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

```python
import anthropic
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = anthropic.Anthropic(base_url="https://api.ailoot.ai", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
msg = client.messages.create(
    model="nemotron-3-super-latest",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        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
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(msg.to_dict(mode="json"))
```

```js
import Anthropic from "@anthropic-ai/sdk";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new Anthropic({ baseURL: "https://api.ailoot.ai", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const msg = await client.messages.create({
  model: "nemotron-3-super-latest",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    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;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(msg);
```

```python
import anthropic,os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=anthropic.Anthropic(base_url="https://api.ailoot.ai",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        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
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.messages.stream(model='nemotron-3-super-latest',max_tokens=1024,messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_message()
    save_result(final.to_dict(mode="json"),"stream-result")
```

### Receber e guardar os resultados

#### Ailoot · Anthropic Messages

json ou SSE

##### Guardar todos os resultados concluídos

Guarde cada resposta, ficheiro e parte de conteúdo devolvidos na íntegra.

Conserve todos os blocos de conteúdo, as assinaturas de raciocínio e os ID reais de utilização de ferramentas. Junte todos os deltas de blocos SSE; o primeiro bloco de texto não é a saída completa.

##### Se for necessário verificar a resposta original

Conserve os ID e cabeçalhos de pedido/resposta. Não é fornecido um URL genérico para obter uma tarefa textual.

Campos da resposta

| Campo | Tipo |
| --- | --- |
| Campo`id` | Tipostring |
| Campo`model` | Tipostring |
| Campo`content[]` | Tipotext\|thinking\|tool\_use\|other content block |
| Campo`stop_reason` | Tipostring\|null |
| Campo`usage` | Tipoobject |

Erros e passos seguintes

| Resposta | Condição | Passo seguinte |
| --- | --- | --- |
| Resposta400 · `invalid_request_error` | CondiçãoCampos obrigatórios, representação do material ou valor do parâmetro inválidos | Passo seguinteCorrija os campos indicados antes de um novo pedido de criação. |

### Aliases

#### Aliases do modelo

<strong>Ailoot</strong> [`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=messages), [`nemotron-3-super`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super&fmt=messages), [`nemotron-3-super-latest`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super-latest&fmt=messages)
**Ailoot Ultra** [`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Ultra&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=messages)

#### Aliases dos caminhos dos métodos

Use os caminhos dos métodos indicados acima.

#### IDs de chamada relacionados

[`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=messages), [`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Ultra&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=messages), [`nemotron-3-super`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super&fmt=messages), [`nemotron-3-super-latest`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super-latest&fmt=messages)

**Ailoot · OpenAI Chat** `POST /v1/chat/completions` `nemotron-3-super-latest`

[`nemotron-3-super-latest`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super-latest&fmt=chat)

NVIDIA /`nemotron-3-super-latest`

ID do modelo

- `nvidia/nemotron-3-super-120b-a12b`
- `nemotron-3-super`
- `nemotron-3-super-latest`

### Introdução

Nemotron 3 Super é o modelo de texto da NVIDIA para aplicações complexas com agentes, com 12B parâmetros ativos de um total de 120B. A sua conceção híbrida Mamba–Transformer de mistura de especialistas suporta raciocínio, ferramentas de função e controlos de saída estruturada.

Entradas aceites

Texto

Resultados

Texto

### Disponível no Ailoot · entradas e métodos

**Ailoot · OpenAI Chat** `POST /v1/chat/completions`

Entrada

`text`

Saída

`text`

Contexto

4096 tokens

Saída máxima

1024 tokens

Formato de saída

json ou SSE

| Campo | Tipo | Requisito | Valores e limites | Predefinição |
| --- | --- | --- | --- | --- |
| Campo`model` | Tipo`string` | RequisitoObrigatório | Valores e limites nemotron-3-super-latest | Predefinição— |
| Campo`messages` | Tipo`message[]` | RequisitoObrigatório | Valores e limites Número mínimo de elementos: 1 | Predefinição— |
| Campo`messages[].role` | Tipo`string` | RequisitoObrigatório | Valores e limites Exemplos: system, user, assistant, tool, function Condições: Estes papéis são representados explicitamente pelos tipos de compatibilidade do código-fonte; o conjunto exato de papéis continua específico do modelo. Depende do modelo | Predefinição— |
| Campo`messages[].content` | Tipo`string\|content_part[]\|null` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`messages[].tool_calls` | Tipo`tool_call[]` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`messages[].tool_call_id` | Tipo`string` | RequisitoOpcional | Valores e limites Aplica-se quando: role=tool; use o ID realmente devolvido | Predefinição— |
| Campo`messages[].name` | Tipo`string` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`messages[].reasoning_content` | Tipo`string` | RequisitoOpcional | Valores e limites Aplica-se quando: Reintroduza o raciocínio realmente devolvido quando este modelo o utiliza | Predefinição— |
| Campo`messages[].reasoning_details` | Tipo`object\|array` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`max_tokens` | Tipo`integer` | RequisitoOpcional | Valores e limites Mínimo: 1 Depende do modelo | Predefinição— |
| Campo`max_completion_tokens` | Tipo`integer` | RequisitoOpcional | Valores e limites Mínimo: 1 Depende do modelo | Predefinição— |
| Campo`stream` | Tipo`boolean` | RequisitoOpcional | Valores e limites | Predefiniçãofalse |
| Campo`stream_options.include_usage` | Tipo`boolean` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`temperature` | Tipo`number` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`top_p` | Tipo`number` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`stop` | Tipo`string\|string[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tools` | Tipo`function_tool[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tools[].type` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`tools[].function.name` | Tipo`string` | RequisitoObrigatório | Valores e limites Aplica-se quando: Função fornecida como ferramenta | Predefinição— |
| Campo`tools[].function.description` | Tipo`string` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`tools[].function.parameters` | Tipo`JSON_schema` | RequisitoOpcional | Valores e limites | Predefinição— |
| Campo`tool_choice` | Tipo`string\|object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`parallel_tool_calls` | Tipo`boolean` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`response_format` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`reasoning_effort` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`reasoning` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`service_tier` | Tipo`string` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`instructions` | Tipo`string` | RequisitoOpcional | Valores e limites Campo de compatibilidade | Predefinição— |
| Campo`functions` | Tipo`function[]` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`function_call` | Tipo`string\|object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |
| Campo`prompt_cache_options` | Tipo`object` | RequisitoOpcional | Valores e limites Depende do modelo | Predefinição— |

Combinações de materiais de entrada

**Texto** · Texto UTF8

`messages[].content`

Parâmetros e ciclo de vida do método

| Parâmetro | Contrato |
| --- | --- |
| Parâmetro`material_types` | Contratotext |
| Parâmetro`required` | Contratomodel, messages |
| Parâmetro`optional_controls` | Contratonull |
| Parâmetro`content_type` | Contratoapplication/json |
| Parâmetro`text_file_material` | ContratoConteúdo UTF-8 real inserido como texto; ID de ficheiros/URLs precisam de suporte separado e exato |

Ciclo de vida: `exact retained published method`

As estruturas dos métodos e os ID são exatos; a capacidade do fornecedor é distinta da admissão dos pedidos.

### Tarifários

#### Tarifas dos métodos Ailoot

Entrada

0,00008 US$ */ 1K*

Saída

0,00045 US$ */ 1K*

Leitura da cache

0,00008 US$ */ 1K*

Escrita na cache

0,00008 US$ */ 1K*

Escrita na cache, 5 min

0,00008 US$ */ 1K tokens*

O Ailoot reserva um montante estimado antes de um pedido. Após o resultado, liquida o custo final com base na utilização medida. No streaming, a liquidação usa o registo final de utilização. [Como funcionam a reserva e a liquidação →](https://ailoot.ai/docs/pt-pt/billing/reserve/)

#### Detalhes da tarifa de referência

As tabelas de referência do modelo não alteram a seleção do método, as cotações ou os custos. Os custos ativos usam as tarifas do método Ailoot selecionado.

Tabelas de referência do modelo

#### Preços por configuração

Associe cada custo às condições apresentadas. Use uma única tarifa para cada conjunto de configurações alternativas.

| Configuração | Tabela de tarifas | Tokens de contexto, mais de | Tokens de contexto, até ao limite inclusive | Custo |
| --- | --- | --- | --- | --- |
| ConfiguraçãoOpenAI Chat · Tarifas de base por token | Tabela de tarifasTarifa base | Tokens de contexto, mais de— | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.00017** / 1K tokens Saída · Tokens de saída **$0.0008** / 1K tokens Entrada · Leitura da cache **—** / 1K tokens Entrada · Escrita na cache **—** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoOpenAI Chat · Escalão 1 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de0 | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.00017** / 1K tokens Saída · Tokens de saída **$0.0008** / 1K tokens Entrada · Leitura da cache **—** / 1K tokens Entrada · Escrita na cache **—** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoAnthropic Messages · Tarifas de base por token | Tabela de tarifasTarifa base | Tokens de contexto, mais de— | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.00017** / 1K tokens Saída · Tokens de saída **$0.0008** / 1K tokens Entrada · Leitura da cache **—** / 1K tokens Entrada · Escrita na cache **—** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |
| ConfiguraçãoAnthropic Messages · Escalão 1 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de0 | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada **$0.00017** / 1K tokens Saída · Tokens de saída **$0.0008** / 1K tokens Entrada · Leitura da cache **—** / 1K tokens Entrada · Escrita na cache **—** / 1K tokens Entrada · Escrita na cache, 1 hora **—** / 1K tokens |

### Exemplos de pedidos

#### Ailoot · OpenAI Chat

Exemplo de textoPython SDKNode.js SDKStreaming em Python

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 source-material file}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "nemotron-3-super-latest", "messages": []}')
f=Path(os.environ["AILOOT_TEXT_FILE"])
if not f.is_file():raise SystemExit("Choose your actual UTF-8 source material")
text=f.read_text(encoding="utf-8")
if not text.strip():raise SystemExit("Source material must contain text")
p["messages"]=[{"role":"user","content":"Summarize this material and quote supporting source passages.\n\n"+text}]
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("result.json").read_text()),ensure_ascii=False,indent=2))
PY_RESULT
```

```python
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client = OpenAI(base_url="https://api.ailoot.ai/v1", api_key=os.environ["AILOOT_API_KEY"], max_retries=0)
resp = client.chat.completions.create(
    model="nemotron-3-super-latest",
    messages=[{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}],
)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        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
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(resp.to_dict(mode="json"))
```

```js
import OpenAI from "openai";

if (!process.env.AILOOT_API_KEY?.trim()) throw new Error("Set AILOOT_API_KEY before making a request");
const client = new OpenAI({ baseURL: "https://api.ailoot.ai/v1", apiKey: process.env.AILOOT_API_KEY, maxRetries: 0 });
const resp = await client.chat.completions.create({
  model: "nemotron-3-super-latest",
  messages: [{ role: "user", content: "Explain the difference between an observation and a hypothesis in three sentences." }],
});
import { writeFileSync } from "node:fs";

function saveResult(data, stem = "result") {
  writeFileSync(stem + ".json", JSON.stringify(data, null, 2));
  console.log(JSON.stringify(data, null, 2));
  const saveBlob = (encoded, suffix, label) => {
    const raw = Buffer.from(encoded, "base64");
    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;
    const file = `${stem}-${label}.${ext}`;
    writeFileSync(file, raw); console.log("Saved", file);
  };
  for (const [i, block] of (data.content || []).entries()) console.log("Content", i, JSON.stringify(block));
  for (const choice of data.choices || []) console.log("Choice", choice.index, JSON.stringify(choice.message || choice.delta || {}));
  for (const [i, item] of (data.output || []).entries()) {
    console.log("Output", i, JSON.stringify(item));
    if (item.type === "image_generation_call" && item.result) saveBlob(item.result, item.output_format || "bin", `output-${i}`);
  }
  for (const [ci, candidate] of (data.candidates || []).entries()) {
    for (const [pi, part] of (candidate.content?.parts || []).entries()) {
      console.log("Candidate/part", ci, pi, JSON.stringify(part));
      const blob = part.inlineData || part.inline_data;
      if (blob?.data) {
        const mime = blob.mimeType || blob.mime_type;
        const suffix = ({"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"})[mime] || "bin";
        saveBlob(blob.data, suffix, `candidate-${ci}-part-${pi}`);
      }
    }
  }
}

saveResult(resp);
```

```python
from openai import OpenAI
import os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        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
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.chat.completions.stream(model='nemotron-3-super-latest',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_completion()
    save_result(final.to_dict(mode="json"),"stream-result")
```

### Receber e guardar os resultados

#### Ailoot · OpenAI Chat

json ou SSE

##### Guardar todos os resultados concluídos

Guarde cada resposta, ficheiro e parte de conteúdo devolvidos na íntegra.

Conserve cada opção com o conteúdo, as chamadas de ferramentas e o raciocínio. Em SSE, junte os deltas por índice de opção e ferramenta e mantenha o motivo final de conclusão e os dados de utilização.

##### Se for necessário verificar a resposta original

Conserve os ID e cabeçalhos de pedido/resposta. Não é fornecido um URL genérico para obter uma tarefa textual.

Campos da resposta

| Campo | Tipo |
| --- | --- |
| Campo`choices[].index` | Tipointeger |
| Campo`choices[].message.content` | Tipostring\|null |
| Campo`choices[].message.tool_calls` | Tipotool\_call\[\] |
| Campo`choices[].message.reasoning_content` | Tipostring |
| Campo`choices[].message.reasoning_details` | Tipoobject\|array |
| Campo`choices[].finish_reason` | Tipostring\|null |
| Campo`usage` | Tipoobject |

Erros e passos seguintes

| Resposta | Condição | Passo seguinte |
| --- | --- | --- |
| Resposta400 · `invalid_request_error` | CondiçãoCampos obrigatórios, representação do material ou valor do parâmetro inválidos | Passo seguinteCorrija os campos indicados antes de um novo pedido de criação. |

### Aliases

#### Aliases do modelo

<strong>Ailoot</strong> [`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=chat), [`nemotron-3-super`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super&fmt=chat), [`nemotron-3-super-latest`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super-latest&fmt=chat)
**Ailoot Ultra** [`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Ultra&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=chat)

#### Aliases dos caminhos dos métodos

Use os caminhos dos métodos indicados acima.

#### IDs de chamada relacionados

[`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=chat), [`nvidia/nemotron-3-super-120b-a12b`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Ultra&caller=nvidia%2Fnemotron-3-super-120b-a12b&fmt=chat), [`nemotron-3-super`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super&fmt=chat), [`nemotron-3-super-latest`](https://ailoot.ai/models/pt-pt/#m=nvidia%2Fnemotron-3-super-120b-a12b&route=Core&caller=nemotron-3-super-latest&fmt=chat)

FAQ · nvidia/nemotron-3-super-120b-a12b

Que entradas e resultados estão disponíveis?

`POST /v1/messages` · `nvidia/nemotron-3-super-120b-a12b`: `text` → `text` `POST /v1/chat/completions` · `nvidia/nemotron-3-super-120b-a12b`: `text` → `text` `POST /v1/chat/completions` · `nvidia/nemotron-3-super-120b-a12b`: `text` → `text` `POST /v1/messages` · `nvidia/nemotron-3-super-120b-a12b`: `text` → `json`, `sse` `POST /v1/messages` · `nemotron-3-super`: `text` → `text` `POST /v1/chat/completions` · `nemotron-3-super`: `text` → `text` `POST /v1/messages` · `nemotron-3-super-latest`: `text` → `text` `POST /v1/chat/completions` · `nemotron-3-super-latest`: `text` → `text`

Que campos utiliza o pedido?

`POST /v1/messages` · `nvidia/nemotron-3-super-120b-a12b`: `model`, `messages`, `system`, `max_tokens`, `stream`, `metadata` `POST /v1/chat/completions` · `nvidia/nemotron-3-super-120b-a12b`: `model`, `messages`, `stream` `POST /v1/chat/completions` · `nvidia/nemotron-3-super-120b-a12b`: `model`, `messages`, `stream`, `modalities`, `provider` `POST /v1/messages` · `nvidia/nemotron-3-super-120b-a12b`: `model`, `messages`, `max_tokens`, `stream` `POST /v1/messages` · `nemotron-3-super`: `model`, `messages`, `system`, `max_tokens`, `stream`, `metadata` `POST /v1/chat/completions` · `nemotron-3-super`: `model`, `messages`, `stream` `POST /v1/messages` · `nemotron-3-super-latest`: `model`, `messages`, `system`, `max_tokens`, `stream`, `metadata` `POST /v1/chat/completions` · `nemotron-3-super-latest`: `model`, `messages`, `stream`

Que limites se aplicam?

`POST /v1/messages` · `nvidia/nemotron-3-super-120b-a12b`: `ctx`: `262144`; `max_out`: `32768`; `messages.min_items`: `1`; `max_tokens.minimum`: `1` `POST /v1/chat/completions` · `nvidia/nemotron-3-super-120b-a12b`: `ctx`: `4096`; `max_out`: `1024`; `messages.min_items`: `1` `POST /v1/chat/completions` · `nvidia/nemotron-3-super-120b-a12b`: `messages.min_items`: `1` `POST /v1/messages` · `nemotron-3-super`: `ctx`: `262144`; `max_out`: `32768`; `messages.min_items`: `1`; `max_tokens.minimum`: `1` `POST /v1/chat/completions` · `nemotron-3-super`: `ctx`: `4096`; `max_out`: `1024`; `messages.min_items`: `1` `POST /v1/messages` · `nemotron-3-super-latest`: `ctx`: `262144`; `max_out`: `32768`; `messages.min_items`: `1`; `max_tokens.minimum`: `1` `POST /v1/chat/completions` · `nemotron-3-super-latest`: `ctx`: `4096`; `max_out`: `1024`; `messages.min_items`: `1`

Ligue o Ailoot ao Claude Code, OpenCode, Hermes ou à sua aplicação.

## A empresa e a sua carteira de projetos

A empresa e a sua carteira de projetos: milhões de clientes; vendas mensais na ordem dos milhares de milhões.

## Compre tokens com desconto.

Desconto por subscrição para trabalho regular. Códigos promocionais — até 50% na compra de tokens.

Subscrição

Escolha um plano com desconto para os pedidos regulares.

Código promocional até 50%

Introduza o código na compra. O preço é recalculado conforme a campanha em vigor.

Custos no histórico

O modelo, os tokens e o montante são guardados para cada pedido.

[Escolher subscrição](https://ailoot.ai/docs/pt-pt/billing/subscriptions/) · [Ver preços dos modelos](https://ailoot.ai/models/pt-pt/)

## Ligue a API ao produto que vende.

SaaS, aplicações e bots — ao abrigo da oferta e do contrato de licença Ailoot. Para revenda, peça uma licença de revendedor.

Aplicação comercial

Integre geração de texto, imagens, vídeo e som nas funcionalidades pagas do seu serviço.

Licença de revendedor

Envie uma descrição do projeto e do modelo de acesso. Peça condições escritas de utilização e revenda.

Documentos no site

A oferta, o contrato de licença e a política de tratamento de dados estão disponíveis antes da ligação.

[Pedir licença de revendedor](mailto:support@ailoot.ai) · [Oferta e contrato de licença](https://ailoot.ai/legal/offer?lang=pt-pt)

## Ailoot · A empresa e a sua carteira de projetos





A Ailoot assenta numa experiência operacional consolidada, numa ampla base de clientes, num serviço estável e no acompanhamento contínuo dos KPI.





A empresa e a sua carteira de projetos: milhões de clientes; vendas mensais na ordem dos milhares de milhões.





A Ailoot aplica essa experiência operacional ao acesso por API a funcionalidades de IA nos produtos dos clientes, agentes, aplicações e automatizações.
