Anthropic: Claude Haiku 5.5
Claude Haiku 5.5는 분류, 추출, 요약, 라우팅과 범위를 좁힌 에이전트 작업을 위한 Anthropic의 소형 모델입니다. 텍스트 및 이미지 이해와 적응형 추론을 결합하며, 빠른 응답이 필요한 반복 작업을 위해 설계되었습니다.
- Ailoot Ultra · OpenAI Chat
POST /v1/chat/completionsanthropic/claude-haiku-5.5 - Ailoot Ultra · Anthropic Messages
POST /v1/messagesanthropic/claude-haiku-5.5 - Ailoot Ultra · OpenAI Chat
POST /v1/chat/completions~anthropic/claude-haiku-latest - Ailoot Ultra · Anthropic Messages
POST /v1/messages~anthropic/claude-haiku-latest
모델 소개
이 설명은 모델의 기능을 다룹니다. Ailoot에서 사용할 수 있는 입력, 출력 및 옵션은 아래에 선택한 메서드별로 표시됩니다.
Claude Haiku 5.5는 대량 처리와 짧은 지연 시간이 중요한 작업을 위한 Anthropic의 소형 모델 버전입니다. 주요 용도는 분류, 라우팅, 정보 추출, 요약, 대화 압축과 범위를 좁힌 하위 에이전트 작업입니다. 텍스트와 이미지를 입력받아 텍스트를 생성합니다. 유용한 작업 지시에는 좁은 질문과 명확한 결과를 포함합니다. 범주, 정의된 필드 일체, 짧은 요약 또는 더 큰 작업의 다른 부분에 필요한 근거 등이 이에 해당합니다. 애플리케이션이 추출한 정보와 원자료를 연결할 수 있도록 결과에 출처 식별자를 함께 유지하세요.
Anthropic은 이 버전의 용도로 반복 분석뿐 아니라 실시간 고객 지원, 브라우저 사용과 짧은 코딩 하위 작업을 제시합니다. 더 큰 모델이 야심찬 프로젝트를 담당하고 Haiku가 범위를 제한한 조회나 요약을 담당하는 작업 흐름에서는 Claude Sonnet 5.5 또는 Claude Opus 5.5를 보완할 수 있습니다. 고객 지원 작업에는 질문과 허용된 참고 자료를 제공하고, 답변 어조와 반환할 내용을 지정하세요. 코딩 하위 작업에는 완료 조건 없이 끝이 정해지지 않은 프로젝트를 맡기기보다 관련 파일이나 코드 일부와 정확한 질문을 명시하세요.
문서에 명시된 컨텍스트 윈도는 백만 토큰이며, 일반 생성에서는 최대 128,000토큰을 출력할 수 있습니다. 사고 토큰도 생성 허용량에 포함되므로, 추론과 화면에 표시할 텍스트 모두를 위한 공간이 필요합니다. 신뢰할 수 있는 지식 기준 시점은 2026년 6월입니다. 이후 정보에는 제공된 근거나 검색 도구가 필요합니다. Anthropic은 이 버전의 출력을 300,000토큰까지 늘릴 수 있는 배치 전용 베타를 별도로 문서화합니다. 이 더 큰 허용량에는 제조사의 extended-output 기능이 필요하며, 일반 한도와는 구분됩니다. 비동기 배치는 요청을 서로 독립적으로 처리하므로, 결과가 즉시가 아니라 처리 후에 필요한 문서나 기록 묶음에 유용합니다.
적응형 사고는 기본적으로 활성화되며, effort가 추론 깊이를 조절하는 주요 수단입니다. 수준은 low, medium, high, xhigh와 max이며, 기본값은 medium입니다. Anthropic은 대부분의 작업에는 medium, 더 지속적인 작업이나 엄격한 지시 준수에는 high, 간단하고 짧은 요청에는 low를 권장합니다. low, medium 또는 high에서는 사고를 비활성화할 수 있지만, xhigh나 max에서 비활성화하면 거부됩니다. 직접 답하라는 프롬프트가 이 제어를 대신하지는 않습니다. Haiku 4.5의 수동 budget_tokens 설정은 이 버전에 그대로 적용되지 않으며, 문서화된 인터페이스에서는 temperature, top_p와 top_k를 생략해야 합니다.
Haiku 5.5는 이전 Claude 세대에 도입된 더 새로운 토크나이저를 사용합니다. Anthropic은 같은 텍스트에 약 30% 더 많은 토큰이 필요할 수 있다고 추정합니다. 이는 Haiku 4.5와 비교한 수치이며, 내용에 따라 달라집니다. 이전 assistant 턴의 사고 블록도 유지하므로, 토크나이저 변경에 따른 증가 이상으로 대화 크기가 커질 수 있습니다. 캐시 가능한 프롬프트의 최소 길이는 512토큰입니다. 추론을 유지할 때는 이전 턴을 변경하지 않고, 새 지시는 가장 최근 턴에 넣으세요. 최상위 effort를 변경하면 대화의 메시지 캐시가 무효화됩니다. 제조사는 적응형 대화 안에서 effort를 바꾸는 별도의 베타를 문서화합니다. 이러한 능력 중 어느 것도 특정 요청에서 캐시 적중이 발생했다는 증거는 아닙니다.
정보 검색에서는 모델의 프롬프트 가이드가 검색 도구와 함께 현재 날짜를 제공하고, 원래 시스템 및 도구 정의를 안정적으로 유지하도록 권장합니다. 대화가 다른 날에 이어지면 가장 최근 턴에 새로운 날짜를 제공하세요. 찾아야 할 내용을 명시하고, 결론을 요청하기 전에 반환된 출처를 보존하세요. 예를 들어 특정 소프트웨어 버전의 문서에 명시된 동작을 찾고, 검색된 구절에 근거한 짧은 설명을 요청할 수 있습니다. 검색 도구를 제공하고 실제 결과를 반환하는 것은 애플리케이션입니다. 모델이 조회를 제안했다고 해서 조회가 이루어졌다는 증거가 되지는 않습니다.
구조화된 JSON 출력과 도구를 함께 사용할 때 가이드는 특정한 상호작용을 문서화합니다. 사고가 비활성화되어 있으면 Haiku가 필요한 도구 호출을 생략할 수 있습니다. Anthropic은 이러한 요청에 적응형 사고를 사용하거나, 최종 JSON 요구사항을 도구 단계와 분리하도록 권장합니다. 출력 필드를 정의하고, 도구 결과를 받은 뒤 최종 답변을 내놓아야 함을 명확히 하세요. 데이터 추출 작업 지시에서는 필요한 필드와 누락된 값의 표현 방식을 정할 수 있고, 조회 작업 지시에서는 먼저 그 필드를 채울 근거를 요청할 수 있습니다. 답변이 첫 번째 블록이 아닐 수 있고 사고 텍스트는 기본적으로 생략되므로, 응답 블록은 유형별로 읽으세요.
긴 에이전트 프롬프트에 대해 Anthropic은 low effort에서 작업을 일찍 끝내거나, 검색을 건너뛰거나, 검사를 생략할 수 있다고 설명합니다. 가이드는 명시적인 완료 지시와 함께, 코드 변경을 완료했다고 보고하기 전에 실제 검사를 수행하도록 권장합니다. 예상 결과와 이를 입증할 근거를 준비하세요. 보고서라면 선택한 구절, 코드 제안이라면 변경된 동작, 문서라면 추출한 필드가 될 수 있습니다. 가이드는 작업 도중의 사용자 메시지와 도구 출력도 구분합니다. 새로운 사용자 지시는 user 턴에 넣고, 도구가 반환한 근거는 별도로 유지합니다.
이 버전에는 자체 보호 장치가 있으며, 사이버 위해, 생물학적 위해, 경쟁 모델 개발이나 기타 금지된 용도 등의 범주에 대해 거부 응답을 반환할 수 있습니다. 제조사는 Haiku 5.5의 서버 측 폴백을 문서화하지 않습니다. 가이드는 xhigh effort에서 여러 턴에 걸친 응답이 화면에 표시할 답변 텍스트 없이 끝나는 경우가 간혹 있고, low effort나 사고가 비활성화된 상태에서는 추론과 유사한 텍스트가 더 자주 나타날 수 있다고도 설명합니다. 화면에 표시할 수 있는 구조화된 결과가 필요한 작업 흐름에서는 이러한 구체적인 동작을 고려해야 합니다. 일반적인 추출이나 요약 작업에는 범위를 좁힌 원자료, 정의된 출력과 작업에 맞는 effort 수준을 사용하세요.
실제 활용 과제
실제 활용 과제
영어 기술 예제
Extract a support handoff
Extract a handoff from this ticket, using only its text: T-184: 'I changed my billing email yesterday. Receipts still go to the old address. My login works. Please resend March and April receipts.' Return ticket ID, requested actions, working function and missing information. Use 'not stated' for absent details.예상 결과
Four labeled fields retaining T-184, the receipt request, the working login and explicitly missing details.결과 확인
Every extracted value must trace to the ticket; do not invent either email address.Ailoot Ultra · OpenAI Chat POST /v1/chat/completions anthropic/claude-haiku-5.5
anthropic/claude-haiku-5.5anthropic/claude-haiku-5.5~anthropic/claude-haiku-latest
시작하기
Claude Haiku 5.5는 분류, 추출, 요약, 라우팅과 범위를 좁힌 에이전트 작업을 위한 Anthropic의 소형 모델입니다. 텍스트 및 이미지 이해와 적응형 추론을 결합하며, 빠른 응답이 필요한 반복 작업을 위해 설계되었습니다.
- 허용 입력
- 텍스트
- 결과
- 텍스트
Ailoot에서 사용 가능 · 입력 및 메서드
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
- 입력
text- 출력
text- 출력 형식
- json 또는 SSE
| 필드 | 유형 | 요건 | 값과 한도 | 기본값 |
|---|---|---|---|---|
필드model | 유형string | 요건필수 | 값과 한도 anthropic/claude-haiku-5.5 | 기본값— |
필드messages | 유형message[] | 요건필수 | 값과 한도 최소 항목 수: 1 | 기본값— |
필드messages[].role | 유형string | 요건필수 | 값과 한도 예시: system, user, assistant, tool, function 조건: 이 역할들은 소스 코드의 호환 타입에 명시적으로 표현됩니다. 정확한 모델 역할 집합은 모델별로 다릅니다. 모델에 따라 다름 | 기본값— |
필드messages[].content | 유형string|content_part[]|null | 요건선택 사항 | 값과 한도 | 기본값— |
필드messages[].tool_calls | 유형tool_call[] | 요건선택 사항 | 값과 한도 | 기본값— |
필드messages[].tool_call_id | 유형string | 요건선택 사항 | 값과 한도 적용 조건: role=tool. 실제 반환된 ID를 사용하세요 | 기본값— |
필드messages[].name | 유형string | 요건선택 사항 | 값과 한도 | 기본값— |
필드messages[].reasoning_content | 유형string | 요건선택 사항 | 값과 한도 적용 조건: 이 모델이 추론을 사용하는 경우 실제 반환된 추론을 그대로 다음 요청에 다시 전달하세요 | 기본값— |
필드messages[].reasoning_details | 유형object|array | 요건선택 사항 | 값과 한도 모델에 따라 다름 | 기본값— |
필드max_tokens | 유형integer | 요건선택 사항 | 값과 한도 최솟값: 1 모델에 따라 다름 | 기본값— |
필드max_completion_tokens | 유형integer | 요건선택 사항 | 값과 한도 최솟값: 1 모델에 따라 다름 | 기본값— |
필드stream | 유형boolean | 요건선택 사항 | 값과 한도 | 기본값false |
필드stream_options.include_usage | 유형boolean | 요건선택 사항 | 값과 한도 모델에 따라 다름 | 기본값— |
필드temperature | 유형number | 요건선택 사항 | 값과 한도 모델에 따라 다름 | 기본값— |
필드top_p | 유형number | 요건선택 사항 | 값과 한도 모델에 따라 다름 | 기본값— |
필드stop | 유형string|string[] | 요건선택 사항 | 값과 한도 모델에 따라 다름 | 기본값— |
필드tools | 유형function_tool[] | 요건선택 사항 | 값과 한도 모델에 따라 다름 | 기본값— |
필드tools[].type | 유형string | 요건선택 사항 | 값과 한도 function 모델에 따라 다름 | 기본값— |
필드tools[].function.name | 유형string | 요건필수 | 값과 한도 적용 조건: 함수 도구 지정됨 | 기본값— |
필드tools[].function.description | 유형string | 요건선택 사항 | 값과 한도 | 기본값— |
필드tools[].function.parameters | 유형JSON_schema | 요건선택 사항 | 값과 한도 | 기본값— |
필드tool_choice | 유형string|object | 요건선택 사항 | 값과 한도 모델에 따라 다름 | 기본값— |
필드parallel_tool_calls | 유형boolean | 요건선택 사항 | 값과 한도 모델에 따라 다름 | 기본값— |
필드response_format | 유형object | 요건선택 사항 | 값과 한도 모델에 따라 다름 | 기본값— |
필드reasoning_effort | 유형string | 요건선택 사항 | 값과 한도 모델에 따라 다름 | 기본값— |
필드reasoning | 유형object | 요건선택 사항 | 값과 한도 모델에 따라 다름 | 기본값— |
필드service_tier | 유형string | 요건선택 사항 | 값과 한도 모델에 따라 다름 | 기본값— |
필드instructions | 유형string | 요건선택 사항 | 값과 한도 호환성 필드 | 기본값— |
필드functions | 유형function[] | 요건선택 사항 | 값과 한도 모델에 따라 다름 | 기본값— |
필드function_call | 유형string|object | 요건선택 사항 | 값과 한도 모델에 따라 다름 | 기본값— |
필드prompt_cache_options | 유형object | 요건선택 사항 | 값과 한도 모델에 따라 다름 | 기본값— |
필드modalities | 유형string[] | 요건선택 사항 | 값과 한도 text | 기본값— |
필드provider | 유형object | 요건선택 사항 | 값과 한도 조건: 이 Ultra 텍스트 경로에서는 provider.options가 거부됩니다 | 기본값— |
필드cache_control.ttl | 유형string | 요건선택 사항 | 값과 한도 조건: 실제 프롬프트 캐시 지정 위치에서는 1h가 거부됩니다 | 기본값— |
입력 자료 조합
텍스트 · UTF8 텍스트
messages[].content
메서드 매개변수와 수명 주기
| 매개변수 | 명세 |
|---|---|
매개변수content_type | 명세application/json |
매개변수required | 명세model, messages |
매개변수material_types | 명세text |
매개변수messages | 명세role/content 형식의 메시지 배열 |
매개변수file_material | 명세실제 UTF-8 문서를 텍스트로 그대로 삽입합니다. 파일 ID는 추정하지 않습니다 |
매개변수optional_controls | 명세stream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice |
매개변수control_scope | 명세모델별로 다름. 사용자 함수 도구와 호스팅 도구는 서로 다릅니다 |
매개변수output_modalities | 명세text |
매개변수hosted_operations | 명세false |
매개변수multimodal_input_binding | 명세null |
수명 주기: synchronous_or_streamed
정확한 모델 ID를 messages와 함께 보내세요.
컨텍스트 길이는 출력 상한이 아닙니다.
텍스트 파일은 텍스트를 그대로 제공할 수 있습니다. 이미지/오디오/파일 객체 입력에는 정확한 바인딩이 필요합니다.
요금
요금 정보는 요청 옵션을 추가하지 않습니다. 지원되는 매개변수는 선택한 메서드에 표시됩니다.
- 빠른 모드
- 표준 요금 빠른 모드를 선택한 경우
- Flex 모드
- 표준 요금 flex 모드를 선택한 경우
- 최대 추론 수준
- 표준 요금 최대 추론 수준에 default 조정값을 적용하는 경우
- 추론 수준 · 높음
- 표준 요금 추론 수준이 높음인 경우
- 추론 수준 · 낮음
- 표준 요금 추론 수준이 낮음인 경우
- 추론 수준 · 최대
- 표준 요금 추론 수준이 최대인 경우
- 추론 수준 · 중간
- 표준 요금 추론 수준이 중간인 경우
- 추론 수준 · xhigh
- 표준 요금 추론 수준이 xhigh인 경우
Ailoot 요금
설정별 가격
각 요금을 표시된 조건과 대조하세요. 서로 대체되는 설정 묶음마다 하나의 요금만 적용하세요.
| 설정 | 요금표 | 컨텍스트 토큰 수 초과 기준 | 컨텍스트 토큰 수 이하 기준 | 요금 |
|---|---|---|---|---|
| 설정토큰의 기본 단가 | 요금표기본 요금 | 컨텍스트 토큰 수 초과 기준— | 컨텍스트 토큰 수 이하 기준상한 없음 | 요금 입력 · 입력 토큰 $0.0002 / 1K 토큰 출력 · 출력 토큰 $0.001 / 1K 토큰 입력 · 캐시 읽기 $0.00002 / 1K 토큰 입력 · 캐시 쓰기 $0.00025 / 1K 토큰 입력 · 캐시 쓰기, 1시간 $0.0004 / 1K 토큰 |
| 설정요청 길이 구간 1 | 요금표— | 컨텍스트 토큰 수 초과 기준0 | 컨텍스트 토큰 수 이하 기준100,000 | 요금 입력 · 입력 토큰 $0.0002 / 1K 토큰 출력 · 출력 토큰 $0.001 / 1K 토큰 입력 · 캐시 읽기 $0.00002 / 1K 토큰 입력 · 캐시 쓰기 $0.00025 / 1K 토큰 입력 · 캐시 쓰기, 1시간 $0.0004 / 1K 토큰 |
| 설정요청 길이 구간 2 | 요금표— | 컨텍스트 토큰 수 초과 기준100,000 | 컨텍스트 토큰 수 이하 기준상한 없음 | 요금 입력 · 입력 토큰 $0.0002 / 1K 토큰 출력 · 출력 토큰 $0.001 / 1K 토큰 입력 · 캐시 읽기 $0.00002 / 1K 토큰 입력 · 캐시 쓰기 $0.00025 / 1K 토큰 입력 · 캐시 쓰기, 1시간 $0.002 / 1K 토큰 |
Ailoot는 요청 전에 예상 금액을 미리 확보합니다. 결과를 받은 뒤 측정된 사용량을 기준으로 최종 요금을 정산합니다. 스트리밍 정산에는 최종 사용량 기록을 사용합니다. 금액 확보와 정산 방식 →
요청 예제
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": "anthropic/claude-haiku-5.5", "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='anthropic/claude-haiku-5.5',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='anthropic/claude-haiku-5.5',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")
결과 수신 및 저장
Ailoot Ultra · OpenAI Chat
json 또는 SSE
완료된 결과 모두 보관
반환된 완전한 응답, 파일, 콘텐츠 부분을 모두 보관하세요.
각 선택지와 그 콘텐츠·도구 호출·추론을 모두 보존하세요. SSE에서는 선택지/도구 인덱스별로 증분을 조합하고 최종 종료 사유와 사용량을 유지하세요.
원래 응답을 확인해야 할 경우
요청/응답 ID와 헤더를 보존하세요. 텍스트 작업을 조회하는 범용 URL은 제공되지 않습니다.
응답 필드
| 필드 | 유형 |
|---|---|
필드choices[].index | 유형integer |
필드choices[].message.content | 유형string|null |
필드choices[].message.tool_calls | 유형tool_call[] |
필드choices[].message.reasoning_content | 유형string |
필드choices[].message.reasoning_details | 유형object|array |
필드choices[].finish_reason | 유형string|null |
필드usage | 유형object |
오류와 다음 단계
| 응답 | 조건 | 다음 단계 |
|---|---|---|
응답400 · invalid_request_error | 조건필수 필드, 자료 표현 방식 또는 파라미터 값이 올바르지 않음 | 다음 단계새 생성 요청 전에 표시된 필드를 수정하세요. |
별칭
모델 별칭
Ailoot Ultra anthropic/claude-haiku-5.5, ~anthropic/claude-haiku-latest
메서드 경로 별칭
위에 표시된 메서드 경로를 사용하세요.
관련 호출용 ID
Ailoot Ultra · Anthropic Messages POST /v1/messages anthropic/claude-haiku-5.5
anthropic/claude-haiku-5.5anthropic/claude-haiku-5.5~anthropic/claude-haiku-latest
시작하기
Claude Haiku 5.5는 분류, 추출, 요약, 라우팅과 범위를 좁힌 에이전트 작업을 위한 Anthropic의 소형 모델입니다. 텍스트 및 이미지 이해와 적응형 추론을 결합하며, 빠른 응답이 필요한 반복 작업을 위해 설계되었습니다.
- 허용 입력
- 텍스트
- 결과
- json · sse
Ailoot에서 사용 가능 · 입력 및 메서드
Ailoot Ultra · Anthropic Messages POST /v1/messages
- 입력
text- 출력
json,sse- 출력 형식
- JSON 또는 SSE
| 필드 | 유형 | 요건 | 값과 한도 | 기본값 |
|---|---|---|---|---|
필드model | 유형string | 요건필수 | 값과 한도 anthropic/claude-haiku-5.5 | 기본값— |
필드messages | 유형message[] | 요건필수 | 값과 한도 | 기본값— |
필드messages[].role | 유형string | 요건필수 | 값과 한도 user, assistant | 기본값— |
필드messages[].content | 유형string | 요건필수 | 값과 한도 | 기본값— |
필드max_tokens | 유형integer | 요건필수 | 값과 한도 | 기본값— |
필드stream | 유형boolean | 요건선택 사항 | 값과 한도 | 기본값false |
입력 자료 조합
텍스트 · UTF-8 텍스트
messages[].content 문자열
메서드 매개변수와 수명 주기
| 매개변수 | 명세 |
|---|---|
매개변수content_type | 명세application/json |
매개변수required | 명세model, messages, max_tokens |
매개변수optional_controls | 명세stream |
매개변수material_types | 명세text |
매개변수text_file_material | 명세실제 UTF-8 문서를 읽고 그 텍스트를 지정된 입력 또는 메시지 콘텐츠 문자열에 넣으세요. |
수명 주기: synchronous_or_streamed
요금
요금 정보는 요청 옵션을 추가하지 않습니다. 지원되는 매개변수는 선택한 메서드에 표시됩니다.
- 빠른 모드
- 표준 요금 빠른 모드를 선택한 경우
- Flex 모드
- 표준 요금 flex 모드를 선택한 경우
- 최대 추론 수준
- 표준 요금 최대 추론 수준에 default 조정값을 적용하는 경우
- 추론 수준 · 높음
- 표준 요금 추론 수준이 높음인 경우
- 추론 수준 · 낮음
- 표준 요금 추론 수준이 낮음인 경우
- 추론 수준 · 최대
- 표준 요금 추론 수준이 최대인 경우
- 추론 수준 · 중간
- 표준 요금 추론 수준이 중간인 경우
- 추론 수준 · xhigh
- 표준 요금 추론 수준이 xhigh인 경우
Ailoot 요금
설정별 가격
각 요금을 표시된 조건과 대조하세요. 서로 대체되는 설정 묶음마다 하나의 요금만 적용하세요.
| 설정 | 요금표 | 컨텍스트 토큰 수 초과 기준 | 컨텍스트 토큰 수 이하 기준 | 요금 |
|---|---|---|---|---|
| 설정토큰의 기본 단가 | 요금표기본 요금 | 컨텍스트 토큰 수 초과 기준— | 컨텍스트 토큰 수 이하 기준상한 없음 | 요금 입력 · 입력 토큰 $0.0002 / 1K 토큰 출력 · 출력 토큰 $0.001 / 1K 토큰 입력 · 캐시 읽기 $0.00002 / 1K 토큰 입력 · 캐시 쓰기 $0.00025 / 1K 토큰 입력 · 캐시 쓰기, 1시간 $0.0004 / 1K 토큰 |
| 설정요청 길이 구간 1 | 요금표— | 컨텍스트 토큰 수 초과 기준0 | 컨텍스트 토큰 수 이하 기준100,000 | 요금 입력 · 입력 토큰 $0.0002 / 1K 토큰 출력 · 출력 토큰 $0.001 / 1K 토큰 입력 · 캐시 읽기 $0.00002 / 1K 토큰 입력 · 캐시 쓰기 $0.00025 / 1K 토큰 입력 · 캐시 쓰기, 1시간 $0.0004 / 1K 토큰 |
| 설정요청 길이 구간 2 | 요금표— | 컨텍스트 토큰 수 초과 기준100,000 | 컨텍스트 토큰 수 이하 기준상한 없음 | 요금 입력 · 입력 토큰 $0.0002 / 1K 토큰 출력 · 출력 토큰 $0.001 / 1K 토큰 입력 · 캐시 읽기 $0.00002 / 1K 토큰 입력 · 캐시 쓰기 $0.00025 / 1K 토큰 입력 · 캐시 쓰기, 1시간 $0.002 / 1K 토큰 |
Ailoot는 요청 전에 예상 금액을 미리 확보합니다. 결과를 받은 뒤 측정된 사용량을 기준으로 최종 요금을 정산합니다. 스트리밍 정산에는 최종 사용량 기록을 사용합니다. 금액 확보와 정산 방식 →
요청 예제
Ailoot Ultra · Anthropic Messages
{
"model": "anthropic/claude-haiku-5.5",
"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': 'anthropic/claude-haiku-5.5', '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': 'anthropic/claude-haiku-5.5', '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))
결과 수신 및 저장
Ailoot Ultra · Anthropic Messages
JSON 또는 SSE
완료된 결과 모두 보관
반환된 완전한 응답, 파일, 콘텐츠 부분을 모두 보관하세요.
모든 콘텐츠 블록, 사고 서명, 실제 도구 사용 ID를 보존하세요. 모든 SSE 블록 증분을 조합하세요. 첫 텍스트 블록이 전체 출력은 아닙니다.
원래 응답을 확인해야 할 경우
요청/응답 ID와 헤더를 보존하세요. 텍스트 작업을 조회하는 범용 URL은 제공되지 않습니다.
응답 필드
| 필드 | 유형 |
|---|---|
필드id | 유형string |
필드model | 유형string |
필드content[] | 유형text|thinking|tool_use|other content block |
필드stop_reason | 유형string|null |
필드usage | 유형object |
오류와 다음 단계
| 응답 | 조건 | 다음 단계 |
|---|---|---|
응답400 · invalid_request_error | 조건필수 필드, 자료 표현 방식 또는 파라미터 값이 올바르지 않음 | 다음 단계새 생성 요청 전에 표시된 필드를 수정하세요. |
별칭
모델 별칭
Ailoot Ultra anthropic/claude-haiku-5.5, ~anthropic/claude-haiku-latest
메서드 경로 별칭
위에 표시된 메서드 경로를 사용하세요.
관련 호출용 ID
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions ~anthropic/claude-haiku-latest
~anthropic/claude-haiku-latest
~anthropic/claude-haiku-latestanthropic/claude-haiku-5.5~anthropic/claude-haiku-latest
시작하기
Claude Haiku 5.5는 분류, 추출, 요약, 라우팅과 범위를 좁힌 에이전트 작업을 위한 Anthropic의 소형 모델입니다. 텍스트 및 이미지 이해와 적응형 추론을 결합하며, 빠른 응답이 필요한 반복 작업을 위해 설계되었습니다.
- 허용 입력
- 텍스트
- 결과
- 텍스트
Ailoot에서 사용 가능 · 입력 및 메서드
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
- 입력
text- 출력
text- 출력 형식
- json 또는 SSE
| 필드 | 유형 | 요건 | 값과 한도 | 기본값 |
|---|---|---|---|---|
필드model | 유형string | 요건필수 | 값과 한도 ~anthropic/claude-haiku-latest | 기본값— |
필드messages | 유형message[] | 요건필수 | 값과 한도 최소 항목 수: 1 | 기본값— |
필드messages[].role | 유형string | 요건필수 | 값과 한도 예시: system, user, assistant, tool, function 조건: 이 역할들은 소스 코드의 호환 타입에 명시적으로 표현됩니다. 정확한 모델 역할 집합은 모델별로 다릅니다. 모델에 따라 다름 | 기본값— |
필드messages[].content | 유형string|content_part[]|null | 요건선택 사항 | 값과 한도 | 기본값— |
필드messages[].tool_calls | 유형tool_call[] | 요건선택 사항 | 값과 한도 | 기본값— |
필드messages[].tool_call_id | 유형string | 요건선택 사항 | 값과 한도 적용 조건: role=tool. 실제 반환된 ID를 사용하세요 | 기본값— |
필드messages[].name | 유형string | 요건선택 사항 | 값과 한도 | 기본값— |
필드messages[].reasoning_content | 유형string | 요건선택 사항 | 값과 한도 적용 조건: 이 모델이 추론을 사용하는 경우 실제 반환된 추론을 그대로 다음 요청에 다시 전달하세요 | 기본값— |
필드messages[].reasoning_details | 유형object|array | 요건선택 사항 | 값과 한도 모델에 따라 다름 | 기본값— |
필드max_tokens | 유형integer | 요건선택 사항 | 값과 한도 최솟값: 1 모델에 따라 다름 | 기본값— |
필드max_completion_tokens | 유형integer | 요건선택 사항 | 값과 한도 최솟값: 1 모델에 따라 다름 | 기본값— |
필드stream | 유형boolean | 요건선택 사항 | 값과 한도 | 기본값false |
필드stream_options.include_usage | 유형boolean | 요건선택 사항 | 값과 한도 모델에 따라 다름 | 기본값— |
필드temperature | 유형number | 요건선택 사항 | 값과 한도 모델에 따라 다름 | 기본값— |
필드top_p | 유형number | 요건선택 사항 | 값과 한도 모델에 따라 다름 | 기본값— |
필드stop | 유형string|string[] | 요건선택 사항 | 값과 한도 모델에 따라 다름 | 기본값— |
필드tools | 유형function_tool[] | 요건선택 사항 | 값과 한도 모델에 따라 다름 | 기본값— |
필드tools[].type | 유형string | 요건선택 사항 | 값과 한도 function 모델에 따라 다름 | 기본값— |
필드tools[].function.name | 유형string | 요건필수 | 값과 한도 적용 조건: 함수 도구 지정됨 | 기본값— |
필드tools[].function.description | 유형string | 요건선택 사항 | 값과 한도 | 기본값— |
필드tools[].function.parameters | 유형JSON_schema | 요건선택 사항 | 값과 한도 | 기본값— |
필드tool_choice | 유형string|object | 요건선택 사항 | 값과 한도 모델에 따라 다름 | 기본값— |
필드parallel_tool_calls | 유형boolean | 요건선택 사항 | 값과 한도 모델에 따라 다름 | 기본값— |
필드response_format | 유형object | 요건선택 사항 | 값과 한도 모델에 따라 다름 | 기본값— |
필드reasoning_effort | 유형string | 요건선택 사항 | 값과 한도 모델에 따라 다름 | 기본값— |
필드reasoning | 유형object | 요건선택 사항 | 값과 한도 모델에 따라 다름 | 기본값— |
필드service_tier | 유형string | 요건선택 사항 | 값과 한도 모델에 따라 다름 | 기본값— |
필드instructions | 유형string | 요건선택 사항 | 값과 한도 호환성 필드 | 기본값— |
필드functions | 유형function[] | 요건선택 사항 | 값과 한도 모델에 따라 다름 | 기본값— |
필드function_call | 유형string|object | 요건선택 사항 | 값과 한도 모델에 따라 다름 | 기본값— |
필드prompt_cache_options | 유형object | 요건선택 사항 | 값과 한도 모델에 따라 다름 | 기본값— |
필드modalities | 유형string[] | 요건선택 사항 | 값과 한도 text | 기본값— |
필드provider | 유형object | 요건선택 사항 | 값과 한도 조건: 이 Ultra 텍스트 경로에서는 provider.options가 거부됩니다 | 기본값— |
필드cache_control.ttl | 유형string | 요건선택 사항 | 값과 한도 조건: 실제 프롬프트 캐시 지정 위치에서는 1h가 거부됩니다 | 기본값— |
입력 자료 조합
텍스트 · UTF8 텍스트
messages[].content
메서드 매개변수와 수명 주기
| 매개변수 | 명세 |
|---|---|
매개변수content_type | 명세application/json |
매개변수required | 명세model, messages |
매개변수material_types | 명세text |
매개변수messages | 명세role/content 형식의 메시지 배열 |
매개변수file_material | 명세실제 UTF-8 문서를 텍스트로 그대로 삽입합니다. 파일 ID는 추정하지 않습니다 |
매개변수optional_controls | 명세stream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice |
매개변수control_scope | 명세모델별로 다름. 사용자 함수 도구와 호스팅 도구는 서로 다릅니다 |
매개변수output_modalities | 명세text |
매개변수hosted_operations | 명세false |
매개변수multimodal_input_binding | 명세null |
수명 주기: synchronous_or_streamed
정확한 모델 ID를 messages와 함께 보내세요.
컨텍스트 길이는 출력 상한이 아닙니다.
텍스트 파일은 텍스트를 그대로 제공할 수 있습니다. 이미지/오디오/파일 객체 입력에는 정확한 바인딩이 필요합니다.
요금
요금 정보는 요청 옵션을 추가하지 않습니다. 지원되는 매개변수는 선택한 메서드에 표시됩니다.
- 빠른 모드
- 표준 요금 빠른 모드를 선택한 경우
- Flex 모드
- 표준 요금 flex 모드를 선택한 경우
- 최대 추론 수준
- 표준 요금 최대 추론 수준에 default 조정값을 적용하는 경우
- 추론 수준 · 높음
- 표준 요금 추론 수준이 높음인 경우
- 추론 수준 · 낮음
- 표준 요금 추론 수준이 낮음인 경우
- 추론 수준 · 최대
- 표준 요금 추론 수준이 최대인 경우
- 추론 수준 · 중간
- 표준 요금 추론 수준이 중간인 경우
- 추론 수준 · xhigh
- 표준 요금 추론 수준이 xhigh인 경우
Ailoot 요금
설정별 가격
각 요금을 표시된 조건과 대조하세요. 서로 대체되는 설정 묶음마다 하나의 요금만 적용하세요.
| 설정 | 요금표 | 컨텍스트 토큰 수 초과 기준 | 컨텍스트 토큰 수 이하 기준 | 요금 |
|---|---|---|---|---|
| 설정토큰의 기본 단가 | 요금표기본 요금 | 컨텍스트 토큰 수 초과 기준— | 컨텍스트 토큰 수 이하 기준상한 없음 | 요금 입력 · 입력 토큰 $0.0002 / 1K 토큰 출력 · 출력 토큰 $0.001 / 1K 토큰 입력 · 캐시 읽기 $0.00002 / 1K 토큰 입력 · 캐시 쓰기 $0.00025 / 1K 토큰 입력 · 캐시 쓰기, 1시간 $0.0004 / 1K 토큰 |
| 설정요청 길이 구간 1 | 요금표— | 컨텍스트 토큰 수 초과 기준0 | 컨텍스트 토큰 수 이하 기준100,000 | 요금 입력 · 입력 토큰 $0.0002 / 1K 토큰 출력 · 출력 토큰 $0.001 / 1K 토큰 입력 · 캐시 읽기 $0.00002 / 1K 토큰 입력 · 캐시 쓰기 $0.00025 / 1K 토큰 입력 · 캐시 쓰기, 1시간 $0.0004 / 1K 토큰 |
| 설정요청 길이 구간 2 | 요금표— | 컨텍스트 토큰 수 초과 기준100,000 | 컨텍스트 토큰 수 이하 기준상한 없음 | 요금 입력 · 입력 토큰 $0.0002 / 1K 토큰 출력 · 출력 토큰 $0.001 / 1K 토큰 입력 · 캐시 읽기 $0.00002 / 1K 토큰 입력 · 캐시 쓰기 $0.00025 / 1K 토큰 입력 · 캐시 쓰기, 1시간 $0.002 / 1K 토큰 |
Ailoot는 요청 전에 예상 금액을 미리 확보합니다. 결과를 받은 뒤 측정된 사용량을 기준으로 최종 요금을 정산합니다. 스트리밍 정산에는 최종 사용량 기록을 사용합니다. 금액 확보와 정산 방식 →
요청 예제
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": "~anthropic/claude-haiku-latest", "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='~anthropic/claude-haiku-latest',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='~anthropic/claude-haiku-latest',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")
결과 수신 및 저장
Ailoot Ultra · OpenAI Chat
json 또는 SSE
완료된 결과 모두 보관
반환된 완전한 응답, 파일, 콘텐츠 부분을 모두 보관하세요.
각 선택지와 그 콘텐츠·도구 호출·추론을 모두 보존하세요. SSE에서는 선택지/도구 인덱스별로 증분을 조합하고 최종 종료 사유와 사용량을 유지하세요.
원래 응답을 확인해야 할 경우
요청/응답 ID와 헤더를 보존하세요. 텍스트 작업을 조회하는 범용 URL은 제공되지 않습니다.
응답 필드
| 필드 | 유형 |
|---|---|
필드choices[].index | 유형integer |
필드choices[].message.content | 유형string|null |
필드choices[].message.tool_calls | 유형tool_call[] |
필드choices[].message.reasoning_content | 유형string |
필드choices[].message.reasoning_details | 유형object|array |
필드choices[].finish_reason | 유형string|null |
필드usage | 유형object |
오류와 다음 단계
| 응답 | 조건 | 다음 단계 |
|---|---|---|
응답400 · invalid_request_error | 조건필수 필드, 자료 표현 방식 또는 파라미터 값이 올바르지 않음 | 다음 단계새 생성 요청 전에 표시된 필드를 수정하세요. |
별칭
모델 별칭
Ailoot Ultra anthropic/claude-haiku-5.5, ~anthropic/claude-haiku-latest
메서드 경로 별칭
위에 표시된 메서드 경로를 사용하세요.
관련 호출용 ID
Ailoot Ultra · Anthropic Messages POST /v1/messages ~anthropic/claude-haiku-latest
~anthropic/claude-haiku-latest
~anthropic/claude-haiku-latestanthropic/claude-haiku-5.5~anthropic/claude-haiku-latest
시작하기
Claude Haiku 5.5는 분류, 추출, 요약, 라우팅과 범위를 좁힌 에이전트 작업을 위한 Anthropic의 소형 모델입니다. 텍스트 및 이미지 이해와 적응형 추론을 결합하며, 빠른 응답이 필요한 반복 작업을 위해 설계되었습니다.
- 허용 입력
- 텍스트
- 결과
- json · sse
Ailoot에서 사용 가능 · 입력 및 메서드
Ailoot Ultra · Anthropic Messages POST /v1/messages
- 입력
text- 출력
json,sse- 출력 형식
- JSON 또는 SSE
| 필드 | 유형 | 요건 | 값과 한도 | 기본값 |
|---|---|---|---|---|
필드model | 유형string | 요건필수 | 값과 한도 ~anthropic/claude-haiku-latest | 기본값— |
필드messages | 유형message[] | 요건필수 | 값과 한도 | 기본값— |
필드messages[].role | 유형string | 요건필수 | 값과 한도 user, assistant | 기본값— |
필드messages[].content | 유형string | 요건필수 | 값과 한도 | 기본값— |
필드max_tokens | 유형integer | 요건필수 | 값과 한도 | 기본값— |
필드stream | 유형boolean | 요건선택 사항 | 값과 한도 | 기본값false |
입력 자료 조합
텍스트 · UTF-8 텍스트
messages[].content 문자열
메서드 매개변수와 수명 주기
| 매개변수 | 명세 |
|---|---|
매개변수content_type | 명세application/json |
매개변수required | 명세model, messages, max_tokens |
매개변수optional_controls | 명세stream |
매개변수material_types | 명세text |
매개변수text_file_material | 명세실제 UTF-8 문서를 읽고 그 텍스트를 지정된 입력 또는 메시지 콘텐츠 문자열에 넣으세요. |
수명 주기: synchronous_or_streamed
요금
요금 정보는 요청 옵션을 추가하지 않습니다. 지원되는 매개변수는 선택한 메서드에 표시됩니다.
- 빠른 모드
- 표준 요금 빠른 모드를 선택한 경우
- Flex 모드
- 표준 요금 flex 모드를 선택한 경우
- 최대 추론 수준
- 표준 요금 최대 추론 수준에 default 조정값을 적용하는 경우
- 추론 수준 · 높음
- 표준 요금 추론 수준이 높음인 경우
- 추론 수준 · 낮음
- 표준 요금 추론 수준이 낮음인 경우
- 추론 수준 · 최대
- 표준 요금 추론 수준이 최대인 경우
- 추론 수준 · 중간
- 표준 요금 추론 수준이 중간인 경우
- 추론 수준 · xhigh
- 표준 요금 추론 수준이 xhigh인 경우
Ailoot 요금
설정별 가격
각 요금을 표시된 조건과 대조하세요. 서로 대체되는 설정 묶음마다 하나의 요금만 적용하세요.
| 설정 | 요금표 | 컨텍스트 토큰 수 초과 기준 | 컨텍스트 토큰 수 이하 기준 | 요금 |
|---|---|---|---|---|
| 설정토큰의 기본 단가 | 요금표기본 요금 | 컨텍스트 토큰 수 초과 기준— | 컨텍스트 토큰 수 이하 기준상한 없음 | 요금 입력 · 입력 토큰 $0.0002 / 1K 토큰 출력 · 출력 토큰 $0.001 / 1K 토큰 입력 · 캐시 읽기 $0.00002 / 1K 토큰 입력 · 캐시 쓰기 $0.00025 / 1K 토큰 입력 · 캐시 쓰기, 1시간 $0.0004 / 1K 토큰 |
| 설정요청 길이 구간 1 | 요금표— | 컨텍스트 토큰 수 초과 기준0 | 컨텍스트 토큰 수 이하 기준100,000 | 요금 입력 · 입력 토큰 $0.0002 / 1K 토큰 출력 · 출력 토큰 $0.001 / 1K 토큰 입력 · 캐시 읽기 $0.00002 / 1K 토큰 입력 · 캐시 쓰기 $0.00025 / 1K 토큰 입력 · 캐시 쓰기, 1시간 $0.0004 / 1K 토큰 |
| 설정요청 길이 구간 2 | 요금표— | 컨텍스트 토큰 수 초과 기준100,000 | 컨텍스트 토큰 수 이하 기준상한 없음 | 요금 입력 · 입력 토큰 $0.0002 / 1K 토큰 출력 · 출력 토큰 $0.001 / 1K 토큰 입력 · 캐시 읽기 $0.00002 / 1K 토큰 입력 · 캐시 쓰기 $0.00025 / 1K 토큰 입력 · 캐시 쓰기, 1시간 $0.002 / 1K 토큰 |
Ailoot는 요청 전에 예상 금액을 미리 확보합니다. 결과를 받은 뒤 측정된 사용량을 기준으로 최종 요금을 정산합니다. 스트리밍 정산에는 최종 사용량 기록을 사용합니다. 금액 확보와 정산 방식 →
요청 예제
Ailoot Ultra · Anthropic Messages
{
"model": "~anthropic/claude-haiku-latest",
"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': '~anthropic/claude-haiku-latest', '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': '~anthropic/claude-haiku-latest', '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))
결과 수신 및 저장
Ailoot Ultra · Anthropic Messages
JSON 또는 SSE
완료된 결과 모두 보관
반환된 완전한 응답, 파일, 콘텐츠 부분을 모두 보관하세요.
모든 콘텐츠 블록, 사고 서명, 실제 도구 사용 ID를 보존하세요. 모든 SSE 블록 증분을 조합하세요. 첫 텍스트 블록이 전체 출력은 아닙니다.
원래 응답을 확인해야 할 경우
요청/응답 ID와 헤더를 보존하세요. 텍스트 작업을 조회하는 범용 URL은 제공되지 않습니다.
응답 필드
| 필드 | 유형 |
|---|---|
필드id | 유형string |
필드model | 유형string |
필드content[] | 유형text|thinking|tool_use|other content block |
필드stop_reason | 유형string|null |
필드usage | 유형object |
오류와 다음 단계
| 응답 | 조건 | 다음 단계 |
|---|---|---|
응답400 · invalid_request_error | 조건필수 필드, 자료 표현 방식 또는 파라미터 값이 올바르지 않음 | 다음 단계새 생성 요청 전에 표시된 필드를 수정하세요. |
별칭
모델 별칭
Ailoot Ultra anthropic/claude-haiku-5.5, ~anthropic/claude-haiku-latest
메서드 경로 별칭
위에 표시된 메서드 경로를 사용하세요.
관련 호출용 ID
FAQ · Anthropic: Claude Haiku 5.5
- 어떤 입력과 결과를 사용할 수 있나요?
POST /v1/chat/completions·anthropic/claude-haiku-5.5:text→textPOST /v1/messages·anthropic/claude-haiku-5.5:text→json,ssePOST /v1/chat/completions·~anthropic/claude-haiku-latest:text→textPOST /v1/messages·~anthropic/claude-haiku-latest:text→json,sse- 요청은 어떤 필드를 사용하나요?
POST /v1/chat/completions·anthropic/claude-haiku-5.5:model,messages,stream,modalities,providerPOST /v1/messages·anthropic/claude-haiku-5.5:model,messages,max_tokens,streamPOST /v1/chat/completions·~anthropic/claude-haiku-latest:model,messages,stream,modalities,providerPOST /v1/messages·~anthropic/claude-haiku-latest:model,messages,max_tokens,stream- 어떤 제한이 적용되나요?
POST /v1/chat/completions·anthropic/claude-haiku-5.5:messages.min_items:1POST /v1/chat/completions·~anthropic/claude-haiku-latest:messages.min_items:1