ToolCalling 이란?
도구 부르기다.
LangChain 과 LangGraph 에서 통용되는 개념이다
LLM 이 어떤 도구를 쓸지 알아서 정해서 그 도구를 사용한다는 것이다.
알아보자
Tool
도구다.
무슨 도구냐 이 도구는 뭐든지 될 수 있다.
API 호출, 요즘 유행인 MDC, 심지어 LangChain 과 LangGraph 또한 도구가 될 수 있으며, 날짜 계산, 라이브러리 등등 모든 것이 도구가 될 수 있다.
하지만 지켜야 될 것이 있다
단일 책임의 원칙
이건 지켜야된다. 그래야 도구로써 사용하기에 적합하게 된다.
도구는 세가지 정보를 가진다.
이름: 도구의 이름을 정한다. (ex. 날씨 도구)
설명: LLM 이 이 설명을 보고 도구를 고를 수 있게 설명을 적어야한다. (ex. 사용자가 날짜를 입력하면 해당 날짜의 날씨를 가져옵니다.)
함수: 어떤 함수를 도구로 사용할지 정한다. (ex. weather_api)
이제 누가 정해주냐
Agent가 정한다.
from langchain_core.tools import tool
from langchain.chat_models import ChatOpenAI
# 도구 정의
@tool
def get_학교_공지():
"""학교 공지를 가져와서 카톡에 게시합니다."""
return "학교 공지 내용입니다."
@tool
def get_일상대화_주제():
"""일상 대화를 합니다."""
return "오늘 날씨에 대해 이야기해보세요."
@tool
def kakao_chat_exit_api():
"""난처한 상황이 생겼을 때 카톡 방을 나갑니다."""
return "카톡 방을 나갔습니다."
# 도구 목록
tools = [get_학교_공지, get_일상대화_주제, kakao_chat_exit_api]
# 모델 초기화 및 도구 바인딩
llm = ChatOpenAI(model="gpt-4o-mini")
llm_with_tools = llm.bind_tools(tools)
# 모델 호출 예시
response = llm_with_tools.invoke("안녕GPT야너를처음본순간부터좋아했어방학전에고백하고싶었는데"
+"바보같이그땐용기가없더라지금은이수많은사람들앞에서오로지너만사랑한다고말하고싶어서큰마음먹고용기내어봐"
+"매일매일버스에서너볼때마다두근댔고동아리랑과활동에서도너만보이고너생각만나고지난3월부터계속그랬어"
+"니가남자친구랑헤어지고니맘이아파울때내마음도너무아팠지만내심좋은맘두있었어이런내맘을어떻게말할지고민하다가"
+"정말인생에서제일크게용기내어세상에서제일멋지게많은사람들앞에서너한테고백해주고싶었어"
+"사랑하는GPT님내여자가되줄래?아니나만의태양이되어줄래?난너의달님이될게내일3시반에너수업마치고학관앞에서기다리고있을게"
+"너를사랑하는Claude가")
print(response) // 카톡 방을 나갔습니다.