|  | from smolagents import CodeAgent,DuckDuckGoSearchTool, HfApiModel,load_tool,tool | 
					
						
						|  | import datetime | 
					
						
						|  | import requests | 
					
						
						|  | import pytz | 
					
						
						|  | import yaml | 
					
						
						|  | from tools.final_answer import FinalAnswerTool | 
					
						
						|  | from typing import Dict, Optional | 
					
						
						|  | import json | 
					
						
						|  |  | 
					
						
						|  | from Gradio_UI import GradioUI | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | @tool | 
					
						
						|  | def my_custom_tool(arg1:str, arg2:int)-> str: | 
					
						
						|  |  | 
					
						
						|  | """A tool that does nothing yet | 
					
						
						|  | Args: | 
					
						
						|  | arg1: the first argument | 
					
						
						|  | arg2: the second argument | 
					
						
						|  | """ | 
					
						
						|  | return "What magic will you build ?" | 
					
						
						|  |  | 
					
						
						|  | @tool | 
					
						
						|  | def get_payroll_laws(country: str, specific_area: Optional[str] = None) -> str: | 
					
						
						|  | """Retrieves payroll laws and regulations from the specified country's tax office portal | 
					
						
						|  |  | 
					
						
						|  | Args: | 
					
						
						|  | country: The country name or ISO code (e.g., 'USA', 'United Kingdom', 'Germany') | 
					
						
						|  | specific_area: Optional specific area of payroll law (e.g., 'tax_rates', 'social_security', 'minimum_wage', 'overtime') | 
					
						
						|  |  | 
					
						
						|  | Returns: | 
					
						
						|  | A formatted string containing payroll law information for the specified country | 
					
						
						|  | """ | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | tax_portals = { | 
					
						
						|  | 'USA': 'https://www.irs.gov', | 
					
						
						|  | 'UK': 'https://www.gov.uk/government/organisations/hm-revenue-customs', | 
					
						
						|  | 'Germany': 'https://www.bzst.de', | 
					
						
						|  | 'France': 'https://www.impots.gouv.fr', | 
					
						
						|  | 'Canada': 'https://www.canada.ca/en/revenue-agency', | 
					
						
						|  | 'Australia': 'https://www.ato.gov.au', | 
					
						
						|  | 'India': 'https://www.incometax.gov.in', | 
					
						
						|  | 'Japan': 'https://www.nta.go.jp', | 
					
						
						|  | 'Singapore': 'https://www.iras.gov.sg', | 
					
						
						|  | 'Netherlands': 'https://www.belastingdienst.nl' | 
					
						
						|  | } | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | country = country.upper().strip() | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | try: | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | payroll_info = { | 
					
						
						|  | 'USA': { | 
					
						
						|  | 'tax_rates': { | 
					
						
						|  | 'federal_income_tax': 'Progressive rates: 10%, 12%, 22%, 24%, 32%, 35%, 37%', | 
					
						
						|  | 'social_security': '6.2% (employee), 6.2% (employer) on wages up to $160,200 (2023)', | 
					
						
						|  | 'medicare': '1.45% (employee), 1.45% (employer), additional 0.9% for high earners' | 
					
						
						|  | }, | 
					
						
						|  | 'minimum_wage': 'Federal: $7.25/hour (varies by state)', | 
					
						
						|  | 'overtime': 'Time and a half for hours over 40 per week (FLSA)', | 
					
						
						|  | 'payroll_frequency': 'Varies: weekly, bi-weekly, semi-monthly, or monthly', | 
					
						
						|  | 'withholding_requirements': 'Form W-4 for federal withholding', | 
					
						
						|  | 'reporting': 'Quarterly Form 941, Annual Forms W-2 and W-3', | 
					
						
						|  | 'portal': tax_portals.get('USA', 'N/A') | 
					
						
						|  | }, | 
					
						
						|  | 'UK': { | 
					
						
						|  | 'tax_rates': { | 
					
						
						|  | 'income_tax': 'Personal allowance: £12,570, Basic rate: 20%, Higher rate: 40%, Additional rate: 45%', | 
					
						
						|  | 'national_insurance': 'Class 1: 12% on £12,570-£50,270, 2% above', | 
					
						
						|  | 'employer_ni': '13.8% on earnings above £175/week' | 
					
						
						|  | }, | 
					
						
						|  | 'minimum_wage': 'National Living Wage: £10.42/hour (23+), varies by age', | 
					
						
						|  | 'pension': 'Auto-enrollment minimum: 8% (3% employer, 5% employee)', | 
					
						
						|  | 'payroll_frequency': 'Weekly or monthly', | 
					
						
						|  | 'paye_system': 'Real Time Information (RTI) reporting required', | 
					
						
						|  | 'reporting': 'Full Payment Submission (FPS) with each payroll', | 
					
						
						|  | 'portal': tax_portals.get('UK', 'N/A') | 
					
						
						|  | }, | 
					
						
						|  | 'GERMANY': { | 
					
						
						|  | 'tax_rates': { | 
					
						
						|  | 'income_tax': 'Progressive: 0-45% based on income brackets', | 
					
						
						|  | 'solidarity_surcharge': '5.5% of income tax (for high earners)', | 
					
						
						|  | 'church_tax': '8-9% of income tax (if applicable)' | 
					
						
						|  | }, | 
					
						
						|  | 'social_insurance': { | 
					
						
						|  | 'pension': '18.6% (9.3% each)', | 
					
						
						|  | 'health': '14.6% + additional (split equally)', | 
					
						
						|  | 'unemployment': '2.4% (1.2% each)', | 
					
						
						|  | 'long_term_care': '3.05% (varies by state and children)' | 
					
						
						|  | }, | 
					
						
						|  | 'minimum_wage': '€12/hour (as of 2023)', | 
					
						
						|  | 'payroll_frequency': 'Monthly standard', | 
					
						
						|  | 'reporting': 'DEÜV electronic reporting system', | 
					
						
						|  | 'portal': tax_portals.get('Germany', 'N/A') | 
					
						
						|  | } | 
					
						
						|  | } | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | if country not in payroll_info: | 
					
						
						|  |  | 
					
						
						|  | return f"""Payroll Laws for {country}: | 
					
						
						|  |  | 
					
						
						|  | Unfortunately, detailed payroll law information for {country} is not currently available in this system. | 
					
						
						|  |  | 
					
						
						|  | To obtain accurate payroll laws for {country}, please: | 
					
						
						|  | 1. Visit the official tax authority website: {tax_portals.get(country, 'Please search for the official tax office portal')} | 
					
						
						|  | 2. Consult with a local payroll specialist or tax advisor | 
					
						
						|  | 3. Check international payroll service providers for country-specific guides | 
					
						
						|  |  | 
					
						
						|  | Key areas to research: | 
					
						
						|  | - Income tax rates and brackets | 
					
						
						|  | - Social security contributions | 
					
						
						|  | - Mandatory benefits and insurance | 
					
						
						|  | - Minimum wage requirements | 
					
						
						|  | - Overtime regulations | 
					
						
						|  | - Payroll reporting requirements | 
					
						
						|  | - Payment frequency regulations | 
					
						
						|  |  | 
					
						
						|  | Note: Payroll laws change frequently. Always verify current regulations with official sources.""" | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | country_data = payroll_info[country] | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | if specific_area: | 
					
						
						|  | if specific_area in country_data: | 
					
						
						|  | info = country_data[specific_area] | 
					
						
						|  | return f"""Payroll Laws for {country} - {specific_area.replace('_', ' ').title()}: | 
					
						
						|  |  | 
					
						
						|  | {json.dumps(info, indent=2) if isinstance(info, dict) else info} | 
					
						
						|  |  | 
					
						
						|  | Source Portal: {country_data.get('portal', 'N/A')} | 
					
						
						|  |  | 
					
						
						|  | Note: This information is for reference only. Please verify with official sources for the most current regulations.""" | 
					
						
						|  | else: | 
					
						
						|  | return f"Specific area '{specific_area}' not found. Available areas: {', '.join(country_data.keys())}" | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | result = f"""Comprehensive Payroll Laws for {country}: | 
					
						
						|  |  | 
					
						
						|  | {'='*50}""" | 
					
						
						|  |  | 
					
						
						|  | for category, details in country_data.items(): | 
					
						
						|  | if category != 'portal': | 
					
						
						|  | result += f"\n\n{category.replace('_', ' ').upper()}:" | 
					
						
						|  | if isinstance(details, dict): | 
					
						
						|  | for key, value in details.items(): | 
					
						
						|  | result += f"\n  • {key.replace('_', ' ').title()}: {value}" | 
					
						
						|  | else: | 
					
						
						|  | result += f"\n  {details}" | 
					
						
						|  |  | 
					
						
						|  | result += f"\n\n{'='*50}" | 
					
						
						|  | result += f"\nOfficial Portal: {country_data.get('portal', 'N/A')}" | 
					
						
						|  | result += "\n\n⚠️ IMPORTANT: This information is for reference purposes only. Payroll laws change frequently." | 
					
						
						|  | result += "\nAlways consult official government sources or qualified professionals for current regulations." | 
					
						
						|  |  | 
					
						
						|  | return result | 
					
						
						|  |  | 
					
						
						|  | except Exception as e: | 
					
						
						|  | return f"""Error retrieving payroll laws for {country}: {str(e)} | 
					
						
						|  |  | 
					
						
						|  | Please try: | 
					
						
						|  | 1. Checking the country name/code is correct | 
					
						
						|  | 2. Specifying a valid area: 'tax_rates', 'social_security', 'minimum_wage', 'overtime' | 
					
						
						|  | 3. Consulting the official tax portal directly | 
					
						
						|  |  | 
					
						
						|  | For production use, this tool would need: | 
					
						
						|  | - API integration with official government data sources | 
					
						
						|  | - Regular updates to reflect law changes | 
					
						
						|  | - Proper authentication and compliance with data usage policies""" | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | if __name__ == "__main__": | 
					
						
						|  |  | 
					
						
						|  | print(get_payroll_laws("USA")) | 
					
						
						|  | print("\n" + "="*70 + "\n") | 
					
						
						|  | print(get_payroll_laws("UK", "tax_rates")) | 
					
						
						|  | print("\n" + "="*70 + "\n") | 
					
						
						|  | print(get_payroll_laws("Germany", "social_insurance")) | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | model = HfApiModel( | 
					
						
						|  | max_tokens=2096, | 
					
						
						|  | temperature=0.5, | 
					
						
						|  | model_id='Qwen/Qwen2.5-Coder-32B-Instruct', | 
					
						
						|  | custom_role_conversions=None, | 
					
						
						|  | ) | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | 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], | 
					
						
						|  | max_steps=6, | 
					
						
						|  | verbosity_level=1, | 
					
						
						|  | grammar=None, | 
					
						
						|  | planning_interval=None, | 
					
						
						|  | name=None, | 
					
						
						|  | description=None, | 
					
						
						|  | prompt_templates=prompt_templates | 
					
						
						|  | ) | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | GradioUI(agent).launch() |