Spaces:
Sleeping
Sleeping
| 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() | |