Spaces:
Runtime error
Runtime error
File size: 4,344 Bytes
4826e54 38812af 4826e54 38812af 4826e54 38812af 4826e54 38812af 4826e54 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
from langchain.tools import Tool
import random
import os
from huggingface_hub import list_models
# from langchain_tavily import TavilySearch
from langchain_community.tools import DuckDuckGoSearchRun
from dotenv import load_dotenv
load_dotenv()
# Initialize the DuckDuckGo search tool
search_tool = DuckDuckGoSearchRun()
def get_weather_info(location: str) -> str:
"""Fetches dummy weather information for a given location."""
# Dummy weather data
weather_conditions = [
{"condition": "Rainy", "temp_c": 15},
{"condition": "Clear", "temp_c": 25},
{"condition": "Windy", "temp_c": 20},
]
# Randomly select a weather condition
data = random.choice(weather_conditions)
return f"Weather in {location}: {data['condition']}, {data['temp_c']}ยฐC"
def get_hub_stats(author: str) -> str:
"""Fetches the most downloaded model from a specific author on the Hugging Face Hub."""
try:
# List models from the specified author, sorted by downloads
models = list(list_models(
author=author, sort="downloads", direction=-1, limit=1))
if models:
model = models[0]
return f"The most downloaded model by {author} is {model.id} with {model.downloads:,} downloads."
else:
return f"No models found for author {author}."
except Exception as e:
return f"Error fetching models for {author}: {str(e)}"
# def get_latest_news(topic: str) -> str:
# """Fetches the latest news about a specific topic using Tavily search."""
# try:
# # Initialize Tavily search with API key from environment
# tavily_search = TavilySearch(
# api_key=os.getenv("TAVILY_API_KEY"),
# max_results=2,
# topic="general",
# search_depth="basic",
# include_answer=True,
# include_raw_content=False,
# include_images=False
# )
# # Search for news about the topic
# response = tavily_search.invoke(
# {"query": f"latest news about {topic}"})
# # Handle the correct Tavily response format
# if isinstance(response, dict) and 'results' in response:
# results = response['results']
# answer = response.get('answer', '')
# if results:
# # Format the results nicely
# formatted_news = f"๐ฐ Latest News about '{topic}':\n\n"
# # Add AI-generated answer if available
# if answer:
# formatted_news += f"๐ค **Quick Summary**: {answer}\n\n"
# # Add detailed results
# formatted_news += "๐ **Detailed Results**:\n\n"
# for i, result in enumerate(results, 1):
# title = result.get('title', 'No title')
# content = result.get('content', 'No content available')
# url = result.get('url', 'No URL')
# score = result.get('score', 0)
# formatted_news += f"{i}. **{title}**\n"
# formatted_news += f" ๐ Summary: {content}\n"
# formatted_news += f" ๐ Source: {url}\n"
# formatted_news += f" โญ Relevance: {score:.2f}\n\n"
# return formatted_news
# else:
# return f"No recent news found about '{topic}'. Please try a different search term."
# else:
# return f"Unexpected response format from search. Raw response: {str(response)[:500]}..."
# except Exception as e:
# return f"Error fetching news about '{topic}': {str(e)}. Please check your Tavily API key and try again."
weather_info_tool = Tool(
name="weather_info",
func=get_weather_info,
description="Fetches dummy weather information for a given location."
)
hub_stats_tool = Tool(
name="hub_stats",
func=get_hub_stats,
description="Fetches the most downloaded model from a specific author on the Hugging Face Hub."
)
# news_search_tool = Tool(
# name="news_search",
# func=get_latest_news,
# description="Fetches the latest news about a specific topic using Tavily search. Provide a topic or keyword to search for recent news articles."
# )
news_search_tool = search_tool
|