From 09f8258fa7dd92f8b270d39ceeaf62ea25868220 Mon Sep 17 00:00:00 2001 From: hlohaus <983577+hlohaus@users.noreply.github.com> Date: Sat, 25 Jan 2025 03:56:37 +0100 Subject: Add MiniMax providers, add HailuoAI provider Add OpenaiTemplate provider Remove some webdriver providers --- g4f/Provider/selenium/Phind.py | 102 ----------------------------------------- 1 file changed, 102 deletions(-) delete mode 100644 g4f/Provider/selenium/Phind.py (limited to 'g4f/Provider/selenium/Phind.py') diff --git a/g4f/Provider/selenium/Phind.py b/g4f/Provider/selenium/Phind.py deleted file mode 100644 index d17eb27e..00000000 --- a/g4f/Provider/selenium/Phind.py +++ /dev/null @@ -1,102 +0,0 @@ -from __future__ import annotations - -import time -from urllib.parse import quote - -from ...typing import CreateResult, Messages -from ..base_provider import AbstractProvider -from ..helper import format_prompt - -class Phind(AbstractProvider): - url = "https://www.phind.com" - working = False - supports_gpt_4 = True - supports_stream = True - - @classmethod - def create_completion( - cls, - model: str, - messages: Messages, - stream: bool, - proxy: str = None, - timeout: int = 120, - webdriver = None, - creative_mode: bool = None, - **kwargs - ) -> CreateResult: - with WebDriverSession(webdriver, "", proxy=proxy) as driver: - from selenium.webdriver.common.by import By - from selenium.webdriver.support.ui import WebDriverWait - from selenium.webdriver.support import expected_conditions as EC - - # Register fetch hook - source = """ -window._fetch = window.fetch; -window.fetch = async (url, options) => { - const response = await window._fetch(url, options); - if (url != "/api/infer/answer") { - return response; - } - copy = response.clone(); - window._reader = response.body.pipeThrough(new TextDecoderStream()).getReader(); - return copy; -} -""" - driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", { - "source": source - }) - - prompt = quote(format_prompt(messages)) - driver.get(f"{cls.url}/search?q={prompt}&source=searchbox") - - # Need to change settings - wait = WebDriverWait(driver, timeout) - def open_dropdown(): - # Open settings dropdown - wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "button.text-dark.dropdown-toggle"))) - driver.find_element(By.CSS_SELECTOR, "button.text-dark.dropdown-toggle").click() - # Wait for dropdown toggle - wait.until(EC.visibility_of_element_located((By.XPATH, "//button[text()='GPT-4']"))) - if model.startswith("gpt-4") or creative_mode: - # Enable GPT-4 - if model.startswith("gpt-4"): - open_dropdown() - driver.find_element(By.XPATH, "//button[text()='GPT-4']").click() - # Enable creative mode - if creative_mode or creative_mode == None: - open_dropdown() - driver.find_element(By.ID, "Creative Mode").click() - # Submit changes - driver.find_element(By.CSS_SELECTOR, ".search-bar-input-group button[type='submit']").click() - # Wait for page reload - wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, ".search-container"))) - - while True: - chunk = driver.execute_script(""" -if(window._reader) { - chunk = await window._reader.read(); - if (chunk['done']) { - return null; - } - content = ''; - chunk['value'].split('\\r\\n').forEach((line, index) => { - if (line.startsWith('data: ')) { - line = line.substring('data: '.length); - if (!line.startsWith('')) { - if (line) content += line; - else content += '\\n'; - } - } - }); - return content.replace('\\n\\n', '\\n'); -} else { - return '' -} -""") - if chunk: - yield chunk - elif chunk != "": - break - else: - time.sleep(0.1) \ No newline at end of file -- cgit v1.2.3