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