jlgarbi's picture
Fix imports
fa592f7 verified
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
@tool
def recommend_pet(personality: str) -> str:
"""A tool that recommends a pet based on your personality description.
Args:
personality: A description of your personality traits.
Returns:
A string with a pet recommendation.
"""
# Normalize input to lowercase for matching.
personality_lower = personality.lower()
# Map personality traits to pet suggestions.
traits_to_pets = {
"shy": "cat",
"curious": "cat",
"energetic": "dog",
"active": "dog",
"calm": "fish",
"peaceful": "fish",
"adventurous": "ferret",
"creative": "parrot",
"imaginative": "parrot"
}
# Count matching traits for each pet.
scores = {}
for trait, pet in traits_to_pets.items():
if trait in personality_lower:
scores[pet] = scores.get(pet, 0) + 1
# If any traits matched, select the pet with the highest score.
# Otherwise, default to "cat".
if scores:
recommended_pet = max(scores, key=scores.get)
else:
recommended_pet = "cat"
return f"Based on your personality ('{personality}'), I recommend a {recommended_pet} as your companion!"
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
model_id='https://pflgm2locj2t89co.us-east-1.aws.endpoints.huggingface.cloud',
custom_role_conversions=None,
)
with open("prompts.yaml", 'r') as stream:
prompt_templates = yaml.safe_load(stream)
agent = CodeAgent(
model=model,
tools=[final_answer,recommend_pet], ## 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()