|
|
|
|
|
import gradio as gr |
|
from agents.programmer import ProgrammerAgent |
|
from agents.debugger import DebuggerAgent |
|
from agents.base_agent import ACPMessage |
|
|
|
|
|
codebot = ProgrammerAgent() |
|
bugbot = DebuggerAgent() |
|
|
|
|
|
conversation = [] |
|
|
|
def start_conversation(): |
|
global conversation |
|
conversation = [] |
|
|
|
|
|
msg = bugbot.create_message( |
|
receiver=codebot.name, |
|
performative="request", |
|
content="Can you write a Python function to reverse a list?" |
|
) |
|
conversation.append(str(msg)) |
|
|
|
|
|
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_msg = conversation[-1] |
|
parsed = parse_acp_string(last_msg) |
|
reply = bugbot.receive_message(parsed) |
|
conversation.append(str(reply)) |
|
|
|
|
|
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.") |
|
|
|
|
|
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) |
|
|
|
|
|
demo.launch() |
|
|