Anthropic: Claude Haiku 4.5
Claude Haiku 4.5 está orientado a asistentes interactivos, atención a usuarios, procesamiento cotidiano de información y trabajo con código. Para preguntas complejas ofrece un modo de razonamiento independiente.
Sobre el modelo
Esta descripción cubre las capacidades del modelo. Las entradas, salidas y opciones disponibles en Ailoot se indican a continuación para el método seleccionado.
Cuando importa la respuesta a cada paso
Anthropic diseñó Claude Haiku 4.5 para asistentes conversacionales, atención a usuarios, trabajo conjunto con código y prototipado. Es útil en un ciclo en el que una persona pregunta, recibe el resultado y concreta inmediatamente el siguiente paso. Según Anthropic, esta versión se caracteriza por una latencia de respuesta reducida; el tiempo concreto depende de la tarea y la aplicación.
Haiku 4.5 también está diseñado para procesar muchas tareas independientes. En un flujo con agentes se le puede asignar una subtarea y después enviar el resultado al resto del sistema. Entre los usos descritos figuran programación, razonamiento y acciones en interfaces. Las llamadas a herramientas y el control de la computadora son posibles cuando la aplicación proporciona los medios correspondientes; una solicitud de texto por sí sola no le da acceso al entorno de trabajo.
Respuesta normal y presupuesto manual de razonamiento
Para tareas con varios pasos lógicos se ofrece extended thinking: la aplicación activa explícitamente el razonamiento y fija su presupuesto mediante budget_tokens. Si el método admite estos ajustes, el presupuesto manual budget_tokens debe ser de al menos 1024 tokens y menor que max_tokens, para dejar espacio a la respuesta final. Orienta el volumen de análisis, mientras que max_tokens limita toda la salida. Haiku 4.5 utiliza específicamente el modo manual: esta versión no admite razonamiento adaptativo ni control de profundidad mediante effort. Tampoco admite razonamiento entre llamadas sucesivas a herramientas.
Conviene tener en cuenta esta diferencia al elegir la tarea. El modo normal es adecuado para un diálogo directo; activar el razonamiento da espacio para analizar código o una pregunta compleja. El contenido de la instrucción sigue determinando qué información debe analizarse y cómo presentar el resultado.
Materiales y límites de la versión
El modelo recibe texto e imágenes y genera texto. La ventana de contexto es de 200 mil tokens y la respuesta máxima, de 64 mil tokens. La imagen aporta material que se analiza junto con la pregunta: el modelo puede explicar el contenido visible y relacionarlo con la instrucción. Admitir imágenes de entrada no implica crear o editar imágenes.
Los formatos habituales de entrada visual del fabricante son JPEG/PNG/GIF/WebP, con el primer fotograma de una animación. En el análisis nativo, el lado largo es de 1568 píxeles y se utilizan 1568 tokens visuales; las imágenes grandes se reducen antes del análisis. La compatibilidad con archivos y parámetros depende del método de la aplicación.
Para esta versión, Anthropic describe un estilo de comunicación conciso y directo. Conviene indicar de antemano el detalle, el formato y las restricciones necesarios. El límite fiable de los conocimientos incorporados es febrero de 2025; la información sobre acontecimientos posteriores debe aportarse en los materiales de la tarea u obtenerse mediante herramientas disponibles en la aplicación. Algunas solicitudes pueden rechazarse.
Si el método ofrece ajustes de muestreo, no se pueden definir temperature y top_p a la vez: para esta versión se elige uno de ellos.
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions claude-haiku-4-5-20251001-thinking
claude-haiku-4-5-20251001-thinking
claude-haiku-4-5-20251001-thinkingInicio
Claude Haiku 4.5 está orientado a asistentes interactivos, atención a usuarios, procesamiento cotidiano de información y trabajo con código. Para preguntas complejas ofrece un modo de razonamiento independiente.
- Entradas aceptadas
- Texto
- Resultados
- Texto
Disponible en Ailoot · entradas y métodos
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
- Entrada
text- Salida
text- Formato de salida
- json o SSE
| Campo | Tipo | Requisito | Valores y límites | Predeterminado |
|---|---|---|---|---|
Campomodel | Tipostring | RequisitoObligatorio | Valores y límites claude-haiku-4-5-20251001-thinking | Predeterminado— |
Campomessages | Tipomessage[] | RequisitoObligatorio | Valores y límites Número mínimo de elementos: 1 | Predeterminado— |
Campomessages[].role | Tipostring | RequisitoObligatorio | Valores y límites Depende del modelo | Predeterminado— |
Campomessages[].content | Tipostring | RequisitoOpcional | Valores y límites Se aplica cuando: Conversación textual | Predeterminado— |
Campostream | Tipoboolean | RequisitoOpcional | Valores y límites | Predeterminadofalse |
Combinaciones de materiales de entrada
Texto · Texto UTF8
messages[].content
Parámetros del método y ciclo de vida
| Parámetro | Contrato |
|---|---|
Parámetrocontent_type | Contratoapplication/json |
Parámetrorequired | Contratomodel, messages |
Parámetromaterial_types | Contratotext |
Parámetromessages | Contratomatriz de mensajes con estructura role/content |
Parámetrofile_material | Contratodocumento real en UTF-8 insertado como texto literal; no se deduce ningún ID de archivo |
Parámetrooptional_controls | Contratostream |
Parámetrocontrol_scope | ContratoConversación textual; stream es un booleano y su valor predeterminado es false. |
Parámetrooutput_modalities | Contratotext |
Parámetrohosted_operations | Contratofalse |
Parámetromultimodal_input_binding | Contratonull |
Alias de método: /chat/completions
Ciclo de vida: synchronous_or_streamed
Envía el ID exacto del modelo junto con messages.
La longitud del contexto no es un límite máximo de salida.
Un archivo de texto puede aportar texto literal; las entradas de imagen, audio u objetos de archivo requieren una vinculación exacta.
Tarifas
Las referencias tarifarias no añaden opciones a la solicitud. Los parámetros admitidos se indican en el método seleccionado.
- Modo fast
- Sin especificar Cuando se selecciona el modo fast
- Modo flex
- Sin especificar Cuando se selecciona el modo flex
- Esfuerzo máximo de razonamiento
- Sin especificar Cuando el esfuerzo máximo de razonamiento usa el ajuste default
Tarifas de Ailoot
Precios por configuración
| Configuración | Tabla de tarifas | Cargo |
|---|---|---|
| ConfiguraciónTarifas base por token | Tabla de tarifasTarifa base | Cargo Entrada · Tokens de entrada $0.002 / 1K tokens Salida · Tokens de salida $0.01 / 1K tokens Entrada · Lectura de caché $0.0002 / 1K tokens Entrada · Escritura en caché $0.0025 / 1K tokens Entrada · Escritura en caché, 1 hora — / 1K tokens |
Ailoot reserva un monto estimado antes de la solicitud. Tras obtener el resultado, liquida el cargo definitivo según el uso medido. En las respuestas en flujo, la liquidación usa el registro de uso final. Cómo funcionan la reserva y la liquidación →
Solicitudes de ejemplo
Ailoot Ultra · OpenAI Chat
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model":"claude-haiku-4-5-20251001-thinking","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="claude-haiku-4-5-20251001-thinking", 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"))
Recibir y guardar resultados
Ailoot Ultra · OpenAI Chat
json o SSE
Conserva todos los resultados completados
Conserva todas las respuestas, archivos y partes de contenido completos recibidos.
Conserva cada alternativa y su contenido, llamadas de herramientas y razonamiento. En SSE, ensambla los fragmentos incrementales por índice de alternativa/herramienta y conserva el motivo final de terminación y el uso.
Si es necesario revisar la respuesta original
Conserva los ID de solicitud y respuesta y los encabezados. No se proporciona una URL genérica para recuperar tareas de texto.
Campos de respuesta
| Campo | Tipo |
|---|---|
Campochoices[].index | Tipointeger |
Campochoices[].message.content | Tipostring|null |
Campochoices[].message.tool_calls | Tipotool_call[] |
Campochoices[].message.reasoning_content | Tipostring |
Campochoices[].message.reasoning_details | Tipoobject|array |
Campochoices[].finish_reason | Tipostring|null |
Campousage | Tipoobject |
Errores y siguientes pasos
| Respuesta | Condición | Siguiente paso |
|---|---|---|
Respuesta400 · invalid_request_error | CondiciónCampos obligatorios, representación del material o valor del parámetro no válidos | Siguiente pasoCorrige los campos indicados antes de una nueva solicitud de creación. |
Alias
Alias del modelo
Ailoot Ultra claude-haiku-4-5-20251001-thinking
Alias de rutas de métodos
/chat/completions
ID de modelo relacionados
FAQ · Anthropic: Claude Haiku 4.5
- ¿Qué entradas y resultados están disponibles?
POST /v1/chat/completions·claude-haiku-4-5-20251001-thinking:text→text- ¿Qué campos utiliza la solicitud?
POST /v1/chat/completions·claude-haiku-4-5-20251001-thinking:model,messages,stream- ¿Qué límites se aplican?
POST /v1/chat/completions·claude-haiku-4-5-20251001-thinking:messages.min_items:1