Files
afrov2/services/geminiService.ts
2026-02-22 20:25:47 +01:00

57 lines
2.1 KiB
TypeScript

import { GoogleGenAI } from "@google/genai";
// Initialize Gemini
// Note: In a real production app, backend proxy is preferred for key safety.
// For this demo, we assume environment variable usage as per instructions.
const ai = new GoogleGenAI({ apiKey: process.env.API_KEY });
export const generateBusinessDescription = async (name: string, category: string, keywords: string): Promise<string> => {
try {
const model = 'gemini-2.5-flash';
const prompt = `
Tu es un expert en copywriting marketing pour Afropreunariat.
Rédige une description professionnelle, attrayante et optimisée SEO pour une entreprise.
Nom de l'entreprise : ${name}
Secteur : ${category}
Mots-clés/Services : ${keywords}
La description doit faire environ 80-100 mots, être en français, inspirer confiance et professionnalisme.
Ne mets pas de guillemets au début ou à la fin.
`;
const response = await ai.models.generateContent({
model,
contents: prompt,
});
return response.text || "Impossible de générer une description pour le moment.";
} catch (error) {
console.error("Gemini API Error:", error);
return "Erreur lors de la génération. Veuillez rédiger votre description manuellement.";
}
};
export const generateBusinessIdeas = async (category: string): Promise<string[]> => {
try {
const model = 'gemini-2.5-flash';
const prompt = `Donne-moi 3 idées de slogans courts et percutants pour une entreprise dans le secteur : ${category}. Retourne uniquement une liste JSON de chaînes de caractères.`;
// For simplicity in this demo, we ask for text and split lines,
// but JSON schema is better for robust apps.
const response = await ai.models.generateContent({
model,
contents: prompt,
config: {
responseMimeType: "application/json"
}
});
const json = JSON.parse(response.text || "[]");
if (Array.isArray(json)) return json;
return ["L'excellence au service de l'Afrique", "Innover pour demain", "Votre partenaire de confiance"];
} catch (error) {
return ["Votre slogan ici"];
}
};