Agents

Chain이 기능 단위로 서비스를 구성한다면, 특정 도메인에 특화하거나 더 고수준의 어플리케이션을 구성하기 위해 LangChain은 Agent를 제공합니다. Chain에서는 작업 순서가 고정이지만 Agent는 매 단계마다 다음 작업(Agent의 호출이나 툴의 사용)을 LM과 프롬프트를 이용하여 결정합니다.

LangChain의 Agent에서는 다음 작업의 더 나은 결정을 위해 ReAct 기법을 사용하거나, 툴의 입력 스키마를 보고 알맞은 데이터를 출력하거나, 미리 모든 작업 순서를 결정하거나, 검색을 강제하는 등의 기능을 제공합니다. 또한 대화형 Agent 나 Python 코드를 실행하는 Agent 등을 미리 구성하여 제공하기도 합니다.

Tool & Toolkit

LangChain에서는 Agent가 호출할 수 있는 유용한 함수들을 툴의 형태로 제공합니다. Agent는 LLM을 이용하여 툴의 이름과 설명, 입력 스키마를 보고 사용여부와 순서, 입력 데이터 형태를 결정합니다. 보통 3~5개의 툴을 묶어서 툴킷으로 제공하는데 예로 Gmail 툴킷에는 내부적으로 createDraft, sendMessage, search, getMessage, getThread툴이 존재합니다.

다양한 외부 API, DB, 파일 형식을 지원하는 연동 툴과 사용자 인터렉션을 받는 Human-in-the-loop 툴도 제공하며 커스텀 툴도 추가 가능합니다.

Agent와 Tool 관련하여 아주 많은 내용이 있지만, 이는 기본 기능 이라기 보다는 특정 어플리케이션을 구성하는 방법으로 상세한 내용은 본 글에서 다루지 않으니 공식 문서를 참조하시길 바랍니다.

LLM을 이용하여 어플리케이션을 제공하는 수준의 레벨에서는 커스텀 Agent와 커스텀 툴킷을 활용합니다.