rolexx's picture
wip
321ba52
import { NextResponse } from 'next/server';
import { Mistral } from "@mistralai/mistralai";
interface Story {
description: string;
alibi: string[];
problematic: string[];
}
const mistral = new Mistral({apiKey: process.env.MISTRAL_API_KEY})
export async function POST(request: Request) {
try {
const body = await request.json();
const { language = 'fr' } = body;
console.log('body:', body)
console.log('language:', language)
const prompts = {
fr: `Vous êtes passé maître dans l'art de générer de fausses histoires de procès.
Choisissez un mot réel totalement aléatoire et générez une fausse histoire, intégrant ce mot, d'un homme nommé Daniel accusé dans un procès.
L'histoire doit être cohérente et tenir en 1 ou 2 phrases.
Pouvez-vous donner la réponse dans un format json ?
Trouvez 3 alibis. Ils doivent être crédibles et concis.
RÉPONDRE UNIQUEMENT AVEC LE JSON`,
en: `You're a master in generating fake trial stories.
Choose a completly random real word and generate a fake story, integrating this word, of a guy named Daniel accused in trail.
The story must be coherent and must fit into 1 or 2 sentences.
Can you give the answer in a json format?
Find 3 alibis. They must be credible and concise.
ANSWER WITH ONLY THE JSON`,
es: `Eres un maestro en generar historias falsas de juicios.
Elige una palabra real completamente aleatoria y genera una historia falsa, integrando esta palabra, de un tipo llamado Daniel acusado en juicio.
La historia debe ser coherente y debe caber en 1 o 2 frases.
¿Puedes dar la respuesta en formato json?
Encuentra 3 coartadas. Deben ser creíbles y concisas.
RESPONDER SÓLO CON EL JSON`
};
const chatPrompt = `${prompts[language as keyof typeof prompts] || prompts.fr}
accusation: {
description: String,
alibi: [<String>],
}`;
console.log('chatPrompt:', chatPrompt)
const seed = Math.floor(Math.random() * 1000000);
console.log('seed:', seed)
const response = await mistral.chat.complete({
model: "mistral-large-latest",
messages: [{role: 'user', content: chatPrompt}],
responseFormat: {type: 'json_object'},
randomSeed: seed,
});
console.log('response:', response)
const functionCall = response.choices?.[0]?.message.content;
const JSONResponse = functionCall ? JSON.parse(functionCall as string) : null;
console.log('functionCall:', functionCall)
console.log('JSONResponse:', JSONResponse)
const storyData: Story = JSONResponse?.accusation || {
description: "Erreur de génération",
alibi: [],
problematic: []
};
return NextResponse.json({
success: true,
story: storyData
});
} catch (error: unknown) {
console.log('error:', error)
return NextResponse.json(
{ error: 'Erreur lors de la génération de l\'histoire' },
{ status: 500 }
);
}
}