LlamaIndex의 Agent, Tool 개념 설명

jihyelee·2024년 4월 21일
0

Agent

  • Agent란, 자동화된 추론과 의사결정을 가능케 하는 엔진
  • 사용자의 쿼리를 바탕으로 정확한 결과를 제공하기 위해 내부적인 결정을 거쳐 해당 쿼리를 실행
    • 내부적인 결정은 일반적으로 거대언어모델(LLM)이 시행
  • llamaindex에서 agent와 query engine의 차이점
    • query engine은 단순히 주어진 데이터를 읽고, 사용자의 질문에 대해 답변을 제공
    • agent는 역동적으로 데이터를 이해하고 수정할 수 있음
      • 다시 말해, 단순히 데이터를 읽는 것이 아니라 데이터를 읽고 쓸 수 있음

Agent의 핵심 구성요소

  • 반복적인 추론 (reasoning loop)
    • agent의 종류에 따라 다른 종류의 추론을 진행
    • 현재 llamanidex는 OpenAI Function agent, ReAct agent, LLMCompiler Agent 등을 지원
  • 도구 추상화 (tool abstraction)
    • tool이란 사람이 아니라 agent가 사용할 수 있도록 구성된 일종의 API 인터페이스
  • Agent 구성 코드 예시
from llama_index.core.tools import FunctionTool
from llama_index.llms.openai import OpenAI
from llama_index.core.agent import ReActAgent


# 샘플 Tool을 정의
# 해당 예시에서는 간단한 곱셈을 Tool로 만들어줌
def multiply(a: int, b: int) -> int:
    """Multiple two integers and returns the result integer"""
    return a * b


multiply_tool = FunctionTool.from_defaults(fn=multiply)

# 언어모델 초기화
llm = OpenAI(model="gpt-3.5-turbo-0613")

# 위에서 정의한 tool을 바탕으로 ReActAgent를 초기화
agent = ReActAgent.from_tools([multiply_tool], llm=llm, verbose=True)

Agent가 수행할 수 있는 작업들

  • 복잡한 질문을 작은 단위로 쪼갬
  • 어떠한 외부 도구(Tool)를 사용해 질의를 처리할지 결정, Tool 호출에 필요한 파라미터 결정
    • 데이터들에 대해 자동화된 검색(search, retrieval) 수행
  • 일련의 태스크를 계획
  • 메모리 모듈에 완료된 이전 태스크들을 저장
    • ReAct agent는 이러한 메모리를 바탕으로 반복적인 추론을 진행

Tool

  • Tool이란, agent를 위한 API 인터페이스
  • 다양한 종류의 Tool이 존재
    • FunctionTool: 사용자가 정의한 함수를 Tool로 쉽게 변환시켜주는 도구
    • QueryEngineTool: 기존의 query engine을 래핑시켜서 사용할 수 있도록 만들어주는 도구
    • 이 밖에도 LlamaHub에서 다양한 종류의 Tool을 지원

LlamaHub의 Tools

  • 외부의 다양한 API 등을 tool로 사용해 더 나은 응답을 생성할 수 있음
  • 아래는 tool의 개념 이해를 돕기 위한 몇 가지 예시들
    • WikipediaToolSpec
      • 위키피디아의 정보를 가져와 agent에게 tool로 제공
      • 원하는 페이지를 검색하거나 직접 원하는 페이지를 로드할 수도 있음
    • SlackToolSpec
      • 일련의 슬랙 채널에서 텍스트를 가져옴
    • ArxivToolSpec
      • agent로 하여금 ArXiv에서 최신 논문들과 그 논문들의 요약을 검색하고 최신 정보를 가져올 수 있도록 함
    • AzureTranslateToolSpec, AzureSpeechToolSpec
      • agent가 Azure의 번역, 음성(STT, TTS) 서비스를 활용할 수 있도록 함
    • PythonFileToolSpec
      • 파이썬 파일을 로드해 함수명, 인자, 설명을 자동으로 추출할 수 있도록 함

참고자료

  • LlamaIndex > Use cases > Agents (link)
  • LlamaIndex > Component Guides > Agents (link)
  • LlamaHub > Tools (link)
profile
Graduate student at Seoul National University, majoring in Artificial Intelligence (NLP). Currently AI Researcher at LG CNS AI Lab

0개의 댓글