Spaces:
Sleeping
Sleeping
File size: 2,787 Bytes
89784d2 b9b41a6 7337f9c 89784d2 f574446 b9b41a6 7337f9c b9b41a6 7337f9c c363697 f574446 b9b41a6 f574446 b450731 b9b41a6 c363697 b9b41a6 dc6e3d1 7337f9c b450731 7337f9c dc6e3d1 b9b41a6 c363697 b450731 f574446 b450731 7337f9c 89784d2 b9b41a6 f574446 b450731 f574446 b9b41a6 dd95794 b450731 b9b41a6 dd95794 4993125 dd95794 f574446 974d29f f574446 c363697 b450731 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 95 96 |
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 8 agents
all_agents = [
PhilosopherAgent(),
HistorianAgent(),
HackerAgent(),
ComedianAgent(),
LawyerAgent(),
ScientistAgent(),
JournalistAgent(),
TraderAgent()
]
# β
Map name to agent
agent_map = {agent.name: agent for agent in all_agents}
# β
Core response function
def chat(prompt, selected_agents):
responses = {}
for name in selected_agents:
agent = agent_map.get(name)
try:
output = agent.generate([ACPMessage(role="user", content=prompt)])
if isinstance(output, list): # Handle output like [msg]
output = output[0]
except Exception as e:
output = f"[ERROR: {e}]"
responses[name] = output
return [responses] # β
Must return list for Gradio API format
# That results in: { "data": [ { "Philosopher": "...", ... } ] }
# β
Interface for direct testing/debugging (optional if using just API)
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()) # β
default: all selected
)
],
outputs=gr.JSON(label="Responses"),
title="PerspectiveAI",
description=(
"π€ Ask your question and receive multi-agent wisdom.\n\n"
"Created by Aymn Β· [GitHub](https://github.com/aymnsk) Β· "
"[Instagram](https://instagram.com/damnn_aymn)"
),
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;
}
"""
)
# β
Launch Gradio β allow API call via /run/predict
iface.launch()
|