CPN 한국어 자습서 · 러닝패스 2 / 4 — Building with the Claude API
API로 Claude에 접근하기
Accessing the API · Working with the API
챗봇 앱에서 사용자가 메시지를 보내면 응답이 나타나기까지, 뒤에서는 무슨 일이 일어날까요? 이 장에서는 Anthropic API 요청의 전체 생명주기를 다섯 단계로 따라가고, Claude 내부에서 텍스트가 만들어지는 과정도 직접 눌러 가며 들여다봅니다.
Stephen Grider · Anthropic 기술 스태프
이 모듈에서는 Claude에 접근해 텍스트를 생성하는 방법을 살펴봅니다. 작동 방식을 이해할 수 있도록, Anthropic API에 보내는 요청의 전체 생명주기를 따라가 보겠습니다. Claude 내부에서 무슨 일이 벌어지는지도 잠깐 들여다봅니다.
시작을 위해, 평범하고 표준적인 챗봇 앱을 떠올려 봅시다. 웹 앱을 만들면서 브라우저에 채팅 창을 보여 주고 싶다고 가정하겠습니다. 사용자가 메시지를 입력하고 전송을 누르면, 응답이 그냥 마법처럼 나타나기를 기대합니다. 앞서 말했듯, 이 텍스트가 생성되어 화면에 표시되기까지 뒤에서 무슨 일이 일어나는지 살펴보려 합니다. 이를 다섯 단계로 나누겠습니다. 다이어그램 위쪽에 정리해 두었고, 한 단계씩 따라가 봅니다.
사용자가 텍스트를 입력하고 전송을 누르면, 그 텍스트는 개발자인 여러분이 구현한 서버로 보내집니다. 이 단계를 짚는 이유는 한 가지를 분명히 하기 위해서입니다. Anthropic API를 웹이나 모바일 앱에서 직접 호출하면 안 됩니다. API에 요청할 때는 반드시 비밀 API 키를 포함해야 하는데, 이 키를 비밀로 지키는 가장 좋은 방법은 클라이언트 앱에 절대 넣지 않고, 여러분이 구현한 서버를 통해서만 요청하는 것입니다.
2단계로 갑니다. 서버가 클라이언트로부터 요청을 받으면, 서버는 Anthropic API로 직접 요청을 보냅니다. 보통은 Anthropic이 공개한 SDK 중 하나를 통해 요청합니다. Python, TypeScript, JavaScript, Go, Ruby용 공식 SDK가 있습니다. 원하지 않으면 SDK를 쓰지 않아도 됩니다. 일반 HTTP 요청을 보내도 됩니다. 이 요청에는 몇 가지 데이터를 함께 전달해야 합니다. 특히 API 키, 실행할 모델 이름, 사용자가 입력한 텍스트가 담긴 messages 리스트, 그리고 Claude가 생성할 텍스트의 길이를 제한하는 max tokens 값이 필요합니다.
다음은 Anthropic API입니다. 실제로 텍스트가 생성되는 곳입니다. 여기서 언어 모델 내부의 텍스트 생성 과정을 조금 자세히 들여다봅니다. 이 과정은 복잡하므로 단순화한 고수준 개요로 설명하겠습니다. 텍스트 생성 과정을 네 단계로 나눠 보겠습니다.
첫 단계에서는 사용자 입력을 더 작은 문자열로 쪼갭니다. 이 텍스트 조각 하나하나를 토큰이라고 부릅니다. 토큰은 단어 전체일 수도, 단어의 일부일 수도, 심지어 공백이나 기호일 수도 있습니다. 설명을 단순하게 하기 위해, 단어 하나가 토큰 하나를 이룬다고 가정하겠습니다. 그다음 각 토큰은 임베딩으로 변환됩니다. 임베딩은 긴 숫자 리스트로, 어떤 단어를 숫자로 정의한 것이라고 생각하면 됩니다. 문자 언어의 흥미로운 점은, 한 단어가 여러 의미를 가질 수 있고 문장 속 위치와 주변 단어들이 있어야 비로소 그 의미가 하나로 좁혀진다는 것입니다. 예를 들어 “quantum”은 정의가 여럿인 단어라, 이 단어만 봐서는 주변 단어를 보기 전까지 무슨 뜻인지 정확히 알 수 없습니다. 마찬가지로 각 임베딩은 그 단어의 모든 가능한 의미를 담고 있다고 볼 수 있습니다. 각 임베딩을 하나의 정확한 정의로 좁히기 위해 컨텍스트화라는 과정을 거칩니다.
컨텍스트화에서는 각 임베딩이 주변 임베딩에 따라 조정됩니다. 이 과정은 이웃 단어들을 고려했을 때 가장 잘 맞는 의미를 부각시킵니다. 마지막 단계는 생성으로, 실제로 텍스트가 쓰이는 곳입니다. 이 시점이면 각 임베딩은 이웃으로부터 엄청난 양의 정보를 흡수한 상태입니다. 최종 처리된 임베딩은 출력 레이어로 전달되어, 가능한 다음 단어마다 확률을 만들어 냅니다. 모델은 확률이 가장 높은 단어를 자동으로 고르지 않습니다. 대신 확률과 무작위성을 섞어 단어를 고르는데, 이렇게 하면 더 자연스럽고 다양한 응답이 만들어집니다. 선택된 단어는 임베딩 리스트 끝에 더해지고, 전체 과정이 처음부터 다시 반복됩니다.
각 출력 토큰을 생성한 뒤, 모델은 잠시 멈춰 텍스트 생성을 끝낼지 스스로 몇 가지를 점검합니다. 먼저 지금까지 생성한 토큰 수를 세어, 입력 요청에 함께 들어온 max tokens 값보다 큰지 확인합니다. 이 max tokens 값은 모델이 생성할 토큰의 총수를 제한합니다. 또한 모델이 생성할 수 있는 특별한 end-of-sequence 토큰이 있습니다. 이것은 일반적인 단어가 아니라, 모델이 스스로 자연스러운 끝에 도달했으니 멈춰야 한다고 알리는 특별한 신호입니다.
생성이 끝나면 API는 서버로 응답을 보냅니다. 응답에는 생성된 텍스트가 담긴 message와 함께 usage, stop reason이 들어 있습니다. usage는 모델에 넣은 토큰 수와 생성된 토큰 수를 센 값입니다. stop reason은 모델이 왜 생성을 멈췄는지 — 자연스러운 end-of-sequence 토큰에 도달했는지, 아니면 할당된 토큰 수를 초과했는지 — 정확히 알려 줍니다. 서버가 이 응답을 받으면, 생성된 텍스트를 웹이나 모바일 앱으로 보내 화면에 표시합니다. 이것이 전체 흐름입니다.
이 영상에서는 많은 주제를 다뤘습니다. 지금 당장 이걸 외울 필요는 없습니다. 목표는 API로 Claude에 접근할 때 쓰는 공통 용어에 익숙해지기 시작하는 것입니다.
이 장에서 배우는 것What you'll learn
약 5분챗봇 요청의 5단계 흐름 (서버 → API → 처리 → 응답)
왜 API 키를 서버에 두어야 하는지
API 요청에 꼭 필요한 필드 (API Key·Model·Messages·Max Tokens)
Claude 내부 처리 4단계 (토큰화 → 임베딩 → 컨텍스트화 → 생성)
응답 구조와 생성이 멈추는 조건
사용자가 메시지를 보내면 응답이 ‘마법처럼’ 나타나는 것 같지만, 그 뒤에는 다섯 단계의 흐름이 있습니다. 먼저 챗봇이 어떻게 동작하는지 직접 확인해 보세요.
이 응답이 나오기까지 거치는 다섯 단계는 다음과 같습니다.
서버가 Anthropic API에 요청할 때는 다음 필드를 함께 보냅니다.
| 필드 | 역할 |
|---|---|
| API Key | Anthropic에 보내는 요청을 인증합니다. |
| Model | 사용할 모델의 이름입니다. (예: claude-sonnet-4-6) |
| Messages | 사용자가 입력한 텍스트가 담긴 메시지 리스트입니다. |
| Max Tokens | Claude가 생성할 토큰 수의 상한입니다. |
Anthropic은 Python · TypeScript · JavaScript · Go · Ruby용 공식 SDK를 제공합니다. SDK 없이 일반 HTTP 요청을 보내도 됩니다.
from anthropic import Anthropic
client = Anthropic() # ANTHROPIC_API_KEY 환경 변수에서 키를 읽습니다
response = client.messages.create(
model="claude-sonnet-4-6", # 실행할 모델
max_tokens=1024, # 생성할 토큰 수 상한
messages=[ # 사용자 입력이 담긴 메시지 리스트
{"role": "user", "content": "양자 컴퓨팅이 뭐야?"}
],
)
print(response.content[0].text) # 생성된 텍스트 (Message)
print(response.usage) # 입력/출력 토큰 수 (Usage)
print(response.stop_reason) # 멈춘 이유 (Stop Reason)요청을 받은 Anthropic API는 텍스트를 네 단계로 생성합니다. 실제 과정은 복잡하므로 단순화한 개요로 봅니다. 아래에서 단계를 눌러 가며 “What is quantum computing?”이 어떻게 처리되는지 따라가 보세요.
입력: What is quantum computing?
“quantum”은 여러 뜻을 가질 수 있지만, 이웃한 “computing” 덕분에 ‘양자 컴퓨팅’의 의미로 좁혀집니다.
가장 높은 확률(Quantum)만 자동으로 고르지 않습니다. 확률과 무작위성을 섞어, 더 자연스럽고 다양한 응답을 만듭니다.
모델은 토큰을 하나씩 생성하면서, 매번 멈출지 점검합니다. 멈추는 조건은 세 가지입니다.
생성된 출력 토큰
각 토큰을 생성한 뒤, 모델은 멈출지 점검합니다
생성이 끝나면 API는 서버로 응답을 보냅니다. 응답에는 다음이 담깁니다.
| 필드 | 내용 |
|---|---|
| Message | 생성된 텍스트가 담깁니다. |
| Usage | 입력 토큰 수와 출력(생성) 토큰 수입니다. |
| Stop Reason | 모델이 생성을 멈춘 이유입니다. (max tokens 초과, 자연스러운 끝 등) |
서버는 이 응답에서 생성된 텍스트(Message)를 꺼내 앱으로 보내 화면에 표시합니다. Usage로 토큰 사용량을, Stop Reason으로 멈춘 이유를 확인할 수 있습니다.
정답을 먼저 떠올려 본 뒤 골라 보세요. 맞히면 설명이 나옵니다.
Q1Anthropic API를 웹 · 모바일 앱에서 직접 호출하면 안 되는 이유는?
API 키는 비밀이라 클라이언트에 넣으면 추출당해 무단 요청에 쓰일 수 있습니다. 그래서 서버를 통해서만 호출합니다.
Q2요청의 max tokens 값이 하는 일은?
max tokens는 모델이 생성하는 토큰의 총수를 제한합니다. 이 한도에 닿으면 생성을 멈춥니다.
Q3응답의 stop reason이 알려 주는 것은?
stop reason은 왜 멈췄는지(max tokens 초과인지, 자연스러운 끝인지 등)를 알려 줍니다.
흐름을 익혔으니, 이제 직접 API 키를 발급받아 첫 요청을 보낼 준비를 합니다. → API 키 발급받기