Tryacp / app.py
aymnsk's picture
Update app.py
9fc4259 verified
raw
history blame
2.24 kB
# app.py
import gradio as gr
from agents.programmer import ProgrammerAgent
from agents.debugger import DebuggerAgent
from agents.base_agent import ACPMessage
# Initialize agents
codebot = ProgrammerAgent()
bugbot = DebuggerAgent()
# Chat history
conversation = []
def start_conversation():
global conversation
conversation = [] # reset
# Initial message from BugBot
msg = bugbot.create_message(
receiver=codebot.name,
performative="request",
content="Can you write a Python function to reverse a list?"
)
conversation.append(str(msg))
# CodeBot responds
reply = codebot.receive_message(msg)
conversation.append(str(reply))
return "\n\n".join(conversation)
def continue_conversation():
if len(conversation) < 2:
return "Please start the conversation first."
# Last reply came from CodeBot β†’ BugBot now responds
last_msg = conversation[-1]
parsed = parse_acp_string(last_msg)
reply = bugbot.receive_message(parsed)
conversation.append(str(reply))
# CodeBot replies again
reply2 = codebot.receive_message(reply)
conversation.append(str(reply2))
return "\n\n".join(conversation)
def parse_acp_string(message_str: str) -> ACPMessage:
"""
Convert "[PERFORMATIVE] sender β†’ receiver: content"
back to an ACPMessage object
"""
try:
parts = message_str.split("] ", 1)
performative = parts[0][1:].lower()
meta, content = parts[1].split(": ", 1)
sender, receiver = [s.strip() for s in meta.split("β†’")]
return ACPMessage(sender, receiver, performative, content.strip())
except Exception:
return ACPMessage("Unknown", "Unknown", "inform", "Failed to parse message.")
# Gradio interface
with gr.Blocks(title="BotTalks") as demo:
gr.Markdown("# πŸ€– BotTalks: Programmer vs Debugger\nAgent Communication Protocol Chat")
chatbox = gr.Textbox(label="Conversation", lines=20)
with gr.Row():
start_btn = gr.Button("Start Conversation πŸš€")
next_btn = gr.Button("Next Turn πŸ”")
start_btn.click(start_conversation, outputs=chatbox)
next_btn.click(continue_conversation, outputs=chatbox)
# Run app
demo.launch()