Spaces:
Runtime error
Runtime error
Add new agents and tools for Devid and BrowsingAgent; remove obsolete ResearchAndReportAgent
670dd87 | from typing import Dict | |
| from pydantic import Field, model_validator | |
| from selenium.webdriver.common.by import By | |
| from selenium.webdriver.support.select import Select | |
| from agency_swarm.tools import BaseTool | |
| from .util import get_web_driver, set_web_driver | |
| from .util.highlights import remove_highlight_and_labels | |
| class SelectDropdown(BaseTool): | |
| """ | |
| This tool selects an option in a dropdown on the current web page based on the description of that element and which option to select. | |
| Before using this tool make sure to highlight dropdown elements on the page by outputting '[highlight dropdowns]' message. | |
| """ | |
| key_value_pairs: Dict[str, str] = Field( | |
| ..., | |
| description="A dictionary where the key is the sequence number of the dropdown element and the value is the index of the option to select.", | |
| examples=[{"1": 0, "2": 1}, {"3": 2}], | |
| ) | |
| def check_key_value_pairs(cls, data): | |
| if not data.get("key_value_pairs"): | |
| raise ValueError( | |
| "key_value_pairs is required. Example format: " | |
| "key_value_pairs={'1': 0, '2': 1}" | |
| ) | |
| return data | |
| def run(self): | |
| wd = get_web_driver() | |
| if "select" not in self._shared_state.get("elements_highlighted", ""): | |
| raise ValueError( | |
| "Please highlight dropdown elements on the page first by outputting '[highlight dropdowns]' message. You must output just the message without calling the tool first, so the user can respond with the screenshot." | |
| ) | |
| all_elements = wd.find_elements(By.CSS_SELECTOR, ".highlighted-element") | |
| try: | |
| for key, value in self.key_value_pairs.items(): | |
| key = int(key) | |
| element = all_elements[key - 1] | |
| select = Select(element) | |
| # Select the first option (index 0) | |
| select.select_by_index(int(value)) | |
| result = f"Success. Option is selected in the dropdown. To further analyze the page, output '[send screenshot]' command." | |
| except Exception as e: | |
| result = str(e) | |
| remove_highlight_and_labels(wd) | |
| set_web_driver(wd) | |
| return result | |