modelos

QvQ-Max

Markdown · JSON

QvQ-Max

QVQ-Max é o modelo de raciocínio visual da Qwen para texto, imagens e vídeo, que devolve texto com uma solução explicada. Utilize-o para diagramas matemáticos, análise visual, imagens relacionadas com programação e interpretação criativa; a sua especificação indica um contexto de 131 072 tokens e um limite de saída de 8 192 tokens.

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.

Visão geral: raciocínio assente na entrada visual

QVQ-Max é o modelo de raciocínio visual da Qwen. O fabricante descreve uma saída com cadeia de raciocínio e capacidades reforçadas em matemática, programação, análise visual, trabalho criativo e tarefas gerais. A página dedicada às suas capacidades indica entrada de texto, imagens e vídeo, com saída em texto. Escolha-o para uma pergunta em que o material visual faça parte do problema de raciocínio, como um diagrama, um gráfico ou uma sequência de acontecimentos observados.

A edição exata do modelo

O produtor descreve atualmente qvq-max como funcionalmente equivalente à versão qvq-max-2025-03-25. Essa afirmação identifica uma relação entre edições descrita pelo fabricante; não altera os IDs exatos conservados por uma aplicação. QVQ-Max não deve herdar a identidade dos pesos, o número de parâmetros ou os controlos de geração de QVQ-72B-Preview, QVQ-Plus ou de um modelo visual Qwen mais recente apenas por partilharem o tema do raciocínio. Um nome de fornecedor com o sufixo latest também não estabelece, por si só, uma versão fixa.

Preparar uma pergunta de raciocínio visual

Forneça a imagem relevante juntamente com a pergunta completa. Para um diagrama matemático, preserve as legendas, as dimensões e o enunciado associado e pergunte depois quais as relações que decorrem da figura visível e quais exigem um pressuposto adicional. Peça uma resposta final claramente delimitada, com os valores e as relações utilizados para a obter. Uma explicação útil deve ligar cada inferência importante a algo presente no material fornecido.

Para um gráfico, peça ao modelo que identifique os eixos, as unidades e as séries antes de interpretar uma tendência. Para um diagrama de um algoritmo ou de uma interface, indique o comportamento pretendido e pergunte como a estrutura visível se relaciona com esse comportamento. Para um briefing criativo, distinga a descrição do que está efetivamente presente das alterações ou interpretações propostas. Estas são aplicações elaboradas a partir das capacidades documentadas do fabricante em matemática, programação, análise e criação, e não demonstrações de que um determinado recurso foi processado com sucesso.

Vídeo e vários elementos de prova

O vídeo está explicitamente indicado como modalidade de entrada. Para um pedido de análise de acontecimentos, forneça o segmento relevante e peça uma explicação ordenada do que muda, de que cena sustenta a conclusão e do que permanece incerto. Se a entrada disponibilizar informação temporal, indique como o resultado deve fazer referência a essa informação. A página exata do modelo não estabelece uma duração universal de vídeo, um número de fotogramas ou uma precisão de marcas temporais, pelo que essas propriedades não devem ser adotadas de outra família Qwen.

Quando a pergunta utilizar várias imagens ou passagens, identifique-as e explique a relação que o modelo deve examinar. Peça um resultado organizado por essas identificações, para que quem o revê possa perceber quais os elementos de prova que sustentam cada ponto. Uma resposta de raciocínio deve continuar a ser distinguível da resposta final; uma explicação extensa só é útil quando as suas afirmações podem ser verificadas face à fonte.

Limites de contexto e de resposta

A especificação indica uma janela de contexto de 131 072 tokens, um comprimento máximo de entrada de 106 496 tokens e um comprimento máximo de saída de 8 192 tokens. Mantenha estes valores separados, em vez de deduzir da sua diferença uma quota de tokens de raciocínio não documentada. O texto, o material visual representado e o conteúdo gerado têm de respeitar os limites aplicáveis à sequência e à saída.

Para uma página ou um diagrama densos, torne os pormenores relevantes legíveis antes do envio e mantenha o enunciado completo necessário à inferência. Para uma fonte longa, selecione o material ligado à pergunta e reserve espaço de resposta suficiente para uma conclusão sustentada por elementos de prova. A especificação de tokens não concede uma quota ilimitada de entrada visual nem garante que todos os pormenores sejam recordados.

Ferramentas, formatação e limites substantivos

A matriz exata de capacidades assinala como não suportadas a chamada de funções, a pesquisa na Web integrada e as saídas estruturadas impostas. Por conseguinte, o raciocínio visual de QVQ-Max não deve ser apresentado como controlo automático do navegador, ferramenta de execução de código externo ou fonte de informação em tempo real. Um pedido pode solicitar uma tabela ou um resultado textual em formato semelhante a JSON, mas esse pedido não cria um contrato de imposição de esquema.

A página dedicada ao modelo não publica um comutador de raciocínio híbrido específico do modelo nem um número de parâmetros. Preserve a identidade de raciocínio visual documentada, em vez de importar controlos ou afirmações sobre a dimensão de outra versão. Verifique as legendas pequenas, os números extraídos, as relações inferidas e as sugestões de código face à fonte. A saída prática é uma conclusão visual explicada ou um documento preliminar, assente no material fornecido pelo utilizador.

Tarefa prática

Tarefa prática

Exemplo técnico em inglês

Reason from a written geometric diagram

Use this textual description of a diagram: rectangle ABCD has adjacent sides AB=6 cm and BC=8 cm; diagonal AC is drawn. Find AC and the area of triangle ABC. Give the relationships and calculations supporting each result. Explain which stated geometric property makes the calculation valid; do not assume any extra marked lengths.

Resultado esperado

A concise derivation, two clearly delimited results with units and the relevant rectangle property.

Verificar o resultado

Check the diagonal and triangle-area calculations use the stated right angle and correct units.
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions qvq-max

qvq-max

Alibaba /qvq-max

Introdução

QVQ-Max é o modelo de raciocínio visual da Qwen para texto, imagens e vídeo, que devolve texto com uma solução explicada. Utilize-o para diagramas matemáticos, análise visual, imagens relacionadas com programação e interpretação criativa; a sua especificação indica um contexto de 131 072 tokens e um limite de saída de 8 192 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
CampoTipoRequisitoValores e limitesPredefinição
CampomodelTipostringRequisitoObrigatórioValores e limites
qvq-max
Predefinição—
CampomessagesTipomessage[]RequisitoObrigatórioValores e limites
Número mínimo de elementos: 1
Predefinição—
Campomessages[].roleTipostringRequisitoObrigatórioValores 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—
Campomessages[].contentTipostring|content_part[]|nullRequisitoOpcionalValores e limitesPredefinição—
Campomessages[].tool_callsTipotool_call[]RequisitoOpcionalValores e limitesPredefinição—
Campomessages[].tool_call_idTipostringRequisitoOpcionalValores e limites
Aplica-se quando: role=tool; use o ID realmente devolvido
Predefinição—
Campomessages[].nameTipostringRequisitoOpcionalValores e limitesPredefinição—
Campomessages[].reasoning_contentTipostringRequisitoOpcionalValores e limites
Aplica-se quando: Reintroduza o raciocínio realmente devolvido quando este modelo o utiliza
Predefinição—
Campomessages[].reasoning_detailsTipoobject|arrayRequisitoOpcionalValores e limites
Depende do modelo
Predefinição—
Campomax_tokensTipointegerRequisitoOpcionalValores e limites
Mínimo: 1
Depende do modelo
Predefinição—
Campomax_completion_tokensTipointegerRequisitoOpcionalValores e limites
Mínimo: 1
Depende do modelo
Predefinição—
CampostreamTipobooleanRequisitoOpcionalValores e limitesPredefiniçãofalse
Campostream_options.include_usageTipobooleanRequisitoOpcionalValores e limites
Depende do modelo
Predefinição—
CampotemperatureTiponumberRequisitoOpcionalValores e limites
Depende do modelo
Predefinição—
Campotop_pTiponumberRequisitoOpcionalValores e limites
Depende do modelo
Predefinição—
CampostopTipostring|string[]RequisitoOpcionalValores e limites
Depende do modelo
Predefinição—
CampotoolsTipofunction_tool[]RequisitoOpcionalValores e limites
Depende do modelo
Predefinição—
Campotools[].typeTipostringRequisitoOpcionalValores e limites
function
Depende do modelo
Predefinição—
Campotools[].function.nameTipostringRequisitoObrigatórioValores e limites
Aplica-se quando: Função fornecida como ferramenta
Predefinição—
Campotools[].function.descriptionTipostringRequisitoOpcionalValores e limitesPredefinição—
Campotools[].function.parametersTipoJSON_schemaRequisitoOpcionalValores e limitesPredefinição—
Campotool_choiceTipostring|objectRequisitoOpcionalValores e limites
Depende do modelo
Predefinição—
Campoparallel_tool_callsTipobooleanRequisitoOpcionalValores e limites
Depende do modelo
Predefinição—
Camporesponse_formatTipoobjectRequisitoOpcionalValores e limites
Depende do modelo
Predefinição—
Camporeasoning_effortTipostringRequisitoOpcionalValores e limites
Depende do modelo
Predefinição—
CamporeasoningTipoobjectRequisitoOpcionalValores e limites
Depende do modelo
Predefinição—
Camposervice_tierTipostringRequisitoOpcionalValores e limites
Depende do modelo
Predefinição—
CampoinstructionsTipostringRequisitoOpcionalValores e limites
Campo de compatibilidade
Predefinição—
CampofunctionsTipofunction[]RequisitoOpcionalValores e limites
Depende do modelo
Predefinição—
Campofunction_callTipostring|objectRequisitoOpcionalValores e limites
Depende do modelo
Predefinição—
Campoprompt_cache_optionsTipoobjectRequisitoOpcionalValores e limites
Depende do modelo
Predefinição—
CampomodalitiesTipostring[]RequisitoOpcionalValores e limites
text
Predefinição—
CampoproviderTipoobjectRequisitoOpcionalValores e limites
Condições: provider.options é rejeitado nesta rota textual Ultra
Predefinição—
Campocache_control.ttlTipostringRequisitoOpcionalValores 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âmetroContrato
Parâmetrocontent_typeContratoapplication/json
ParâmetrorequiredContratomodel, messages
Parâmetromaterial_typesContratotext
ParâmetromessagesContratoLista de mensagens com estrutura role/content
Parâmetrofile_materialContratoDocumento UTF-8 real inserido como texto literal; nenhum ID de ficheiro inferido
Parâmetrooptional_controlsContratostream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice
Parâmetrocontrol_scopeContratoEspecífico do modelo; as ferramentas de funções do utilizador diferem das ferramentas alojadas
Parâmetrooutput_modalitiesContratotext
Parâmetrohosted_operationsContratofalse
Parâmetromultimodal_input_bindingContratonull

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
Não especificado Quando o modo rápido está selecionado
Modo flex
Não especificado Quando o modo flex está selecionado
Esforço máximo de raciocínio
Não especificado Quando o esforço máximo de raciocínio usa o ajuste predefinido (default)

Tarifas Ailoot

Preços por configuração

ConfiguraçãoTabela de tarifasCusto
ConfiguraçãoTarifas base dos tokensTabela de tarifasTarifa baseCusto
Entrada · Tokens de entrada $0.0023 / 1K tokens
Saída · Tokens de saída $0.00916 / 1K tokens
Entrada · Leitura da cache $0 / 1K tokens
Entrada · Escrita na cache $0 / 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 →

Exemplos de pedidos

Ailoot Ultra · OpenAI Chat

curlPython SDKStreaming em Python
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "qvq-max", "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
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='qvq-max',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"))
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='qvq-max',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
CampoTipo
Campochoices[].indexTipointeger
Campochoices[].message.contentTipostring|null
Campochoices[].message.tool_callsTipotool_call[]
Campochoices[].message.reasoning_contentTipostring
Campochoices[].message.reasoning_detailsTipoobject|array
Campochoices[].finish_reasonTipostring|null
CampousageTipoobject
Erros e passos seguintes
RespostaCondiçãoPasso seguinte
Resposta400 · invalid_request_errorCondiçãoCampos obrigatórios, representação do material ou valor do parâmetro inválidosPasso seguinteCorrija os campos indicados antes de um novo pedido de criação.

Aliases

Aliases do modelo

Ailoot Ultra qvq-max

Aliases dos caminhos dos métodos

Use os caminhos dos métodos indicados acima.

IDs de chamada relacionados

qvq-max

Ailoot Ultra · Anthropic Messages POST /v1/messages qvq-max

qvq-max

Alibaba /qvq-max

Introdução

QVQ-Max é o modelo de raciocínio visual da Qwen para texto, imagens e vídeo, que devolve texto com uma solução explicada. Utilize-o para diagramas matemáticos, análise visual, imagens relacionadas com programação e interpretação criativa; a sua especificação indica um contexto de 131 072 tokens e um limite de saída de 8 192 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
CampoTipoRequisitoValores e limitesPredefinição
CampomodelTipostringRequisitoObrigatórioValores e limites
qvq-max
Predefinição—
CampomessagesTipomessage[]RequisitoObrigatórioValores e limitesPredefinição—
Campomessages[].roleTipostringRequisitoObrigatórioValores e limites
user, assistant
Predefinição—
Campomessages[].contentTipostringRequisitoObrigatórioValores e limitesPredefinição—
Campomax_tokensTipointegerRequisitoObrigatórioValores e limitesPredefinição—
CampostreamTipobooleanRequisitoOpcionalValores e limitesPredefiniçã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âmetroContrato
Parâmetrocontent_typeContratoapplication/json
ParâmetrorequiredContratomodel, messages, max_tokens
Parâmetrooptional_controlsContratostream
Parâmetromaterial_typesContratotext
Parâmetrotext_file_materialContratoLeia 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
Não especificado Quando o modo rápido está selecionado
Modo flex
Não especificado Quando o modo flex está selecionado
Esforço máximo de raciocínio
Não especificado Quando o esforço máximo de raciocínio usa o ajuste predefinido (default)

Tarifas Ailoot

Preços por configuração

ConfiguraçãoTabela de tarifasCusto
ConfiguraçãoTarifas base dos tokensTabela de tarifasTarifa baseCusto
Entrada · Tokens de entrada $0.0023 / 1K tokens
Saída · Tokens de saída $0.00916 / 1K tokens
Entrada · Leitura da cache $0 / 1K tokens
Entrada · Escrita na cache $0 / 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 →

Exemplos de pedidos

Ailoot Ultra · Anthropic Messages

Corpo JSON mínimo completocurl · use o seu documento UTF-8Python · guarde o resultado completo
{
  "model": "qvq-max",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
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': 'qvq-max', '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
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': 'qvq-max', '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
CampoTipo
CampoidTipostring
CampomodelTipostring
Campocontent[]Tipotext|thinking|tool_use|other content block
Campostop_reasonTipostring|null
CampousageTipoobject
Erros e passos seguintes
RespostaCondiçãoPasso seguinte
Resposta400 · invalid_request_errorCondiçãoCampos obrigatórios, representação do material ou valor do parâmetro inválidosPasso seguinteCorrija os campos indicados antes de um novo pedido de criação.

Aliases

Aliases do modelo

Ailoot Ultra qvq-max

Aliases dos caminhos dos métodos

Use os caminhos dos métodos indicados acima.

IDs de chamada relacionados

qvq-max

FAQ · QvQ-Max
Que entradas e resultados estão disponíveis?

POST /v1/chat/completions · qvq-max: text → text

POST /v1/messages · qvq-max: text → json, sse

Que campos utiliza o pedido?

POST /v1/chat/completions · qvq-max: model, messages, stream, modalities, provider

POST /v1/messages · qvq-max: model, messages, max_tokens, stream

Que limites se aplicam?

POST /v1/chat/completions · qvq-max: messages.min_items: 1

Mais detalhes

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 · Ver preços dos modelos

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 · Oferta e contrato de licença