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

XFEstudio/gpt4free

Add image upload to api

fb831bcc
Heiner Lohaus <hlohaus@users.noreply.github.com>
提交于

代码差异

1 个文件 +11 -2
Modified g4f/api/__init__.py +11 -2
@@ -39,7 +39,7 @@ import g4f.debug
39 39 from g4f.client import AsyncClient, ChatCompletion, ImagesResponse, convert_to_provider
40 40 from g4f.providers.response import BaseConversation
41 41 from g4f.client.helper import filter_none
42 from g4f.image import is_accepted_format, images_dir
42 from g4f.image import is_accepted_format, is_data_uri_an_image, images_dir
43 43 from g4f.typing import Messages
44 44 from g4f.errors import ProviderNotFoundError, ModelNotFoundError, MissingAuthError
45 45 from g4f.cookies import read_cookie_files, get_cookies_dir
@@ -93,6 +93,8 @@ class ChatCompletionsConfig(BaseModel):
93 93 model: str = Field(default="")
94 94 provider: Optional[str] = None
95 95 stream: bool = False
96 image: Optional[str] = None
97 image_name: Optional[str] = None
96 98 temperature: Optional[float] = None
97 99 max_tokens: Optional[int] = None
98 100 stop: Union[list[str], str, None] = None
@@ -263,6 +265,7 @@ class Api:
263 265 HTTP_200_OK: {"model": ChatCompletion},
264 266 HTTP_401_UNAUTHORIZED: {"model": ErrorResponseModel},
265 267 HTTP_404_NOT_FOUND: {"model": ErrorResponseModel},
268 HTTP_422_UNPROCESSABLE_ENTITY: {"model": ErrorResponseModel},
266 269 HTTP_500_INTERNAL_SERVER_ERROR: {"model": ErrorResponseModel},
267 270 })
268 271 async def chat_completions(
@@ -284,6 +287,12 @@ class Api:
284 287 if config.provider in self.conversations[config.conversation_id]:
285 288 conversation = self.conversations[config.conversation_id][config.provider]
286 289
290 if config.image is not None:
291 try:
292 is_data_uri_an_image(config.image)
293 except ValueError as e:
294 return ErrorResponse.from_message(f"The image you send must be a data URI. Example: data:image/webp;base64,...", status_code=HTTP_422_UNPROCESSABLE_ENTITY)
295
287 296 # Create the completion response
288 297 response = self.client.chat.completions.create(
289 298 **filter_none(
@@ -291,7 +300,7 @@ class Api:
291 300 "model": AppConfig.model,
292 301 "provider": AppConfig.provider,
293 302 "proxy": AppConfig.proxy,
294 **config.dict(exclude_none=True),
303 **config.model_dump(exclude_none=True),
295 304 **{
296 305 "conversation_id": None,
297 306 "return_conversation": return_conversation,