以编程方式使用文档

Tavily 是一个专为 AI 代理(LLM)构建的搜索引擎,提供实时、准确和真实的结果。Tavily 提供一个 提取 端点,可用于提取一个或多个 URL 的清洗和解析后的内容。

概述

集成详情

PY 支持下载量版本
TavilyExtract@langchain/tavily!NPM - 下载量!NPM - 版本

工具特性

返回产物原生异步返回数据定价
raw content and images1,000 free credits / month

设置

该集成位于 @langchain/tavily 包中,可以按以下方式安装:

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

凭证

设置 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"

实例化

该工具在实例化时接受以下参数:

  • - extractDepth (可选,字符串):提取深度,可以是 "basic" or "advanced"。默认值为 "basic".
  • - includeImages (可选,布尔值):是否在提取中包含图片。默认值为 false.
  • - format (可选,字符串):内容格式。 "markdown" or "text"。默认值为 "markdown".
  • - includeFavicon (可选,布尔值):包含每个结果的 favicon URL。默认值为 false.

有关可用参数的完整概述,请参阅 Tavily 提取 API 文档.

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

调用

使用参数直接调用

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));
{"results": [{"url": "https://en.wikipedia.org/wiki/Lionel_Messi", "raw_content": "Lionel Messi - Wikipedia\nJump to content\nMain menu\nMain menu\nmove to sidebar hide\nNavigation\n\nMain page\nContents\nCurrent events\nRandom article\nAbout Wikipedia\nContact us\n\nContribute\n\nHelp\nLearn to edit\nCommunity portal\nRecent changes\nUpload file\nSpecial pages\n... (truncated)"}], "failed_results": [], "response_time": 0.02}

在代理中使用

我们可以通过将其传递给 createAgent来直接使用提取工具。代理可以动态设置 URL 列表和开关,如 extractDepthincludeImages 作为其工具调用的一部分。

// @lc-docs-hide-cell


const llm = new ChatOpenAI({
  model: "gpt-5.5",
  temperature: 0,
});
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 参考文档

有关 Tavily Extract API 所有功能和配置的详细文档,请参阅 API 参考文档: docs.tavily.com/documentation/api-reference/endpoint/extract