Spaces:
Runtime error
Runtime error
| import os | |
| import subprocess | |
| from playwright.async_api import async_playwright | |
| import gradio as gr | |
| from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline | |
| # Define model and inference parameters | |
| MODEL_NAME = "HuggingFaceH4/zephyr-7b-beta" | |
| MAX_LENGTH = 512 | |
| NUM_BEAMS = 5 | |
| TEMPERATURE = 0.7 | |
| # Function to generate actions using Zephyr-7b-beta model | |
| def generate_actions(input_text): | |
| tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME) | |
| model = AutoModelForCausalLM.from_pretrained(MODEL_NAME) | |
| # Use pipeline for text generation | |
| generator = pipeline('text-generation', model=model, tokenizer=tokenizer) | |
| outputs = generator(input_text, max_length=MAX_LENGTH, num_beams=NUM_BEAMS, temperature=TEMPERATURE) | |
| response = outputs[0]['generated_text'] | |
| actions = response.split("\n") | |
| return actions | |
| # Function to initialize browser and page (now asynchronous) | |
| async def initialize_browser(): | |
| # Attempt to download browser binaries if not already present | |
| try: | |
| subprocess.check_output(["which", "chromium"], stderr=subprocess.STDOUT) | |
| except subprocess.CalledProcessError: | |
| print("Chromium not found. Attempting to download...") | |
| # Note: Directly executing 'playwright install' in Python is not supported. | |
| # You would need to ensure the environment is pre-configured or use a different method to install the browser. | |
| async with async_playwright() as p: | |
| browser = await p.chromium.launch() | |
| page = await browser.new_page() | |
| return browser, page | |
| # Gradio interface (now using the asynchronous function) | |
| async def run_agent(input_text): | |
| async with async_playwright() as p: | |
| browser, page = await initialize_browser() | |
| actions = generate_actions(input_text) | |
| for action in actions: | |
| if "open website" in action: | |
| website = action.split(" ")[-1] | |
| await page.goto(website) | |
| elif "click" in action: | |
| selector = action.split(" ")[-1] | |
| await page.click(selector) | |
| elif "type" in action: | |
| text = action.split(" ")[-1] | |
| await page.type(text) | |
| elif "submit" in action: | |
| await page.press("Enter") | |
| else: | |
| print(f"Action not recognized: {action}") | |
| return f"Successfully executed actions based on: {input_text}" | |
| iface = gr.Interface( | |
| fn=run_agent, # Pass the async function directly | |
| inputs=gr.Textbox(label="Enter your request"), | |
| outputs=gr.Textbox(label="Response"), | |
| title="Automated Agent", | |
| description="Enter a task or instruction for the agent to perform." | |
| ) | |
| iface.launch(share=True) # Enable sharing |