37

실습: ReAct Agent 직접 구현

Day 3: ReAct 에이전트

학습 목표
  • ReAct 패턴을 OpenAI API로 직접 구현한다
  • Thought-Action-Observation 사이클을 코드로 표현한다
  • 사고 과정을 로깅하는 Agent를 만든다

미션: 생각하는 Agent 만들기

어제 만든 Tool을 사용하되, ReAct 패턴으로 추론하는 Agent를 구현하세요.

핵심 변경점

  1. System Prompt에 ReAct 지시 추가
  2. 매 루프마다 LLM의 Thought를 로깅
  3. 불필요한 Tool 호출 방지 로직
  4. 최대 반복 횟수와 조기 종료 조건

Agent가 해결할 테스트 시나리오

"A라인 설비 전체 점검하고 문제 있으면 원인과 필요 부품까지 알려줘"

어디서 돌리나

이 코드는 OpenAI API 를 부르므로 브라우저 안에서는 돌지 않습니다. 사이트의 Python Console은 표준 라이브러리만 갖춘 브라우저 파이썬이라 from openai import OpenAI 에서 ModuleNotFoundError 로 멈춥니다. 내 컴퓨터의 파이썬에 pip install openai 로 설치하고 OPENAI_API_KEY 를 환경변수에 넣은 뒤 돌리세요.

앞부분의 Tool 함수와 EQUIPMENT_DB·MANUAL_DB·INVENTORY_DB 는 표준 라이브러리만 쓰므로 그 부분만 떼어 Python Console 에 붙여넣으면 반환 문자열을 확인할 수 있습니다. 루프가 돌아가는 모습은 콘솔이 아니라 내 터미널에서 봅니다.

에디터 로딩 중...
힌트 보기
  • REACT_SYSTEM_PROMPT에 "생각하라"는 지시를 반드시 포함하세요
  • message.content와 message.tool_calls를 동시에 확인하세요
  • tool_call_id를 반드시 매칭하여 결과를 전달하세요
  • max_iterations로 무한 루프를 방지하세요
정답 보기
에디터 로딩 중...
AI로 학습하기 — 꿀팁
ReAct Thought-Action 사이클 파싱 점검AI 학습 팁

AI에게 LLM 출력에서 Thought·Action·Observation을 파싱하는 코드의 엣지케이스를 찾게 해 사이클 안정성을 높이세요.

이 ReAct Agent 코드에서 LLM이 'Action:' 없이 Thought만 출력하거나, Action 이름이 정의된 Tool과 대소문자가 다를 때, 또는 Observation이 너무 길어 컨텍스트를 초과할 때 어떻게 처리되는지 분석하고 방어 코드를 추가해줘.
이 팁이 도움이 됐나요?
용어