iBetter Books
교안 슬라이드
수정

에이전트 소개

에이전트는 LLM이 스스로 생각하고, 도구를 선택하며, 문제를 해결하는 시스템입니다.

에이전트란 무엇인가

일반 LLM

입력: "서울 날씨 알려줘"
출력: "저는 실시간 정보에 접근할 수 없습니다."

에이전트

입력: "서울 날씨 알려줘"

[에이전트 내부]
생각: 날씨 정보가 필요하다. 날씨 API를 사용하자.
행동: weather_api("서울")
관찰: 서울 현재 15도, 맑음

출력: "서울의 현재 날씨는 맑고, 기온은 15도입니다."

ReAct 패턴

에이전트의 핵심은 ReAct (Reasoning + Acting) 패턴입니다.

Question: 에펠탑의 높이를 피트로 알려줘

Thought: 에펠탑 높이를 미터로 검색한 후 피트로 변환해야겠다.
Action: search("에펠탑 높이")
Observation: 에펠탑의 높이는 330미터입니다.

Thought: 330미터를 피트로 변환해야 한다. 1미터 = 3.28피트
Action: calculator("330 * 3.28")
Observation: 1082.4

Thought: 계산 완료. 답변하자.
Answer: 에펠탑의 높이는 약 1,082피트입니다.

에이전트 구성 요소

에이전트 구성 요소

구성 요소 역할
LLM 추론, 판단, 도구 선택
도구 외부 세계와 상호작용
메모리 상태와 대화 기록 유지

도구 (Tools)

에이전트가 사용할 수 있는 기능들입니다.

from langchain.tools import tool@tooldef search(query: str) -> str:    """웹에서 정보를 검색합니다."""    # 실제 검색 수행    return f"'{query}' 검색 결과: ..."@tooldef calculator(expression: str) -> str:    """수학 계산을 수행합니다."""    return str(eval(expression))@tooldef weather(city: str) -> str:    """도시의 현재 날씨를 조회합니다."""    # 날씨 API 호출    return f"{city}: 맑음, 15도"

에이전트 유형

1. ReAct 에이전트

ReAct 에이전트 흐름

가장 기본적인 형태로, 생각-행동-관찰을 반복합니다.

2. 플랜-앤-실행 에이전트

먼저 전체 계획 수립
계획에 따라 순차 실행

3. 멀티 에이전트

여러 에이전트가 협업
각자 전문 분야 담당

에이전트 vs 체인

항목 체인 에이전트
흐름 고정 동적
도구 없음/고정 선택적
반복 불가 가능
판단 없음 있음

체인

# 고정된 순서chain = prompt | llm | output_parserresult = chain.invoke({"input": "질문"})

에이전트

# 동적 실행agent = create_react_agent(llm, tools, prompt)# 상황에 따라 다른 도구 선택, 반복 가능result = agent.invoke({"input": "질문"})

에이전트 활용 사례

1. 정보 수집

"애플의 최근 분기 실적과 경쟁사 비교 리포트 작성해줘"

→ 검색 → 데이터 추출 → 비교 분석 → 문서 작성

2. 작업 자동화

"받은 이메일 중 중요한 것 요약하고 답장 초안 작성해줘"

→ 이메일 조회 → 분류 → 요약 → 답장 생성

3. 코드 작업

"이 프로젝트의 테스트 커버리지 확인하고 부족한 부분 보완해줘"

→ 코드 분석 → 테스트 실행 → 커버리지 확인 → 테스트 작성

간단한 에이전트 예시

from langchain.agents import create_react_agent, AgentExecutorfrom langchain.tools import Toolfrom langchain_ollama import OllamaLLMfrom langchain import hub# LLMllm = OllamaLLM(model="llama4")# 도구def search(query):    return f"'{query}'에 대한 검색 결과입니다."def calculate(expr):    return str(eval(expr))tools = [    Tool(name="search", func=search, description="정보 검색"),    Tool(name="calculator", func=calculate, description="수학 계산")]# 프롬프트prompt = hub.pull("hwchase17/react")# 에이전트 생성agent = create_react_agent(llm, tools, prompt)executor = AgentExecutor(agent=agent, tools=tools, verbose=True)# 실행result = executor.invoke({"input": "100의 제곱근은?"})print(result["output"])

정리

개념 설명
에이전트 자율적으로 추론하고 행동하는 AI
ReAct 생각-행동-관찰 반복 패턴
도구 외부 세계와 상호작용하는 함수
메모리 상태와 대화 기록 유지

다음 단계

에이전트 개념을 소개했습니다. 다음 장에서는 3권 환경을 설정합니다.