IT, 개발툴

클로드 API로 나만의 챗봇 만드는 법

raphael981 2026. 7. 29. 18:21
반응형

클로드로 나만의 챗봇을 만드는 건 생각보다 짧습니다. 핵심 코드는 20줄이 안 됩니다.

다만 시작하기 전에 반드시 알아야 할 게 하나 있는데, 이걸 모르고 시작하면 첫 단계에서 막힙니다. 거기부터 짚고 가겠습니다.

먼저: Claude Pro 구독은 API 사용권이 아닙니다

가장 많이 헷갈리는 부분입니다.

매달 Claude Pro를 결제하고 계셔도, 그 구독으로는 챗봇을 만들 수 없습니다. 구독료는 웹과 앱에서 클로드와 대화하는 값이고, 프로그램에서 클로드를 불러다 쓰려면 API 키라는 별도의 것이 필요합니다.

둘은 이렇게 다릅니다.

구분Claude Pro 구독API 키
가입 위치claude.aiconsole.anthropic.com
과금 방식매달 정액쓴 만큼
용도웹·앱에서 대화내가 만든 프로그램에서 호출

즉 챗봇을 만들려면 Console 계정을 따로 만들고 결제 수단을 등록해야 합니다. 구독 중이더라도 마찬가지입니다.

비용은 어느 정도일까

겁먹을 필요는 없습니다. 개인이 테스트하는 수준이라면 커피값도 안 나옵니다.

가장 저렴한 Haiku 모델 기준으로 입력 100만 토큰에 $1, 출력 100만 토큰에 $5입니다. 토큰은 대략 글자 단위라고 생각하시면 되는데, 짧은 대화 한 번 주고받는 데 드는 비용은 원화로 몇 원 수준입니다.

다만 주의할 점이 있습니다. 챗봇은 매번 이전 대화를 전부 다시 보냅니다. 대화가 길어질수록 한 번 주고받는 비용도 같이 올라갑니다. 이 부분은 뒤에서 다시 다루겠습니다.

Console에서 사용 한도(budget)를 걸어둘 수 있으니, 시작할 때 낮게 설정해두시면 마음이 편합니다.

1단계. API 키 발급받기

  1. console.anthropic.com 접속 후 가입
  2. 결제 수단 등록
  3. API Keys 메뉴에서 새 키 발급
  4. 발급된 키를 복사해서 안전한 곳에 저장

키는 sk-ant- 로 시작하는 긴 문자열입니다. 발급 직후 한 번만 보여주고 다시는 안 보여줍니다. 그 자리에서 복사해두세요. 놓쳤으면 새로 발급받으면 됩니다.

그리고 이 키는 비밀번호와 같습니다. 남에게 보여주거나 인터넷에 올리면 다른 사람이 내 돈으로 API를 씁니다. 나중에 깃허브에 코드를 올리실 거라면 키가 코드 안에 박혀 있지 않은지 꼭 확인하세요.

2단계. 준비 작업

파이썬이 설치되어 있어야 합니다. 터미널에서 확인해보세요.

python --version

버전이 뜨면 됩니다. 안 뜨면 python.org에서 설치하세요.

그다음 라이브러리를 설치합니다.

pip install anthropic

그리고 발급받은 키를 환경 변수로 등록합니다. 코드 안에 직접 적지 않기 위해서입니다.

# Windows PowerShell
$env:ANTHROPIC_API_KEY = "여기에_발급받은_키"

# macOS / Linux
export ANTHROPIC_API_KEY="여기에_발급받은_키"

이 방식은 터미널을 닫으면 사라집니다. 매번 치기 싫으면 시스템 환경 변수에 영구 등록하셔도 됩니다.

3단계. 가장 단순한 버전

먼저 한 번만 물어보고 답을 받는 코드입니다. chatbot.py로 저장하세요.

from anthropic import Anthropic

client = Anthropic()

message = client.messages.create(
    model="claude-haiku-4-5-20251001",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "안녕? 자기소개 한 줄만 해줘"}
    ],
)

print(message.content[0].text)

실행합니다.

python chatbot.py

답이 출력되면 성공입니다. 여기까지가 사실상 전부입니다. 나머지는 이걸 다듬는 과정입니다.

4단계. 계속 대화하게 만들기

위 코드는 한 번 묻고 끝납니다. 계속 대화하려면 반복문으로 감싸면 됩니다.

from anthropic import Anthropic

client = Anthropic()

print("챗봇을 시작합니다. 끝내려면 '종료'를 입력하세요.\n")

while True:
    user_input = input("나: ")

    if user_input == "종료":
        print("대화를 종료합니다.")
        break

    message = client.messages.create(
        model="claude-haiku-4-5-20251001",
        max_tokens=1024,
        messages=[
            {"role": "user", "content": user_input}
        ],
    )

    print("클로드:", message.content[0].text)
    print()

이제 계속 대화가 됩니다. 그런데 이 챗봇에는 큰 문제가 하나 있습니다.

5단계. 앞의 대화를 기억하게 만들기

위 코드로 이렇게 대화해보세요.

나: 내 이름은 라파엘이야
클로드: 안녕하세요 라파엘님!

나: 내 이름이 뭐라고?
클로드: 죄송하지만 이름을 알려주지 않으셨습니다.

바로 앞에서 말했는데 못 알아듣습니다. 매번 새 메시지 하나만 보내고 있기 때문입니다.

클로드는 대화를 기억하는 기능이 없습니다. 기억은 우리가 만들어줘야 합니다. 방법은 단순합니다. 지금까지 오간 대화를 전부 리스트에 담아서 매번 통째로 보내는 것입니다.

from anthropic import Anthropic

client = Anthropic()
history = []

print("챗봇을 시작합니다. 끝내려면 '종료'를 입력하세요.\n")

while True:
    user_input = input("나: ")

    if user_input == "종료":
        print("대화를 종료합니다.")
        break

    history.append({"role": "user", "content": user_input})

    message = client.messages.create(
        model="claude-haiku-4-5-20251001",
        max_tokens=1024,
        messages=history,
    )

    reply = message.content[0].text
    print("클로드:", reply)
    print()

    history.append({"role": "assistant", "content": reply})

달라진 건 세 줄뿐입니다. history 리스트를 만들고, 내 말과 클로드의 답을 계속 쌓고, 매번 그 전체를 보냅니다.

이제 이름을 기억합니다.

다만 앞서 말씀드린 비용 문제가 여기서 나옵니다. 대화가 100번쯤 오가면 101번째 요청에는 그 100번어치가 전부 실려 갑니다. 실제 서비스를 만든다면 오래된 대화를 잘라내거나 요약하는 처리가 필요하지만, 개인용으로 잠깐 쓰는 정도라면 신경 안 쓰셔도 됩니다.

6단계. 성격 부여하기

지금은 그냥 클로드입니다. 특정 역할을 맡기고 싶다면 system을 추가하면 됩니다.

    message = client.messages.create(
        model="claude-haiku-4-5-20251001",
        max_tokens=1024,
        system="너는 무뚝뚝한 편의점 알바생이야. 대답은 항상 두 문장 이내로 짧게 해.",
        messages=history,
    )

이 한 줄로 챗봇의 성격이 완전히 바뀝니다. 여기를 어떻게 쓰느냐가 챗봇의 정체성을 결정합니다.

몇 가지 예시입니다.

  • "너는 영어 회화 선생님이야. 사용자가 한국어로 말하면 영어로 어떻게 말하는지 알려줘."
  • "너는 코드 리뷰어야. 코드를 받으면 문제점만 간결하게 짚어줘."
  • "너는 요리 도우미야. 냉장고에 있는 재료를 말하면 만들 수 있는 요리를 추천해줘."

모델 바꾸기

지금까지 가장 저렴한 Haiku를 썼습니다. 더 똑똑한 답이 필요하면 모델명만 바꾸면 됩니다.

모델명특징
claude-haiku-4-5-20251001가장 저렴하고 빠름. 테스트용으로 적합
claude-sonnet-5성능과 비용의 균형
claude-opus-5가장 강력하지만 비쌈

만드는 단계에서는 Haiku로 충분합니다. 답변 품질이 아쉬울 때 올려보세요.

코드 짜기 귀찮다면

클로드코드를 쓰고 계신다면 위 과정을 직접 시킬 수도 있습니다.

> 파이썬으로 터미널 챗봇을 만들어줘.
> - anthropic 라이브러리 사용
> - API 키는 환경변수에서 읽기
> - 이전 대화를 기억하도록 history 관리
> - '종료' 입력하면 끝나게
> - 모델은 haiku로

다만 처음이라면 위 코드를 직접 한 번 쳐보시길 권합니다. 20줄짜리라 금방이고, 구조를 이해하고 나면 이후에 뭘 고쳐야 할지 감이 옵니다.

웹 챗봇으로 만들고 싶다면

브라우저에서 쓰는 형태로 만들고 싶은 분도 계실 텐데, 여기엔 함정이 하나 있습니다.

HTML 파일 안에 API 키를 적으면 안 됩니다. 웹페이지 소스는 누구나 볼 수 있어서, 키가 그대로 노출됩니다. 그 키로 다른 사람이 API를 쓰면 요금은 내가 냅니다.

그래서 웹 버전을 만들려면 키를 감춰줄 서버가 중간에 필요합니다. 이건 난이도가 한 단계 올라가는 이야기라, 나중에 따로 다루겠습니다.

정리

핵심만 다시 짚으면 이렇습니다.

  • Pro 구독과 API 키는 별개다. Console에서 따로 발급받아야 한다
  • 클로드는 대화를 기억하지 못한다. 기억은 내가 리스트로 만들어 보내는 것이다
  • 성격은 system 한 줄로 정해진다
  • API 키는 코드에 박지 말고 환경변수로 관리한다

여기까지가 챗봇의 뼈대입니다. 나머지는 이 위에 뭘 올리느냐의 문제입니다.

반응형