여러 도구 정의하기

LangChain으로 에이전트형 시스템 설계하기

Dilini K. Sumanapala, PhD

Founder & AI Engineer, Genverv, Ltd.

여러 도구 통합하기

여러 도구를 가진 봇

   

  • 사용자 정의 도구 여러 개 추가

  • 질의별 도구 선택 자동화

LangChain으로 에이전트형 시스템 설계하기

교육용 챗봇 강화하기

큰 책 위에 앉아 독서하는 사람들.

 

  • 역사적 사건 검색

  • 회문 확인:

     
    • level = level

    • top spot = tops pot

LangChain으로 에이전트형 시스템 설계하기

도구를 만드는 여러 방법

 

  • LLM 호출

    자연어 입력으로 역사적 날짜를 조회합니다. 예: "5th of November"
      Agent: The 5th of November is famous for the Gunpowder treason and 
      plot...
    
  • Python 코드

    문자열 직접 비교로 회문을 찾습니다. 예: string == string[::-1]
      Agent: Yes, "madam" is a palindrome...
    
LangChain으로 에이전트형 시스템 설계하기

역사적 사건 도구

# 데코레이터로 도구 레이블 지정 및 입력 형식을 문자열로 설정
@tool

def date_checker(date: str) -> str:
"""주어진 날짜(형식 무관)에 대한 주요 역사적 사건을 제공합니다."""
try: # 날짜를 해석하고 역사적 사건을 생성하도록 LLM 호출 answer = llm.invoke(f"List important historical events that occurred on {date}.")
# 응답 반환 return answer.content
# 조회 오류에 대한 예외 블록 설정 except Exception as e: return f"Error retrieving events: {str(e)}"
LangChain으로 에이전트형 시스템 설계하기

회문 도구

@tool

# 입력 형식을 문자열로 설정 def check_palindrome(text: str):
"""단어나 구가 회문인지 확인합니다."""
# 영숫자가 아닌 문자를 제거하고 소문자로 변환 cleaned = ''.join(char.lower() for char in text if char.isalnum())
# 뒤집은 텍스트가 원본과 같은지 확인 if cleaned == cleaned[::-1]: return f"The phrase or word '{text}' is a palindrome." else: return f"The phrase or word '{text}' is not a palindrome."
LangChain으로 에이전트형 시스템 설계하기

여러 도구 바인딩하기

# ToolNode 정의에 필요한 모듈 가져오기
from langgraph.prebuilt import ToolNode


# 도구 목록 tools = [wikipedia_tool, date_checker, check_palindrome]
# 도구를 ToolNode()에 전달 tool_node = ToolNode(tools)
# 도구를 LLM에 바인딩 model_with_tools = llm.bind_tools(tools)
LangChain으로 에이전트형 시스템 설계하기

Vamos praticar!

LangChain으로 에이전트형 시스템 설계하기

Preparing Video For Download...