Spaces:
Sleeping
Sleeping
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 functions: any[] = [ | |
serpApiSchema, | |
oddsApiSchema, | |
sportsApiResultsSchema, | |
coinMarketCapApiSchema | |
]; | |
export async function POST(req: Request) { | |
const openai = new OpenAI({ | |
apiKey: process.env.OPENAI_API_KEY, | |
baseURL: "https://api.mistral.ai/v1" | |
}); | |
const { messages, function_call } = await req.json() | |
const response = await openai.chat.completions.create({ | |
model: 'mistral-large-latest', | |
stream: true, | |
messages: messages | |
.map(message => ({ | |
// map "assistant" to "agent" for Mistral: | |
role: message.role === 'assistant' ? 'agent' : 'user', | |
content: message.content, | |
}) as any), | |
functions, | |
function_call | |
}) | |
const stream = OpenAIStream(response) | |
return new StreamingTextResponse(stream) | |
} |