First_agent_template / tools /calories_checker.py
cyberosa
trying to return just the ingredients
bfc9852
raw
history blame
1.49 kB
import requests
import os
from typing import Any, Optional, List, Dict
from smolagents.tools import Tool
import json
class CaloriesCheckerTool(Tool):
name = "calories_check"
description = """Checks the calories and other components of food given n a query with the food you want to check,
it returns a dictionary with the calories and other nutritional parameters of the food"""
inputs = {
"query": {
"type": "string",
"description": "The query with the food and ingredients you want to check.",
}
}
output_type = "string"
def __init__(self, *args, **kwargs):
self.is_initialized = False
self.api_key = os.environ.get("CALORIES_API_KEY", None)
def forward(self, query: str) -> list[dict[str, Any]]:
api_url = "https://api.calorieninjas.com/v1/nutrition?query="
response = requests.get(
api_url + query, headers={"X-Api-Key": str(self.api_key)}
)
if response.status_code == requests.codes.ok:
# this is a list of dictionaries
data = json.loads(response.text)
items = data["items"]
response_json = json.dumps(items, indent=4)
return response_json
return "Error: " + str(response.status_code) + "\n\n".join(response.text)
if __name__ == "__main__":
query = "bread with fried green peppers"
tool = CaloriesCheckerTool()
print("result")
print(tool.forward(query=query))