mirror of
https://github.com/xtekky/gpt4free.git
synced 2025-12-06 02:30:41 -08:00
refactor: streamline image param handling and fix media URL extraction
- Removed extension of `vision_models` into `text_models` in `PollinationsAI.get_models` - Unified image parameter handling in `PollinationsAI.create_payload`, removing special case for `"gptimage"` model - Added conditional inclusion of `"transparent"` and `"image"` params based on `transparent` flag and media content - Replaced `quote_plus` with `quote` for URL encoding in query string construction - In `OpenaiTemplate.create_payload`, wrapped media URL extraction in `iter()` to fix `next()` usage with list comprehension
This commit is contained in:
parent
571a2ac37b
commit
dc9f1156ec
2 changed files with 9 additions and 16 deletions
|
|
@ -5,7 +5,7 @@ import json
|
|||
import random
|
||||
import requests
|
||||
import asyncio
|
||||
from urllib.parse import quote_plus
|
||||
from urllib.parse import quote, quote_plus
|
||||
from typing import Optional
|
||||
from aiohttp import ClientSession, ClientTimeout
|
||||
|
||||
|
|
@ -180,9 +180,6 @@ class PollinationsAI(AsyncGeneratorProvider, ProviderModelMixin):
|
|||
# Create a set of unique text models starting with default model
|
||||
text_models = cls.text_models.copy()
|
||||
|
||||
# Add models from vision_models
|
||||
text_models.extend(cls.vision_models)
|
||||
|
||||
# Add models from the API response
|
||||
for model in models:
|
||||
model_name = model.get("name")
|
||||
|
|
@ -355,22 +352,18 @@ class PollinationsAI(AsyncGeneratorProvider, ProviderModelMixin):
|
|||
"enhance": str(enhance).lower(),
|
||||
"safe": str(safe).lower(),
|
||||
}
|
||||
if model == "gptimage":
|
||||
n = 1
|
||||
# Only remote images are supported
|
||||
image = [item[0] for item in media if isinstance(item[0], str) and item[0].startswith("http")] if media else []
|
||||
params = {
|
||||
**params,
|
||||
"transparent": str(transparent).lower(),
|
||||
"image": ",".join(image) if image else "",
|
||||
}
|
||||
else:
|
||||
if transparent:
|
||||
params["transparent"] = "true"
|
||||
image = [data for data, _ in media if isinstance(data, str) and data.startswith("http")] if media else []
|
||||
if image:
|
||||
params["image"] = ",".join(image)
|
||||
if model != "gptimage":
|
||||
params = use_aspect_ratio({
|
||||
"width": width,
|
||||
"height": height,
|
||||
**params
|
||||
}, "1:1" if aspect_ratio is None else aspect_ratio)
|
||||
query = "&".join(f"{k}={quote_plus(str(v))}" for k, v in params.items() if v is not None)
|
||||
query = "&".join(f"{k}={quote(str(v))}" for k, v in params.items() if v is not None)
|
||||
encoded_prompt = prompt.strip(". \n")
|
||||
if model == "gptimage" and aspect_ratio is not None:
|
||||
encoded_prompt = f"{encoded_prompt} aspect-ratio: {aspect_ratio}"
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@ class OpenaiTemplate(AsyncGeneratorProvider, ProviderModelMixin, RaiseErrorMixin
|
|||
}
|
||||
# Handle media if provided
|
||||
if media is not None:
|
||||
data["image_url"] = next([data for data, _ in media if data and isinstance(data, str) and data.startswith("http://") or data.startswith("https://")], None)
|
||||
data["image_url"] = next(iter([data for data, _ in media if data and isinstance(data, str) and data.startswith("http://") or data.startswith("https://")]), None)
|
||||
async with session.post(f"{api_base.rstrip('/')}/images/generations", json=data, ssl=cls.ssl) as response:
|
||||
data = await response.json()
|
||||
cls.raise_error(data, response.status)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue