Voiid-m's picture
Generate img return type
0c552d0 verified
from smolagents import CodeAgent, HfApiModel, load_tool, tool
import datetime
import pytz
import yaml
# ==== Import des tools définis dans tools/ ====
from tools.final_answer import FinalAnswerTool
#from tools.web_search import DuckDuckGoSearchTool
from tools.visit_webpage import VisitWebpageTool
from tools.http_search import HttpSearchTool
from tools.image_wrapper import save_image_to_tmp
from Gradio_UI import GradioUI
# ==== Nouveaux tools Python ====
@tool
def my_custom_tool(arg1: str, arg2: int) -> str:
"""Tool de démonstration.
Retourne une phrase en français décrivant l'appel effectué.
Args:
arg1: premier argument textuel.
arg2: second argument numérique.
"""
return f'Le tool my_custom_tool a été appelé avec arg1="{arg1}" et arg2={arg2}.'
@tool
def get_current_time_in_timezone(timezone: str) -> str:
"""Retourne l'heure locale actuelle dans un fuseau horaire donné.
Args:
timezone: Fuseau horaire valide (ex: 'Europe/Paris', 'America/New_York').
"""
try:
tz = pytz.timezone(timezone)
local_time = datetime.datetime.now(tz).strftime("%Y-%m-%d %H:%M:%S")
return f"L'heure locale actuelle dans {timezone} est : {local_time}"
except Exception as e:
return f"Erreur pour le fuseau '{timezone}' : {str(e)}"
@tool
def generate_image_and_save(prompt: str) -> str:
"""Génère une image via image_generation_tool, la sauvegarde dans /tmp
et renvoie le chemin du fichier.
Args:
prompt: description textuelle de l'image à générer.
"""
img = image_generation_tool(prompt=prompt)
filepath = save_image_to_tmp(img)
return f"Image sauvegardée dans : {filepath}"
@tool
def generate_image(prompt: str) -> object:
"""Génère une image à partir d'un prompt et la renvoie directement.
L'UI Gradio pourra l'afficher si elle gère les objets image.
Args:
prompt: description textuelle de l'image.
"""
img = image_generation_tool(prompt=prompt)
return img
# ==== Instanciation des tools existants ====
final_answer = FinalAnswerTool()
#web_search = DuckDuckGoSearchTool()
visit_webpage = VisitWebpageTool()
http_search = HttpSearchTool()
# Tool Hub text->image (prévu dans le cours)
image_generation_tool = load_tool(
"agents-course/text-to-image",
trust_remote_code=True,
)
# ==== Modèle LLM (Qwen2.5 Coder 32B Instruct) ====
model = HfApiModel(
max_tokens=2096,
temperature=0.5,
model_id="Qwen/Qwen2.5-Coder-32B-Instruct",
custom_role_conversions=None,
)
# ==== Prompts (prompts.yaml) ====
with open("prompts.yaml", "r") as stream:
prompt_templates = yaml.safe_load(stream)
# ==== Création de l’agent ====
agent = CodeAgent(
model=model,
tools=[
#web_search, # DuckDuckGo web search
http_search,
visit_webpage, # lecture de page web
image_generation_tool, # génération d’image
generate_image_and_save,
generate_image,
my_custom_tool, # tool custom
get_current_time_in_timezone,
final_answer, # final_answer doit être présent
],
max_steps=6,
verbosity_level=1,
grammar=None,
planning_interval=None,
name=None,
description=None,
prompt_templates=prompt_templates,
)
GradioUI(agent).launch()