[번역] LangChain.js: Conceptual Guide: Tools



LangChain.js 의 주요 구성요소 및 개념(concept)들이 LangChain.js conceptual guide 페이지에 나열되어 있습니다. 이 포스트는 LangChain.js 의 concept 중 하나를 번역했습니다.



도구 (Tools)


도구 인터페이스

도구(tool) 인터페이스는 Runnable 인터페이스의 하위 클래스인 StructuredTool 클래스에 정의되어 있습니다.

도구의 스키마와 관련된 주요 속성:

  • name: 도구의 이름
  • description: 도구 기능 설명
  • args: 도구 인자의 JSON 스키마를 반환하는 속성

도구와 연결된 함수 실행을 위한 주요 메서드:

  • invoke: 주어진 인자로 도구 실행


tool 함수를 사용한 도구 생성

도구 생성 권장 방법은 tool 함수를 사용하는 것입니다. 이 함수는 도구 생성 과정을 단순화하도록 설계되었습니다.

import { tool } from "@langchain/core/tools";
import { z } from "zod";

const multiply = tool(
  ({ a, b }: { a: number; b: number }): number => {
    /**
     * 두 숫자를 곱합니다.
     */
    return a * b;
  },
  {
    name: "multiply",
    description: "두 숫자를 곱합니다",
    schema: z.object({
      a: z.number(),
      b: z.number(),
    }),
  }
);

자세한 도구 생성 방법은 커스텀 도구 생성 가이드를 참조하세요.

참고
LangChain은 StructuredTool 클래스 상속 등 다른 도구 생성 방법도 제공하지만, 대부분의 경우 tool 함수 사용을 권장합니다.


도구 직접 사용

도구를 정의한 후 직접 호출하여 사용할 수 있습니다:

await multiply.invoke({ a: 2, b: 3 });



도구 검사

도구의 스키마 및 속성을 확인할 수 있습니다:

console.log(multiply.name); // "multiply"
console.log(multiply.description); // "두 숫자를 곱합니다."

참고
createReactAgent 같은 사전 제작 컴포넌트를 사용할 때는 도구를 직접 사용하지 않아도 되지만, 디버깅이나 커스텀 워크플로우 작성 시 유용합니다.



스키마 구성

tool 함수는 도구 스키마 구성 추가 옵션을 제공합니다(이름 수정, 설명 추가 등). 자세한 내용은 API 레퍼런스와 커스텀 도구 가이드를 참조하세요.



도구 아티팩트

도구 실행 결과 중 모델에 노출하지 않고 하위 컴포넌트에 전달해야 하는 객체(데이터프레임, 이미지 등)가 있을 경우:

const someTool = tool(({ ... }) => {
    // 작업 수행
}, {
  responseFormat: "content_and_artifact" // 반환 타입 설정
});

자세한 내용은 아티팩트 반환 가이드 참조.


RunnableConfig

런타임 값을 도구에 전달하기 위해 RunnableConfig 객체 사용:

import { RunnableConfig } from "@langchain/core/runnables";

const someTool = tool(
    async (args: any, config: RunnableConfig): Promise<[string, any]> => {
        // 작업 수행
    },
    {
        name: "some_tool",
        description: "기능 수행 도구",
        schema: z.object({ ... }),
        returnType: "content_and_artifact"
    }
);

await someTool.invoke(..., { configurable: { value: "some_value" } });



모범 사례

  • 명확한 이름, 설명, 타입 힌트가 있는 도구를 작성
  • 단순하고 목적이 명확한 도구 설계
  • 도구 호출 API를 지원하는 채팅 모델 사용



툴킷(Toolkits)

함께 사용되는 도구들을 그룹화한 개념:

// 툴킷 초기화
const toolkit = new ExampleTookit(...)

// 도구 목록 가져오기
const tools = toolkit.getTools()

관련 자료



You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

This site uses Akismet to reduce spam. Learn how your comment data is processed.