File size: 2,496 Bytes
89784d2
 
 
 
 
 
 
b9b41a6
 
 
 
7337f9c
89784d2
b9b41a6
 
7337f9c
 
 
b9b41a6
 
 
 
 
7337f9c
c363697
b9b41a6
 
 
 
c363697
b9b41a6
 
7337f9c
 
 
 
b9b41a6
c363697
 
7337f9c
89784d2
b9b41a6
27e3872
7c8303a
27e3872
 
 
 
b9b41a6
 
dd95794
27e3872
b9b41a6
 
dd95794
4993125
dd95794
4993125
 
dd95794
 
 
 
 
 
 
27e3872
 
7c8303a
 
27e3872
 
 
 
 
 
 
 
 
 
 
 
 
 
7c8303a
27e3872
 
 
 
 
c363697
 
7337f9c
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# app.py

import gradio as gr
from agents.philosopher import PhilosopherAgent
from agents.historian import HistorianAgent
from agents.hacker import HackerAgent
from agents.comedian import ComedianAgent
from agents.lawyer import LawyerAgent
from agents.scientist import ScientistAgent
from agents.journalist import JournalistAgent
from agents.trader import TraderAgent
from agents.base_agent import ACPMessage

# Initialize all agents
all_agents = [
    PhilosopherAgent(),
    HistorianAgent(),
    HackerAgent(),
    ComedianAgent(),
    LawyerAgent(),
    ScientistAgent(),
    JournalistAgent(),
    TraderAgent()
]

agent_map = {agent.name: agent for agent in all_agents}


def chat(prompt, selected_agents):
    responses = {}
    for name in selected_agents:
        agent = agent_map[name]
        try:
            output = agent.generate([ACPMessage(role="user", content=prompt)])
        except Exception as e:
            output = f"[ERROR] {e}"
        responses[name] = output
    return responses

iface = gr.Interface(
    fn=chat,
    inputs=[
        gr.Textbox(
            label="Ask Anything",
            lines=4,
            placeholder="Ask your question here...",
            elem_id="chat-input"
        ),
        gr.CheckboxGroup(
            choices=list(agent_map.keys()),
            label="Choose Which Personalities to Ask",
            value=list(agent_map.keys())
        )
    ],
    outputs=gr.JSON(label="Responses"),
    title="PerspectiveAI",
    description=(
        ""
        ""
        "\n\n"
        "Created by Aymn: [LinkedIn](https://www.linkedin.com/in/aymnsk) 路 "
        "[GitHub](https://github.com/aymnsk) 路 "
        "[Instagram](https://www.instagram.com/damnn_aymn/) 路 "
        "[X](https://x.com/Aymn51414199) 路 "
        "[Hugging Face](https://huggingface.co/spaces/aymnsk)"
    ),
    theme=gr.themes.Soft(
        primary_hue="blue",
        secondary_hue="gray",
        font=[gr.themes.GoogleFont("Inter")],
        radius_size=gr.themes.sizes.radius_md,
        spacing_size=gr.themes.sizes.spacing_md
    ),
    css="""
        #chat-input textarea {
            font-size: 1.1rem;
            padding: 12px;
            background: #1e1e2f;
            color: white;
            border-radius: 12px;
        }
        body {
            background-color: #111827;
            color: white;
            font-family: 'Inter', sans-serif;
        }
        .gr-box {
            border: none;
        }
    """
)

iface.launch()