Tavily 맵 통합
Tavily 맵 통합 (Tavily map integration)
LangChain JavaScript로 Tavily 맵 툴과 통합해요.
Tavily는 AI 에이전트(LLM)를 위해 특별히 구축된 검색 엔진으로, 실시간으로 정확하고 사실적인 결과를 빠르게 제공해요. Tavily는 페이지 콘텐츠를 추출하지 않고 웹사이트를 탐색하며 발견된 URL 목록을 반환하는 Map 엔드포인트를 제공해요. 이는 사이트 구조를 이해하거나 대형 사이트에서 특정 페이지를 찾는 데 이상적이에요.
개요 (Overview)
통합 세부 정보 (Integration details)
| 클래스 | 패키지 | PY 지원 | Downloads | Version |
|---|---|---|---|---|
TavilyMap |
@langchain/tavily |
✅ |
툴 기능 (Tool features)
| 아티팩트 반환 | 네이티브 비동기 | 반환 데이터 | 가격 |
|---|---|---|---|
| ❌ | ✅ | list of discovered URLs | 1,000 free credits / month |
설정 (Setup)
이 통합은 @langchain/tavily 패키지에 있어요:
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)
툴은 인스턴스화 시 다음 파라미터를 받아요:
maxDepth(선택, number): 시작 URL에서 최대 홉 수. 기본값은3.maxBreadth(선택, number): 레벨당 반환할 최대 URL 수. 기본값은50.limit(선택, number): 반환할 총 최대 URL 수. 기본값은100.instructions(선택, string): 맵 탐색을 안내하는 자연어 지침.selectPaths(선택, string[]): 이 경로 정규식을 포함한 URL만 포함.selectDomains(선택, string[]): 이 도메인 정규식의 URL만 포함.excludePaths(선택, string[]): 이 경로 정규식을 포함한 URL 건너뜀.excludeDomains(선택, string[]): 이 도메인 정규식의 URL 건너뜀.allowExternal(선택, boolean): 맵이 외부 링크를 따라갈 수 있는지.
사용 가능한 파라미터에 대한 종합적인 개요는 Tavily Map API 문서를 참고하세요.
import { TavilyMap } from "@langchain/tavily";
const tool = new TavilyMap({
maxDepth: 3,
maxBreadth: 50,
// limit: 100,
// allowExternal: false,
});
호출 (Invocation)
인자로 직접 호출
Tavily 맵 툴은 호출 시 다음 인자를 받아요:
url(필수): 맵핑을 시작할 기본 URL.- 다음 인자도 호출 중에 설정할 수 있어요:
instructions,selectPaths,selectDomains,excludePaths,excludeDomains,allowExternal.
참고: 선택적 인자는 에이전트가 동적으로 설정할 수 있어요. 인스턴스화 때 인자를 설정한 뒤 다른 값으로 호출하면, 호출 때 전달한 값이 사용돼요.
await tool.invoke({ url: "https://docs.tavily.com" });
{
"base_url": "https://docs.tavily.com",
"results": [
"https://docs.tavily.com/",
"https://docs.tavily.com/changelog",
"https://docs.tavily.com/welcome",
"https://docs.tavily.com/documentation/mcp",
"https://docs.tavily.com/documentation/about",
],
"response_time": 0.07
}
ToolCall로 호출
모델이 생성한 ToolCall로도 툴을 호출할 수 있는데, 이 경우 ToolMessage가 반환돼요:
// This is usually generated by a model, but we'll create a tool call directly for demo purposes.
const modelGeneratedToolCall = {
args: {
url: "https://docs.tavily.com",
instructions: "Find API reference pages",
},
id: "1",
name: tool.name,
type: "tool_call",
};
const toolMsg = await tool.invoke(modelGeneratedToolCall);
console.log(toolMsg.content.slice(0, 400));
에이전트 내에서 사용 (Use within an agent)
맵 툴을 createAgent에 전달해 LangChain 에이전트와 직접 사용할 수 있어요. 에이전트는 필요한 URL을 발견하기 위해 url, instructions, 경로/도메인 필터를 동적으로 설정할 수 있어요.
// @lc-docs-hide-cell
import { ChatOpenAI } from "@langchain/openai";
const llm = new ChatOpenAI({
model: "gpt-5.5",
temperature: 0,
});
import { TavilyMap } from "@langchain/tavily";
import { createAgent } from "langchain";
const tavilyMapTool = new TavilyMap({
maxDepth: 2,
maxBreadth: 20,
limit: 30,
});
const agent = createAgent({
model: llm,
tools: [tavilyMapTool],
});
const userInput = "Map https://docs.tavily.com and list URLs that look like API reference pages.";
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 Map API 기능과 구성에 대한 자세한 문서는 API reference를 참고하세요: docs.tavily.com/documentation/api-reference/endpoint/map
출처: 문서
본문
TavilyMap은 페이지 콘텐츠를 추출하지 않고 웹사이트를 탐색해 발견된 URL 목록을 반환하는 툴이에요. maxDepth·maxBreadth·limit·instructions·selectPaths·selectDomains·excludePaths·excludeDomains·allowExternal 등 옵션으로 인스턴스화하고, url로 직접 호출하거나 createAgent에 툴로 전달할 수 있어요. 응답은 results 배열에 발견된 URL 목록을 포함해요.