|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import os |
|
import logging |
|
import gradio as gr |
|
import openai |
|
import multiprocessing |
|
|
|
from process_run import process_run |
|
|
|
|
|
logging.basicConfig( |
|
level=logging.INFO, |
|
format='%(asctime)s - %(levelname)s - %(message)s', |
|
handlers=[ |
|
logging.StreamHandler(), |
|
] |
|
) |
|
logger = logging.getLogger(__name__) |
|
logger.setLevel('INFO') |
|
|
|
|
|
openai.api_key = os.getenv("OPENAI_API_KEY") |
|
|
|
|
|
|
|
EXAMPLES = [ |
|
"When did the solar system form? Find on wikipedia.", |
|
"Find the rating of Monopoly (1935) on boardgamegeek.com", |
|
] |
|
|
|
URL_EXAMPLES = [ |
|
"about:blank", |
|
"https://www.wikipedia.org", |
|
"https://www.boardgamegeek.com" |
|
] |
|
|
|
def main(): |
|
logger.info("Starting BrowserGym web agent") |
|
|
|
with gr.Blocks(title="WebShephered Demo") as demo: |
|
|
|
gr.Markdown("# WebShephered Demo") |
|
with gr.Row(): |
|
with gr.Column(scale=2): |
|
with gr.Column(): |
|
instruction = gr.Textbox( |
|
label="Instruction", |
|
placeholder="Enter your instruction here", |
|
lines=2, |
|
) |
|
gr.Examples( |
|
examples=[[e] for e in EXAMPLES], |
|
inputs=instruction, |
|
cache_examples=False, |
|
) |
|
|
|
gr.Markdown("\n\n") |
|
|
|
with gr.Column(): |
|
start_url = gr.Textbox( |
|
label="Starting URL", |
|
placeholder="URL to start the browser at", |
|
value="about:blank" |
|
) |
|
gr.Examples( |
|
examples=URL_EXAMPLES, |
|
inputs=start_url, |
|
cache_examples=False, |
|
) |
|
|
|
gr.Markdown("\n\n") |
|
|
|
model_name = gr.Dropdown( |
|
label="Agent Model", |
|
choices=["gpt-4o"], |
|
value="gpt-4o" |
|
) |
|
run_btn = gr.Button("Run Demo") |
|
|
|
gr.Markdown("---") |
|
|
|
with gr.Column(): |
|
gr.Markdown("## Current State") |
|
state_view = gr.Markdown() |
|
browser_view = gr.Image(label="Browser View") |
|
|
|
gr.Markdown("### Task Checklist from WebShephered") |
|
checklist_view = gr.Markdown() |
|
|
|
gr.Markdown("### Action Selection in current step") |
|
with gr.Row() as rm_row: |
|
rm_cards_container = gr.HTML() |
|
with gr.Column(scale=2): |
|
gr.Markdown("## Trajectory") |
|
trajectory_container = gr.HTML() |
|
|
|
|
|
|
|
run_btn.click( |
|
fn=process_run, |
|
inputs=[instruction, model_name, start_url], |
|
outputs=[state_view, browser_view, checklist_view, rm_cards_container, trajectory_container], |
|
api_name="run_agent", |
|
concurrency_limit=32, |
|
show_progress=True |
|
) |
|
|
|
logger.info("Launching Gradio interface") |
|
|
|
demo.launch(share=True, max_threads=32) |
|
|
|
if __name__ == "__main__": |
|
|
|
multiprocessing.freeze_support() |
|
main() |
|
|