modelos

OpenAI: o3

Markdown · JSON

OpenAI: o3

OpenAI o3 é um modelo de raciocínio para matemática, ciência, programação, perguntas visuais e escrita técnica. O seu perfil publicado aceita texto, imagens e ficheiros para respostas de texto, com ferramentas, saídas estruturadas e uma janela de contexto de 200 000 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.

OpenAI o3 é um modelo de raciocínio que abrange tarefas matemáticas, científicas, de programação e visuais. O seu papel publicado também inclui escrita técnica e cumprimento de instruções. As entradas de texto, imagem e ficheiros sustentam saída de texto, com raciocínio, ferramentas baseadas em funções e controlos de saída estruturada no perfil do serviço de alojamento.

Uma pergunta técnica com elementos identificados

Forneça os pressupostos, as quantidades e as fontes que determinam o resultado. Para uma tarefa científica ou matemática, defina os símbolos e preserve as unidades. Para programação, forneça a implementação relevante, a falha observada e o comportamento esperado. Peça a resposta e os elementos ou passos necessários para a avaliar.

Uma pergunta visual pode identificar o objeto, o gráfico ou a região relevante da interface. Mantenha o identificador da imagem com qualquer observação dela derivada e preserve o material escrito de origem que lhe dá contexto. O resultado deve distinguir o que é visível ou afirmado de uma interpretação obtida a partir de várias fontes.

Raciocínio, ferramentas e estrutura do resultado

O perfil lista controlos de raciocínio e ferramentas baseadas em funções. Uma aplicação pode realizar uma operação proposta e fornecer o seu resultado real antes de a tarefa continuar. Guarde cálculos, passagens obtidas ou saídas de comandos com as entradas e os identificadores das fontes que permitem inspecioná-los.

Para saída estruturada, defina campos, tipos e tratamento da informação ausente. Valide a estrutura devolvida e os seus valores substantivos. Para uma explicação técnica, peça uma conclusão clara seguida dos passos ou elementos relevantes para a pergunta.

Contexto para uma tarefa substancial

O perfil publicado do serviço de alojamento lista uma janela de contexto de 200 000 tokens e até 100 000 tokens de conclusão. Reserve espaço para a resposta e organize material mais extenso em secções identificadas. Preserve decisões e observações estabelecidas, removendo repetição sem relação com a tarefa.

Um resultado útil de o3 liga a conclusão ou o resultado técnico aos seus pressupostos, fontes e validação. Preserve essas partes juntas ao levar o trabalho para uma análise ou um passo posterior da aplicação.

Tarefa prática

Tarefa prática

Exemplo técnico em inglês

Evaluate an independent-failure estimate

Two independent components each fail with probability 0.02 during a mission. The system fails if either component fails. Calculate the system failure probability, explain why adding the two probabilities alone is not exact and state what assumption would need review if the components share a power supply.

Resultado esperado

A probability expression, a numerical result and a note about the independence assumption.

Verificar o resultado

Check that simultaneous failures are not counted twice and that shared power is treated as a possible dependence issue.
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions o3

o3

OpenAI /o3
ID do modelo
  • o3
  • openai/o3

Introdução

OpenAI o3 é um modelo de raciocínio para matemática, ciência, programação, perguntas visuais e escrita técnica. O seu perfil publicado aceita texto, imagens e ficheiros para respostas de texto, com ferramentas, saídas estruturadas e uma janela de contexto de 200 000 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
o3
Predefinição—
CampomessagesTipomessage[]RequisitoObrigatórioValores e limites
Número mínimo de elementos: 1
Predefinição—
Campomessages[].roleTipostringRequisitoObrigatórioValores e limites
Depende do modelo
Predefinição—
Campomessages[].contentTipostringRequisitoOpcionalValores e limites
Aplica-se quando: Conversação textual
Predefinição—
CampostreamTipobooleanRequisitoOpcionalValores e limitesPredefiniçãofalse
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
Parâmetrocontrol_scopeContratoConversação textual; stream é um booleano e tem false como predefinição.
Parâmetrooutput_modalitiesContratotext
Parâmetrohosted_operationsContratofalse
Parâmetromultimodal_input_bindingContratonull

Aliases do método: /chat/completions

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)

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çãoTabela de tarifasTokens de contexto, mais deTokens de contexto, até ao limite inclusiveCusto
ConfiguraçãoTarifas base dos tokensTabela de tarifasTarifa baseTokens de contexto, mais de—Tokens de contexto, até ao limite inclusiveSem limite superiorCusto
Entrada · Tokens de entrada $0.004 / 1K tokens
Saída · Tokens de saída $0.016 / 1K tokens
Entrada · Leitura da cache $0.001 / 1K tokens
Entrada · Escrita na cache — / 1K tokens
Entrada · Escrita na cache, 1 hora — / 1K tokens
ConfiguraçãoEscalão 1 por comprimento do pedidoTabela de tarifas—Tokens de contexto, mais de0Tokens de contexto, até ao limite inclusiveSem limite superiorCusto
Entrada · Tokens de entrada $0.004 / 1K tokens
Saída · Tokens de saída $0.016 / 1K tokens
Entrada · Leitura da cache $0.001 / 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 →

Exemplos de pedidos

Ailoot Ultra · OpenAI Chat

curlPython SDK
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model":"o3","messages":[{"role":"user","content":"hello"}],"stream":false}')

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="o3", messages=[{"role":"user","content":"hello"}], stream=False)
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"))

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 o3, openai/o3

Aliases dos caminhos dos métodos

/chat/completions

IDs de chamada relacionados

openai/o3, o3

Ailoot Ultra · Anthropic Messages POST /v1/messages o3

o3

OpenAI /o3
ID do modelo
  • o3
  • openai/o3

Introdução

OpenAI o3 é um modelo de raciocínio para matemática, ciência, programação, perguntas visuais e escrita técnica. O seu perfil publicado aceita texto, imagens e ficheiros para respostas de texto, com ferramentas, saídas estruturadas e uma janela de contexto de 200 000 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
o3
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
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)

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çãoTabela de tarifasTokens de contexto, mais deTokens de contexto, até ao limite inclusiveCusto
ConfiguraçãoTarifas base dos tokensTabela de tarifasTarifa baseTokens de contexto, mais de—Tokens de contexto, até ao limite inclusiveSem limite superiorCusto
Entrada · Tokens de entrada $0.004 / 1K tokens
Saída · Tokens de saída $0.016 / 1K tokens
Entrada · Leitura da cache $0.001 / 1K tokens
Entrada · Escrita na cache — / 1K tokens
Entrada · Escrita na cache, 1 hora — / 1K tokens
ConfiguraçãoEscalão 1 por comprimento do pedidoTabela de tarifas—Tokens de contexto, mais de0Tokens de contexto, até ao limite inclusiveSem limite superiorCusto
Entrada · Tokens de entrada $0.004 / 1K tokens
Saída · Tokens de saída $0.016 / 1K tokens
Entrada · Leitura da cache $0.001 / 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 →

Exemplos de pedidos

Ailoot Ultra · Anthropic Messages

Corpo JSON mínimo completocurl · use o seu documento UTF-8Python · guarde o resultado completo
{
  "model": "o3",
  "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': 'o3', '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': 'o3', '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 o3, openai/o3

Aliases dos caminhos dos métodos

/chat/completions

IDs de chamada relacionados

openai/o3, o3

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions openai/o3

openai/o3

OpenAI /openai/o3
ID do modelo
  • o3
  • openai/o3

Introdução

OpenAI o3 é um modelo de raciocínio para matemática, ciência, programação, perguntas visuais e escrita técnica. O seu perfil publicado aceita texto, imagens e ficheiros para respostas de texto, com ferramentas, saídas estruturadas e uma janela de contexto de 200 000 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
openai/o3
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
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)

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çãoTabela de tarifasTokens de contexto, mais deTokens de contexto, até ao limite inclusiveCusto
ConfiguraçãoTarifas base dos tokensTabela de tarifasTarifa baseTokens de contexto, mais de—Tokens de contexto, até ao limite inclusiveSem limite superiorCusto
Entrada · Tokens de entrada $0.004 / 1K tokens
Saída · Tokens de saída $0.016 / 1K tokens
Entrada · Leitura da cache $0.001 / 1K tokens
Entrada · Escrita na cache — / 1K tokens
Entrada · Escrita na cache, 1 hora — / 1K tokens
ConfiguraçãoEscalão 1 por comprimento do pedidoTabela de tarifas—Tokens de contexto, mais de0Tokens de contexto, até ao limite inclusiveSem limite superiorCusto
Entrada · Tokens de entrada $0.004 / 1K tokens
Saída · Tokens de saída $0.016 / 1K tokens
Entrada · Leitura da cache $0.001 / 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 →

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": "openai/o3", "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='openai/o3',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='openai/o3',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 o3, openai/o3

Aliases dos caminhos dos métodos

/chat/completions

IDs de chamada relacionados

openai/o3, o3

Ailoot Ultra · Anthropic Messages POST /v1/messages openai/o3

openai/o3

OpenAI /openai/o3
ID do modelo
  • o3
  • openai/o3

Introdução

OpenAI o3 é um modelo de raciocínio para matemática, ciência, programação, perguntas visuais e escrita técnica. O seu perfil publicado aceita texto, imagens e ficheiros para respostas de texto, com ferramentas, saídas estruturadas e uma janela de contexto de 200 000 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
openai/o3
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
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)

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çãoTabela de tarifasTokens de contexto, mais deTokens de contexto, até ao limite inclusiveCusto
ConfiguraçãoTarifas base dos tokensTabela de tarifasTarifa baseTokens de contexto, mais de—Tokens de contexto, até ao limite inclusiveSem limite superiorCusto
Entrada · Tokens de entrada $0.004 / 1K tokens
Saída · Tokens de saída $0.016 / 1K tokens
Entrada · Leitura da cache $0.001 / 1K tokens
Entrada · Escrita na cache — / 1K tokens
Entrada · Escrita na cache, 1 hora — / 1K tokens
ConfiguraçãoEscalão 1 por comprimento do pedidoTabela de tarifas—Tokens de contexto, mais de0Tokens de contexto, até ao limite inclusiveSem limite superiorCusto
Entrada · Tokens de entrada $0.004 / 1K tokens
Saída · Tokens de saída $0.016 / 1K tokens
Entrada · Leitura da cache $0.001 / 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 →

Exemplos de pedidos

Ailoot Ultra · Anthropic Messages

Corpo JSON mínimo completocurl · use o seu documento UTF-8Python · guarde o resultado completo
{
  "model": "openai/o3",
  "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': 'openai/o3', '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': 'openai/o3', '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 o3, openai/o3

Aliases dos caminhos dos métodos

/chat/completions

IDs de chamada relacionados

openai/o3, o3

FAQ · OpenAI: o3
Que entradas e resultados estão disponíveis?

POST /v1/chat/completions · o3: text → text

POST /v1/messages · o3: text → json, sse

POST /v1/chat/completions · openai/o3: text → text

POST /v1/messages · openai/o3: text → json, sse

Que campos utiliza o pedido?

POST /v1/chat/completions · o3: model, messages, stream

POST /v1/messages · o3: model, messages, max_tokens, stream

POST /v1/chat/completions · openai/o3: model, messages, stream, modalities, provider

POST /v1/messages · openai/o3: model, messages, max_tokens, stream

Que limites se aplicam?

POST /v1/chat/completions · o3: messages.min_items: 1

POST /v1/chat/completions · openai/o3: 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