from smolagents import CodeAgent,DuckDuckGoSearchTool, HfApiModel,load_tool,tool import datetime import requests import pytz import yaml from typing import List, Dict import tkapi from tkapi.fractie import Fractie from tools.final_answer import FinalAnswerTool from Gradio_UI import GradioUI api = tkapi.TKApi() def Get_Active_Fractions() -> list[dict[str, str | int]]: """ Retrieves a list of all currently active fractions (political parties) in the Dutch parliament. Returns: List[Dict[str, Union[str, int]]]: A list of dictionaries containing information about each fraction: - 'naam': Full name of the political party (string) - 'afkorting': Abbreviation/acronym of the party (string) - 'zetels_aantal': Number of seats the party holds (integer) Example return value: [ { 'naam': 'Volkspartij voor Vrijheid en Democratie', 'afkorting': 'VVD', 'zetels_aantal': 34 }, { 'naam': 'Democraten 66', 'afkorting': 'D66', 'zetels_aantal': 24 } ] """ try: # Initialize API client api = tkapi.TKApi(verbose=False) # Create filter for active fractions filter = Fractie.create_filter() filter.filter_actief() # Get all active fractions active_fractions = api.get_fracties(filter=filter) # Format the results results = [] for fraction in active_fractions: fraction_info = { 'naam': fraction.naam, 'afkorting': fraction.afkorting, 'zetels_aantal': fraction.zetels_aantal } results.append(fraction_info) return results except Exception as e: print(f"Error fetching fraction data: {str(e)}") return [] @tool def get_current_time_in_timezone(timezone: str) -> str: """A tool that fetches the current local time in a specified timezone. Args: timezone: A string representing a valid timezone (e.g., 'America/New_York'). """ try: # Create timezone object tz = pytz.timezone(timezone) # Get current time in that timezone local_time = datetime.datetime.now(tz).strftime("%Y-%m-%d %H:%M:%S") return f"The current local time in {timezone} is: {local_time}" except Exception as e: return f"Error fetching time for timezone '{timezone}': {str(e)}" final_answer = FinalAnswerTool() model = HfApiModel( max_tokens=2096, temperature=0.5, model_id='Qwen/Qwen2.5-Coder-32B-Instruct', custom_role_conversions=None, ) # Import tool from Hub image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True) with open("prompts.yaml", 'r') as stream: prompt_templates = yaml.safe_load(stream) agent = CodeAgent( model=model, tools=[final_answer,Get_Active_Fractions], ## 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()