Spaces:
Runtime error
Runtime error
File size: 3,235 Bytes
f1c8621 9b5b26a c19d193 6aae614 5c199d7 f1c8621 9b5b26a d9fff49 9b5b26a 4cf532c cd3ce02 f1c8621 4cf532c 9b5b26a 7d110d3 4cf532c cd3ce02 4cf532c d9fff49 cd3ce02 4cf532c cd3ce02 4cf532c cd3ce02 d9fff49 cd3ce02 d9fff49 4cf532c b23408e cd3ce02 b23408e 9b5b26a f1c8621 9b5b26a f1c8621 8c01ffb 6aae614 ae7a494 f1c8621 ae7a494 5c199d7 f0564d8 5c199d7 13d500a 8c01ffb f1c8621 f0564d8 f1c8621 9b5b26a 8c01ffb 861422e f1c8621 8c01ffb 8fe992b d9fff49 8c01ffb 861422e 8fe992b f1c8621 |
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 |
from smolagents import CodeAgent,DuckDuckGoSearchTool, HfApiModel,load_tool,tool
import datetime
import requests
import pytz
import yaml
from tools.final_answer import FinalAnswerTool
from smolagents import LiteLLMModel
from Gradio_UI import GradioUI
#S&P500 Sentiment StoryTeller
@tool
def market_sentiment_story(index: str) -> str:
"""Fetches market data for a stock index and returns a prompt for generating a story.
Args:
index: One of 'sp500', 'dowjones', or 'nasdaq'.
"""
# 1. Map user input to Yahoo Finance symbols (Can create another tool down the line)
symbols = {
"sp500": "^GSPC",
"dowjones": "^DJI",
"nasdaq": "^IXIC"
}
# 2. Get the correct symbol for the requested index
symbol = symbols.get(index.lower())
try:
# 3. Fetch data from Yahoo Finance
url = f"https://query1.finance.yahoo.com/v8/finance/chart/{symbol}"
data = requests.get(url).json()
# 4. Extract current and previous prices
result = data["chart"]["result"][0]["meta"]
current = result["regularMarketPrice"]
previous = result["chartPreviousClose"]
change = current - previous
percent = (change / previous) * 100
# 5. Return a prompt for the LLM to generate a story
return (
f"The {index.upper()} is currently at {current:.2f}, "
f"which is a change of {percent:.2f}% from the previous close. "
f"Write a short, realistic story that explains why it moved in this direction."
)
except Exception as e:
return f"Error: {str(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()
# If the agent does not answer, the model is overloaded, please use another model or the following Hugging Face Endpoint that also contains qwen2.5 coder:
# model_id='https://pflgm2locj2t89co.us-east-1.aws.endpoints.huggingface.cloud'
model = LiteLLMModel(
model_id="qwen2:7b",
api_base="http://localhost:11434", # Or 127.0.0.1
model_provider="ollama", # 👈 THIS is the key fix!
num_ctx=8192,
)
# 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=[final_answer, market_sentiment_story], ## 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() |