from smolagents import CodeAgent, DuckDuckGoSearchTool, HfApiModel, tool import yaml from tools.final_answer import FinalAnswerTool from recipe_scrapers import scrape_html from urllib.request import urlopen from Gradio_UI import GradioUI @tool def grandma_secret_sauce(url: str) -> str: """This tool look at the urls provided and returns the recipe from a wroking, existing page. Args: url: list of url pages to scrape the recipe from. """ scraper = None try: html = urlopen(url).read().decode("utf-8") scraper = scrape_html(html, org_url=url) except: return f"Recipe not found for provided url: {url}." ingredients = [f" - {ing}\n" for ing in scraper.ingredients()] recipe = f""" 👩🏼‍🍳 Et voilà! The {scraper.title()}! Preparation requires {scraper.total_time()} minutes, and it is for {scraper.yields()} people. 🧂 Ingredients:\n {''.join(ingredients)} 🥘 Instructions: {scraper.instructions()} """ return recipe 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=model_id, custom_role_conversions=None, ) with open("prompts.yaml", 'r') as stream: prompt_templates = yaml.safe_load(stream) agent = CodeAgent( model=model, tools=[final_answer, DuckDuckGoSearchTool(), grandma_secret_sauce], max_steps=10, verbosity_level=1, grammar=None, planning_interval=None, name=None, description=None, prompt_templates=prompt_templates ) GradioUI(agent).launch()