
에이전트(Agent)는 대형 언어 모델(Large Language Model, LLM)의 잠재력을 최대한 활용하여 더욱 강력한 응용 프로그램을 만들 수 있도록 도와주는 개념입니다. 이전에 배운 모델 입력과 출력, 데이터 연결, 체인을 결합하여 에이전트를 구성할 수 있습니다.
사실, 우리는 이미 에이전트와 유사한 직접 만든 응용 프로그램을 사용해 왔습니다. 하지만 에이전트는 반응 틀(ReAct Framework)을 활용하여 한 단계 더 발전된 기능을 제공합니다.
에이전트의 핵심은 대형 언어 모델이 도구에 연결될 수 있도록 하는 것입니다. 여기서 도구란 위키피디아, 계산기, 구글 검색 등과 같은 다양한 서비스를 말합니다. 에이전트는 이러한 도구들 사이에서 적절한 것을 선택하고, 이를 활용하여 작업을 완수하는 구조적인 접근 방식을 취합니다.
이 접근 방식은 "언어 모델에서의 추론과 행동의 반응 시너지"라는 논문에 기반하고 있습니다. 이 논문은 언어 모델이 올바른 답을 찾기 위해 추론 과정을 추적하거나 행동을 취할 수 있는 모델을 설명하고 있습니다.
예를 들어, 에이전트는 어떤 환경에서 행동을 취하고 그 결과를 관찰하여 다음 행동을 결정할 수 있습니다. 이는 마치 사슬을 구축하는 것과 같습니다.
질문: "아인슈타인이 몇 년도에 태어났는지 알려주세요. 그 해에 5를 곱하면 얼마인가요?"
이 질문은 여러 단계로 나뉩니다:
에이전트는 먼저 적절한 도구를 선택합니다:
1879 * 5를 계산합니다.에이전트는 몇 줄의 코드로도 만들 수 있을 만큼 사용과 설정이 간단합니다. 하지만 그 잠재력은 매우 큽니다. 특히 사용자 지정 도구와 결합하면 더욱 강력해집니다. 예를 들어:
하지만 에이전트는 완벽하지 않습니다. 사용 중에 예상치 못한 행동을 할 수 있으며, 가끔은 반복되는 루프에 빠지거나 혼란스러워할 수 있습니다. 따라서 에이전트를 활용할 때는 이러한 한계를 이해하고 주의 깊게 사용해야 합니다.
이제 실제로 작동하는 에이전트를 만들어 보겠습니다. 이 코드는 .env 파일에서 OPENAI_API_KEY를 불러와 사용합니다.
pip install openai langchain python-dotenv
.env 파일 생성 및 API 키 저장프로젝트 루트 디렉토리에 .env 파일을 생성하고 다음 내용을 추가합니다:
OPENAI_API_KEY=your_openai_api_key_here
your_openai_api_key_here 부분을 실제 OpenAI API 키로 교체하세요.
# agent_example.py
import os
from dotenv import load_dotenv
from langchain import OpenAI, LLMMathChain, SerpAPIWrapper
from langchain.agents import initialize_agent, Tool
# .env 파일에서 API 키 로드
load_dotenv()
OPENAI_API_KEY = os.getenv('OPENAI_API_KEY')
# LLM 설정
llm = OpenAI(temperature=0, openai_api_key=OPENAI_API_KEY)
# 도구 설정
search = SerpAPIWrapper() # 구글 검색 기능을 제공하는 래퍼
llm_math_chain = LLMMathChain(llm=llm)
tools = [
Tool(
name="검색",
func=search.run,
description="현재 정보를 검색할 때 사용합니다."
),
Tool(
name="계산기",
func=llm_math_chain.run,
description="수학 계산이 필요할 때 사용합니다."
)
]
# 에이전트 초기화
agent = initialize_agent(
tools,
llm,
agent="zero-shot-react-description",
verbose=True
)
# 에이전트 실행
question = "아인슈타인이 몇 년도에 태어났는지 알려주세요. 그 해에 5를 곱하면 얼마인가요?"
agent.run(question)
dotenv 라이브러리를 사용하여 .env 파일에서 OPENAI_API_KEY를 불러옵니다.temperature를 0으로 설정하여 일관된 출력을 얻습니다.SerpAPIWrapper: 구글 검색 기능을 제공합니다.LLMMathChain: 수학 계산을 수행합니다.initialize_agent 함수를 사용하여 에이전트를 설정합니다.agent 매개변수로 "zero-shot-react-description"을 사용하여 반응 틀을 적용합니다.verbose=True로 설정하여 에이전트의 내부 동작을 출력합니다.터미널에서 다음 명령어를 실행하세요:
python agent_example.py
에이전트는 다음과 같은 단계를 거쳐 답변을 생성합니다:
1879 * 5를 계산합니다.SerpAPIWrapper를 사용하기 위해서는 SerpAPI 키가 필요합니다. 키를 발급받아 .env 파일에 추가하세요:SERPAPI_API_KEY=your_serpapi_key_here
SerpAPIWrapper 대신 다른 검색 도구를 사용하거나, 간단히 생년을 하드코딩하여 테스트할 수 있습니다.이번 시간에는 에이전트의 개념과 작동 방식에 대해 자세히 알아보았습니다. 또한 실제로 에이전트를 구축하고 실행해 보았습니다.
에이전트는 강력한 도구이지만, 그만큼 책임감 있게 사용해야 합니다. 이제 이 코드를 기반으로 여러분만의 에이전트를 만들어 보세요!