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 |