반응형
ReAct 프롬프트 기법은 프론트엔드 개발자뿐 아니라 AI 에이전트, 검색 기반 질의응답, 논리적 추론형 자동화 시스템을 설계할 때 매우 중요한 기법이에요. 이걸 잘 이해하면 Claude나 GPT 계열 모델에서 보다 정확하고, 추론 능력이 뛰어난 답변을 얻을 수 있습니다.
🧠 ReAct 프롬프트 기법이란?
ReAct = Reasoning + Acting
ReAct는 AI가 단순히 "대답"만 하는 것이 아니라,
**추론(Reasoning)**과 **행동(Acting)**을 번갈아 가며 수행하도록 유도하는 프롬프트 설계 방식입니다.
📌 목적
- 단순 응답이 아니라 생각 과정을 따라가며 답을 내리게 하기
- 도구 사용, 검색, 계산 등 단계적 사고와 행동 분리
- 멀티 스텝으로 문제를 풀거나, 외부 데이터에 의존하는 작업을 정확하게 처리
🧬 ReAct 프롬프트 구조
ReAct 기법은 일반적으로 다음과 같은 구성으로 작성됩니다:
질문: [질문 내용]
생각: [AI의 첫 번째 추론]
행동: [어떤 도구를 사용하거나 행동함]
관찰: [행동 결과를 받아봄]
생각: [새로운 생각 or 판단]
행동: ...
...
답변: [최종 결론]
📦 예제 1: 계산 문제 (GPT나 Claude에게 계산기처럼 쓰기)
질문: "5개의 사과가 있고, 3개를 더 샀습니다. 사과는 총 몇 개인가요?"
생각: 사과가 5개 있었고, 거기에 3개를 더했습니다.
행동: 계산(5 + 3)
관찰: 8
생각: 계산 결과, 총 사과는 8개입니다.
답변: 사과는 총 8개입니다.
👉 Claude나 GPT가 단순히 "5+3=8"이 아니라, 생각하고 계산 도구를 쓰는 척 하게 됩니다.
🧩 예제 2: 검색 기반 정보 수집 (RAG 시스템용)
질문: “서울의 7월 평균 기온은 얼마인가요?”
생각: 서울의 7월 평균 기온은 외부 정보를 찾아야 한다.
행동: 웹 검색("서울 7월 평균 기온")
관찰: 서울의 7월 평균 기온은 약 25.5도입니다.
생각: 관찰 결과를 바탕으로 요약해야 합니다.
답변: 서울의 7월 평균 기온은 약 25.5도입니다.
💡 ReAct의 강점 요약
| 특징 | 설명 |
| 🔍 사고 과정 분리 | '왜 그렇게 생각했는지' AI가 서술 → 투명한 추론 |
| 🛠 도구 호출과 연결 용이 | "행동" 파트에 실제 API 호출 / 함수 실행 연결 가능 |
| 📚 RAG 시스템에 최적화 | 벡터 검색 결과를 '관찰'로 받아 다음 추론에 반영 |
| 🤖 AI Agent 설계에 핵심 | Claude나 GPT를 멀티 스텝 Agent처럼 동작하게 만듦 |
🧪 예제 3: 프론트엔드 개발자용 ReAct 프롬프트
질문:
"이 React 컴포넌트에서 무한 루프가 발생하는 이유를 설명해줘"
질문: 이 React 코드에서 무한 루프가 발생하는 이유를 설명해줘.
코드:
useEffect(() => {
fetchData();
}, [data]);
생각: 이 코드는 useEffect에서 fetchData를 실행하고 있습니다.
행동: data가 바뀔 때마다 useEffect가 실행됨
관찰: fetchData가 data를 바꾸면 → 무한 루프 발생
생각: 의존성 배열에 data가 있어서, 데이터 변경 → fetchData 재실행이 반복되는 것
답변: 무한 루프의 원인은 useEffect의 의존성 배열에 있는 `data`가 `fetchData`에 의해 계속 바뀌기 때문입니다.
🤖 Claude나 GPT에 ReAct 프롬프트 적용할 때 팁
✅ 프롬프트 템플릿 예시
너는 숙련된 전문가야. 다음 질문에 답하기 전에,
- 먼저 논리적으로 사고(생각)
- 필요 시 행동(검색, 계산, 코드 분석)
- 그 결과(관찰)를 바탕으로 다시 추론해
- 마지막에 최종 답변을 내려줘
형식은 아래처럼 해줘:
질문: ...
생각: ...
행동: ...
관찰: ...
답변: ...
🧠 Claude에 특화된 팁
- Claude는 GPT보다 "사고 흐름"에 민감해서 ReAct 구조가 더 자연스럽게 작동합니다.
- 특히 Claude 3 Opus는 긴 문서 내에서 정보 추출 → 판단에 강력해서 복합 문서 기반 분석 에이전트로 적합합니다.
🟦 TypeScript: ReAct Prompt Generator 템플릿
// ReAct Prompt Generator - TypeScript 버전
export const generateReActPrompt = (question: string, context: string = ""): string => {
return `
너는 숙련된 전문가야. 아래 질문에 대해 단계적으로 사고하고 행동한 뒤, 결론을 내려줘.
질문: ${question}
문맥 정보: ${context}
아래와 같은 형식으로 답변해줘:
생각: ...
행동: ...
관찰: ...
생각: ...
행동: ...
관찰: ...
답변: ...
`;
};
📌 generateReActPrompt("React에서 무한루프가 발생하는 이유는?") 처럼 사용 가능
🟨 JSON 템플릿 (API 연동용 or LangChain용)
{
"prompt_template_name": "ReAct Prompt Generator",
"description": "Generates a structured ReAct prompt for LLMs to perform multi-step reasoning and actions.",
"input_variables": ["question", "context"],
"output_prompt": "너는 숙련된 전문가야. 아래 질문에 대해 단계적으로 사고하고 행동한 뒤, 결론을 내려줘.\n\n질문: {question}\n문맥 정보: {context}\n\n아래와 같은 형식으로 답변해줘:\n\n생각: ...\n행동: ...\n관찰: ...\n생각: ...\n행동: ...\n관찰: ...\n답변: ..."
}
✅ 이 JSON은 LangChain, n8n, or GPT API 자동화 프롬프트에 그대로 활용 가능
✅ 정리
| 개념 | 설명 |
| ReAct란? | AI가 사고(Reason) + 행동(Act)을 반복하며 문제 해결 |
| 활용 분야 | RAG 검색, 계산기 Agent, 코드 분석, API 호출 등 |
| 형식 구조 | 생각 → 행동 → 관찰 → 반복 → 최종 답변 |
| 도구와 연계 | n8n, LangChain, AutoGPT 등과 통합 시 필수 기법 |
반응형
'AI' 카테고리의 다른 글
| Spring AI + WebFlux로 LLM 호출 (2) | 2025.07.17 |
|---|---|
| 바이브코딩(Vibe Coding)이란? (2) | 2025.07.17 |
| Claude + MCP 연동 고급 자동화 시스템 (0) | 2025.07.17 |
| n8n이란? (0) | 2025.07.17 |
| AI 자동화 전문가 실무 학습 로드맵 (n8n 중심) (1) | 2025.07.17 |
