XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet
公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/gpt4free

Refactor PollinationsAI: update image API endpoint, clean up default headers, and enhance error handling

189a9266
hlohaus <983577+hlohaus@users.noreply.github.com>
提交于

代码差异

1 个文件 +7 -11
Modified g4f/Provider/PollinationsAI.py +7 -11
@@ -16,23 +16,17 @@ from .base_provider import AsyncGeneratorProvider, ProviderModelMixin
16 16 from ..typing import AsyncResult, Messages, MediaListType
17 17 from ..image import is_data_an_audio
18 18 from ..errors import MissingAuthError
19 from ..requests.defaults import DEFAULT_HEADERS
19 20 from ..requests.raise_for_status import raise_for_status
20 21 from ..requests.aiohttp import get_connector
21 22 from ..image import use_aspect_ratio
22 from ..providers.response import ImageResponse, Reasoning, VideoResponse, JsonRequest
23 from ..providers.response import ImageResponse, Reasoning, VideoResponse, JsonRequest, PreviewResponse
23 24 from ..tools.media import render_messages
24 25 from ..tools.run_tools import AuthManager
25 26 from ..cookies import get_cookies_dir
26 27 from .template.OpenaiTemplate import read_response
27 28 from .. import debug
28 29
29 DEFAULT_HEADERS = {
30 "accept": "*/*",
31 'accept-language': 'en-US,en;q=0.9',
32 "user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36",
33 "origin": "https://pollinations.ai",
34 }
35
36 30 class PollinationsAI(AsyncGeneratorProvider, ProviderModelMixin):
37 31 label = "Pollinations AI 🌸"
38 32 url = "https://pollinations.ai"
@@ -44,7 +38,7 @@ class PollinationsAI(AsyncGeneratorProvider, ProviderModelMixin):
44 38
45 39 # API endpoints
46 40 text_api_endpoint = "https://g4f.dev/api/pollinations/chat/completions"
47 image_api_endpoint = "https://g4f.dev/prompt/{}"
41 image_api_endpoint = "https://image.pollinations.ai/prompt/{}"
48 42 gen_image_api_endpoint = "https://gen.pollinations.ai/image/{}"
49 43 gen_text_api_endpoint = "https://gen.pollinations.ai/v1/chat/completions"
50 44 image_models_endpoint = "https://gen.pollinations.ai/image/models"
@@ -340,7 +334,7 @@ class PollinationsAI(AsyncGeneratorProvider, ProviderModelMixin):
340 334 **params
341 335 }, "1:1" if aspect_ratio is None else aspect_ratio)
342 336 query = "&".join(f"{k}={quote(str(v))}" for k, v in params.items() if v is not None)
343 encoded_prompt = prompt.strip(". \n")
337 encoded_prompt = prompt.strip(". \n?")
344 338 if model == "gptimage" and aspect_ratio is not None:
345 339 encoded_prompt = f"{encoded_prompt} aspect-ratio: {aspect_ratio}"
346 340 encoded_prompt = quote_plus(encoded_prompt)[:4096 - len(cls.image_api_endpoint) - len(query) - 8].rstrip("%")
@@ -379,7 +373,9 @@ class PollinationsAI(AsyncGeneratorProvider, ProviderModelMixin):
379 373 except Exception as e:
380 374 responses.add(e)
381 375 debug.error(f"Error fetching image:", e)
382 if response.headers.get('content-type', '').startswith("image/"):
376 if response.headers.get("x-error-type"):
377 responses.add(PreviewResponse(ImageResponse(str(response.url), prompt)))
378 elif response.headers.get('content-type', '').startswith("image/"):
383 379 responses.add(ImageResponse(str(response.url), prompt, {"headers": headers}))
384 380 elif response.headers.get('content-type', '').startswith("video/"):
385 381 responses.add(VideoResponse(str(response.url), prompt, {"headers": headers}))