Update geminiService.ts

This commit is contained in:
fcarraUniSa
2026-02-17 10:59:17 +01:00
committed by GitHub
parent b7944a8cc0
commit ebcf4096fe

View File

@@ -107,6 +107,7 @@ export const getSupportResponse = async (
/**
* Agent 2: Knowledge Extraction
* Returns an ARRAY of suggested articles.
*/
export const generateNewKBArticle = async (
apiKey: string,
@@ -114,7 +115,7 @@ export const generateNewKBArticle = async (
existingArticles: KBArticle[],
provider: AiProvider = AiProvider.GEMINI,
model: string = 'gemini-3-pro-preview'
): Promise<{ title: string; content: string; category: string } | null> => {
): Promise<Array<{ title: string; content: string; category: string }> | null> => {
if (!apiKey) return null;
// Filter only resolved tickets
@@ -132,7 +133,7 @@ export const generateNewKBArticle = async (
const systemPrompt = `
Sei un Knowledge Manager AI esperto.
Analizza i seguenti ticket risolti e confrontali con gli articoli esistenti nella Knowledge Base.
Analizza TUTTI i seguenti ticket risolti e confrontali con gli articoli esistenti nella Knowledge Base.
ARTICOLI ESISTENTI: ${existingTitles}
@@ -140,17 +141,21 @@ export const generateNewKBArticle = async (
${transcripts}
OBIETTIVO:
1. Identifica un problema ricorrente o una soluzione tecnica presente nei ticket risolti MA NON coperta dagli articoli esistenti.
2. Se trovi una lacuna, scrivi un NUOVO articolo di Knowledge Base per colmarla.
3. Restituisci il risultato ESCLUSIVAMENTE in formato JSON valido. Non aggiungere markdown code blocks.
1. Identifica TUTTI i problemi ricorrenti o le soluzioni tecniche presenti nei ticket risolti MA NON coperti dagli articoli esistenti.
2. Per ogni lacuna trovata, scrivi un NUOVO articolo di Knowledge Base per colmarla.
3. Restituisci il risultato ESCLUSIVAMENTE come un ARRAY JSON di oggetti. Non aggiungere markdown code blocks.
SCHEMA JSON RICHIESTO:
{
"foundGap": boolean,
"title": "Titolo del nuovo articolo",
"content": "Contenuto dettagliato in formato Markdown",
"category": "Categoria suggerita"
}
SCHEMA JSON RICHIESTO (ARRAY):
[
{
"title": "Titolo del nuovo articolo",
"content": "Contenuto dettagliato in formato Markdown (usa elenchi puntati per istruzioni)",
"category": "Categoria suggerita"
},
...
]
Se non trovi lacune significative, restituisci un array vuoto [].
`;
try {
@@ -171,19 +176,15 @@ export const generateNewKBArticle = async (
if (!rawText) return null;
// Clean markdown if present (sometimes models add ```json ... ```)
// We escape the backticks in the regex to ensure safety in all environments
// Clean markdown if present
const cleanedText = rawText.replace(/\`\`\`json/g, '').replace(/\`\`\`/g, '').trim();
const result = JSON.parse(cleanedText);
if (result.foundGap) {
return {
title: result.title,
content: result.content,
category: result.category
};
if (Array.isArray(result) && result.length > 0) {
return result;
}
return null;
return [];
} catch (error) {
console.error("Knowledge Agent Error:", error);