First_agent_template / tools /http_search.py
Voiid-m's picture
Fake for POC
b0cbd03 verified
from smolagents.tools import Tool
class HttpSearchTool(Tool):
name = "http_search"
description = (
"Simule une recherche web sur un petit corpus connu (Qwen, OpenAI, modèles IA) "
"et renvoie un résumé lisible des résultats."
)
inputs = {
"query": {
"type": "string",
"description": "La requête de recherche (texte libre).",
}
}
output_type = "string"
def __init__(self):
super().__init__()
# Petit corpus interne, extensible facilement
self.docs = [
{
"title": "Qwen2.5 Coder 32B Instruct",
"url": "https://huggingface.co/Qwen/Qwen2.5-Coder-32B-Instruct",
"summary": (
"Qwen2.5 Coder 32B Instruct est un grand modèle de langage "
"spécialisé pour le code, avec de bonnes capacités de "
"raisonnement et de génération de programmes."
),
"keywords": ["qwen", "qwen2.5", "coder", "32b", "code"],
},
{
"title": "OpenAI (organisation)",
"url": "https://openai.com",
"summary": (
"OpenAI est une entreprise de recherche en intelligence "
"artificielle qui développe des modèles comme GPT et des "
"outils pour les développeurs."
),
"keywords": ["openai", "gpt", "chatgpt", "organisation"],
},
{
"title": "Modèles de langage pour le code",
"url": "https://example.com/code-models",
"summary": (
"Les modèles de langage pour le code aident à écrire, "
"expliquer et corriger du code dans de nombreux langages "
"de programmation."
),
"keywords": ["code", "llm", "coder", "programming"],
},
]
def forward(self, query: str) -> str:
q = query.lower()
# Filtrage très simple par mots-clés
matches = []
for doc in self.docs:
score = 0
for kw in doc["keywords"]:
if kw in q:
score += 1
if score > 0:
matches.append((score, doc))
if not matches:
return (
f"Aucun résultat trouvé dans le corpus interne pour la requête "
f'"{query}". Le moteur de recherche externe est désactivé dans '
"ce POC."
)
# Trier par score décroissant
matches.sort(key=lambda x: x[0], reverse=True)
top_docs = [d for score, d in matches[:3]]
lines = [
f'Voici quelques résultats simulés pour la requête "{query}" :',
"",
]
for idx, doc in enumerate(top_docs, start=1):
lines.append(f"{idx}. {doc['title']}")
lines.append(f" Lien : {doc['url']}")
lines.append(f" Résumé : {doc['summary']}")
lines.append("")
return "\n".join(lines).strip()