DEV Community

Cover image for Claude Opus 4.7 API 사용법
Rihpig
Rihpig

Posted on • Originally published at apidog.com

Claude Opus 4.7 API 사용법

TL;DR

Claude Opus 4.7 (claude-opus-4-7)은 Anthropic의 최상위 GA 모델입니다. 1M 토큰 컨텍스트 창, 128K 최대 출력, 적응형 사고(adaptive thinking), 새로운 xhigh 노력 수준, 작업 예산, 고해상도 비전(3.75 MP), 도구 사용을 지원합니다. 본 가이드는 API 설정, 인증, Python/TypeScript/cURL 실전 코드 예제를 포함합니다.

Apidog를 지금 사용해보세요

소개

Anthropic은 Claude Opus 4.7을 2026년 4월 16일에 출시했습니다. 이 모델은 Claude 시리즈 중 최고 성능을 자랑하며, 복잡한 추론, 자율 에이전트, 비전 중심 워크플로우에 최적화되어 있습니다.

이전 Claude API 사용 경험이 있다면 기본 인터페이스가 익숙할 것입니다. 단, Opus 4.7은 사고 예산, 샘플링 매개변수(temperature, top_p, top_k) 지원 중단 등 주요 변경 사항이 있습니다. 사고 모드는 적응형(adaptive)만 지원하며, 기본적으로 꺼져 있으니 직접 활성화해야 합니다.

이 글에선 API 키 획득, 첫 요청, 적응형 사고/고해상도 이미지/도구 사용/작업 예산/스트리밍 등 전체 워크플로우를 단계별로 다룹니다. 모든 코드는 즉시 복사·실행 가능하며, Apidog를 통한 API 호출 디버깅 및 다단계 도구 사용 대화도 예시로 제공합니다.

시작하기

API 키 가져오기

  1. console.anthropic.com 가입
  2. 대시보드 → API Keys 이동
  3. Create Key 클릭, 키 복사
  4. 환경 변수로 저장:
   export ANTHROPIC_API_KEY="sk-ant-your-key-here"
Enter fullscreen mode Exit fullscreen mode

SDK 설치

Python:

pip install anthropic
Enter fullscreen mode Exit fullscreen mode

TypeScript/Node.js:

npm install @anthropic-ai/sdk
Enter fullscreen mode Exit fullscreen mode

API 엔드포인트

  • 모든 요청은:
  POST https://api.anthropic.com/v1/messages
Enter fullscreen mode Exit fullscreen mode
  • 필수 헤더:
  x-api-key: YOUR_API_KEY
  anthropic-version: 2023-06-01
  content-type: application/json
Enter fullscreen mode Exit fullscreen mode

기본 텍스트 요청

가장 단순한 API 호출 예시.

Python:

import anthropic

client = anthropic.Anthropic()

message = client.messages.create(
    model="claude-opus-4-7",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "HTTP/2 서버 푸시가 세 문장으로 어떻게 작동하는지 설명해주세요."}
    ]
)

print(message.content[0].text)
Enter fullscreen mode Exit fullscreen mode

TypeScript:

import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic();

const message = await client.messages.create({
  model: "claude-opus-4-7",
  max_tokens: 1024,
  messages: [
    { role: "user", content: "HTTP/2 서버 푸시가 세 문장으로 어떻게 작동하는지 설명해주세요." }
  ],
});

console.log(message.content[0].text);
Enter fullscreen mode Exit fullscreen mode

cURL:

curl https://api.anthropic.com/v1/messages \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-opus-4-7",
    "max_tokens": 1024,
    "messages": [
      {"role": "user", "content": "HTTP/2 서버 푸시가 세 문장으로 어떻게 작동하는지 설명해주세요."}
    ]
  }'
Enter fullscreen mode Exit fullscreen mode

적응형 사고

Opus 4.7에서 유일하게 지원되는 사고 모드입니다. 작업 복잡성에 따라 추론 토큰을 자동 할당합니다. 기본값은 OFF이므로 명시적으로 활성화 필요.

Python:

message = client.messages.create(
    model="claude-opus-4-7",
    max_tokens=16384,
    thinking={
        "type": "adaptive",
        "display": "summarized"  # optional: 사고 내용 출력
    },
    messages=[
        {"role": "user", "content": "이 알고리즘의 시간 복잡도를 분석하고 최적화 방안을 제안해주세요:\n\ndef find_pairs(arr, target):\n    result = []\n    for i in range(len(arr)):\n        for j in range(i+1, len(arr)):\n            if arr[i] + arr[j] == target:\n                result.append((arr[i], arr[j]))\n    return result"}
    ]
)

for block in message.content:
    if block.type == "thinking":
        print("Thinking:", block.thinking)
    elif block.type == "text":
        print("Response:", block.text)
Enter fullscreen mode Exit fullscreen mode

주요 포인트:

  • "type": "adaptive"로 사고 활성화 (budget_tokens 사용 금지)
  • "display": "summarized"로 응답 내 사고 내용 표시 (기본값은 "omitted")
  • 추론 깊이 제어엔 effort 매개변수 결합

Effort 매개변수 사용법

message = client.messages.create(
    model="claude-opus-4-7",
    max_tokens=16384,
    thinking={"type": "adaptive"},
    output_config={"effort": "xhigh"},  # xhigh | high | medium | low
    messages=[
        {"role": "user", "content": "이 풀 리퀘스트를 보안 취약점 여부에 대해 검토해주세요..."}
    ]
)
Enter fullscreen mode Exit fullscreen mode

Opus 4.7 노력 수준:

수준 용도
xhigh 코딩, 에이전트, 복잡 추론
high 고난도 작업
medium 속도-품질 균형
low 간단·빠른 작업

고해상도 비전

Opus 4.7은 최대 2,576픽셀(긴 변, 3.75MP) 이미지를 1:1 픽셀 매핑으로 지원합니다.

Python — URL 이미지 분석:

message = client.messages.create(
    model="claude-opus-4-7",
    max_tokens=4096,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "url",
                        "url": "https://example.com/architecture-diagram.png"
                    }
                },
                {
                    "type": "text",
                    "text": "이 아키텍처 다이어그램을 설명해주세요. 모든 서비스와 그들 간의 연결을 나열해주세요."
                }
            ]
        }
    ]
)

print(message.content[0].text)
Enter fullscreen mode Exit fullscreen mode

Python — base64 이미지 분석:

import base64

with open("screenshot.png", "rb") as f:
    image_data = base64.standard_b64encode(f.read()).decode("utf-8")

message = client.messages.create(
    model="claude-opus-4-7",
    max_tokens=4096,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": "image/png",
                        "data": image_data
                    }
                },
                {
                    "type": "text",
                    "text": "이 스크린샷에서 어떤 UI 버그가 보이시나요?"
                }
            ]
        }
    ]
)
Enter fullscreen mode Exit fullscreen mode

참고: 고해상도 이미지는 토큰을 많이 소비합니다. 필요 시 이미지 크기를 줄여 비용 절감하세요.

도구 사용 (함수 호출)

Claude가 사용자 정의 함수를 호출할 수 있습니다. Opus 4.7은 기본적으로 추론을 우선시하므로, 도구 호출 빈도를 높이려면 effort 값을 올리세요.

Python:

import json

tools = [
    {
        "name": "get_weather",
        "description": "도시의 현재 날씨를 가져옵니다. 기온, 상태, 습도를 반환합니다.",
        "input_schema": {
            "type": "object",
            "properties": {
                "city": {
                    "type": "string",
                    "description": "도시 이름, 예: 'San Francisco'"
                },
                "units": {
                    "type": "string",
                    "enum": ["celsius", "fahrenheit"],
                    "description": "기온 단위"
                }
            },
            "required": ["city"]
        }
    }
]

messages = [
    {"role": "user", "content": "지금 도쿄의 날씨는 어떤가요?"}
]

# 첫 번째 호출 — Claude가 도구를 요청
response = client.messages.create(
    model="claude-opus-4-7",
    max_tokens=1024,
    tools=tools,
    messages=messages,
)

# 도구 호출 처리
if response.stop_reason == "tool_use":
    messages.append({"role": "assistant", "content": response.content})

    tool_results = []
    for block in response.content:
        if block.type == "tool_use":
            # 여기에 실제 함수 실행
            result = {"temperature": 22, "conditions": "부분적으로 흐림", "humidity": 65}

            tool_results.append({
                "type": "tool_result",
                "tool_use_id": block.id,
                "content": json.dumps(result)
            })

    messages.append({"role": "user", "content": tool_results})

    # 두 번째 호출 — Claude가 결과 사용
    final_response = client.messages.create(
        model="claude-opus-4-7",
        max_tokens=1024,
        tools=tools,
        messages=messages,
    )
    print(final_response.content[0].text)
Enter fullscreen mode Exit fullscreen mode

에이전트 루프 패턴

여러 도구 호출을 순차 실행하는 에이전트 패턴 예시:

def run_agent(system_prompt: str, tools: list, user_message: str) -> str:
    messages = [{"role": "user", "content": user_message}]

    while True:
        response = client.messages.create(
            model="claude-opus-4-7",
            max_tokens=16384,
            system=system_prompt,
            tools=tools,
            thinking={"type": "adaptive"},
            output_config={"effort": "xhigh"},
            messages=messages,
        )

        messages.append({"role": "assistant", "content": response.content})

        if response.stop_reason != "tool_use":
            return "".join(
                block.text for block in response.content
                if hasattr(block, "text")
            )

        tool_results = []
        for block in response.content:
            if block.type == "tool_use":
                result = execute_tool(block.name, block.input)
                tool_results.append({
                    "type": "tool_result",
                    "tool_use_id": block.id,
                    "content": result,
                })

        messages.append({"role": "user", "content": tool_results})
Enter fullscreen mode Exit fullscreen mode

작업 예산 (베타)

작업 예산은 전체 에이전트 루프에서 토큰 한도를 부여합니다. 모델은 예산 내에서 작업을 마무리합니다.

response = client.beta.messages.create(
    model="claude-opus-4-7",
    max_tokens=128000,
    output_config={
        "effort": "high",
        "task_budget": {"type": "tokens", "total": 128000},
    },
    messages=[
        {"role": "user", "content": "코드베이스를 검토하고 리팩토링 계획을 제안해주세요."}
    ],
    betas=["task-budgets-2026-03-13"],
)
Enter fullscreen mode Exit fullscreen mode

제약:

  • 최소 예산: 20,000 토큰
  • 권고(soft limit)이며 초과 가능
  • max_tokens와는 별도(모델이 볼 수 없음)
  • 베타 헤더 task-budgets-2026-03-13 필요

스트리밍 응답

실시간 출력을 원한다면 스트리밍 API를 사용하세요.

Python:

with client.messages.stream(
    model="claude-opus-4-7",
    max_tokens=4096,
    messages=[
        {"role": "user", "content": "오류 처리가 포함된 CSV 파일을 파싱하는 Python 함수를 작성해주세요."}
    ]
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)
Enter fullscreen mode Exit fullscreen mode

TypeScript:

const stream = await client.messages.stream({
  model: "claude-opus-4-7",
  max_tokens: 4096,
  messages: [
    { role: "user", content: "오류 처리가 포함된 CSV 파일을 파싱하는 Python 함수를 작성해주세요." }
  ],
});

for await (const event of stream) {
  if (event.type === "content_block_delta" && event.delta.type === "text_delta") {
    process.stdout.write(event.delta.text);
  }
}
Enter fullscreen mode Exit fullscreen mode

참고: display: "summarized"을 설정하면 사고 블록이 먼저 스트리밍됩니다. 미설정 시 사고 후 텍스트가 일괄 출력됩니다.

프롬프트 캐싱

시스템 프롬프트, 긴 문서 등 반복되는 컨텍스트는 캐싱해 비용을 절감하세요.

response = client.messages.create(
    model="claude-opus-4-7",
    max_tokens=1024,
    system=[
        {
            "type": "text",
            "text": "당신은 선임 코드 리뷰어입니다. 보안 취약점, 성능 문제, 모범 사례 위반 여부에 대해 코드를 검토하세요...",
            "cache_control": {"type": "ephemeral"}
        }
    ],
    messages=[
        {"role": "user", "content": "이 함수를 검토해주세요:\n\ndef process_user_input(data):\n    return eval(data)"}
    ]
)
Enter fullscreen mode Exit fullscreen mode

Opus 4.7 캐시 가격:

작업 비용
5분 캐시 쓰기 $6.25 / MTok (1.25배)
1시간 캐시 쓰기 $10 / MTok (2배)
캐시 읽기 $0.50 / MTok (0.1배)

한 번의 캐시 읽기로 5분 캐시 쓰기 비용 상쇄. 두 번 읽으면 1시간 쓰기 비용 상쇄.

다단계 대화

메시지 배열에 추가해 여러 단계를 연결하세요.

messages = []

# 1단계
messages.append({"role": "user", "content": "할 일 앱을 위한 REST API를 만들어야 합니다."})

response = client.messages.create(
    model="claude-opus-4-7",
    max_tokens=4096,
    messages=messages,
)

messages.append({"role": "assistant", "content": response.content})

# 2단계
messages.append({"role": "user", "content": "JWT 토큰으로 인증을 추가해주세요."})

response = client.messages.create(
    model="claude-opus-4-7",
    max_tokens=4096,
    messages=messages,
)
Enter fullscreen mode Exit fullscreen mode

Apidog로 API 호출 테스트하기

Claude API 통합 개발 시 다단계 메시지, 도구 정의/결과, Base64 이미지, 스트리밍 등 복잡한 페이로드가 필요합니다. Apidog 같은 도구로 디버깅과 테스트를 효율화할 수 있습니다.

apidog-example

환경 설정:

  1. Apidog에서 새 프로젝트 생성, Claude Messages API 엔드포인트 추가
  2. ANTHROPIC_API_KEY를 환경 변수에 저장
  3. 필수 헤더(x-api-key, anthropic-version, content-type) 설정

도구 사용 흐름 테스트:

Apidog로 요청을 연결해 전체 도구 사용 루프를 시뮬레이션할 수 있습니다. 각 단계의 페이로드를 시각적으로 검증 가능.

모델 비교:

동일 프롬프트로 claude-opus-4-6claude-opus-4-7을 비교해 토큰, 응답 품질, 지연 시간 등을 분석하세요.

스키마 유효성 검사:

JSON 스키마로 예상 응답 포맷을 정의, 프롬프트/모델 변경 시 회귀 자동 포착.

일반적인 오류 및 해결 방법

오류 원인 해결 방법
400: thinking.budget_tokens 지원 안됨 확장 사고 구문 사용 thinking: {"type": "adaptive"}로 전환
400: temperature 지원 안됨 샘플링 매개변수 사용 temperature, top_p, top_k 제거
400: max_tokens 초과 새로운 토크나이저로 토큰 증가 max_tokens 증가 (최대 128,000)
429: Rate limited 과다 요청 지수 백오프, 티어 제한 확인
빈 사고 블록 사고 표시 기본값 "omitted" display: "summarized" 추가

가격 참조

사용량 비용
입력 토큰 $5 / MTok
출력 토큰 $25 / MTok
배치 입력 $2.50 / MTok
배치 출력 $12.50 / MTok
캐시 읽기 $0.50 / MTok
5분 캐시 쓰기 $6.25 / MTok
1시간 캐시 쓰기 $10 / MTok

Opus 4.7의 토크나이저는 4.6 대비 최대 35% 더 많은 토큰이 소모될 수 있습니다. 배포 전 /v1/messages/count_tokens로 예측 필수.

결론

Claude Opus 4.7은 Anthropic 제품군에서 가장 강력합니다. API는 Opus 4.6과 유사하지만, 사고 예산/샘플링 매개변수 제거로 인한 코드 수정이 필요합니다. 적응형 사고, xhigh 노력, 작업 예산, 고해상도 비전 등 새로운 기능으로 추론 품질과 비용 제어가 대폭 향상되었습니다.

실전 도입 시 기본 텍스트 요청부터 시작, 복잡도에 따라 적응형 사고/도구 사용/작업 예산을 계층화하세요. 통합 테스트, 페이로드 검증, 모델 버전 비교에는 Apidog를 적극 활용하세요.

Top comments (0)