Spaces:
Sleeping
Sleeping
File size: 4,429 Bytes
9b5b26a c19d193 6aae614 8fe992b 9b5b26a 2ae5c92 9b5b26a 0a32ecc 9b5b26a 0a32ecc 9b5b26a 0a32ecc ac4abb3 0a32ecc 9b5b26a 2dbcaf3 2ae5c92 3e98138 0cd59d5 3e98138 0cd59d5 3e98138 0cd59d5 3e98138 0cd59d5 3e98138 2dbcaf3 0cd59d5 9b5b26a 8c01ffb 6aae614 4ffb6b0 e121372 400426f 05cd846 bf6d34c a231c1f b5fdc3d a231c1f fe328e0 13d500a 8c01ffb db4c435 9b5b26a db4c435 8c01ffb 861422e 9b5b26a 8c01ffb 8fe992b 3e98138 8c01ffb 861422e 8fe992b 9b5b26a 400426f |
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 121 122 123 124 125 126 127 128 129 130 131 132 133 |
from smolagents import CodeAgent,DuckDuckGoSearchTool, HfApiModel,load_tool,tool
import datetime
import requests
import pytz
import yaml
from tools.final_answer import FinalAnswerTool
from Gradio_UI import GradioUI
# Fact check tool
@tool
def fact_checker(claim:str)-> str: #it's import to specify the return type
"""A tool that checks the validity of a claim by analyzing search results
Args:
claim: A statement or claim to fact-check
Returns:
A summarized analysis of search results indicating if the clam is likely true, false, or inconclusive.
"""
search_tool = DuckDuckGoSearchTool(max_results=5)
try:
# Get Search results
results = search_tool.forward(claim)
# Analyze the results to check if the claim is mentioned
lower_claim = claim.lower()
positive_hits = sum(1 for result in results.split("\n") if lower_claim in result.lower())
# Generate a response based on the number of positive hits
if positive_hits >= 3:
status = "likely true"
elif positive_hits >= 1:
status = "possibly true, but further verification is needed"
else:
status = "unliely or inconclusive"
# Return a summary with confidence level
summary = (
f"Search results inicate taht the claim '{claim}' is {status}.\n"
f"Number of positive hits: {positive_hits}\n\n"
f"Here are the top results: \n{results}"
)
return summary
except Exception as e:
return f"Error during fact-checking: {str(e)}"
import re
# Stock price tool
@tool
def stock_price(symbol: str) -> str:
"""A tool that retrieves the current stock price for a given stock symbol.
Args:
symbol: The ticker symbol of the stock (e.g., AAPL for Apple Inc.).
Returns:
A summary indicating the current price of the stock or an error message if unavailable.
"""
try:
import yfinance as yf
# Initialize the ticker for the given symbol
ticker = yf.Ticker(symbol)
# Try to get the current price from the ticker info
price = ticker.info.get("currentPrice")
# Fallback: if 'currentPrice' is not available, get the last closing price
if price is None:
history = ticker.history(period="1d")
if not history.empty:
price = history["Close"].iloc[-1]
else:
return f"Could not retrieve the current price for {symbol}. Please verify the ticker symbol."
# Return the current price in a formatted string
return f"The current price for {symbol} is ${price:.2f}."
except Exception as e:
return f"An error occurred while retrieving the stock price for {symbol}: {e}"
@tool
def get_current_time_in_timezone(timezone: str) -> str:
"""A tool that fetches the current local time in a specified timezone.
Args:
timezone: A string representing a valid timezone (e.g., 'America/New_York').
"""
try:
# Create timezone object
tz = pytz.timezone(timezone)
# Get current time in that timezone
local_time = datetime.datetime.now(tz).strftime("%Y-%m-%d %H:%M:%S")
return f"The current local time in {timezone} is: {local_time}"
except Exception as e:
return f"Error fetching time for timezone '{timezone}': {str(e)}"
final_answer = FinalAnswerTool()
#get_current_time_in_timezone = get_current_time_in_timezone()
model = HfApiModel(
max_tokens=2096,
#max_tokens=2046,
temperature=0.5,
model_id='Qwen/Qwen2.5-Coder-32B-Instruct',
#model_id='meta-llama/Meta-Llama-3-8B-Instruct',
#model_id='deepseak-ai/DeepSeek-R1-Distill-Qwen-32B',
custom_role_conversions=None,
)
# search_tool = DuckDuckGoSearchTool()
# Import tool from Hub
image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)
with open("prompts.yaml", 'r') as stream:
prompt_templates = yaml.safe_load(stream)
agent = CodeAgent(
model=model,
tools=[fact_checker, stock_price, get_current_time_in_timezone, image_generation_tool, final_answer], ## add your tools here (don't remove final answer)
max_steps=6,
verbosity_level=1,
grammar=None,
planning_interval=None,
name=None,
description=None,
prompt_templates=prompt_templates
)
GradioUI(agent).launch(), |