""" Browser Use Custom Component для Langflow """ import os from typing import Dict, Any from lfx.custom import Component from lfx.io import SecretStrInput, StrInput from lfx.template import Output class BrowserUseComponent(Component): """Browser Use компонент с browserless + OpenRouter""" display_name = "Browser Use" description = "browser-use с browserless + OpenRouter" icon = "Globe" inputs = [ SecretStrInput( name="browserless_url", display_name="Browserless URL", value=os.getenv("BROWSERLESS_API_URL", "http://browserless.home"), required=True, ), StrInput( name="task", display_name="Задача", required=True, placeholder="Например: найди информацию о...", ), StrInput( name="model", display_name="OpenRouter Модель", value="arcee-ai/trinity-large-preview:free", advanced=True, ), ] outputs = [ Output(name="result", display_name="Результат", method="run_browser"), ] def run_browser(self) -> str: """Запускает browser-use агент""" try: from browser_use import Agent, Browser from langchain_openai import ChatOpenAI browserless_url = self.browserless_url or "http://browserless.home" cdp_url = browserless_url.replace("http://", "ws://").replace("https://", "wss://") cdp_url = f"{cdp_url}/playwright" browser = Browser(cdp_url=cdp_url, headless=True) api_key = os.getenv("OPENROUTER_API_KEY", "") llm = ChatOpenAI( model=self.model, api_key=api_key, base_url="https://openrouter.ai/api/v1", default_headers={ "HTTP-Referer": "http://langflow.home", "X-Title": "Langflow", }, ) agent = Agent(task=self.task, llm=llm, browser=browser) result = agent.run() return str(result) except ImportError as e: return f"Ошибка импорта: {e}. Установите browser-use" except Exception as e: return f"Ошибка: {e}"