import { Tool } from 'openai-function-calling-tools'; import { z } from 'zod'; import { getJson } from 'serpapi'; function createSportsResultsApi({ apiKey }: { apiKey: string }) { const paramsSchema = z.object({ input: z.string(), }); const name = 'sports_results'; const description = 'A custom search engine for sports scores and results. Useful for when you need to answer questions about current sports scores (like nba or nfl). Input should be a search query. Outputs a JSON array of results.'; const execute = async ({ input }: z.infer) => { try { if (input.toLowerCase().includes('nba')) { const results = await fetch("https://data.nba.com/data/10s/v2015/json/mobile_teams/nba/2023/scores/00_todays_scores.json"); const games = await results.json(); return JSON.stringify(games.gs.g); } else { const response = await getJson({ engine: "google", api_key: apiKey, q: input, location: "Seattle, Washington", }); return JSON.stringify(response['sports_results']); } } catch (error) { throw new Error(`Error in serpApi or NBA API: ${error}`); } }; return new Tool(paramsSchema, name, description, execute).tool; } export { createSportsResultsApi };