[번역] 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()
관련 자료
- API Reference for
tool
- How to create custom tools
- How to pass run time values to tools
- All LangChain tool how-to guides
- Additional how-to guides that show usage with LangGraph
- Tool integrations, see the tool integration docs.