File size: 2,077 Bytes
b3131aa
 
 
 
e0ce4a8
b3131aa
da1e01a
e0ce4a8
 
 
 
 
 
 
b3131aa
e0ce4a8
 
 
b3131aa
e0ce4a8
da1e01a
e0ce4a8
b3131aa
da1e01a
e0ce4a8
 
 
 
b3131aa
 
da1e01a
 
 
b3131aa
 
 
 
e0ce4a8
b3131aa
 
 
 
da1e01a
b3131aa
da1e01a
b3131aa
 
 
da1e01a
 
 
 
 
e0ce4a8
da1e01a
b3131aa
e0ce4a8
da1e01a
b3131aa
da1e01a
b3131aa
 
 
 
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
63
64
import os
import asyncio
import gradio as gr
from browser_use import Agent
from langchain_openai import ChatOpenAI

# 1. Функция для установки браузера
async def install_playwright():
    process = await asyncio.create_subprocess_exec(
        'playwright', 'install', 'chromium',
        stdout=asyncio.subprocess.PIPE,
        stderr=asyncio.subprocess.PIPE
    )
    await process.communicate()

# 2. Основная функция агента
async def run_browser_agent(task):
    api_key = os.getenv("NVIDIA_API_KEY")
    
    if not api_key:
        return "ОШИБКА: Секрет 'NVIDIA_API_KEY' не найден в Settings -> Secrets!"

    try:
        # Создаем модель
        llm = ChatOpenAI(
            model="meta/llama-3.1-405b-instruct",
            openai_api_key=api_key,
            base_url="https://integrate.api.nvidia.com/v1"
        )
        
        # ХАК: Вручную добавляем атрибут, который требует browser-use
        llm.provider = "openai" 

        agent = Agent(
            task=task,
            llm=llm,
            browser_context_config={
                "browser_args": ["--no-sandbox", "--disable-setuid-sandbox", "--disable-dev-shm-usage"]
            }
        )
        
        result = await agent.run()
        # Возвращаем финальный результат как строку
        return str(result.final_result())
        
    except Exception as e:
        return f"Произошла ошибка: {str(e)}"

# Установка браузера при старте (один раз)
try:
    asyncio.run(install_playwright())
except:
    pass

# 3. Интерфейс Gradio
demo = gr.Interface(
    fn=lambda task: asyncio.run(run_browser_agent(task)),
    inputs=[gr.Textbox(label="Задание", placeholder="Например: какая погода в Киеве?")],
    outputs=gr.Textbox(label="Результат"),
    title="Browser-Use AI (Fixed Version)"
)

if __name__ == "__main__":
    demo.launch()