Tavily Tools
@mastra/tavily 套件會將 Tavily API 包裝為相容於 Mastra 的 Tool。它提供搜尋、擷取、爬取與網站結構對應的 factory 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() 以共用設定取得全部四個 Tool:
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-...' })
根據預設,所有 Tool 都會從環境中讀取 TAVILY_API_KEY。你可以明確傳入 { apiKey } 來覆寫此值。
設定「設定」的直接連結
所有 factory function 都接受來自 @tavily/core 的 TavilyClientOptions:
apiKey?:
TAVILY_API_KEY 環境變數。clientName?:
X-Client-Name header 傳送的歸屬字串。apiBaseURL?:
proxies?:
projectId?:
createTavilyTools()「createtavilytools」的直接連結
回傳一個物件,其中包含共用設定的全部四個 Tool。
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。它會從找到的頁面擷取內容,並可設定深度、廣度與網域限制。
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。若未將 apiKey 傳給 factory function,則預設使用此值。 |