Source: https://ailoot.ai/models/pt-pt/qwen-qwen3-8-max-0902/
Canonical: https://ailoot.ai/models/pt-pt/qwen-qwen3-8-max-0902/
Language: pt-pt

# Qwen: Qwen3.8 Max (0902)

[Markdown](https://ailoot.ai/models/pt-pt/qwen-qwen3-8-max-0902/index.md) · [JSON](https://ailoot.ai/models/pt-pt/qwen-qwen3-8-max-0902/facts.json)

## [Qwen: Qwen3.8 Max (0902)](https://ailoot.ai/models/pt-pt/qwen-qwen3-8-max-0902/)

Qwen3.8-Max-0902 é o instantâneo de 2 de setembro do Qwen3.8 Max para programação à escala de engenharia, desenvolvimento prolongado e análise visual. O fabricante destaca maior colaboração com várias ferramentas, raciocínio sobre gráficos e análise de documentos, mantendo um contexto de um milhão de tokens.

- [**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `qwen/qwen3.8-max-0902`](https://ailoot.ai/models/pt-pt/qwen-qwen3-8-max-0902/#method-0)
- [**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `qwen/qwen3.8-max-0902`](https://ailoot.ai/models/pt-pt/qwen-qwen3-8-max-0902/#method-1)

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.

O instantâneo fixo 0902

Qwen3.8-Max-0902 é o instantâneo de 2 de setembro de 2026 do Qwen3.8-Max. O aviso de atualização do fabricante identifica-o como uma atualização específica de Max, com capacidades de programação mais aprofundadas, maior colaboração de agentes e compreensão visual aperfeiçoada. A versão também documenta o nome qwen3.8-max-2026-09-02 para este instantâneo. Preserve a identidade datada pedida quando o trabalho exigir uma edição fixa; um nome Max que evolui não permanece, por si só, um registo permanente dessa versão.

Profundidade de programação e desenvolvimento prolongado

O fabricante descreve suporte para projetos mais complexos à escala de engenharia e tarefas de desenvolvimento que continuam ao longo de muitas etapas. Prepare uma pergunta sobre o repositório com os módulos relevantes, requisitos, restrições e resultado esperado. Peça ao modelo que explique os componentes afetados, proponha uma sequência de implementação e devolva o patch ou artefacto de código exigido. Um relatório útil de conclusão deve distinguir as alterações propostas das verificações realmente efetuadas pelo fluxo ligado.

Numa tarefa maior, defina provas intermédias: o comportamento a alterar, as entradas que expõem o problema atual e o resultado esperado após cada etapa. Devolva os erros observados ou as conclusões da revisão ao turno seguinte.

Colaboração de agentes e ferramentas

O aviso destaca melhor coordenação com várias ferramentas e entrega de tarefas mais estável. A documentação da família Max da Qwen descreve planeamento autónomo e ciclos fechados de retorno de resultados. Uma aplicação pode disponibilizar ferramentas de recuperação, inspeção ou execução permitida e devolver os resultados ao modelo. Este pode então rever um plano em resposta ao que aconteceu, em vez de tratar a proposta inicial como trabalho concluído.

A referência Max gerida indica chamadas de funções, saídas estruturadas e ferramentas de recuperação ou do tipo interpretador de código, com ferramentas integradas diferentes associadas a interfaces diferentes. O aviso do instantâneo diz que mantém o ecossistema de ferramentas; não estabelece a disponibilidade de cada ferramenta através de todos os métodos das aplicações. Indique explicitamente as ferramentas permitidas e o artefacto final. Um pedido de resultado JSON ou de ação executada não deve ser confundido com um esquema imposto ou um resultado de execução real.

Compreensão visual aperfeiçoada

Esta edição melhora o raciocínio sobre gráficos, a análise de documentos e a perceção multimodal. As entradas documentadas da família Max são texto, imagens e vídeo, com saída textual. Num gráfico, conserve rótulos, unidades e a série relevante e pergunte que valores sustentam a conclusão. Num documento, mantenha os identificadores de página e secção e peça um relatório ligado a esses identificadores. Num diagrama técnico, forneça definições com a imagem para que a explicação distinga a estrutura visível de pressupostos não declarados.

Uma resposta fundamentada visualmente pode relacionar uma passagem documental, uma figura e uma instrução do utilizador. A saída continua a ser análise textual ou uma proposta de artefacto de código/documento; compreensão visual não implica geração de imagem ou vídeo. Confira rótulos pequenos, valores de tabelas e relações inferidas com a fonte fornecida.

Contexto e raciocínio

O aviso exato diz que o instantâneo mantém contexto de um milhão de tokens e modo de raciocínio. A família Max gerida suporta raciocínio e respostas diretas, enquanto os controlos de profundidade e preservação são descritos na documentação da família. O contrato de controlos exposto pelo instantâneo exato deve seguir a sua própria interface, em vez de ser copiado do checkpoint aberto só de texto Qwen3.8-2.4T-A95B.

A referência Max gerida do fabricante utiliza valores arredondados: entrada máxima de 991K no modo direto ou 983K no modo de raciocínio, saída máxima de 131K e raciocínio máximo de 262K. São valores de referência da família, não limites rígidos específicos do instantâneo declarados independentemente. Entrada, histórico, representações de material visual, raciocínio e resposta final continuam a ter de caber nos limites configurados aplicáveis.

Resultado prático e limites

Peça um entregável que possa ser revisto: um patch com os ficheiros afetados, uma explicação de gráfico com valores de suporte ou uma comparação de documentos com secções citadas. Um contexto longo permite manter mais provas juntas, mas não garante recordação perfeita nem correção. O aviso exato da atualização apresenta alterações significativas e funcionalidades mantidas sem publicar limites rígidos separados de multimédia nem uma tabela independente de saída para 0902. Preserve essa fronteira em vez de tratar o nome do instantâneo como uma garantia de desempenho ou implementação.

Tarefa prática

### Tarefa prática

Exemplo técnico em inglês

```
Align a producer and a reader

In producer.py, records are emitted as {'status': 'ready', 'count': n}. In reader.py, code reads record['total']. The intended public record uses count; changing that contract is forbidden. Explain the failure, propose the smallest reader correction and provide a regression example for n=4. Return proposed code separately from the explanation.
```

#### Resultado esperado

```
A source-linked defect explanation, a focused reader change and a regression example.
```

#### Verificar o resultado

```
The proposal must preserve the producer record contract and read count rather than introduce total.
```

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `qwen/qwen3.8-max-0902`

[`qwen/qwen3.8-max-0902`](https://ailoot.ai/models/pt-pt/#m=qwen%2Fqwen3.8-max-0902&route=Ultra&caller=qwen%2Fqwen3.8-max-0902&fmt=chat)

Alibaba /`qwen/qwen3.8-max-0902`

### Introdução

Qwen3.8-Max-0902 é o instantâneo de 2 de setembro do Qwen3.8 Max para programação à escala de engenharia, desenvolvimento prolongado e análise visual. O fabricante destaca maior colaboração com várias ferramentas, raciocínio sobre gráficos e análise de documentos, mantendo um contexto de um milhão de tokens.

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 qwen/qwen3.8-max-0902 | 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 · elevado

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

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

Esforço de raciocínio · mínimo

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

Esforço de raciocínio · xhigh

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

#### 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.004** / 1K tokens Saída · Tokens de saída **$0.012** / 1K tokens Entrada · Leitura da cache **$0.0005** / 1K tokens Entrada · Escrita na cache **$0.005** / 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.004** / 1K tokens Saída · Tokens de saída **$0.012** / 1K tokens Entrada · Leitura da cache **$0.0005** / 1K tokens Entrada · Escrita na cache **$0.005** / 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": "qwen/qwen3.8-max-0902", "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='qwen/qwen3.8-max-0902',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='qwen/qwen3.8-max-0902',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

**Ailoot Ultra** [`qwen/qwen3.8-max-0902`](https://ailoot.ai/models/pt-pt/#m=qwen%2Fqwen3.8-max-0902&route=Ultra&caller=qwen%2Fqwen3.8-max-0902&fmt=chat)

#### Aliases dos caminhos dos métodos

Use os caminhos dos métodos indicados acima.

#### IDs de chamada relacionados

[`qwen/qwen3.8-max-0902`](https://ailoot.ai/models/pt-pt/#m=qwen%2Fqwen3.8-max-0902&route=Ultra&caller=qwen%2Fqwen3.8-max-0902&fmt=chat)

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `qwen/qwen3.8-max-0902`

[`qwen/qwen3.8-max-0902`](https://ailoot.ai/models/pt-pt/#m=qwen%2Fqwen3.8-max-0902&route=Ultra&caller=qwen%2Fqwen3.8-max-0902&fmt=messages)

Alibaba /`qwen/qwen3.8-max-0902`

### Introdução

Qwen3.8-Max-0902 é o instantâneo de 2 de setembro do Qwen3.8 Max para programação à escala de engenharia, desenvolvimento prolongado e análise visual. O fabricante destaca maior colaboração com várias ferramentas, raciocínio sobre gráficos e análise de documentos, mantendo um contexto de um milhão de tokens.

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 qwen/qwen3.8-max-0902 | 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 · elevado

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

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

Esforço de raciocínio · mínimo

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

Esforço de raciocínio · xhigh

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

#### 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.004** / 1K tokens Saída · Tokens de saída **$0.012** / 1K tokens Entrada · Leitura da cache **$0.0005** / 1K tokens Entrada · Escrita na cache **$0.005** / 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.004** / 1K tokens Saída · Tokens de saída **$0.012** / 1K tokens Entrada · Leitura da cache **$0.0005** / 1K tokens Entrada · Escrita na cache **$0.005** / 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": "qwen/qwen3.8-max-0902",
  "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': 'qwen/qwen3.8-max-0902', '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': 'qwen/qwen3.8-max-0902', '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

**Ailoot Ultra** [`qwen/qwen3.8-max-0902`](https://ailoot.ai/models/pt-pt/#m=qwen%2Fqwen3.8-max-0902&route=Ultra&caller=qwen%2Fqwen3.8-max-0902&fmt=messages)

#### Aliases dos caminhos dos métodos

Use os caminhos dos métodos indicados acima.

#### IDs de chamada relacionados

[`qwen/qwen3.8-max-0902`](https://ailoot.ai/models/pt-pt/#m=qwen%2Fqwen3.8-max-0902&route=Ultra&caller=qwen%2Fqwen3.8-max-0902&fmt=messages)

FAQ · Qwen: Qwen3.8 Max (0902)

Que entradas e resultados estão disponíveis?

`POST /v1/chat/completions` · `qwen/qwen3.8-max-0902`: `text` → `text` `POST /v1/messages` · `qwen/qwen3.8-max-0902`: `text` → `json`, `sse`

Que campos utiliza o pedido?

`POST /v1/chat/completions` · `qwen/qwen3.8-max-0902`: `model`, `messages`, `stream`, `modalities`, `provider` `POST /v1/messages` · `qwen/qwen3.8-max-0902`: `model`, `messages`, `max_tokens`, `stream`

Que limites se aplicam?

`POST /v1/chat/completions` · `qwen/qwen3.8-max-0902`: `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.
