| import { createSearchApi } from '../../../app/tools/search'; | |
| import { createOddsApi } from '@/app/tools/odds'; | |
| import { createSportsResultsApi } from '@/app/tools/scores'; | |
| import { handleContentText } from './utils'; | |
| import { similaritySearch } from './vector-store'; | |
| const urlRegex = /(https?:\/\/[^\s]+)/g; | |
| const [serpApi] = | |
| createSearchApi({ | |
| apiKey: process.env.SERP_API_KEY || "", | |
| }); | |
| const [sportsScoresApi] = createSportsResultsApi({ apiKey: process.env.SERP_API_KEY || "",}); | |
| const [oddsApi] = createOddsApi({ apiKey: process.env.ODDS_API_KEY || "" }); | |
| type FunctionOutput = any; | |
| type FunctionInput = any; | |
| export const odds: FunctionOutput = async ({ input }: FunctionInput) => { | |
| const content = await oddsApi({input}); | |
| const oddsApiResults = await similaritySearch(input, content); | |
| return oddsApiResults; | |
| } | |
| export const surfer: FunctionOutput = async ({ input }: FunctionInput) => { | |
| const urls = input.match(urlRegex); | |
| const targetUrl = urls ? urls[0] : null; | |
| const promptWithoutUrl = urls ? input.replace(urlRegex, '').trim() : input; | |
| const content: string = await handleContentText(targetUrl) | |
| if (!content) { | |
| return `Couldn't find ${targetUrl}, here is the prompt: ${promptWithoutUrl}`; | |
| } | |
| const surferApiResults = await similaritySearch(promptWithoutUrl, content); | |
| return surferApiResults; | |
| } | |
| export const serp: FunctionOutput = async ({ input }: FunctionInput) => { | |
| const content: string = await serpApi({input}) | |
| const serpApiResults = await similaritySearch(input, content); | |
| return serpApiResults; | |
| } | |
| export const sports: FunctionOutput = async ({ input }: FunctionInput) => { | |
| const content: string = await sportsScoresApi({input}) | |
| return content; | |
| } | |