File size: 2,247 Bytes
d59cc6b
20a8d5c
ca2c2ed
137c3a1
d59cc6b
137c3a1
d59cc6b
 
 
137c3a1
d59cc6b
20a8d5c
137c3a1
d59cc6b
 
 
137c3a1
20a8d5c
137c3a1
d59cc6b
20a8d5c
d59cc6b
137c3a1
d59cc6b
ca2c2ed
 
 
 
 
d59cc6b
 
ca2c2ed
 
 
 
137c3a1
 
 
 
 
ca2c2ed
137c3a1
 
ca2c2ed
137c3a1
 
ca2c2ed
137c3a1
ca2c2ed
137c3a1
 
 
d59cc6b
 
 
ca2c2ed
d59cc6b
 
 
 
 
ca2c2ed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import gradio as gr
from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline
from playwright.async_api import async_playwright
import json

# 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():
    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