OpenAI: GPT-4.1 Nano (batch)
GPT-4.1 Nano é o membro compacto e reativo da família GPT-4.1 para tarefas de texto e imagem rigorosamente especificadas. O contexto grande, Structured Outputs e as chamadas de funções suportam classificação, extração e etapas focadas da aplicação.
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.
GPT-4.1 Nano é o membro mais rápido da família GPT-4.1 da OpenAI, concebido para cumprimento de instruções e chamadas de ferramentas sem uma etapa separada de raciocínio. Aceita texto e imagens e produz texto. Nano adequa-se a uma operação bem definida em que a aplicação precisa de uma resposta compacta, um conjunto de campos ou o pedido seguinte de ferramenta, em vez de uma investigação extensa.
Um exemplo útil é classificar mensagens recebidas segundo um conjunto fornecido de categorias. Explique cada categoria, mostre como representar mensagens ambíguas ou fora do âmbito e peça a categoria juntamente com a frase de origem que a sustenta. Para extração, defina nomes de campos, valores permitidos e tratamento de informação em falta. Para uma tarefa curta de escrita, forneça os factos e peça o excerto específico de que a etapa seguinte da aplicação necessita. Os exemplos e os requisitos devem ser suficientemente reduzidos para permanecerem claros, mesmo quando a coleção de origens é grande.
O fabricante indica uma janela de contexto de 1 047 576 tokens, uma saída máxima de 32 768 tokens e conhecimentos atualizados até 1 de junho de 2024. Estas especificações correspondem à janela de GPT-4.1 Mini, preservando a identidade separada de Nano e o seu papel orientado para a rapidez de resposta. Identifique documentos e secções da conversa, inclua apenas o contexto relevante para a operação e reserve espaço para a resposta completa. Resultados de recuperação de informação ou texto de referência fornecido podem apresentar factos mais recentes do que os conhecimentos aprendidos pelo modelo.
Nano suporta streaming e Structured Outputs. Uma resposta final limitada por esquema tem um objetivo diferente de uma chamada de função: uma dá à aplicação um resultado concluído, enquanto a outra lhe pede que execute uma operação. Structured Outputs suporta um subconjunto de JSON Schema; defina propriedades obrigatórias e uma representação clara de valores desconhecidos. Trate recusas e respostas incompletas separadamente e verifique os valores extraídos face à entrada, em vez de equiparar uma estrutura válida a uma conclusão correta.
O conjunto documentado de ferramentas inclui chamadas de funções, pesquisa em ficheiros, interpretação de código, ligações MCP e uma ferramenta separada de geração de imagens. A aplicação fornece descrições e esquemas de ferramentas, executa funções personalizadas e devolve os seus resultados efetivos. Para a versão Nano de 14 de abril de 2025, a OpenAI recomenda especificamente desativar chamadas paralelas de ferramentas porque o modelo pode pedir a mesma ferramenta várias vezes num turno. Esta é uma consideração de execução específica da versão, não uma razão para interpretar várias chamadas propostas como ações concluídas.
A entrada de imagem acrescenta evidências visuais a uma tarefa de texto, como ler uma etiqueta visível ou descrever o estado mostrado numa captura de ecrã. Utilize imagens suportadas PNG, JPEG, WebP ou GIF não animado, mantenha o texto legível e explique que observação é relevante. O guia de visão refere dificuldades com texto pequeno ou rodado, relações espaciais precisas, contagens de objetos e alguma escrita não latina. Forneça contexto circundante quando um recorte isolado tornaria ambígua uma etiqueta ou diagrama. A própria resposta de Nano é texto; uma ferramenta de geração de imagens devolve o seu resultado separado. No processo de visão documentado da OpenAI, o conteúdo total do pedido é limitado a 512 MB e um pedido pode incluir até 1 500 imagens; as imagens e o texto têm também de caber no contexto do modelo.
No processo de ficheiros do fabricante, um modelo com visão recebe tanto texto extraído como imagens de páginas de PDF. Outros formatos documentais contribuem com texto extraído, e o enriquecimento de folhas de cálculo considera, no máximo, as primeiras 1 000 linhas por folha. Cada ficheiro deve ter menos de 50 MB, com um limite total de 50 MB no conjunto do pedido. Chat Completions suporta partes de ficheiro PDF, enquanto o processo Responses documentado aceita tipos de ficheiro adicionais. Gráficos incorporados em documentos que não sejam PDF não são transmitidos como conteúdo de imagem, pelo que uma representação PDF é útil quando as evidências visuais são relevantes.
A OpenAI documenta colocação da entrada em cache para Nano e Predicted Outputs para a série GPT-4.1 Nano. A cache de entrada reutiliza um prefixo de entrada elegível no serviço do fabricante. Predicted Outputs fornece, em alternativa, texto de saída em grande parte conhecido para uma edição, como rever um documento ou ficheiro de código preservando as partes inalteradas. O percurso de previsão é apenas de texto e exclui chamadas de funções, logprobs e max_completion_tokens, entre outros controlos. Escolha o percurso para a operação efetiva e mantenha o resultado associado à origem original.
O fabricante documenta também ajuste fino supervisionado e otimização direta de preferências para a versão denominada GPT-4.1 de Nano. Exemplos de treino e respostas preferidas face às rejeitadas adaptam um modelo a uma tarefa recorrente; são distintos do contexto fornecido a um pedido normal. Para uma etapa prática de extração ou classificação, comece com categorias claras, exemplos e um formato final explícito, depois examine se os campos devolvidos preservam os factos que a etapa seguinte utilizará.
Ailoot Ultra · Processamento em lote POST /v1/batches openai/gpt-4.1-nano:batch
openai/gpt-4.1-nano:batchIntrodução
GPT-4.1 Nano é o membro compacto e reativo da família GPT-4.1 para tarefas de texto e imagem rigorosamente especificadas. O contexto grande, Structured Outputs e as chamadas de funções suportam classificação, extração e etapas focadas da aplicação.
- Entradas aceites
- Texto
- Resultados
- Texto
Disponível no Ailoot · entradas e métodos
Ailoot Ultra · Processamento em lote POST /v1/batches
- Entrada
text- Saída
text- Formato de saída
- JSON em linha de results[].response.body
| Campo | Tipo | Requisito | Valores e limites | Predefinição |
|---|---|---|---|---|
Campoendpoint | Tipostring | RequisitoObrigatório | Valores e limites /v1/chat/completions | Predefinição— |
Campomodel | Tipostring | RequisitoObrigatório | Valores e limites openai/gpt-4.1-nano:batch | Predefinição— |
Camporequests | Tipobatch_item[] | RequisitoObrigatório | Valores e limites Número mínimo de elementos: 1 | Predefinição— |
Camporequests[].custom_id | Tipostring | RequisitoObrigatório | Valores e limites | Predefinição— |
Camporequests[].body.messages | Tipomessage[] | RequisitoObrigatório | Valores e limites | Predefinição— |
Campocompletion_window | Tipostring | RequisitoOpcional | Valores e limites 24h | Predefinição— |
Campoprovider | Tipoobject|null | RequisitoOpcional | Valores e limites | Predefinição— |
Camporequests[].body.model | Tipostring | RequisitoOpcional | Valores e limites openai/gpt-4.1-nano:batch, openai/gpt-4.1-nano | Predefinição— |
Campoprovider.only | Tipostring[] | RequisitoOpcional | Valores e limites openai | Predefinição— |
Campoprovider.allow_fallbacks | Tipoboolean|null | RequisitoOpcional | Valores e limites false, null | Predefinição— |
Parâmetros e ciclo de vida do método
| Parâmetro | Contrato |
|---|---|
Parâmetrocontent_type | Contratoapplication/json |
Parâmetrorequired | Contratoendpoint, model, requests |
Parâmetromaterial_types | Contratotext |
Parâmetrorepresentation | Contratorequests[] em linha; cada item tem custom_id e body |
Parâmetrorequest_endpoint_profile | Contrato/v1/chat/completions |
Parâmetrofile_material | ContratoQuem faz a chamada pode ler localmente o conteúdo JSONL UTF-8 efetivo para requests[]. Não é utilizada qualquer finalidade de carregamento, input_file_id ou referência a ficheiro. Se o material do cliente estiver em falta ou vazio, a preparação é interrompida antes do POST. |
Parâmetroserialization_order | Contratoendpoint, model, provider (se fornecido), completion_window (se fornecido), requests em último lugar |
Parâmetrooptional_controls | Contratoprovider.only, provider.allow_fallbacks, completion_window |
Parâmetroschema_scope | ContratoCorpos de pedidos de texto de Chat Completions na estrutura de lote em linha documentada. |
Ciclo de vida: asynchronous
GET /v1/batches/{operation_id} · response.id efetivo da resposta original de criação; mesmo utilizador/chave/grupo
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)
- Preços da cache explícita
- Não ativado Quando é pedida cache explícita
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.0001 / 1K tokens Saída · Tokens de saída $0.0004 / 1K tokens Entrada · Leitura da cache $0.000025 / 1K tokens Entrada · Escrita na cache — / 1K tokens Entrada · Escrita na cache, 1 hora — / 1K tokens |
| ConfiguraçãoEscalão 1 por comprimento do pedido | Tabela de tarifas— | Tokens de contexto, mais de0 | Tokens de contexto, até ao limite inclusiveSem limite superior | Custo Entrada · Tokens de entrada $0.0001 / 1K tokens Saída · Tokens de saída $0.0004 / 1K tokens Entrada · Leitura da cache $0.000025 / 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 · Processamento em lote
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json
from pathlib import Path
body=json.loads('{"endpoint":"/v1/chat/completions","model":"openai/gpt-4.1-nano:batch","requests":[{"custom_id":"req-0001","body":{"messages":[{"role":"user","content":"Hello!"}],"max_tokens":16}}]}')
Path("batch-request.json").write_text(json.dumps(body,ensure_ascii=False),encoding="utf-8")
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/batches \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @batch-request.json -D batch-response-headers.txt -o batch-create-response.json
import json, os
from pathlib import Path
from urllib.request import Request, urlopen
def prepare_requests(customer_path):
path = Path(customer_path)
if not path.is_file(): raise ValueError("Customer JSONL file is missing")
items = [json.loads(line) for line in path.read_text(encoding="utf-8").splitlines() if line.strip()]
if not items: raise ValueError("Customer JSONL contains no requests")
ids = set()
for item in items:
if set(item) != {"custom_id", "body"}: raise ValueError("Each item needs custom_id and body")
cid = item["custom_id"]
if not isinstance(cid, str) or not cid.strip() or cid in ids: raise ValueError("custom_id must be nonempty and unique")
ids.add(cid)
if not isinstance(item["body"], dict) or not item["body"].get("messages"): raise ValueError("Supply actual text messages")
supplied_model = item["body"].get("model")
if supplied_model is not None and supplied_model not in ['openai/gpt-4.1-nano:batch', 'openai/gpt-4.1-nano']: raise ValueError("body.model must be an exact documented caller or wire ID")
return {"endpoint":"/v1/chat/completions", "model":"openai/gpt-4.1-nano:batch", "requests":items}
if __name__ == "__main__":
material = os.environ.get("AILOOT_BATCH_REQUESTS_JSONL", "")
if not material: raise SystemExit("Set AILOOT_BATCH_REQUESTS_JSONL to your actual customer file")
body = prepare_requests(material)
key = os.environ.get("AILOOT_API_KEY", "")
if not key: raise SystemExit("Set AILOOT_API_KEY")
request = Request("https://api.ailoot.ai/v1/batches", data=json.dumps(body, ensure_ascii=False).encode("utf-8"), headers={"Authorization":"Bearer " + key, "Content-Type":"application/json"}, method="POST")
with urlopen(request) as response:
raw = response.read()
Path("batch-create-response.json").write_bytes(raw)
print(raw.decode("utf-8"))
import json
from pathlib import Path
raw = Path("batch-status-response.json").read_bytes()
response = json.loads(raw)
if response.get("status") != "completed":
raise SystemExit("Keep the original operation; read its status without resubmitting")
results = response.get("results")
if not isinstance(results, list) or not results:
raise SystemExit("Preserve the original response; completed results are missing")
Path("batch-results.jsonl").write_text("".join(json.dumps(item, ensure_ascii=False) + "\n" for item in results), encoding="utf-8")
# Preserve batch-status-response.json with aggregate usage and every result/error.
Receber e guardar os resultados
Ailoot Ultra · Processamento em lote
JSON em linha de results[].response.body
GET /v1/batches/{operation_id}
Verificar o estado da tarefa
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
BATCH_OPERATION_ID="$(python3 - <<'PY_ID'
import json
from pathlib import Path
from urllib.parse import quote
response = json.loads(Path("batch-create-response.json").read_text(encoding="utf-8"))
operation = response.get("id")
if not isinstance(operation, str) or not operation: raise SystemExit("No actual original operation ID; preserve the response and do not resubmit")
print(quote(operation, safe=""))
PY_ID
)"
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/batches/$BATCH_OPERATION_ID" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o batch-status-response.json
Guardar todos os resultados concluídos
Guarde cada resposta, ficheiro e parte de conteúdo devolvidos na íntegra.
Conserve o JSON completo do estado original, todos os resultados/custom_id e o corpo completo da resposta ou do erro. Guarde os results[] concluídos em formato JSONL, sem filtrar.
Se for necessário verificar a resposta original
Preserve o ID original da operação. A resposta 503 result_pending_check inclui X-Should-Retry:false; nunca volte a enviar um lote original de estado desconhecido.
Campos da resposta
| Campo | Tipo |
|---|---|
Camporesults[].custom_id | Tipostring |
Camporesults[].response.body.choices[].message.content | Tipostring|null |
Camporesults[].error | Tipoobject|null |
Campousage | Tipoobject|null |
Campoid | Tipostring |
Campomodel | Tipostring |
Campoendpoint | Tipostring |
Campostatus | Tipostring |
Camporequest_counts | Tipoobject |
Camporesults[].id | Tipostring |
Camporesults[].response.status_code | Tipointeger |
Camporesults[].response.request_id | Tipostring |
Erros e passos seguintes
| Resposta | Condição | Passo seguinte |
|---|---|---|
Resposta400 · invalid_request_error | CondiçãoEstrutura em linha documentada inválida, chaves duplicadas, identidade do item inválida ou conflito com as capacidades configuradas do modelo. | Passo seguinteCorrija os campos indicados antes de qualquer novo envio. |
Resposta401 · authentication_error | CondiçãoChave de API inválida. | Passo seguinteUse a chave Ailoot autorizada. |
Resposta403 · permission_error | CondiçãoGrupo de processamento em lote indisponível. | Passo seguinteVerifique os direitos de acesso da chave/do grupo. |
Resposta422 · invalid_request_error | CondiçãoO processamento em lote usa faturação por débito do saldo; a criação com subscrição é rejeitada. | Passo seguinteUse o grupo autorizado com faturação por débito do saldo. |
Resposta422 · price_unavailable | CondiçãoNão é possível calcular uma estimativa de preço para os dados de entrada do lote. | Passo seguinteConserve a resposta; use os dados de entrada documentados para a família. |
Resposta402 · billing_error | CondiçãoReserva para processamento em lote indisponível. | Passo seguinteResolva a questão da admissão antes de um novo pedido. |
Resposta503 · price_unavailable | CondiçãoPreço do método de processamento em lote/tarifas nativas indisponíveis. | Passo seguinteConserve a resposta; não substitua os preços. |
Resposta503 · api_error | CondiçãoA rota exata do fornecedor está indisponível. | Passo seguinteConserve a resposta para corrigir a rota. |
Resposta503 · result_pending_check | CondiçãoO resultado original requer verificação; X-Should-Retry:false. | Passo seguinteGuarde o operation_id/id original e consulte o respetivo estado; nunca repita o POST original. |
Resposta404 · not_found | CondiçãoA operação de consulta do estado do lote não existe ou pertence a outra identidade. | Passo seguinteUse o id original exato e o mesmo utilizador/chave/grupo. |
Aliases
Aliases do modelo
Ailoot Ultra openai/gpt-4.1-nano:batch
Aliases dos caminhos dos métodos
Use os caminhos dos métodos indicados acima.
IDs de chamada relacionados
FAQ · OpenAI: GPT-4.1 Nano (batch)
- Que entradas e resultados estão disponíveis?
POST /v1/batches·openai/gpt-4.1-nano:batch:text→text- Que campos utiliza o pedido?
POST /v1/batches·openai/gpt-4.1-nano:batch:endpoint,model,requests,completion_window,provider- Que limites se aplicam?
POST /v1/batches·openai/gpt-4.1-nano:batch:requests.min_items:1