web_tool.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. from ddgs import DDGS
  2. class WebSearchTool:
  3. def __init__(self, max_results=2):
  4. """
  5. 初始化免费网络搜索工具
  6. Args:
  7. max_results: 最大返回结果数
  8. """
  9. self.ddgs = DDGS()
  10. self.max_results = max_results
  11. def search(self, query, *args, **kwargs):
  12. """
  13. 执行搜索
  14. Args:
  15. query: 搜索查询字符串
  16. Returns:
  17. 搜索结果
  18. """
  19. try:
  20. results = list(self.ddgs.text(query, max_results=self.max_results))
  21. formatted_results = []
  22. for result in results:
  23. formatted_results.append({
  24. "title": result.get("title", ""),
  25. "link": result.get("href", ""),
  26. "snippet": result.get("body", "")
  27. })
  28. return str({"results": formatted_results})
  29. except Exception as e:
  30. return str({"results": "null"})
  31. web_search_tool = WebSearchTool()
  32. def create_search_demo():
  33. """
  34. 创建免费搜索工具的简洁 demo
  35. """
  36. # 示例搜索查询
  37. queries = [
  38. "2026年的农历新年是什么",
  39. "Python机器学习最佳实践",
  40. "污水处理新技术发展"
  41. ]
  42. print("=== FreeWebSearchTool 搜索 Demo ===")
  43. for query in queries:
  44. print(f"\n查询: {query}")
  45. response = web_search_tool.search(query)
  46. print(f"结果: {response}")
  47. print("\n=== Demo 结束 ===")
  48. if __name__ == "__main__":
  49. create_search_demo()