파이썬으로 AI 챗봇 만들기 - 초보자도 30분이면 완성
파이썬으로 AI 챗봇 만들기 - 초보자도 30분이면 완성
2026년 4월 기준 | AI 개발 가이드 · 입문 튜토리얼
이 글에서 만드는 것: 터미널에서 동작하는 대화형 AI 챗봇입니다. Claude API를 사용하며, 대화 기록을 기억하고, 시스템 프롬프트로 성격을 지정할 수 있습니다. 코드 전체를 단계별로 설명합니다.
어떤 챗봇을 만드나
ChatGPT처럼 대화를 주고받는 챗봇을 만듭니다. 단, 웹 UI가 아니라 터미널에서 동작합니다. 이유는 간단합니다. UI를 만드는 데 시간 쓰지 않고, AI 핵심 로직에만 집중하기 위해서입니다.
완성하면 이런 모습입니다:
나: 파이썬에서 리스트와 튜플의 차이가 뭐야?
AI: 리스트와 튜플의 가장 큰 차이는 변경 가능 여부입니다.
- 리스트(list): 생성 후 요소를 추가, 삭제, 수정할 수 있습니다.
- 튜플(tuple): 한 번 생성하면 변경할 수 없습니다.
실무에서는 변경될 수 있는 데이터는 리스트, 변경되면 안 되는
데이터(좌표, 설정값 등)는 튜플로 관리합니다.
나: 그럼 언제 튜플을 쓰는 게 좋아?
AI: 튜플은 이런 경우에 유리합니다...
준비물
- Python 3.10 이상
- Claude API 키 (console.anthropic.com에서 발급)
- anthropic 라이브러리
pip install anthropic
1단계: 최소 기능 챗봇
가장 단순한 형태부터 시작합니다. 질문을 입력하면 AI가 답하는 구조입니다.
import anthropic
client = anthropic.Anthropic()
while True:
user_input = input("\n나: ")
if user_input.lower() in ("quit", "exit", "종료"):
print("챗봇을 종료합니다.")
break
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[{"role": "user", "content": user_input}]
)
print(f"\nAI: {response.content[0].text}")
15줄로 동작하는 챗봇입니다. 하지만 치명적인 문제가 있습니다. 이전 대화를 기억하지 못합니다. 매 질문이 독립적인 새 대화로 처리됩니다.
2단계: 대화 기록 기억하기
대화 기록을 리스트에 쌓아서 매번 API에 함께 보내면 됩니다.
import anthropic
client = anthropic.Anthropic()
conversation = [] # 대화 기록 저장
while True:
user_input = input("\n나: ")
if user_input.lower() in ("quit", "exit", "종료"):
break
# 사용자 메시지를 기록에 추가
conversation.append({"role": "user", "content": user_input})
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=conversation # 전체 대화 기록 전달
)
ai_message = response.content[0].text
# AI 응답도 기록에 추가
conversation.append({"role": "assistant", "content": ai_message})
print(f"\nAI: {ai_message}")
핵심은 conversation 리스트입니다. 사용자 메시지와 AI 응답을 계속 쌓아가면서 매번 전체를 API에 보냅니다. 이러면 AI가 이전 맥락을 이해하고 답변합니다.
3단계: 시스템 프롬프트로 성격 부여
시스템 프롬프트를 지정하면 챗봇에 성격을 줄 수 있습니다. 예를 들어 "파이썬 전문 튜터"로 설정하면, 모든 답변을 파이썬 학습자 관점에서 해줍니다.
import anthropic
client = anthropic.Anthropic()
conversation = []
# 챗봇 성격 설정
SYSTEM_PROMPT = """당신은 친절한 파이썬 프로그래밍 튜터입니다.
- 초보자도 이해할 수 있게 쉬운 말로 설명합니다.
- 설명할 때 항상 코드 예제를 포함합니다.
- 한국어로 답변합니다.
- 질문이 모호하면 되물어봅니다."""
print("파이썬 튜터 챗봇입니다. '종료'를 입력하면 끝납니다.\n")
while True:
user_input = input("나: ")
if user_input.lower() in ("quit", "exit", "종료"):
break
conversation.append({"role": "user", "content": user_input})
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
system=SYSTEM_PROMPT, # 시스템 프롬프트 추가
messages=conversation
)
ai_message = response.content[0].text
conversation.append({"role": "assistant", "content": ai_message})
print(f"\nAI: {ai_message}\n")
시스템 프롬프트를 바꾸면 완전히 다른 챗봇이 됩니다:
- 영어 회화 연습: "You are an English conversation partner. Respond in English and correct grammar mistakes."
- 코드 리뷰어: "당신은 시니어 개발자입니다. 코드를 보면 버그, 보안 취약점, 개선점을 지적합니다."
- 요리 도우미: "당신은 한식 요리 전문가입니다. 재료를 알려주면 레시피를 추천합니다."
4단계: 완성 - 스트리밍 응답
마지막으로 스트리밍을 추가합니다. 스트리밍이란 AI가 답변을 생성하는 동시에 한 글자씩 화면에 출력하는 것입니다. ChatGPT에서 글자가 타이핑되듯 나오는 그 효과입니다.
import anthropic
client = anthropic.Anthropic()
conversation = []
SYSTEM_PROMPT = """당신은 친절한 파이썬 프로그래밍 튜터입니다.
초보자도 이해할 수 있게 쉬운 말로, 코드 예제와 함께 설명합니다."""
print("파이썬 튜터 챗봇입니다. '종료'를 입력하면 끝납니다.\n")
while True:
user_input = input("나: ")
if user_input.lower() in ("quit", "exit", "종료"):
break
conversation.append({"role": "user", "content": user_input})
print("\nAI: ", end="", flush=True)
full_response = ""
# 스트리밍으로 응답 받기
with client.messages.stream(
model="claude-sonnet-4-20250514",
max_tokens=1024,
system=SYSTEM_PROMPT,
messages=conversation
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
full_response += text
print("\n")
conversation.append({"role": "assistant", "content": full_response})
바뀐 부분은 client.messages.create가 client.messages.stream으로 변경된 것뿐입니다. stream.text_stream으로 실시간으로 텍스트 조각을 받아서 출력합니다.
스트리밍을 쓰면 체감 속도가 확 빨라집니다. 전체 응답을 기다리지 않고 바로 읽기 시작할 수 있으니까요.
더 발전시키려면
이 기본 챗봇을 기반으로 확장할 수 있는 방향들입니다.
- 웹 UI 추가: Streamlit이나 Gradio를 쓰면 10줄 추가로 웹 챗봇이 됩니다
- 대화 저장: conversation을 JSON 파일로 저장하면 다음에 이어서 대화 가능
- RAG 추가: 문서를 읽어서 답변에 반영하는 기능 (다음 글에서 다룰 예정)
- 도구 사용: 계산기, 웹 검색 등 외부 도구를 연결하면 더 똑똑한 챗봇이 됩니다
30분이면 만들 수 있는 기본 챗봇이지만, 여기서 출발하면 꽤 복잡한 AI 서비스까지 확장할 수 있습니다. 핵심은 API 호출 구조를 이해하는 것이고, 이 글의 4단계를 따라오셨다면 이미 충분히 이해하신 겁니다.
전체 코드: 이 글의 최종 완성 코드는 4단계 코드입니다. 복사해서 바로 실행할 수 있습니다. Python 3.10+, anthropic 라이브러리, API 키만 있으면 됩니다.