File size: 1,790 Bytes
be13e49 c19d193 6aae614 d18f44e 8fe992b 9b5b26a d18f44e be13e49 9b5b26a be13e49 d18f44e 068055e be13e49 d18f44e 9b5b26a 6aae614 ae7a494 9ef7cb6 ae7a494 e121372 7a2f702 9ef7cb6 7a2f702 13d500a 8c01ffb 861422e 9b5b26a 8c01ffb 8fe992b 068055e be13e49 8c01ffb 861422e 8fe992b 9b5b26a 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 |
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() |