Tavily tools
@mastra/tavily 套件將 Tavily API 封裝成與 Mastra 兼容的 tools。它提供用於搜尋、擷取、爬取及建立網站地圖的 factory functions。每個 function 都會傳回以 createTool() 建立的 Tool,並包含完整的 Zod 輸入/輸出 schema。
安裝安裝 的直接連結
- npm
- pnpm
- Yarn
- Bun
npm install @mastra/tavily @tavily/core zod
pnpm add @mastra/tavily @tavily/core zod
yarn add @mastra/tavily @tavily/core zod
bun add @mastra/tavily @tavily/core zod
快速開始快速開始 的直接連結
使用 createTavilyTools() 以共用設定取得全部四個 tools:
import { createTavilyTools } from '@mastra/tavily'
const tools = createTavilyTools()
// Or pass an explicit API key:
// const tools = createTavilyTools({ apiKey: 'tvly-...' })
每個 Tool 亦可個別建立:
import { createTavilySearchTool, createTavilyExtractTool } from '@mastra/tavily'
const searchTool = createTavilySearchTool()
const extractTool = createTavilyExtractTool({ apiKey: 'tvly-...' })
所有 tools 預設會從環境讀取 TAVILY_API_KEY。你可以明確傳入 { apiKey } 以覆寫此設定。
設定設定 的直接連結
所有 factory functions 均接受來自 @tavily/core 的 TavilyClientOptions:
apiKey?:
TAVILY_API_KEY 環境變數。clientName?:
X-Client-Name header 中傳送的署名字串。apiBaseURL?:
proxies?:
projectId?:
createTavilyTools()createtavilytools 的直接連結
傳回包含全部四個 tools 並共用設定的 object。
import { createTavilyTools } from '@mastra/tavily'
const tools = createTavilyTools({ apiKey: 'tvly-...' })
// tools.tavilySearch, tools.tavilyExtract, tools.tavilyCrawl, tools.tavilyMap
傳回: { tavilySearch, tavilyExtract, tavilyCrawl, tavilyMap }
createTavilySearchTool()createtavilysearchtool 的直接連結
建立使用 Tavily 搜尋網頁的 Tool。傳回相關結果及內容摘要,亦可選擇包含由 AI 產生的答案和圖片。
Tool ID: tavily-search
import { createTavilySearchTool } from '@mastra/tavily'
const searchTool = createTavilySearchTool()
輸入輸入 的直接連結
query:
searchDepth?:
maxResults?:
includeAnswer?:
includeImages?:
includeImageDescriptions?:
includeRawContent?:
includeDomains?:
excludeDomains?:
timeRange?:
輸出輸出 的直接連結
query:
answer?:
images?:
results:
title:
url:
content:
score:
rawContent?:
responseTime:
createTavilyExtractTool()createtavilyextracttool 的直接連結
建立從一個或多個 URL 擷取內容的 Tool。以 markdown 或文字格式傳回原始頁面內容,每個請求最多可包含 20 個 URL。
Tool ID: tavily-extract
import { createTavilyExtractTool } from '@mastra/tavily'
const extractTool = createTavilyExtractTool()
輸入輸入 的直接連結
urls:
extractDepth?:
query?:
includeImages?:
format?:
輸出輸出 的直接連結
results:
url:
rawContent:
images?:
failedResults:
url:
error:
responseTime:
createTavilyCrawlTool()createtavilycrawltool 的直接連結
建立從某個 URL 開始爬取網站的 Tool。從發現的頁面擷取內容,並可設定深度、廣度及 domain 限制。
Tool ID: tavily-crawl
import { createTavilyCrawlTool } from '@mastra/tavily'
const crawlTool = createTavilyCrawlTool()
輸入輸入 的直接連結
url:
maxDepth?:
maxBreadth?:
limit?:
instructions?:
selectPaths?:
selectDomains?:
excludePaths?:
excludeDomains?:
allowExternal?:
extractDepth?:
includeImages?:
format?:
輸出輸出 的直接連結
baseUrl:
results:
url:
rawContent:
images?:
responseTime:
createTavilyMapTool()createtavilymaptool 的直接連結
建立從某個 URL 開始繪製網站結構的 Tool。它會探索並傳回 URL 清單,而不會擷取頁面內容。可先使用此 Tool 了解網站結構,再進行針對性擷取。
Tool ID: tavily-map
import { createTavilyMapTool } from '@mastra/tavily'
const mapTool = createTavilyMapTool()
輸入輸入 的直接連結
url:
maxDepth?:
maxBreadth?:
limit?:
instructions?:
selectPaths?:
selectDomains?:
excludePaths?:
excludeDomains?:
allowExternal?:
輸出輸出 的直接連結
baseUrl:
results:
responseTime:
Agent 範例Agent 範例 的直接連結
以下範例示範結合搜尋和擷取功能的研究 Agent:
import { Agent } from '@mastra/core/agent'
import { createTavilySearchTool, createTavilyExtractTool } from '@mastra/tavily'
const agent = new Agent({
id: 'web-search-agent',
name: 'Web Search Agent',
model: 'anthropic/claude-sonnet-4-6',
instructions:
'You are a web search assistant. Use search tool to find relevant pages, then use extract tool to get full content from the best results.',
tools: {
search: createTavilySearchTool(),
extract: createTavilyExtractTool(),
},
})
環境變數環境變數 的直接連結
| 變數 | 描述 |
|---|---|
TAVILY_API_KEY | 你的 Tavily API key。當 factory function 未有傳入 apiKey 時,預設使用此值。 |