Agents.js 출시: JavaScript를 사용하여 LLM에 도구 제공
Hugging Face는 대형 언어 모델(LLMs)에 도구 접근을 제공하도록 설계된 JavaScript 라이브러리인 Agents.js를 소개했습니다. 이를 통해 개발자는 브라우저 기반 또는 서버 사이드 환경에서 멀티모달 작업을 수행할 수 있는 에이전트를 구축할 수 있습니다.
핵심 기능 및 사용법
HfAgent 객체는 라이브러리의 주요 진입점입니다. 개발자는 Hugging Face 액세스 토큰을 사용하여 에이전트를 인스턴스화하고 평문 명령을 통해 상호작용할 수 있습니다. 에이전트는 목표를 달성하기 위해 JavaScript 코드를 생성하고, 그 코드를 평가하여 결과를 생성합니다.
실행 워크플로우
Agents.js로 작업을 실행하는 두 가지 주요 방법이 있습니다:
- 수동 코드 생성 및 평가:
generateCode를 사용하여 JavaScript 로직을 만들고evaluateCode를 실행합니다. 이는 보안상의 이유로 권장되는 경로입니다. - 직접 실행:
run메서드를 사용하여 한 단계에서 코드를 생성하고 실행합니다.
데이터 출력
에이전트가 반환하는 결과는 message(정보 텍스트)와 data(문자열 또는 Blob일 수 있음)를 포함하는 Update 객체로 제공됩니다. Blob을 사용하면 에이전트는 이미지나 오디오와 같은 멀티모달 출력을 반환할 수 있습니다.
보안 고려 사항
LLM이 생성한 임의의 코드를 실행하는 것은 상당한 보안 위험을 초래합니다. Hugging Face는 신뢰할 수 없는 환경에서는 이를 수행해서는 안 된다고 경고합니다. 이 위험을 완화하기 위해 개발자는 run 메서드 대신 generateCode와 evaluateCode 시퀀스를 사용하는 것이 권장됩니다. 이를 통해 실행 전에 생성된 코드를 수동으로 검토할 수 있습니다.
커스터마이징 및 확장성
Agents.js는 유연성을 위해 설계되었으며, 개발자는 기본 언어 모델을 교체하고 전문 도구를 추가할 수 있습니다.
커스텀 LLM
기본적으로 라이브러리는 Inference API를 통해 OpenAssistant/oasst-sft-4-pythia-12b-epoch-3.5 모델을 사용합니다. 그러나 문자열 입력을 받아 문자열을 반환하는 프라미스를 반환하는任何 비동기 함수는 커스텀 LLM으로 사용할 수 있습니다.これにより、OpenAI의 text-davinci-003와 같은 다른 제공업체와의 통합이 가능해집니다.
커스텀 도구
개발자는 맞춤형 Tool 객체를 정의하여 에이전트의 기능을 확장할 수 있습니다. 도구 정의에는 다음이 필요합니다:
- LLM이 도구를 사용할 시기를 이해하도록 돕는 이름과 설명.
- LLM이 도구를 호출하는 방법을 안내하는 프롬프트-코드 쌍으로 구성된 예시.
- 실제 실행 로직을 정의하는 call 함수.
이러한 커스텀 도구는 에이전트 초기화 중에 라이브러리가 제공하는 defaultTools와 병합할 수 있습니다.
멀티모달 입력 지원
Agents.js는 에이전트에 입력 파일을 전달하는 것을 지원합니다. FileList를 generateCode 또는 evaluateCode에 제공하면 에이전트는 이러한 파일을 워크플로에 통합할 수 있습니다. 예를 들어, 에이전트는 업로드된 이미지에 캡션을 추가하도록 지시하고、imageToText와 evaluateCode의 조합을 사용하여 해당 캡션을 음성으로 변환할 수 있습니다.