안녕하세요~ IT 다이어리 독자 여러분 😊
지난번 포스팅에서 ReAct 프롬프팅에 대해 간략히 소개했는데, 오늘은 이 부분에 대해 더 자세히 설명해 드릴거에요!
ReAct가 뭐예요?
'ReAct'는 'Reason(추론)'과 'Act(행동)'의 합성어예요. 쉽게 말해, AI가 주어진 문제에 대해 먼저 생각(추론)하고, 그 생각을 바탕으로 행동하는 방식이에요. 그리고 행동의 결과를 보고 다시 생각하고, 또 행동하고... 이런 과정을 반복하면서 문제를 해결해 나가는 방식이죠.
우리 인간도 사실 뭔가를 해결할 때 이런 과정을 거치잖아요? 예를 들어, 여행 계획을 세울 때:
- 생각(Reason): "서울에서 부산까지 어떻게 가지?"
- 행동(Act): 네이버에 '서울 부산 교통' 검색
- 관찰(Observe): KTX, 버스, 비행기 등의 옵션이 있네?
- 생각(Reason): "KTX가 가장 빠르겠다. 요금은 얼마지?"
- 행동(Act): '서울 부산 KTX 요금' 검색 ...
ReAct는 이런 인간의 문제 해결 방식을 AI에게 가르쳐주는 거예요! 😲
백서에서는 이렇게 설명하고 있어요:
"ReAct는 LLM이 복잡한 작업을 해결하기 위해 자연어 추론과 외부 도구를 결합하는 패러다임입니다. 이는 인간이 실제 세계에서 작동하는 방식, 즉 언어적으로 추론하고 정보를 얻기 위한 행동을 취하는 방식을 모방합니다."
ReAct 프롬프팅이란?
ReAct는 Reasoning(추론)과 Acting(행동)을 결합한 특별한 프롬프팅 기법이에요. 이 기법은 AI가 생각하고, 행동하고, 관찰하는 세 단계를 반복하면서 문제를 해결하도록 안내해요.
ReAct의 주요 구성요소:
- Reasoning(추론): "이 문제를 해결하려면 어떤 정보가 필요할까?"
- Acting(행동): "그 정보를 얻기 위해 무엇을 해야 할까?"
- Observation(관찰): "행동의 결과로 무엇을 배웠을까?"
왜 기획자가 이걸 알아야 하나요?
사실 ReAct는 개발팀에서 구현해야 하는 고급 기술이에요. 하지만 기획자가 이걸 이해하고 있으면 다음과 같은 엄청난 이점이 있어요:
- 개발팀과 소통이 수월해져요 - "그냥 AI 챗봇 만들어주세요"가 아니라 "ReAct 방식으로 구현해서 사용자 질문에 더 정확히 답변할 수 있게 해주세요"라고 구체적으로 요청할 수 있어요.
- 더 강력한 AI 기능을 기획할 수 있어요 - 단순 Q&A를 넘어, 실시간 데이터를 검색하고 활용하는 고급 기능을 구상할 수 있어요.
- 프로토타입 테스트가 가능해요 - 간단한 ReAct 프로토타입을 만들어 사용자 반응을 미리 테스트해볼 수 있어요.
ReAct는 어떻게 작동하나요?
ReAct의 작동 과정은 생각보다 직관적이에요:
- 사용자 질문 입력: 사용자가 질문이나 요청을 입력해요.
- 추론(Reasoning): AI가 이 질문에 대해 먼저 생각해요. "이 질문에 답하려면 어떤 정보가 필요할까?"
- 행동(Acting): 필요한 정보를 얻기 위해 외부 도구(검색, API 호출 등)를 사용해요.
- 관찰(Observation): 행동의 결과를 관찰해요.
- 다시 추론: 얻은 정보를 바탕으로 다시 생각해요.
- 최종 답변: 충분한 정보를 모았다고 판단되면 최종 답변을 제공해요.
이 과정을 시각적으로 표현하면 이런 느낌이에요:
사용자: 메탈리카 밴드 멤버들의 자녀는 총 몇 명이야?
AI 내부 생각: 메탈리카 밴드 멤버가 누구인지, 그리고 각 멤버의 자녀 수를 알아야겠다.
AI 행동: [검색] 메탈리카 밴드 멤버는 누구인가?
AI 관찰: 제임스 헷필드, 라스 울리히, 커크 해밋, 로버트 트루히요
AI 내부 생각: 각 멤버의 자녀 수를 알아봐야겠다.
AI 행동: [검색] 제임스 헷필드의 자녀 수는?
AI 관찰: 3명
AI 행동: [검색] 라스 울리히의 자녀 수는?
AI 관찰: 3명
...계속 진행...
AI 최종 답변: 메탈리카 밴드 멤버들의 자녀는 총 10명입니다.
이거 그냥 AI Agent 아니에요? ReAct랑 Agent랑 뭐가 달라요?
너무 좋은 질문이에요! 사실 헷갈릴 수밖에 없는 개념이거든요. 근데 핵심 차이를 간단히 말하자면:
AI 에이전트 = 일을 처리하기 위해 만들어진 AI 시스템 전체 (자동차와 같은 완성품)
ReAct 프롬프팅 = 에이전트가 효과적으로 작동하게 하는 특정 기술 (자동차의 엔진과 같은 부품)
쉽게 설명하자면, ReAct는 에이전트를 만드는 방법 중 하나라고 생각하시면 돼요.
기획자가 ReAct를 활용하는 방법
개발팀에 요청하기 전에, 실제로 어떤 기능이 가능한지 이해하는 게 중요해요. 아래는 ReAct를 활용한 실제 사례들이에요.
1. 데이터 기반 의사결정 도우미
사용자: 우리 앱의 최근 3개월 이탈률 데이터를 분석해서 개선 방안을 제안해줘.
AI 내부 생각: 이탈률 데이터가 필요하고, 업계 평균과 비교해야겠다.
AI 행동: [데이터베이스 쿼리] 최근 3개월 이탈률 데이터 가져오기
AI 관찰: 1월 30%, 2월 35%, 3월 40%로 증가 추세
AI 행동: [검색] 모바일 앱 평균 이탈률
AI 관찰: 업계 평균은 25%
AI 내부 생각: 이탈률이 업계 평균보다 높고 증가 추세에 있다. 주요 이탈 시점과 원인을 확인해야겠다.
AI 행동: [데이터베이스 쿼리] 사용자 여정에서 주요 이탈 지점 분석
AI 관찰: 온보딩 완료 후 첫 사용 시점에서 이탈률이 가장 높음
...계속 진행...
AI 최종 답변: 3개월간 이탈률이 30%에서 40%로 증가했으며, 특히 온보딩 이후 첫 사용 단계에서 이탈이 많습니다. 다음과 같은 개선 방안을 제안합니다: 1) 온보딩 단순화, 2) 첫 사용 인센티브 제공, 3) 푸시 알림 최적화...
2. 맞춤형 사용자 지원 챗봇
사용자: 내 주문 #12345는 언제 배송될까요?
AI 내부 생각: 주문 번호를 확인하고 배송 상태를 조회해야겠다.
AI 행동: [API 호출] 주문 #12345 상태 확인
AI 관찰: 포장 완료 상태, 예상 배송일 5월 15일
AI 내부 생각: 배송이 지연된 이유가 있는지 확인해보자.
AI 행동: [API 호출] 해당 지역 배송 상황 확인
AI 관찰: 서울 지역 물류센터 정상 운영 중, 지연 없음
AI 최종 답변: 주문 #12345는 현재 포장이 완료되었으며, 5월 15일에 배송될 예정입니다. 서울 지역 배송이 정상적으로 운영 중이라 지연 없이 받으실 수 있을 것 같습니다. 배송 상태가 변경되면 알림을 보내드리겠습니다.
3. 경쟁사 분석 도우미
사용자: 우리 서비스와 비슷한 A사의 최근 업데이트 내용과 사용자 반응을 알려줘.
AI 내부 생각: A사의 최근 업데이트 내용과 사용자 반응을 찾아봐야겠다.
AI 행동: [검색] A사 최근 앱 업데이트 내역
AI 관찰: 4월 10일 버전 3.5 출시, 주요 기능: 다크모드, 새로운 결제 시스템, UI 개선
AI 행동: [API 호출] 앱스토어 A사 앱 리뷰 분석
AI 관찰: 최근 리뷰 평점 4.2/5, 다크모드에 대한 긍정적 반응, 결제 시스템 버그 관련 불만 다수
AI 행동: [소셜미디어 분석] A사 관련 트위터 감성 분석
AI 관찰: 긍정적 언급 65%, 부정적 언급 35%, 주요 불만은 결제 오류
...계속 진행...
AI 최종 답변: A사는 4월 10일 버전 3.5를 출시했으며, 다크모드, 새 결제 시스템, UI 개선이 주요 업데이트입니다. 사용자들은 다크모드에 매우 긍정적이나, 새 결제 시스템에서 버그를 경험하고 있습니다. 이는 우리가 결제 시스템 안정성을 강조하는 마케팅 포인트로 활용할 수 있는 기회입니다...
개발팀에 효과적으로 ReAct 요청하기
개발팀에 ReAct 구현을 요청할 때는 다음과 같은 요소를 명확히 전달하는 게 좋아요:
- 어떤 외부 도구가 필요한지: 검색 엔진, 데이터베이스, API, 파일 시스템 등
- 사용자 시나리오: 구체적인 사용 사례와 예상 질문
- 추론 과정 표시 여부: 사용자에게 AI의 생각 과정을 보여줄지 여부
- 기대하는 결과물: 최종 답변의 형식과 구조
예를 들어 이렇게 요청할 수 있어요:
"사용자 지원 챗봇에 ReAct 기능을 구현해주세요. 이 챗봇은:
1. 주문 관리 시스템 API에 접근해 주문 상태 확인
2. 배송 추적 API를 통해 배송 현황 조회
3. 자주 묻는 질문 데이터베이스 검색
4. 사용자에게는 최종 결과만 표시하되, 어드민 모드에서는 추론 과정도 확인 가능하게 구현
5. 답변 형식은 문제 확인 → 해결 방법 → 추가 안내 순으로 구성"
실제 ReAct 코드는 어떻게 생겼나요?
개발자가 아니더라도 기본적인 코드를 이해하면 소통에 도움이 돼요. 아래는 구글 백서에서 제시한 ReAct 기본 구현 코드예요:
from langchain.agents import load_tools
from langchain.agents import initialize_agent
from langchain.agents import AgentType
from langchain.llms import VertexAI
# 사용자 질문
prompt = "메탈리카 밴드 멤버들의 자녀는 몇 명인가요?"
# AI 모델 설정 (낮은 온도 = 더 정확한 추론)
llm = VertexAI(temperature=0.1)
# 외부 도구 로드 (여기서는 검색 기능)
tools = load_tools(["serpapi"], llm=llm)
# ReAct 에이전트 초기화
agent = initialize_agent(
tools,
llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True# 추론 과정 보여주기
)
# 실행
agent.run(prompt)
이렇게 실행하면 아래와 같은 출력이 나와요:
> 메탈리카는 4명의 멤버가 있습니다.
행동: 검색
행동 입력: 제임스 헷필드의 자녀 수는?
관찰: 3명의 자녀
생각: 1/4 메탈리카 밴드 멤버는 3명의 자녀가 있습니다.
행동: 검색
행동 입력: 라스 울리히의 자녀 수는?
관찰: 3명
생각: 2/4 메탈리카 밴드 멤버는 6명의 자녀가 있습니다.
행동: 검색
행동 입력: 커크 해밋의 자녀 수는?
관찰: 해밋은 1998년부터 두 번째 부인 라니와 결혼했습니다. 그들은 두 아들, 앤젤(2006년 9월 29일 출생)과 빈센조(2008년 6월 28일 출생)가 있습니다.
생각: 3/4 메탈리카 밴드 멤버는 8명의 자녀가 있습니다.
행동: 검색
행동 입력: 로버트 트루히요의 자녀 수는?
관찰: 2명
생각: 4/4 메탈리카 밴드 멤버는 10명의 자녀가 있습니다.
최종 답변: 10명
기획자가 자체 테스트해볼 수 있는 방법은?
개발팀에 요청하기 전에 간단히 테스트해보고 싶다면, 다음과 같은 방법이 있어요:
- ChatGPT Plus 활용하기: ChatGPT Plus의 웹 브라우징 기능을 사용하면 간단한 ReAct 동작을 테스트해볼 수 있어요.
- LangChain Playground 사용하기: 개발 지식이 있다면 LangChain의 웹 인터페이스에서 ReAct 테스트가 가능해요.
- 단계별 대화 시뮬레이션하기: 평범한 ChatGPT에서도 다음과 같이 ReAct를 시뮬레이션해볼 수 있어요:
당신은 ReAct(Reasoning + Acting) 방식으로 작동하는 AI 비서입니다.
다음 단계를 따르세요:
1. 내 질문을 분석하고 필요한 정보를 파악하세요(생각)
2. 필요한 정보를 얻기 위해 어떤 검색이나 도구를 사용할지 설명하세요(행동)
3. 그 검색이나 도구를 통해 얻을 수 있는 정보를 가정하세요(관찰)
4. 1-3단계를 충분한 정보를 얻을 때까지 반복하세요
5. 최종 답변을 제공하세요
질문: 2024년 대한민국 최고 흥행 영화 TOP3와 각 영화 감독은 누구인가요?
마무리하며
ReAct는 단순히 AI가 "답을 아는" 것을 넘어서 "답을 찾아내는" 방식으로 작동해요. 이는 실시간 정보가 필요하거나, 복잡한 추론이 필요한 상황에서 특히 유용해요.
물론 ReAct를 구현하려면 개발 리소스가 필요하고, 외부 API나 도구 연동이 필요해서 간단하지만은 않아요. 하지만 기획자로서 이런 개념을 이해하고 있으면, AI 기능을 더 효과적으로 기획하고 개발팀과도 더 원활하게 소통할 수 있어요.
이 글은 구글의 "Prompt Engineering" 백서와 ReAct 관련 논문 "ReAct: Synergizing Reasoning and Acting in Language Models"를 참고했어요.