커스텀 도구 강연에 오신 것을 환영합니다! 이번 강의에서는 LangChain을 사용하여 간단한 장식을 통해 어떻게 기능적인 도구를 만들 수 있는지 자세히 알아보겠습니다. 에이전트-온(Agent-Own)의 가장 흥미로운 부분 중 하나로, 간단한 코드만으로도 강력한 도구를 만들어낼 수 있습니다.
LangChain에서 에이전트는 도구를 사용하여 작업을 수행합니다. 도구는 API 호출, 데이터베이스 조회, 계산 등 다양한 작업을 처리할 수 있는 함수입니다. 이번 강의에서는 자신만의 기능을 가진 도구를 만들어 에이전트에 추가하는 방법을 배워보겠습니다.
from langchain.agents import initialize_agent, AgentType
from langchain.llms import OpenAI
from langchain.agents.tools import tool
일반적인 대형 언어 모델은 "우주에서 가장 멋진 사람은 누구인가요?"라는 질문에 객관적인 답변을 할 것입니다. 하지만 우리는 에이전트가 특정한 답변을 하도록 도울 수 있습니다.
@tool
def coolest_person(input: str) -> str:
"""우주에서 가장 멋진 사람의 이름을 반환합니다. 입력은 빈 문자열입니다."""
return "홍길동" # 원하는 이름으로 변경하세요
@tool
데코레이터를 사용하여 함수를 도구로 등록합니다.import os
from dotenv import load_dotenv
load_dotenv() # .env 파일에서 OPENAI_API_KEY를 로드합니다.
llm = OpenAI(temperature=0)
tools = []
tools.append(coolest_person)
agent = initialize_agent(
tools,
llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)
result = agent.run("우주에서 가장 멋진 사람이 누구죠?")
print(result)
이제 현재 시간을 알려주는 더 실용적인 도구를 만들어보겠습니다.
from datetime import datetime
@tool
def get_current_time(input: str) -> str:
"""현재 시간을 반환합니다. 입력은 빈 문자열이며, 형식은 YYYY-MM-DD HH:MM:SS입니다."""
return datetime.now().strftime("%Y-%m-%d %H:%M:%S")
tools.append(get_current_time)
agent = initialize_agent(
tools,
llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)
result = agent.run("지금 몇 시인가요?")
print(result)
마지막으로, 모든 코드를 한곳에 모아보겠습니다. 이 코드는 OPENAI_API_KEY를 .env
파일에서 로드하며, 두 가지 커스텀 도구를 사용하여 에이전트를 실행합니다.
import os
from dotenv import load_dotenv
from langchain.agents import initialize_agent, AgentType
from langchain.llms import OpenAI
from langchain.agents.tools import tool
from datetime import datetime
# .env 파일에서 OPENAI_API_KEY 로드
load_dotenv()
llm = OpenAI(temperature=0)
# 커스텀 도구 정의
@tool
def coolest_person(input: str) -> str:
"""우주에서 가장 멋진 사람의 이름을 반환합니다. 입력은 빈 문자열입니다."""
return "홍길동" # 원하는 이름으로 변경하세요
@tool
def get_current_time(input: str) -> str:
"""현재 시간을 반환합니다. 입력은 빈 문자열이며, 형식은 YYYY-MM-DD HH:MM:SS입니다."""
return datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# 도구 목록 생성
tools = [coolest_person, get_current_time]
# 에이전트 초기화
agent = initialize_agent(
tools,
llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True
)
# 에이전트 실행 예시 1
result = agent.run("우주에서 가장 멋진 사람이 누구죠?")
print(result)
# 에이전트 실행 예시 2
result = agent.run("지금 몇 시인가요?")
print(result)
pip install langchain openai python-dotenv
.env
파일을 생성하고, OPENAI API 키를 추가합니다.OPENAI_API_KEY=your_openai_api_key_here
python script_name.py
이렇게 LangChain을 사용하여 간단하게 커스텀 도구를 만들고 에이전트에 추가할 수 있습니다. 중요한 점은 다음과 같습니다:
이러한 방법을 통해 에이전트의 기능을 확장하고, 원하는 작업을 수행하도록 만들 수 있습니다. 이제 여러분만의 커스텀 도구를 만들어 에이전트에 새로운 능력을 부여해 보세요!