Tavily 추출 통합

Tavily 추출 통합 (Tavily extract integration)

LangChain JavaScript로 Tavily 추출 툴과 통합해요.

Tavily는 AI 에이전트(LLM)를 위해 특별히 구축된 검색 엔진으로, 실시간으로 정확하고 사실적인 결과를 빠르게 제공해요. Tavily는 하나 이상의 URL의 정리·파싱된 콘텐츠를 추출하는 데 사용할 수 있는 Extract 엔드포인트를 제공해요.

개요 (Overview)

통합 세부 정보 (Integration details)

클래스 패키지 PY 지원 Downloads Version
TavilyExtract @langchain/tavily NPM - Downloads NPM - Version

툴 기능 (Tool features)

아티팩트 반환 네이티브 비동기 반환 데이터 가격
raw content and images 1,000 free credits / month

설정 (Setup)

이 통합은 @langchain/tavily 패키지에 있어요:

```bash npm npm install @langchain/tavily @langchain/core ```
yarn add @langchain/tavily @langchain/core
pnpm add @langchain/tavily @langchain/core

자격 증명 (Credentials)

Tavily API 키를 만들고 TAVILY_API_KEY 환경 변수로 설정하세요.

process.env.TAVILY_API_KEY = "YOUR_API_KEY"

최고 수준의 관측 가능성을 위해 LangSmith를 설정하는 것도 도움이 돼요 (필수는 아니에요):

process.env.LANGSMITH_TRACING="true"
process.env.LANGSMITH_API_KEY="your-api-key"

인스턴스화 (Instantiation)

툴은 인스턴스화 시 다음 파라미터를 받아요:

  • extractDepth (선택, string): 추출 깊이. "basic" 또는 "advanced". 기본값은 "basic".
  • includeImages (선택, boolean): 추출에 이미지 포함 여부. 기본값은 false.
  • format (선택, string): 콘텐츠 포맷. "markdown" 또는 "text". 기본값은 "markdown".
  • includeFavicon (선택, boolean): 각 결과의 favicon URL 포함 여부. 기본값은 false.

사용 가능한 파라미터에 대한 종합적인 개요는 Tavily Extract API 문서를 참고하세요.

import { TavilyExtract } from "@langchain/tavily";

const tool = new TavilyExtract({
  extractDepth: "basic",
  includeImages: false,
});

호출 (Invocation)

인자로 직접 호출

Tavily 추출 툴은 호출 시 다음 인자를 받아요:

  • urls (필수): 콘텐츠를 추출할 URL 목록.
  • 다음 인자도 호출 중에 설정할 수 있어요: extractDepth, includeImages.

참고: 선택적 인자는 에이전트가 동적으로 설정할 수 있어요. 인스턴스화 때 인자를 설정한 뒤 다른 값으로 호출하면, 호출 때 전달한 값이 사용돼요.

await tool.invoke({ urls: ["https://en.wikipedia.org/wiki/Lionel_Messi"] });
{
  results: [{
    url: 'https://en.wikipedia.org/wiki/Lionel_Messi',
    raw_content: 'Lionel Messi - Wikipedia\nJump to content\nMain menu\n... (truncated)',
    images: []
  }],
  failed_results: [],
  response_time: 0.02
}

ToolCall로 호출

모델이 생성한 ToolCall로도 툴을 호출할 수 있는데, 이 경우 ToolMessage가 반환돼요:

// This is usually generated by a model, but we'll create a tool call directly for demo purposes.
const modelGeneratedToolCall = {
  args: { urls: ["https://en.wikipedia.org/wiki/Lionel_Messi"] },
  id: "1",
  name: tool.name,
  type: "tool_call",
};

const toolMsg = await tool.invoke(modelGeneratedToolCall);

// The content is a JSON string of results
console.log(toolMsg.content.slice(0, 400));

에이전트 내에서 사용 (Use within an agent)

추출 툴을 createAgent에 전달해 LangChain 에이전트와 직접 사용할 수 있어요. 에이전트는 툴 호출의 일부로 URL 목록과 extractDepth·includeImages 같은 토글을 동적으로 설정할 수 있어요.

// @lc-docs-hide-cell
import { ChatOpenAI } from "@langchain/openai";

const llm = new ChatOpenAI({
  model: "gpt-5.5",
  temperature: 0,
});
import { TavilyExtract } from "@langchain/tavily";
import { createAgent } from "langchain";

const tavilyExtractTool = new TavilyExtract();

const agent = createAgent({
  model: llm,
  tools: [tavilyExtractTool],
});

const userInput = "Summarize https://en.wikipedia.org/wiki/Albert_Einstein and https://en.wikipedia.org/wiki/Theoretical_physics.";

const stream = await agent.streamEvents(
  { messages: [["human", userInput]] },
  { version: "v3" },
);

for await (const snapshot of stream.values) {
  const lastMsg = snapshot.messages[snapshot.messages.length - 1];
  if (lastMsg.tool_calls?.length) {
    console.dir(lastMsg.tool_calls, { depth: null });
  } else if (lastMsg.content) {
    console.log(lastMsg.content);
  }
}

API reference

모든 Tavily Extract API 기능과 구성에 대한 자세한 문서는 API reference를 참고하세요: docs.tavily.com/documentation/api-reference/endpoint/extract

출처: 문서

본문

TavilyExtract는 하나 이상의 URL에서 정리·파싱된 콘텐츠를 추출하는 툴이에요. extractDepth·includeImages·format·includeFavicon 등 옵션으로 인스턴스화하고, urls 목록으로 직접 호출하거나 createAgent에 툴로 전달할 수 있어요. 응답은 각 URL의 raw_contentimages를 포함해요.

더 알아보기 (Learn more)