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