import OpenAI from "openai"; import { OpenAIStream, StreamingTextResponse } from "ai"; import { createSearchApi } from "@/app/tools/search"; import { createOddsApi } from "@/app/tools/odds"; import { createSportsResultsApi } from "@/app/tools/scores"; import { createCoinMarketCapApi } from "@/app/tools/coin"; const [, serpApiSchema] = createSearchApi({ apiKey: process.env.SERP_API_KEY || '' }); const [, sportsApiResultsSchema] = createSportsResultsApi({ apiKey: process.env.SERP_API_KEY || '' }); const [, oddsApiSchema] = createOddsApi({ apiKey: process.env.ODDS_API_KEY || '' }); const [, coinMarketCapApiSchema] = createCoinMarketCapApi({ apiKey: process.env.COINMARKETCAP_API_KEY || '' }); const openai = new OpenAI({ apiKey: process.env.MISTRAL_API_KEY, baseURL: "https://api.mistral.ai" }); const functions: any[] = [ serpApiSchema, oddsApiSchema, sportsApiResultsSchema, coinMarketCapApiSchema ]; export async function POST(req: Request) { const { messages, function_call } = await req.json() const response = await openai.chat.completions.create({ model: 'mistral-large-latest', stream: true, messages, functions, function_call }) const stream = OpenAIStream(response) return new StreamingTextResponse(stream) }