Spaces:
Runtime error
Runtime error
from __future__ import annotations | |
from typing import Optional, Type | |
from langchain_core.pydantic_v1 import BaseModel | |
from langchain.callbacks.manager import ( | |
AsyncCallbackManagerForToolRun, | |
CallbackManagerForToolRun, | |
) | |
from langchain.tools.playwright.base import BaseBrowserTool | |
from langchain.tools.playwright.utils import ( | |
aget_current_page, | |
get_current_page, | |
) | |
class NavigateBackTool(BaseBrowserTool): | |
"""Navigate back to the previous page in the browser history.""" | |
name: str = "previous_webpage" | |
description: str = "Navigate back to the previous page in the browser history" | |
args_schema: Type[BaseModel] = BaseModel | |
def _run(self, run_manager: Optional[CallbackManagerForToolRun] = None) -> str: | |
"""Use the tool.""" | |
if self.sync_browser is None: | |
raise ValueError(f"Synchronous browser not provided to {self.name}") | |
page = get_current_page(self.sync_browser) | |
response = page.go_back() | |
if response: | |
return ( | |
f"Navigated back to the previous page with URL '{response.url}'." | |
f" Status code {response.status}" | |
) | |
else: | |
return "Unable to navigate back; no previous page in the history" | |
async def _arun( | |
self, | |
run_manager: Optional[AsyncCallbackManagerForToolRun] = None, | |
) -> str: | |
"""Use the tool.""" | |
if self.async_browser is None: | |
raise ValueError(f"Asynchronous browser not provided to {self.name}") | |
page = await aget_current_page(self.async_browser) | |
response = await page.go_back() | |
if response: | |
return ( | |
f"Navigated back to the previous page with URL '{response.url}'." | |
f" Status code {response.status}" | |
) | |
else: | |
return "Unable to navigate back; no previous page in the history" | |