Spaces:
Sleeping
Sleeping
| 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() |