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