소개
xAI Grok 계열에서 코딩을 맡는 Grok 4.5의 OpenAI 호환 채팅입니다. 한 턴에 text 파트와 image_url 파트를 함께 실을 수 있고, 추론 강도는 xhigh까지 올라가며, 응답 하나는 450,000 토큰에 이릅니다.
xAI는 Grok 4.5를 에이전트형 소프트웨어 개발과 엔지니어링, 워크플로 작업을 위해 공개했고 과학·공학·수학 데이터를 더해 학습시켰으며 grok-4.5-latest와 grok-build-latest라는 별칭으로도 제공합니다. 여기서는 /v1/chat/completions 엔드포인트 하나로 공개하며, 최대 256개의 순서 있는 메시지에 걸쳐 500,000 토큰까지 읽고 응답 하나로 450,000 토큰까지 돌려줍니다. 입력과 캐시 입력, 출력은 서로 따로 계측됩니다. 긴 앞부분을 되풀이하는 에이전트 루프가 실제로 값을 치르는 곳이 바로 이 구분입니다.
핵심 기능 및 하이라이트
다시 보내는 앞부분은 따로 계량됩니다
에이전트 루프는 매 단계마다 같은 system 프롬프트, 같은 tool 정의, 같은 파일 목록을 보내고 새로운 것은 대화의 끝부분뿐입니다. 캐시에서 제공된 입력은 usage에 따로 집계되어 더 싼 자체 단가로 계측됩니다. 켜야 할 것은 없습니다. 단계 사이에 앞쪽 메시지를 그대로 두는 것이 이 기법의 전부이고, 앞부분이 실제로 얼마나 캐시에 얹혔는지는 추측이 아니라 응답이 알려 줍니다.
입력은 텍스트와 이미지, 출력은 텍스트
content는 일반 문자열이거나 파트 배열이고 이 모델은 두 가지 파트를 선언합니다. {"type": "text", "text": "..."} 와 {"type": "image_url", "image_url": {"url": "...", "detail": "auto|low|high"}} 입니다. 스크린숏과 그에 대한 질문이 같은 턴에 도착하고, 이미지 내용은 500,000 토큰 컨텍스트 윈도우에 더해지는 게 아니라 그 안에서 셉니다. 이 엔드포인트에 file이나 PDF 파트는 없으므로 명세서도 로그도 diff도 붙여 넣은 텍스트로 전달해야 합니다. 추론 강도는 low, medium, high, xhigh이고 기본값은 high입니다. 추론 강도는 출력 토큰으로 소비되므로 청구액뿐 아니라 응답 상한에도 반영됩니다.
요청 파라미터
| 파라미터 | 필수 | 설명 |
|---|---|---|
messages | 예 | 최대 256개 턴입니다. content는 user 메시지 하나 안에서 text 파트와 |
reasoning_effort | 아니요 | low, medium, high, xhigh 중 하나입니다. 기본값은 high이며, 추론 강도는 출력 토큰으로 소비되므로 답이 짧아도 xhigh는 청구액을 올립니다. |
max_tokens | 아니요 | 눈에 보이는 응답 길이의 상한을 정하며, 최댓값은 450,000 토큰입니다. 기본값 4,096은 긴 답변을 경고 없이 잘라냅니다. |
temperature | 아니요 | 0에서 2까지, 기본값은 0.7입니다. 패치 두 개나 같은 과제의 실행 두 번을 비교할 때는 0으로 두세요. |
top_p | 아니요 | 0.01에서 1까지입니다. 이 값이나 temperature 중 하나만 움직이세요. |
tools | 아니요 | 요청당 함수 정의 최대 128개입니다. 단계 사이에 순서를 그대로 두면 앞부분이 캐시에 얹히기 쉬워집니다. 128개 이하 |
parallel_tool_calls | 아니요 | true 또는 false이며 기본값은 true입니다. true이면 모델이 한 턴에 여러 도구 호출을 요청할 수 있습니다. 기본값: |
tool_choice | 아니요 | auto, none, required, 또는 호출할 함수를 지정한 객체입니다. |
response_format | 아니요 | 답을 사람이 아니라 에이전트의 다음 단계가 파싱한다면 JSON 객체를 요청하세요. |
요금
입력 $2 / 출력 $6 100만 토큰당; 200K 토큰 이상 프롬프트: 입력 $4 / 출력 $12
총입력에는 캐시된 토큰도 포함됩니다. 입력이 200,000 토큰 이상이면 해당 요청의 일반 입력, 캐시 입력, 출력 모두에 장문 컨텍스트 요금을 적용하며 그 미만은 표준 요금을 적용합니다. 캐시 입력은 새 입력과 따로 계측되고 그보다 낮은 단가가 붙습니다. 출력에는 추론 토큰도 포함되므로 보이는 답의 길이가 같아도 추론 강도를 올리면 비용은 늘어납니다. 제출 전 예산을 확인하세요. 최초 보류 금액은 캐시 절감을 가정하지 않고 산정하며, 정산 시 실측 사용량과의 차액을 돌려드립니다.
활용 사례
루프 전체를 컨텍스트에 담은 채로 돌립니다
코딩 에이전트는 매 단계마다 지시와 tool 정의, 파일 목록을 다시 보내고 그때마다 새 토큰 수백 개를 더합니다. 그 전부가 500,000 토큰 컨텍스트 윈도우에 들어가고 반복되는 부분은 캐시 입력으로 계측됩니다. 장문 컨텍스트 요율로 넘어가는 시점은 입력과 캐시 입력을 합쳐 200,000 토큰이 될 때뿐이며, 제출 전 추정치가 값을 치르기 전에 알려 줍니다.
모듈과 테스트와 실패를 한 턴에 담아 리팩터링합니다
모듈 본문과 테스트 파일, 실패한 출력을 함께 붙여 넣고 패치와 그 근거를 요구하세요. 쓰기 전에 끝까지 생각해야 하는 변경이라면 reasoning_effort를 xhigh로 올리세요. 첫 줄이 나오기까지 출력 토큰을 더 쓰지만, 한 줄씩 검토할 변경이라면 치를 만한 비용입니다.
스크린숏과 스택 트레이스를 함께 읽힙니다
실패한 대시보드를 detail high의 image_url 파트로 붙이고 같은 메시지에 스택 트레이스를 텍스트로 넣은 다음, 가능성 순으로 원인을 나열하게 하세요. 그림과 로그가 한 턴에 도착하므로 모델은 사용자의 설명이 아니라 패널 자체를 읽습니다.
마이그레이션 문서를 응답 하나로 받습니다
출력 450,000 토큰이면 마이그레이션 계획 전체나 다시 쓴 모듈, 번역한 매뉴얼이 장 단위 반복 없이 응답 하나에 담깁니다. max_tokens는 명시적으로 올리세요. 기본값 4,096은 오류 없이 긴 생성을 잘라 버립니다. 잘린 결과는 완성된 답과 가장 비슷하게 생긴 실패입니다.
프롬프트 가이드 및 실전 팁
추론 강도는 프로젝트가 아니라 작업마다 고릅니다
reasoning_effort의 기본값은 high라서, 생략하는 순간 이미 신중한 작업과 거기에 딸린 출력 토큰 값을 치르는 셈입니다. 호출마다 정하세요. 마이그레이션이나 증명에는 xhigh, 평범한 검토에는 high, 로그 한 줄 분류 같은 기계적인 작업에는 low입니다. 추론 강도는 출력 토큰으로 지불되므로 xhigh의 짧은 답이 low의 긴 답보다 비쌀 수도 있습니다.
결과물 자체를 요구하고, 붙여 넣으면 도는 본문으로 보냅니다
출력 형식은 system 메시지에 고정하고 근거가 되는 자료, 즉 파일과 로그와 스크린숏은 user 턴에 실으세요. 그래야 모델이 문제를 푸는 동안 형식까지 짐작하지 않습니다.
curl https://api.spicyapi.ai/v1/chat/completions \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "xai/grok-4.5",
"messages": [
{"role": "system", "content": "Return the patched file in full. No diffs, no commentary, no omitted regions."},
{"role": "user", "content": [
{"type": "text", "text": "Both panels are the same service before and after the deploy. Which one regressed, and what in the diff explains it?"},
{"type": "image_url", "image_url": {"url": "https://cdn.spicyapi.ai/models/examples/inputs/c681580c3c6a0b63.jpeg", "detail": "high"}}
]}
],
"reasoning_effort": "high",
"max_tokens": 32000
}'
손대기 전에 usage부터 읽습니다
응답은 입력과 캐시 입력, 출력 토큰을 따로 보고합니다. '내 앞부분이 캐시에 얹혔나'에 정직하게 답해 주는 것은 이 숫자뿐입니다. 대화의 모양이 아니라 이 숫자를 보고 조정하세요. 단계를 거듭해도 캐시 몫이 0이라면 앞쪽 메시지가 호출마다 바뀌고 있다는 뜻입니다. system 프롬프트 안의 시각이나 순서가 뒤바뀐 tool 목록이 흔한 원인이고, 그 내용을 요청 뒤쪽으로 옮기는 것만으로 대개 해결됩니다. 긴 응답은 stream: true로 흘려보내세요. chat.completion.chunk 이벤트가 data: [DONE]까지 옵니다.
API 빠른 시작
curl --fail-with-body -sN https://api.spicyapi.ai/v1/chat/completions \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"model": "xai/grok-4.5/chat",
"messages": [
{
"role": "user",
"content": "Summarise the following release notes into three bullet points."
}
],
"stream": true
}' \
| jq --unbuffered -Rrj 'select(startswith("data: ")) | .[6:] | select(. != "[DONE]") | fromjson | if .error then "\n[error] \(.error.message)\n" else (.choices[0].delta.content? // empty) end'
인증, 전체 스키마, 폴링과 오류 처리는 API 레퍼런스에서 확인하세요.










