Remove Gemini provider and fix ContentAssembly array bug

- Remove Gemini configuration from LLMManager (geo-blocked)
- Fix elements.forEach error in ContentAssembly.js
- Update provider count from 6 to 5 in tests
- Add array validation in injectGeneratedContent

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
StillHammer 2025-09-22 07:08:14 +08:00
parent 4f60de68d6
commit a4dce39343
2 changed files with 12 additions and 49 deletions

View File

@ -87,7 +87,13 @@ function injectGeneratedContent(cleanXML, generatedContent, elements) {
logSh('🔍 === DEBUG INJECTION MAPPING ===', 'DEBUG');
logSh(`XML reçu: ${cleanXML.length} caractères`, 'DEBUG');
logSh(`Contenu généré: ${Object.keys(generatedContent).length} éléments`, 'DEBUG');
logSh(`Éléments fournis: ${elements.length} éléments`, 'DEBUG');
logSh(`Éléments fournis: ${elements ? elements.length : 'undefined'} éléments`, 'DEBUG');
// Fix: s'assurer que elements est un array
if (!Array.isArray(elements)) {
logSh(`⚠ Elements n'est pas un array, type: ${typeof elements}`, 'WARN');
elements = [];
}
// Debug: montrer le XML
logSh(`🔍 XML début: ${cleanXML}`, 'DEBUG');

View File

@ -41,19 +41,6 @@ const LLM_CONFIG = {
retries: 6
},
gemini: {
apiKey: process.env.GOOGLE_API_KEY,
endpoint: 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent',
model: 'gemini-2.5-flash',
headers: {
'Content-Type': 'application/json'
},
temperature: 0.7,
maxTokens: 6000,
timeout: 300000, // 5 minutes
retries: 3
},
deepseek: {
apiKey: process.env.DEEPSEEK_API_KEY,
endpoint: 'https://api.deepseek.com/v1/chat/completions',
@ -106,7 +93,7 @@ const sleep = (ms) => new Promise(resolve => setTimeout(resolve, ms));
/**
* Fonction principale pour appeler n'importe quel LLM
* @param {string} llmProvider - claude|openai|gemini|deepseek|moonshot|mistral
* @param {string} llmProvider - claude|openai|deepseek|moonshot|mistral
* @param {string} prompt - Le prompt à envoyer
* @param {object} options - Options personnalisées (température, tokens, etc.)
* @param {object} personality - Personnalité pour contexte système
@ -209,18 +196,6 @@ function buildRequestData(provider, prompt, options, personality) {
]
};
case 'gemini':
return {
contents: [{
parts: [{
text: `${systemPrompt}\n\n${prompt}`
}]
}],
generationConfig: {
temperature: temperature,
maxOutputTokens: maxTokens
}
};
default:
throw new Error(`Format de requête non supporté pour ${provider}`);
@ -242,11 +217,8 @@ async function callWithRetry(provider, requestData, config) {
headers[key] = config.headers[key].replace('{API_KEY}', config.apiKey);
});
// URL avec clé API pour Gemini (cas spécial)
// URL standard
let url = config.endpoint;
if (provider === 'gemini') {
url += `?key=${config.apiKey}`;
}
const options = {
method: 'POST',
@ -299,21 +271,6 @@ function parseResponse(provider, responseData) {
case 'claude':
return responseData.content[0].text.trim();
case 'gemini':
const candidate = responseData.candidates[0];
// Vérifications multiples pour Gemini 2.5
if (candidate && candidate.content && candidate.content.parts && candidate.content.parts[0] && candidate.content.parts[0].text) {
return candidate.content.parts[0].text.trim();
} else if (candidate && candidate.text) {
return candidate.text.trim();
} else if (candidate && candidate.content && candidate.content.text) {
return candidate.content.text.trim();
} else {
// Debug : logger la structure complète
logSh('Gemini structure complète: ' + JSON.stringify(responseData), 'DEBUG');
return '[Gemini: pas de texte généré - problème modèle]';
}
default:
throw new Error(`Parser non supporté pour ${provider}`);
}
@ -439,7 +396,7 @@ async function testLLMManager() {
// Test des providers disponibles
const available = getAvailableProviders();
logSh('Providers disponibles: ' + available.join(', ') + ' (' + available.length + '/6)', 'INFO');
logSh('Providers disponibles: ' + available.join(', ') + ' (' + available.length + '/5)', 'INFO');
// Test d'appel simple sur chaque provider disponible
for (const provider of available) {