# Journi - Multi-Agent Travel Assistant System # This system coordinates multiple specialized agents to help travelers with # comprehensive travel planning and information gathering. # # The system consists of these specialized agents: # 1. Coordinator Agent - Orchestrates workflow and delegates tasks # 2. Information Retrieval Agent - Handles web search and webpage visits # 3. Language & Culture Agent - Provides translations and cultural information # 4. Logistics Agent - Manages time, weather, visas, and currency conversion # 5. Recommendation Agent - Creates destination descriptions, accommodation recommendations, and activity suggestions from smolagents import CodeAgent, HfApiModel, load_tool import datetime import yaml import os from Gradio_UI import GradioUI # Tool imports from tools.final_answer_tool import FinalAnswerTool from tools.web_search import DuckDuckGoSearchTool from tools.visit_webpage import VisitWebpageTool from tools.generate_destination_preview import GenerateDestinationPreviewTool from tools.get_local_time import GetLocalTimeTool from tools.get_weather_forecast import GetWeatherForecastTool from tools.convert_currency import ConvertCurrencyTool from tools.translate_phrase import TranslatePhraseTool from tools.get_visa_requirements import GetVisaRequirementsTool from tools.search_accommodations import SearchAccommodationsTool # ==================== SHARED MODEL SETUP ==================== def create_model(): """Creates and returns a configured HfApiModel instance.""" return HfApiModel( max_tokens=2096, temperature=0.5, # Balanced between creativity and accuracy model_id='https://pflgm2locj2t89co.us-east-1.aws.endpoints.huggingface.cloud', custom_role_conversions=None, ) # ==================== TOOL INITIALIZATION ==================== def initialize_tools(): """Initialize all tools used by the agents.""" return { 'final_answer': FinalAnswerTool(), 'web_search': DuckDuckGoSearchTool(max_results=5), 'visit_webpage': VisitWebpageTool(), 'generate_destination_preview': GenerateDestinationPreviewTool(), 'get_local_time': GetLocalTimeTool(), 'get_weather_forecast': GetWeatherForecastTool(), 'convert_currency': ConvertCurrencyTool(), 'translate_phrase': TranslatePhraseTool(), 'get_visa_requirements': GetVisaRequirementsTool(), 'search_accommodations': SearchAccommodationsTool(max_results=8), } # ==================== PROMPT TEMPLATES ==================== def create_coordinator_prompt_templates(): """Create prompt templates with coordinator-specific instructions.""" system_prompt = """ You are the Coordinator Agent for Journi, a multi-agent AI travel companion system. Your role is to understand the user's travel request, break it down into sub-tasks, and delegate these tasks to the appropriate specialized agents. You have access to these specialized agents: 1. information_retrieval_agent - For web search and visiting webpages 2. language_culture_agent - For translations and cultural information 3. logistics_agent - For time, weather, visas, and currency 4. recommendation_agent - For destination previews, accommodation searches, and activities IMPORTANT: To delegate a task to a managed agent, use this format: ```python result = information_retrieval_agent(task="Your detailed task description here") print(result) ``` For example: ```python info = information_retrieval_agent(task="Find the best time to visit Kyoto") print(info) ``` Your overall task is to: 1. Analyze the user's request to determine what information they need 2. Delegate appropriate tasks to the specialized agents using the correct format 3. Combine the responses into a well-structured, comprehensive answer 4. Use the final_answer tool to return the complete response to the user CRITICAL: When providing the final answer, you MUST use the final_answer tool inside a code block with the correct format: ```python comprehensive_answer = "Your detailed travel information here" final_answer(comprehensive_answer) ``` ALWAYS end your code blocks with ``` - this is essential to properly execute your code. NEVER try to provide a direct text response without using the final_answer tool in code. Remember to provide a thorough, enthusiastic response that covers all aspects of the user's travel query. """ return {"system_prompt": system_prompt} # ==================== MULTI-AGENT SYSTEM SETUP ==================== def create_multi_agent_system(): """ Create and configure the multi-agent system with specialized agents that work together to provide comprehensive travel assistance. """ model = create_model() tools = initialize_tools() # Create specialized agents with corrected names matching what will be used in calls information_retrieval_agent = CodeAgent( model=model, tools=[tools['web_search'], tools['visit_webpage']], max_steps=3, name="information_retrieval_agent", description="Finds and extracts relevant travel information from the web", ) language_culture_agent = CodeAgent( model=model, tools=[tools['translate_phrase']], max_steps=2, name="language_culture_agent", description="Provides language assistance and cultural context for travelers", ) logistics_agent = CodeAgent( model=model, tools=[ tools['get_local_time'], tools['get_weather_forecast'], tools['get_visa_requirements'], tools['convert_currency'] ], max_steps=4, name="logistics_agent", description="Manages practical travel information", ) recommendation_agent = CodeAgent( model=model, tools=[tools['generate_destination_preview'], tools['search_accommodations']], max_steps=3, name="recommendation_agent", description="Creates destination descriptions, searches real accommodations, and suggests activities", ) # Create coordinator agent with custom prompt templates and managed agents prompt_templates = create_coordinator_prompt_templates() coordinator_agent = CodeAgent( model=model, tools=[tools['final_answer']], managed_agents=[information_retrieval_agent, language_culture_agent, logistics_agent, recommendation_agent], max_steps=8, name="Journi", description="Your AI Travel Companion", prompt_templates=prompt_templates ) return coordinator_agent # ==================== MAIN APPLICATION ==================== if __name__ == "__main__": print("✈️ Launching Journi - Multi-Agent AI Travel Companion") print("Ask me about any destination, real accommodation searches, local time, weather, currency conversion, or travel phrases!") # Create multi-agent system multi_agent_system = create_multi_agent_system() # Launch the UI GradioUI(multi_agent_system).launch()