Spaces:
No application file
No application file
| from langchain_community.tools import WikipediaQueryRun | |
| from langchain_community.utilities import WikipediaAPIWrapper | |
| from duckduckgo_search import DDGS | |
| from tools.interfaces.interface_wikipedia_search import WikipediaSearchInterface | |
| class SearchTool(WikipediaSearchInterface): | |
| """ | |
| Classe concrète qui implémente l'interface WikipediaSearchInterface. | |
| Fournit des méthodes de recherche via Wikipedia et DuckDuckGo. | |
| """ | |
| def __init__(self): | |
| self.wikipedia_tool = WikipediaQueryRun(api_wrapper=WikipediaAPIWrapper()) | |
| def query_wikipedia(self, query: str) -> str: | |
| """ | |
| Fait une recherche Internet avec DuckDuckGo (backend='api') et retourne 3 résultats. | |
| """ | |
| try: | |
| result = self.wikipedia_tool.run(query) | |
| return f"(Wikipedia) Résumé : {result}" | |
| except Exception as e: | |
| return f"(Wikipedia) Erreur : {e}" | |
| def web_search(self, query: str) -> str: | |
| """ | |
| Fait une recherche Internet avec DuckDuckGo (backend='api') et retourne 3 résultats. | |
| """ | |
| try: | |
| with DDGS() as ddgs: | |
| results = ddgs.text(query, max_results=3, backend="api") | |
| if not results: | |
| return "Aucun résultat trouvé." | |
| output = "" | |
| for i, r in enumerate(results, start=1): | |
| output += f"{i}. {r['title']}\n{r['href']}\n{r['body']}\n\n" | |
| return output.strip() | |
| except Exception as e: | |
| return f"Erreur lors de la recherche : {e}" | |