36 lines
881 B
JavaScript
36 lines
881 B
JavaScript
import { TavilySearch } from "@langchain/tavily";
|
|
import { tool } from "@langchain/core/tools";
|
|
import * as z from "zod"
|
|
|
|
const webSearchTool = tool(
|
|
async ({
|
|
query,
|
|
maxResults = 5,
|
|
topic = "general",
|
|
includeRawContent = false,
|
|
}) => {
|
|
const tavilySearch = new TavilySearch({
|
|
maxResults,
|
|
tavilyApiKey: process.env.TAVILY_API_KEY,
|
|
includeRawContent,
|
|
topic,
|
|
});
|
|
return await tavilySearch._call({ query });
|
|
},
|
|
{
|
|
name: "internet_search",
|
|
description: "Run a web search",
|
|
schema: z.object({
|
|
query: z.string().describe("The search query"),
|
|
maxResults: z.number().optional().default(5),
|
|
topic: z
|
|
.enum(["general", "news", "finance"])
|
|
.optional()
|
|
.default("general"),
|
|
includeRawContent: z.boolean().optional().default(false),
|
|
}),
|
|
},
|
|
);
|
|
|
|
export { webSearchTool };
|