Spaces:
Sleeping
Sleeping
| import time | |
| from prompts import * | |
| from agent import GeminiAgent | |
| def generate_tour_script(api_key, location, interests, duration): | |
| # Step 1: Planner | |
| planner = GeminiAgent(api_key, system_instruction=PLANNER_PROMPT) | |
| planner_prompt = f"Location: {location}\nInterests: {interests}\nDuration: {duration} minutes" | |
| print("Calling Planner Agent...") | |
| experts_str = planner.generate_content(planner_prompt) | |
| experts = [e.strip() for e in experts_str.split(',') if e.strip()] | |
| print(f"Experts needed: {experts}") | |
| # Mapping experts to prompts | |
| expert_prompts = { | |
| "Architecture": ARCHITECTURE_PROMPT, | |
| "Culinary": CULINARY_PROMPT, | |
| "Culture": CULTURE_PROMPT, | |
| "History": HISTORICAL_PROMPT | |
| } | |
| # Step 2: Call experts sequentially | |
| expert_scripts = {} | |
| for expert in experts: | |
| # Match expert name loosely | |
| matched_key = next((k for k in expert_prompts.keys() if k.lower() in expert.lower()), None) | |
| if matched_key: | |
| print(f"Calling {matched_key} Expert...") | |
| expert_agent = GeminiAgent(api_key, system_instruction=expert_prompts[matched_key]) | |
| expert_prompt = f"Provide script for location: {location}" | |
| script = expert_agent.generate_content(expert_prompt) | |
| expert_scripts[matched_key] = script | |
| # Sleep to avoid 429 Too Many Requests | |
| time.sleep(5) | |
| if not expert_scripts: | |
| # Fallback if planner outputs something weird | |
| print("Fallback to History Expert") | |
| expert_agent = GeminiAgent(api_key, system_instruction=HISTORICAL_PROMPT) | |
| script = expert_agent.generate_content(f"Provide historical overview for: {location}") | |
| expert_scripts["History"] = script | |
| time.sleep(5) | |
| # Step 3: Orchestrator | |
| orchestrator = GeminiAgent(api_key, system_instruction=ORCHESTRATOR_PROMPT) | |
| orchestrator_prompt = "Combine the following expert scripts into a seamless audio tour:\n\n" | |
| for exp, script in expert_scripts.items(): | |
| orchestrator_prompt += f"--- {exp} Expert ---\n{script}\n\n" | |
| print("Calling Orchestrator Agent...") | |
| final_script = orchestrator.generate_content(orchestrator_prompt) | |
| return final_script | |