chore: Update project configuration and improve chat prompts

Configuration Updates:
- .claude/settings.local.json: Add security permissions for WebFetch, WebSearch, nvidia-smi
- package.json: Add puppeteer dependency for browser automation tests
- package-lock.json: Update lockfile with puppeteer@24.34.0 and dependencies
- Remove root .env.example (superseded by generations/library_rag/.env.example)

Flask App Improvements:
- Enhanced chat prompt to REQUIRE "Sources utilisées" section in responses
- Added explicit warnings against inventing citations not in provided passages
- Improved source citation format with mandatory author, work, and passage number
- Strengthened instructions to prevent hallucinated references

Benefits:
- Chat responses now consistently include proper source citations
- Better academic rigor in philosophical analyses
- Prevents LLM from inventing non-existent references
- Automated testing infrastructure with Puppeteer

Related to GPU embedder migration testing and validation.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-09 12:45:20 +01:00
parent 054cc52a76
commit eb2bf45281
5 changed files with 1153 additions and 19 deletions

View File

@@ -54,7 +54,21 @@
"Bash(pytest:*)", "Bash(pytest:*)",
"Bash(start test_sans_beige.html)", "Bash(start test_sans_beige.html)",
"Bash(ollama list:*)", "Bash(ollama list:*)",
"Bash(done)" "Bash(done)",
"WebFetch(domain:github.com)",
"Bash(nvidia-smi:*)",
"Bash(scriptsinstall_pytorch_cuda.bat)",
"Bash(cmd /c scripts\\\\install_pytorch_cuda.bat)",
"Bash(pip uninstall:*)",
"Bash(pip cache:*)",
"Bash(wmic process where \"name=''python.exe''\" get processid,commandline)",
"Bash(if [ -f \"/tmp/parse_output.log\" ])",
"Bash(then tail -100 /tmp/parse_output.log)",
"Bash(else echo \"Fichier log non trouvé\")",
"Bash(fi)",
"WebSearch",
"WebFetch(domain:weaviate.io)",
"WebFetch(domain:docs.weaviate.io)"
] ]
} }
} }

View File

@@ -1,11 +0,0 @@
# Claude Code OAuth Token
# Run 'claude setup-token' to generate this token
CLAUDE_CODE_OAUTH_TOKEN=your-oauth-token-here
# Linear API Key
# Get your API key from: https://linear.app/YOUR-TEAM/settings/api
LINEAR_API_KEY=lin_api_xxxxxxxxxxxxx
# Linear Team ID (optional)
# If not set, the agent will list teams and ask you to choose
LINEAR_TEAM_ID=

View File

@@ -1269,18 +1269,19 @@ def build_prompt_with_context(user_question: str, rag_context: List[Dict[str, An
'Vous êtes un assistant spécialisé en philosophie...' 'Vous êtes un assistant spécialisé en philosophie...'
""" """
# System instruction # System instruction
system_instruction = """Vous êtes un assistant expert en philosophie. Votre rôle est de fournir des analyses APPROFONDIES et DÉTAILLÉES en vous appuyant sur les passages philosophiques fournis. system_instruction = """Vous êtes un assistant expert en philosophie. Votre rôle est de fournir des analyses APPROFONDIES et DÉTAILLÉES en vous appuyant EXCLUSIVEMENT sur les passages philosophiques fournis.
INSTRUCTIONS IMPÉRATIVES : INSTRUCTIONS IMPÉRATIVES :
- Fournissez une réponse LONGUE et DÉVELOPPÉE (minimum 500-800 mots) - Fournissez une réponse LONGUE et DÉVELOPPÉE (minimum 500-800 mots)
- Analysez EN PROFONDEUR tous les aspects de la question - Analysez EN PROFONDEUR tous les aspects de la question
- Citez ABONDAMMENT les passages fournis avec références précises (auteur, œuvre) - Citez ABONDAMMENT les passages fournis avec références précises (auteur, œuvre, numéro de passage)
- Développez les concepts philosophiques, ne vous contentez PAS de résumés superficiels - Développez les concepts philosophiques, ne vous contentez PAS de résumés superficiels
- Explorez les NUANCES, les implications, les relations entre les idées - Explorez les NUANCES, les implications, les relations entre les idées
- Structurez votre réponse en sections claires (introduction, développement avec sous-parties, conclusion) - Structurez votre réponse en sections claires (introduction, développement avec sous-parties, conclusion)
- Si les passages ne couvrent pas tous les aspects, indiquez-le mais développez ce qui est disponible - Si les passages ne couvrent pas tous les aspects, indiquez-le mais développez ce qui est disponible
- Adoptez un style académique rigoureux digne d'une analyse philosophique universitaire - Adoptez un style académique rigoureux digne d'une analyse philosophique universitaire
- N'inventez JAMAIS d'informations absentes des passages, mais exploitez à fond celles qui y sont""" - N'inventez JAMAIS d'informations absentes des passages, mais exploitez à fond celles qui y sont
- Terminez OBLIGATOIREMENT par une section "## Sources utilisées" listant les passages que vous avez cités"""
# Build context section # Build context section
context_section = "\n\nPASSAGES PHILOSOPHIQUES :\n\n" context_section = "\n\nPASSAGES PHILOSOPHIQUES :\n\n"
@@ -1319,7 +1320,20 @@ Votre réponse doit :
3. Explorer les implications philosophiques, les concepts-clés, les relations entre les idées 3. Explorer les implications philosophiques, les concepts-clés, les relations entre les idées
4. Conclure en synthétisant l'apport des passages à la question posée 4. Conclure en synthétisant l'apport des passages à la question posée
Ne vous limitez PAS à un résumé superficiel. Développez, analysez, approfondissez. C'est une discussion philosophique universitaire, pas un tweet.""" Ne vous limitez PAS à un résumé superficiel. Développez, analysez, approfondissez. C'est une discussion philosophique universitaire, pas un tweet.
⚠️ OBLIGATION CRITIQUE - SOURCES :
Vous DEVEZ terminer votre réponse par une section "## Sources utilisées" listant UNIQUEMENT les passages que vous avez cités.
Format OBLIGATOIRE :
## Sources utilisées
- **Auteur, Titre de l'œuvre** (Passage N)
- **Auteur, Titre de l'œuvre** (Passage N)
❌ INTERDIT : N'ajoutez JAMAIS de références bibliographiques qui ne sont pas dans les passages fournis ci-dessus.
❌ INTERDIT : N'inventez PAS de citations de Chalmers, Dennett, Baars, etc. si elles ne sont pas dans les passages.
✅ OBLIGATOIRE : Listez UNIQUEMENT les sources des passages numérotés ci-dessus que vous avez effectivement utilisés."""
# Combine all sections # Combine all sections
full_prompt = system_instruction + context_section + question_section + final_instruction full_prompt = system_instruction + context_section + question_section + final_instruction

1121
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
{ {
"dependencies": { "dependencies": {
"puppeteer": "^24.33.1" "puppeteer": "^24.34.0"
} }
} }