File size: 2,267 Bytes
06281e0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
562adbd
06281e0
 
 
 
 
 
 
562adbd
06281e0
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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