AI 파이썬 Lab · 심화 · 5주차
심화 · AI 에이전트

AI 에이전트 만들기

지금까지 AI는 물어봐야 답하는 도구였어요. 오늘은 뉴스를 가져와 요약하고, 상황에 따라 다르게 행동하는 미니 AI 에이전트를 만듭니다.

오늘의 목표

오늘 배우는 것

에이전트의 핵심은 판단이에요. 그리고 그 판단은 우리가 이미 배운 if/else로 만들 수 있어요. 답하는 AI에서 행동하는 AI로 한 걸음 나아갑니다.

🧠
GOAL 1
AI 에이전트의 핵심 아이디어를 이해한다
📰
GOAL 2
뉴스를 3줄로 요약하는 봇을 만든다
🤔
GOAL 3
상황에 따라 다르게 행동하게 만든다
새 개념 ①②

처음 나오는 것 ① — AI 에이전트

목표를 주면 스스로 도구를 쓰고, 판단하고, 반복해서 일을 해내는 AI 프로그램이에요. 자세한 원리는 바로 다음 섹션에서 살펴봐요.

🤖
AI 에이전트 (Agent)
목표를 주면 스스로 도구 사용·판단·반복으로 일을 해내는 AI예요. 단순히 답만 하지 않아요.
심부름꾼에 비유하면 챗봇은 "질문에 답만 하는 친구"예요. 에이전트는 "심부름 다녀와!"라고 하면 마트에 가서 물건 사고, 돈 내고, 영수증까지 챙겨서 돌아오는 친구예요.

처음 나오는 것 ② — 판단하는 코드, if/else

에이전트가 "스스로 판단한다"고 하면 거창하게 들리지만, 사실 그 판단은 코드 한 줄로 만들 수 있어요.

if / else (조건문)
조건이 맞으면 if 쪽을, 맞지 않으면 else 쪽을 실행해요. 딱 한쪽만 골라서 실행돼요.
우산 챙기기에 비유하면 "비가 오면(if) 우산을 챙기고, 안 오면(else) 그냥 나가요." 아침마다 하늘을 보고 둘 중 하나를 고르는 것처럼, 코드도 조건을 보고 둘 중 한 행동만 골라요.
개념

챗봇과 에이전트는 무엇이 다를까?

챗봇은 질문에 답하는 친구예요. 에이전트는 심부름을 시키면 알아서 다녀오는 친구죠. 에이전트는 세 가지를 스스로 합니다.

🛠️
도구 사용
필요한 정보를 직접 가져와요. 오늘은 '뉴스 기사'를 가져옵니다.
🤔
판단
상황을 보고 다르게 행동해요. 이 '판단'을 우리는 if/else로 만들어요.
🔁
반복
여러 개를 하나씩 자동으로 처리할 수도 있어요.
📌 오늘 만드는 미니 에이전트
뉴스를 가져와서(도구) → 길이를 보고 판단해서(판단) → 길면 요약하고 짧으면 그대로 보여주는 봇이에요.
💡 판단 = if/else

거창해 보이는 '판단'도, 사실 우리가 배운 if/else예요. "기사가 길면 요약, 짧으면 그대로"처럼 조건만 정하면 봇이 스스로 행동을 골라요.

미션 1

뉴스 요약 봇 만들기

🎯 목표: 뉴스 기사를 AI에게 보내, 3줄로 요약하는 봇을 만든다.

① 흐름 이해하기

1
가져오기
기사 내용을 변수에 담아요.
2
요약하기
ask_ai()로 AI에게 3줄 요약을 부탁해요.
3
보여주기
요약 결과를 print로 화면에 보여줘요.

② AI를 부르는 준비 — ask_ai 함수

AI 호출은 1주차에서 만든 ask_ai()를 그대로 재사용해요. 파일 맨 위에 한 번만 적어 둡니다. 이 봇의 판단 엔진으로는 Claude API를 써도 되고, 키는 .env에서 자동으로 불러옵니다.

agent.py — 재사용 함수 (한 번만 작성)
from openai import OpenAI
client = OpenAI()   # 키는 .env에서 자동으로

def ask_ai(prompt):
    res = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{"role": "user", "content": prompt}])
    return res.choices[0].message.content

③ 요약 봇 만들기

agent.py — 요약
# 긴 기사는 삼중 따옴표로 붙여넣기
news = """삼성전자가 청소년 10만 명을 대상으로 인공지능 교육을 지원하기로 했다.
이번 프로그램은 전국 중·고등학생을 대상으로 하며, AI 기초 개념부터 실습까지 배울 수 있는 커리큘럼으로 구성된다.
교육은 온라인과 오프라인을 병행해 지역과 관계없이 참여할 수 있도록 운영된다.
삼성전자는 디지털 격차를 줄이고 미래 인재를 양성하기 위해 이 프로그램을 마련했다고 밝혔다.
참여 학생에게는 수료증과 함께 우수자 대상 추가 교육 기회도 제공된다.
회사 측은 이번 지원을 시작으로 AI 교육 대상을 점차 확대해 나갈 계획이라고 설명했다."""

summary = ask_ai(f"다음 기사를 3줄로 요약해줘. 각 줄은 한 문장으로:\n{news}")
print(summary)
▸ 터미널 출력
1. 삼성전자가 청소년 10만 명에게 AI 교육을 지원하기로 했다.
2. 전국 중·고등학생이 온·오프라인으로 AI 기초부터 실습까지 배운다.
3. 디지털 격차 해소와 미래 인재 양성을 위한 것이며 교육 대상을 점차 확대할 계획이다.
📸 스크린샷 자리
뉴스 기사를 넣고 실행했을 때 3줄 요약이 출력되는 터미널 화면
1
news = """..."""
따옴표 세 개(""") 사이에 기사 내용을 통째로 넣어요. 편지지에 기사를 옮겨 적어 news라는 상자에 넣는 것과 같아요.
2
ask_ai(f"...{news}")
"이 기사를 3줄로 요약해줘"라는 부탁 문장 안에 news 상자 속 기사를 끼워 넣어 AI에게 보내요.
3
summary = ...
AI가 보낸 요약 답장을 summary라는 상자에 담아 기억해 둬요.
4
print(summary)
summary 상자 안의 내용을 화면에 꺼내 보여줘요.
⚠️ 자주 하는 실수
  • 요약이 너무 김 → 프롬프트에 "각 줄 한 문장, 딱 3줄만"을 명시해요.
  • 긴 기사 붙이기 힘듦 → """삼중 따옴표""" 안에 넣어요.
  • news 변수에 내용을 안 넣으면 빈 요약이 나와요.
🔒 힌트 — 요약이 안 나와요 (참고 코드)

news 변수에 실제 기사 내용이 들어 있는지, 그리고 그 변수를 프롬프트 안에 끼워 넣었는지 확인해요.

agent.py (참고)
news = """오늘 우리 동네에 새 도서관이..."""   # 내용 채우기
print(ask_ai(f"다음 기사를 3줄로 요약해줘:\n{news}"))
미션 2

판단 추가하기

🎯 목표: 기사 길이에 따라 봇이 다르게 행동하게 만든다.
✏️ 먼저 스스로 해보기
내 봇은 어떤 상황에서 다르게 행동할까?
① 내 봇이 어떤 상황(예: 글자 수, 주제)에서 다르게 행동하면 좋을지 정해 보세요.
② 그 두 가지 경우의 행동을 각각 한 줄씩 먼저 적어 보세요. 떠올랐다면 코드를 받기 전에 종이에 써 봅니다.

판단 예시

A
긴 기사면
3줄로 요약해서 보여줘요.
B
짧은 기사면
요약 없이 그대로 보여줘요.
agent.py — 판단
# 이번엔 짧은 기사로 테스트
news = """오늘 우리 동네에 새 도서관이 문을 열었다. 주말에는 어린이 책 읽기 행사도 열린다고 한다."""

print("기사 길이:", len(news))

if len(news) > 500:
    print(ask_ai(f"다음 기사를 3줄로 요약해줘:\n{news}"))
else:
    print("기사가 짧아요. 그대로 읽어보세요:")
    print(news)
▸ 터미널 출력
기사 길이: 51
기사가 짧아요. 그대로 읽어보세요:
오늘 우리 동네에 새 도서관이 문을 열었다. 주말에는 어린이 책 읽기 행사도 열린다고 한다.
1
len(news)
기사 글자가 몇 개인지 세어요. 줄자로 기사 길이를 재는 것과 같아요.
2
if len(news) > 500:
글자 수가 500보다 많으면(길면) 이 줄 아래를 실행해요 — AI에게 요약을 부탁해요.
3
else:
500보다 많지 않으면(짧으면) 대신 이 줄 아래를 실행해요 — 요약 없이 기사를 그대로 보여줘요.
4
둘 중 하나만!
기사 하나마다 if 아니면 else딱 한 갈래만 실행돼요. 갈림길에서 한쪽 길만 가는 것과 같아요.
⚠️ 자주 하는 실수
  • 한 갈래만 작동 → 짧은 기사·긴 기사를 각각 넣어 둘 다 테스트해요.
  • 기준값 500의 의미 혼동 → print(len(news))로 글자 수를 먼저 확인해요.
🔒 힌트 — 한 갈래만 작동해요 (참고)

ifelse 두 갈래가 모두 있는지 확인하고, 짧은 기사와 긴 기사를 각각 넣어 실행해 보세요. 두 출력이 서로 달라야 정상이에요.

미션 3

행동 확장하기

🎯 목표: 봇이 할 수 있는 행동을 하나 더 추가한다.

요약과 판단이 된다면 이미 미니 에이전트예요. 여기에 새 능력을 하나만 골라 추가해 봅시다.

🃏 선택지 카드 — 어떤 능력을 줄까?

A
감정 분석
긍정 뉴스인지 부정 뉴스인지 알려주기
난이도 ★☆☆
→ "이 기사가 긍정인지 부정인지 알려주는 기능 추가해줘"
B
키워드 뽑기
기사에서 핵심 키워드 3개 뽑기
난이도 ★★☆
→ "기사에서 핵심 키워드 3개를 뽑아주는 기능 추가해줘"
C
분류하기
기사를 주제별로 자동 분류
난이도 ★★☆
→ "기사를 주제별로 자동 분류하는 기능 추가해줘"
D
여러 기사 한번에
기사 목록을 받아 하나씩 자동 요약
난이도 ★★★
→ "기사 목록을 받아서 하나씩 자동으로 요약하게 해줘"
E
나만의 아이디어!
위에 없는 능력을 직접 떠올려 AI에게 요청해 보기
⚠️ 자주 하는 실수
  • 기능 추가하다 기존 기능이 깨짐 → "기존 요약 기능은 그대로 두고 ___ 기능을 추가해줘"라고 분명히 요청해요.
  • 추가 전 코드를 한 번 복사해 두면 안전해요.
보너스 미션

더 해보고 싶다면

미션 3까지 끝내고 시간이 남는다면 도전해 보세요. 끝내지 못해도 괜찮습니다.

보너스 ① 기억하는 봇

이전에 요약한 기사 개수를 기억했다가 "오늘 N번째 요약"이라고 알려주게 만들어요. 에이전트가 '기억'을 갖는 경험이에요.

agent.py (기억 예시)
history = []   # 요약 결과를 모아두는 상자

summary = ask_ai(f"다음 기사를 3줄로 요약해줘:\n{news}")
history.append(summary)
print(f"오늘 {len(history)}번째 요약입니다.")
print(summary)
기사를 3번 요약했을 때 '오늘 N번째 요약입니다'가 순서대로 늘어나는 터미널 출력
1
history = []
아직 비어 있는 바구니 하나를 만들어요. 요약할 때마다 이 바구니에 하나씩 담을 거예요.
2
history.append(summary)
방금 만든 요약을 바구니에 담아요(추가). 담을수록 바구니 속 개수가 늘어나요.
3
len(history)
바구니 안에 지금까지 몇 개가 담겼는지 세어요. 그 숫자가 바로 '몇 번째'예요.
▸ 터미널 출력 (3번 실행)
오늘 1번째 요약입니다.
요약 결과(예시)
오늘 2번째 요약입니다.
요약 결과(예시)
오늘 3번째 요약입니다.
요약 결과(예시)

보너스 ② 두 봇의 협업 설계

요약 봇과 분류 봇이 협력하면 어떻게 될까요? 종이에 "기사 → 분류 봇 → 요약 봇 → 결과" 흐름을 먼저 그려 보고, 아래처럼 코드로도 이어 봅니다.

agent.py — 두 봇 이어 붙이기
# 1번 봇: 기사를 주제로 분류
category = ask_ai(f"다음 기사의 주제를 한 단어로 알려줘(예: 교육, 경제, 스포츠):\n{news}")

# 2번 봇: 분류 결과를 받아 요약
summary = ask_ai(f"다음은 '{category}' 주제 기사야. 3줄로 요약해줘:\n{news}")

print("주제:", category)
print("요약:", summary)
▸ 터미널 출력
주제: 교육
요약: 삼성전자가 청소년 10만 명에게 AI 교육을 지원하기로 했다.
전국 중·고등학생이 온·오프라인으로 AI 기초부터 실습까지 배운다.
디지털 격차 해소와 미래 인재 양성을 위한 것이며 교육 대상을 점차 확대할 계획이다.
🎯 성공 기준
실행할 때마다 요약 개수가 올라가거나, 두 봇이 협력하는 흐름을 그림 또는 코드로 설명할 수 있으면 성공이에요.
정리

오늘의 핵심 정리

1️⃣
에이전트
스스로 도구 쓰고·판단하고·반복하는 AI를 이해했다
2️⃣
구현
뉴스를 가져와 요약하는 봇을 만들었다
3️⃣
판단
상황에 따라 다르게 행동하게 만들었다

🔧 막혔을 때 — 자가 디버깅 4단계

에러가 떠도 당황하지 마세요. 선생님께 묻기 전에 이 순서대로 스스로 해결해 봅니다.

1
에러 메시지 읽기
빨간 글자에서 '몇 번째 줄'과 '무슨 에러'인지 찾아본다.
2
AI에게 보여주기
에러 메시지를 복사해서 "이 에러를 수정해줘"라고 AI에게 요청한다.
3
고쳐서 다시 실행
AI가 준 수정 코드를 적용하고 다시 실행해 본다.
4
선생님께 질문
그래도 안 되면 '에러 메시지 + 내가 시도한 것'을 함께 설명한다.