File size: 3,169 Bytes
aa7e933 9b5b26a c19d193 6aae614 9b5b26a aa7e933 9b5b26a aa7e933 5df72d6 9b5b26a aa7e933 9b5b26a aa7e933 9b5b26a aa7e933 9b5b26a 8c01ffb 6aae614 ae7a494 aa7e933 ae7a494 e121372 aa7e933 13d500a 8c01ffb 9b5b26a 8c01ffb 861422e aa7e933 8c01ffb 8fe992b aa7e933 8c01ffb aa7e933 861422e 8fe992b 8c01ffb |
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 |
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
import openai
system_prompt ="""
Your are a helpful math assistant
Your task resides on helping me with math problems,in specific problems related to right triangles
Whenever I ask you to find a hypotenuse you will use the tool find_hypotenuse
The way you use the tools is by specifying a json blob.
Specifically, this json should have an `action` key (with the name of the tool to use) and an
`action_input` key (with the input to the tool going here).
The only values that should be in the "action" field are:
find_hypotenuse: Get the hypotenuse from the given cathetus, args: {"cathetus1": {"type": "int"},"cathetus2": {"type": "int"}}}
example use :
{{
"action": "find_hypotenuse",
cathetus1s: {1},
cathetus2: {2},
}}
Once you solve the problem and you have the answer this will be your following answer:
example: The hypotenuse of the right triangle is x
"""
# Below is an example of a tool that does nothing. Amaze us with your creativity !
@tool
def find_hypotenuse(cathetus1: int, cathetus2: int) -> int: # it's import to specify the return type
# Keep this format for the description / args / args description but feel free to modify the tool
"""A tool that does nothing yet
Args:
cathetus1
cathetus2
hypotenuse = (cathetus1**2 + cathetus2**2)**(1/2)
"""
return hypotenuse
@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 = HfApiModel(
max_tokens=2096,
temperature=0.5,
model_id='Qwen/Qwen2.5-Coder-32B-Instruct', # it is possible that this model may be overloaded
custom_role_conversions=None,
)
# 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=[find_hypotenuse], ## add your tools here (don't remove final answer)
max_steps=6,
verbosity_level=1,
grammar=None,
planning_interval=None,
name=None,
description=system_prompt,
prompt_templates=prompt_templates
)
GradioUI(agent).launch() |