create_react_agent의 역할

Published by onesixx on

create_react_agent의 역할 (LangChain)

create_react_agent는 LangChain에서 ReAct (Reasoning + Acting) 프레임워크를 기반으로 한 Agent를 생성하는 함수
agent는 사용자 질의 → 도구 선택 → 추론 → 실행 과정을 반복해 복잡한 작업을 해결합니다.

1. 핵심 기능

  • ReAct 프롬프팅: LLM이 “생각(Thought)” → “행동(Action)” → “관찰(Observation)” 사이클로 문제를 해결합니다.
  • 도구 통합: 검색, 계산, 코드 실행 등 외부 도구를 동적으로 사용할 수 있습니다.
  • 자동화된 작업 분해: 복잡한 질문을 단계별 하위 작업으로 분할해 처리합니다.

2. 사용 예시

pythonfrom langchain.agents import create_react_agent, AgentExecutor
from langchain import hub
from langchain.tools import Tool
from langchain_community.utilities import GoogleSerperAPIWrapper

# 1. 도구 설정 (예: 구글 검색)
search = GoogleSerperAPIWrapper()
tools = [
    Tool(
        name="Search",
        func=search.run,
        description="Google 검색을 사용해 최신 정보를 조회합니다."
    )
]

# 2. ReAct 프롬프트 템플릿 로드
prompt = hub.pull("hwchase17/react")

# 3. 에이전트 생성 (LLM + 도구 + 프롬프트)
agent = create_react_agent(
    llm=ChatOpenAI(model="gpt-3.5-turbo", temperature=0),
    tools=tools,
    prompt=prompt
)

# 4. 에이전트 실행기 생성
agent_executor = AgentExecutor(
    agent=agent,
    tools=tools,
    verbose=True  # 단계별 로그 출력
)

# 5. 질의 실행
response = agent_executor.invoke({
    "input": "성남시에서 2025년에 개최되는 AI 컨퍼런스는 어디인가요?"
})
print(response["output"])

3. 작동 방식

  1. 사용자 입력
    • "성남시 AI 컨퍼런스 2025 위치 찾기" 같은 질문을 받습니다.
  2. ReAct 사이클
    • Thought: “구글 검색으로 최신 정보를 찾아야 한다.”
    • ActionSearch 도구 호출 → "성남시 AI 컨퍼런스 2025" 검색
    • Observation: 검색 결과에서 장소(예: “판교테크노밸리”) 추출
  3. 결과 반환
    • "2025년 성남시 AI 컨퍼런스는 판교테크노밸리에서 개최됩니다."

4. 주요 파라미터

파라미터설명
llmOpenAI, Claude, Llama 2 등 LLM 모델
tools사용 가능한 도구 리스트 (검색, 계산기, Python 실행 등)
promptReAct 지시사항이 포함된 프롬프트 템플릿
max_iterations최대 반복 횟수 (무한 루프 방지)

5. 활용 사례

  • 실시간 정보 검색 (날씨, 주가, 뉴스)
  • 데이터 분석 (Python + Pandas 연동)
  • 멀티스텝 작업 (예: “오늘 서울 날씨 확인 후 영어로 번역”)

6. 주의사항

  • 도구 신뢰성: 외부 API (검색, 계산) 결과에 의존하므로 오류 가능성을 고려해야 합니다.
  • 비용 제어: LLM 호출 횟수가 증가할수록 토큰 비용이 늘어납니다.

🔍 ReAct 프롬프트 구조는 LangChain 공식 문서에서 확인할 수 있습니다.

Categories: Uncategorized

onesixx

Blog Owner

Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x