af / app.py
morikotikk's picture
Update app.py
da1e01a verified
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()