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 };