Spaces:
Sleeping
Sleeping
| import os | |
| import subprocess | |
| import sys | |
| # Now import the rest of the modules | |
| import logging | |
| import gradio as gr | |
| import openai | |
| import multiprocessing | |
| from process_run import process_run | |
| # Configure logging | |
| logging.basicConfig( | |
| level=logging.INFO, | |
| format='%(asctime)s - %(levelname)s - %(message)s', | |
| handlers=[ | |
| logging.StreamHandler(), | |
| ] | |
| ) | |
| logger = logging.getLogger(__name__) | |
| logger.setLevel('INFO') | |
| # Set your OpenAI API key | |
| openai.api_key = os.getenv("OPENAI_API_KEY") | |
| # Example instructions to display | |
| 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: | |
| # Add CSS for outlined groups | |
| 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() # Placeholder for our custom trajectory component | |
| 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") | |
| # Set max_threads to allow multiple concurrent requests | |
| demo.launch(share=True, max_threads=32) | |
| if __name__ == "__main__": | |
| # Add support for multiprocessing on Windows | |
| multiprocessing.freeze_support() | |
| main() | |