Aperçu
Les LLM locaux s'exécutant sur Ollama hallucinent sur tout ce qui dépasse leur date limite d'entraînement. Ce workflow effectue des recherches quotidiennes sur les sujets qui vous intéressent, intègre les résultats dans le contexte de votre modèle local et stocke les réponses contextualisées dans un fichier de connaissances local. Votre assistant reste à jour sans envoyer de requêtes privées aux API cloud.
Déclencheur
Quotidiennement à 8h via cron ou le planificateur de tâches.
Planification
Tous les jours à 8h
Étapes du workflow
Charger la liste de sujets
Lire la liste des sujets sur lesquels vous voulez que votre LLM local reste à jour à partir d'un fichier de configuration YAML ou JSON.
Rechercher chaque sujet via Scavio
Effectuer une recherche Scavio pour chaque sujet. Extraire les 5 premiers résultats organiques avec titres et extraits.
Formater en document de contexte
Combiner les résultats de recherche en un document Markdown avec les URL source et les horodatages de récupération.
Alimenter le modèle Ollama local
Envoyer le document de contexte accompagné d'une invite de contextualisation à votre instance Ollama pour un résumé.
Stocker les connaissances contextualisées
Enregistrer le résumé contextualisé dans un fichier local de base de connaissances pour référence future.
Implémentation Python
import requests, os, json
from datetime import date
API_KEY = os.environ["SCAVIO_API_KEY"]
H = {"x-api-key": API_KEY, "Content-Type": "application/json"}
OLLAMA_URL = "http://localhost:11434/api/generate"
TOPICS = [
"latest python 3.14 features",
"ai agent framework updates 2026",
"new search api providers 2026",
]
def search_topic(topic: str) -> str:
resp = requests.post(
"https://api.scavio.dev/api/v1/search",
headers=H,
json={"query": topic, "country_code": "us"},
timeout=15,
)
results = resp.json().get("organic_results", [])[:5]
lines = [f"- {r.get('title', '')}: {r.get('snippet', '')} ({r.get('link', '')})" for r in results]
return "\n".join(lines)
def ground_with_ollama(topic: str, context: str) -> str:
prompt = f"Based on these current search results from {date.today()}, summarize the latest on: {topic}\n\nSearch results:\n{context}\n\nProvide a factual summary citing sources."
resp = requests.post(OLLAMA_URL, json={"model": "llama3", "prompt": prompt, "stream": False}, timeout=60)
return resp.json().get("response", "")
grounded = {}
for topic in TOPICS:
context = search_topic(topic)
summary = ground_with_ollama(topic, context)
grounded[topic] = {"date": str(date.today()), "summary": summary}
print(f"Grounded: {topic} ({len(summary)} chars)")
with open("grounded_knowledge.json", "w") as f:
json.dump(grounded, f, indent=2)
print(f"Saved {len(grounded)} grounded topics")Implémentation JavaScript
const H = {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
const fs = await import('fs');
const TOPICS = ['latest python 3.14 features', 'ai agent framework updates 2026', 'new search api providers 2026'];
async function searchTopic(topic) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {method:'POST', headers:H, body:JSON.stringify({query:topic, country_code:'us'})});
const results = ((await r.json()).organic_results || []).slice(0,5);
return results.map(r=>'- '+r.title+': '+r.snippet+' ('+r.link+')').join('\n');
}
async function groundWithOllama(topic, context) {
const prompt = 'Based on these current search results from '+new Date().toISOString().split('T')[0]+', summarize the latest on: '+topic+'\n\nSearch results:\n'+context+'\n\nProvide a factual summary citing sources.';
const r = await fetch('http://localhost:11434/api/generate', {method:'POST', headers:{'Content-Type':'application/json'}, body:JSON.stringify({model:'llama3', prompt, stream:false})});
return (await r.json()).response || '';
}
const grounded = {};
for (const topic of TOPICS) {
const context = await searchTopic(topic);
const summary = await groundWithOllama(topic, context);
grounded[topic] = {date: new Date().toISOString().split('T')[0], summary};
console.log('Grounded: '+topic+' ('+summary.length+' chars)');
}
fs.writeFileSync('grounded_knowledge.json', JSON.stringify(grounded, null, 2));
console.log('Saved '+Object.keys(grounded).length+' grounded topics');Plateformes utilisées
Recherche web avec graphe de connaissances, PAA et aperçus IA