Files
copy-of-local-network-dashb…/services/geminiService.ts
2025-09-14 13:09:39 -07:00

43 lines
1.3 KiB
TypeScript

import { GoogleGenAI, Type } from "@google/genai";
const API_KEY = process.env.API_KEY;
if (!API_KEY) {
console.warn("Gemini API key not found. AI features will be disabled. Please set process.env.API_KEY.");
}
const ai = new GoogleGenAI({ apiKey: API_KEY! });
export const generateServiceDescription = async (serviceName: string): Promise<string> => {
if (!API_KEY) {
return `A local instance of ${serviceName}.`;
}
try {
const response = await ai.models.generateContent({
model: "gemini-2.5-flash",
contents: `Provide a concise, one-sentence description for a self-hosted service named "${serviceName}". This description will be shown on a personal dashboard.`,
config: {
responseMimeType: "application/json",
responseSchema: {
type: Type.OBJECT,
properties: {
description: {
type: Type.STRING,
description: "The generated one-sentence description for the service.",
},
},
},
},
});
const jsonText = response.text.trim();
const result = JSON.parse(jsonText);
return result.description || `A local instance of ${serviceName}.`;
} catch (error) {
console.error("Error fetching description from Gemini:", error);
return `A local instance of ${serviceName}.`;
}
};