From 8d5d522c4e5770386e7e222b371ab17cbb1030b1 Mon Sep 17 00:00:00 2001 From: kqlio67 <166700875+kqlio67@users.noreply.github.com> Date: Thu, 28 Nov 2024 16:50:24 +0000 Subject: feat(g4f): Major provider updates and new model support (#2437) * refactor(g4f/Provider/Airforce.py): Enhance Airforce provider with dynamic model fetching * refactor(g4f/Provider/Blackbox.py): Enhance Blackbox AI provider configuration and streamline code * feat(g4f/Provider/RobocodersAPI.py): Add RobocodersAPI new async chat provider * refactor(g4f/client/__init__.py): Improve provider handling in async_generate method * refactor(g4f/models.py): Update provider configurations for multiple models * refactor(g4f/Provider/Blackbox.py): Streamline model configuration and improve response handling * feat(g4f/Provider/DDG.py): Enhance model support and improve conversation handling * refactor(g4f/Provider/Copilot.py): Enhance Copilot provider with model support * refactor(g4f/Provider/AmigoChat.py): update models and improve code structure * chore(g4f/Provider/not_working/AIUncensored.): move AIUncensored to not_working directory * chore(g4f/Provider/not_working/Allyfy.py): remove Allyfy provider * Update (g4f/Provider/not_working/AIUncensored.py g4f/Provider/not_working/__init__.py) * refactor(g4f/Provider/ChatGptEs.py): Implement format_prompt for message handling * refactor(g4f/Provider/Blackbox.py): Update message formatting and improve code structure * refactor(g4f/Provider/LLMPlayground.py): Enhance text generation and error handling * refactor(g4f/Provider/needs_auth/PollinationsAI.py): move PollinationsAI to needs_auth directory * refactor(g4f/Provider/Liaobots.py): Update Liaobots provider models and aliases * feat(g4f/Provider/DeepInfraChat.py): Add new DeepInfra models and aliases * Update (g4f/Provider/__init__.py) * Update (g4f/models.py) * g4f/models.py * Update g4f/models.py * Update g4f/Provider/LLMPlayground.py * Update (g4f/models.py g4f/Provider/Airforce.py g4f/Provider/__init__.py g4f/Provider/LLMPlayground.py) * Update g4f/Provider/__init__.py * Update (g4f/Provider/Airforce.py) --------- Co-authored-by: kqlio67 --- g4f/Provider/PollinationsAI.py | 69 ------------------------------------------ 1 file changed, 69 deletions(-) delete mode 100644 g4f/Provider/PollinationsAI.py (limited to 'g4f/Provider/PollinationsAI.py') diff --git a/g4f/Provider/PollinationsAI.py b/g4f/Provider/PollinationsAI.py deleted file mode 100644 index e82222b1..00000000 --- a/g4f/Provider/PollinationsAI.py +++ /dev/null @@ -1,69 +0,0 @@ -from __future__ import annotations - -from urllib.parse import quote -import random -import requests -from aiohttp import ClientSession - -from ..typing import AsyncResult, Messages -from ..image import ImageResponse -from ..requests.raise_for_status import raise_for_status -from ..requests.aiohttp import get_connector -from .needs_auth.OpenaiAPI import OpenaiAPI -from .helper import format_prompt - -class PollinationsAI(OpenaiAPI): - label = "Pollinations.AI" - url = "https://pollinations.ai" - working = True - supports_stream = True - default_model = "openai" - - @classmethod - def get_models(cls): - if not cls.image_models: - url = "https://image.pollinations.ai/models" - response = requests.get(url) - raise_for_status(response) - cls.image_models = response.json() - if not cls.models: - url = "https://text.pollinations.ai/models" - response = requests.get(url) - raise_for_status(response) - cls.models = [model.get("name") for model in response.json()] - cls.models.extend(cls.image_models) - return cls.models - - @classmethod - async def create_async_generator( - cls, - model: str, - messages: Messages, - prompt: str = None, - api_base: str = "https://text.pollinations.ai/openai", - api_key: str = None, - proxy: str = None, - seed: str = None, - **kwargs - ) -> AsyncResult: - model = cls.get_model(model) - if model in cls.image_models: - if prompt is None: - prompt = messages[-1]["content"] - if seed is None: - seed = random.randint(0, 100000) - image = f"https://image.pollinations.ai/prompt/{quote(prompt)}?width=1024&height=1024&seed={int(seed)}&nofeed=true&nologo=true&model={quote(model)}" - yield ImageResponse(image, prompt) - return - if api_key is None: - async with ClientSession(connector=get_connector(proxy=proxy)) as session: - prompt = format_prompt(messages) - async with session.get(f"https://text.pollinations.ai/{quote(prompt)}?model={quote(model)}") as response: - await raise_for_status(response) - async for line in response.content.iter_any(): - yield line.decode(errors="ignore") - else: - async for chunk in super().create_async_generator( - model, messages, api_base=api_base, proxy=proxy, **kwargs - ): - yield chunk \ No newline at end of file -- cgit v1.2.3