返回提交历史
Modified
g4f/Provider/create_images.py
+1
-1
Modified
g4f/Provider/needs_auth/Gemini.py
+3
-1
Modified
g4f/image.py
+4
-3
XFEstudio/gpt4free
Improve preview in image generation of Gemini Fix issue in Bing Image Decorator
9aeae65b
代码差异
3 个文件
+8
-5
@@ -87,7 +87,7 @@ class CreateImagesProvider(BaseProvider):
87
87
messages.insert(0, {"role": "system", "content": self.system_message})
88
88
buffer = ""
89
89
for chunk in self.provider.create_completion(model, messages, stream, **kwargs):
90
if buffer or "<" in chunk:
90
if isinstance(chunk, str) and buffer or "<" in chunk:
91
91
buffer += chunk
92
92
if ">" in buffer:
93
93
match = re.search(r'<img data-prompt="(.*?)">', buffer)
@@ -142,13 +142,15 @@ class Gemini(AsyncGeneratorProvider):
142
142
if image_prompt:
143
143
images = [image[0][3][3] for image in response_part[4][0][12][7][0]]
144
144
resolved_images = []
145
preview = []
145
146
for image in images:
146
147
async with session.get(image, allow_redirects=False) as fetch:
147
148
image = fetch.headers["location"]
148
149
async with session.get(image, allow_redirects=False) as fetch:
149
150
image = fetch.headers["location"]
150
151
resolved_images.append(image)
151
yield ImageResponse(resolved_images, image_prompt, {"orginal_links": images})
152
preview.append(image.replace('=s512', '=s200'))
153
yield ImageResponse(resolved_images, image_prompt, {"orginal_links": images, "preview": preview})
152
154
153
155
def build_request(
154
156
prompt: str,
@@ -187,7 +187,7 @@ def to_base64_jpg(image: Image, compression_rate: float) -> str:
187
187
image.save(output_buffer, format="JPEG", quality=int(compression_rate * 100))
188
188
return base64.b64encode(output_buffer.getvalue()).decode()
189
189
190
def format_images_markdown(images, alt: str, preview: str = None) -> str:
190
def format_images_markdown(images: Union[str, list], alt: str, preview: Union[str, list] = None) -> str:
191
191
"""
192
192
Formats the given images as a markdown string.
193
193
@@ -202,9 +202,10 @@ def format_images_markdown(images, alt: str, preview: str = None) -> str:
202
202
if isinstance(images, str):
203
203
images = f"[ if preview else images})]({images})"
204
204
else:
205
if not isinstance(preview, list):
206
preview = [preview.replace('{image}', image) if preview else image for image in images]
205
207
images = [
206
f"[ if preview else image})]({image})"
207
for idx, image in enumerate(images)
208
f"[]({image})" for idx, image in enumerate(images)
208
209
]
209
210
images = "\n".join(images)
210
211
start_flag = "<!-- generated images start -->\n"