APIMaster.ai

Claude API Python 튜토리얼 2026 | APIMaster.ai

Python에서 Claude API를 사용하는 방법. APIMaster.ai를 통해 Anthropic SDK 및 OpenAI 호환 클라이언트를 사용한 완전한 예제—채팅, 스트리밍, 비전, 함수 호출.

Claude API Python 튜토리얼

이 가이드는 네이티브 Anthropic SDK와 OpenAI 호환 클라이언트를 사용하여 Python에서 Claude API를 활용하는 방법을 다룹니다. 모든 예제는 APIMaster.ai에서 작동합니다—자신의 base URL과 API 키로 교체하세요.

설치

pip install anthropic          # 네이티브 Anthropic SDK
pip install openai             # OpenAI 호환 (선택 사항)

기본 설정

import anthropic

client = anthropic.Anthropic(
    api_key="YOUR_APIMASTER_KEY",
    base_url="https://apimaster.ai",  # Anthropic SDK의 경우 /v1 없음
)

또는 OpenAI SDK 사용 (이미 OpenAI를 사용 중이라면 더 쉬움):

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_APIMASTER_KEY",
    base_url="https://apimaster.ai/v1",
)

첫 번째 Claude API 호출

import anthropic

client = anthropic.Anthropic(
    api_key="YOUR_APIMASTER_KEY",
    base_url="https://apimaster.ai",
)

message = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "Python에서 리스트와 튜플의 차이점을 설명해 주세요."}
    ],
)

print(message.content[0].text)

시스템 프롬프트

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=512,
    system="당신은 시니어 Python 엔지니어입니다. 간결하게 답변하고 코드 예제를 사용하세요.",
    messages=[
        {"role": "user", "content": "중첩 리스트를 평탄화하는 가장 빠른 방법은 무엇인가요?"}
    ],
)
print(response.content[0].text)

다중 턴 대화

conversation = []

def chat(user_message):
    conversation.append({"role": "user", "content": user_message})
    response = client.messages.create(
        model="claude-sonnet-4-6",
        max_tokens=1024,
        messages=conversation,
    )
    assistant_message = response.content[0].text
    conversation.append({"role": "assistant", "content": assistant_message})
    return assistant_message

print(chat("Python에서 데코레이터란 무엇인가요?"))
print(chat("실제 예제를 보여줄 수 있나요?"))

스트리밍 응답

스트리밍은 토큰이 생성될 때마다 반환합니다—긴 출력에 더 나은 사용자 경험을 제공합니다:

with client.messages.stream(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    messages=[{"role": "user", "content": "requests와 BeautifulSoup을 사용하는 Python 웹 스크래퍼를 작성해 주세요."}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)
print()  # 끝에 줄바꿈

비전: 이미지 분석

Claude Sonnet과 Opus는 이미지 입력(base64 또는 URL)을 지원합니다:

import base64

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

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=512,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": "image/png",
                        "data": image_data,
                    },
                },
                {"type": "text", "text": "이 차트가 무엇을 보여주는지 요약해 주세요."},
            ],
        }
    ],
)
print(response.content[0].text)

도구 사용 (함수 호출)

tools = [
    {
        "name": "get_weather",
        "description": "도시의 현재 날씨 가져오기",
        "input_schema": {
            "type": "object",
            "properties": {
                "city": {"type": "string", "description": "도시 이름"},
            },
            "required": ["city"],
        },
    }
]

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=256,
    tools=tools,
    messages=[{"role": "user", "content": "도쿄의 날씨는 어떤가요?"}],
)

# Claude가 도구를 호출하려는지 확인
if response.stop_reason == "tool_use":
    tool_call = next(b for b in response.content if b.type == "tool_use")
    print(f"도구: {tool_call.name}, 입력: {tool_call.input}")

비동기 사용

import asyncio
import anthropic

async def main():
    client = anthropic.AsyncAnthropic(
        api_key="YOUR_APIMASTER_KEY",
        base_url="https://apimaster.ai",
    )
    response = await client.messages.create(
        model="claude-sonnet-4-6",
        max_tokens=256,
        messages=[{"role": "user", "content": "안녕하세요!"}],
    )
    print(response.content[0].text)

asyncio.run(main())

오류 처리

import anthropic

try:
    response = client.messages.create(
        model="claude-sonnet-4-6",
        max_tokens=256,
        messages=[{"role": "user", "content": "안녕"}],
    )
except anthropic.AuthenticationError:
    print("잘못된 API 키")
except anthropic.RateLimitError:
    print("속도 제한—재시도 로직 추가")
except anthropic.APIStatusError as e:
    print(f"API 오류 {e.status_code}: {e.message}")

Python 프로젝트에 적합한 Claude 모델 선택

작업 모델 이유
챗봇, Q&A claude-haiku-4-5 빠르고 저렴
코드 생성 claude-sonnet-4-6 최적의 균형
복잡한 추론 claude-opus-4-8 최고 정확도
문서 분석 claude-sonnet-4-6 1M 컨텍스트

Claude API 액세스 얻기

자주 묻는 질문

Claude API Python 라이브러리를 어떻게 설치하나요? 공식 SDK를 사용하려면 pip install anthropic을 실행하고, APIMaster의 OpenAI 호환 엔드포인트를 통해 Claude 모델을 사용하려면 pip install openai를 실행하세요.

Claude API에 어떤 Python SDK를 사용해야 하나요? anthropic SDK가 공식 선택이며 모든 Claude 전용 기능(도구 사용, 비전, 스트리밍)을 지원합니다. openai SDK는 APIMaster의 호환성 레이어를 통해 작동합니다—이미 OpenAI를 사용 중이고 모델을 전환하려는 경우 유용합니다.

Python에서 Claude API 응답을 스트리밍하려면 어떻게 하나요? openai 라이브러리에서는 stream=True를 전달하고, anthropic SDK에서는 client.messages.stream()을 사용하세요. 위의 스트리밍 예제를 참조하세요.

Claude API가 함수 호출(도구 사용)을 지원하나요? 네—Claude는 네이티브 Anthropic SDK와 APIMaster의 OpenAI 호환 엔드포인트 모두에서 표준 tools 매개변수를 사용한 도구 사용을 지원합니다.

Python에서 Claude의 최대 컨텍스트 창은 얼마인가요? Claude Sonnet 4.6과 Opus 4.8은 각각 1M 토큰을 지원합니다. messages 배열에 매우 긴 문서를 직접 전달할 수 있습니다.

APIMaster.ai에 등록하여 통합 엔드포인트, 실시간 가격 및 지문 확인 데이터와 함께 Claude API 액세스를 받으세요.

참고: Claude API 가격 · Claude API 키 얻는 방법