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

XFEstudio/gpt4free

Add default vision model, Add MiniMax to models.py

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

代码差异

5 个文件 +57 -36
Modified g4f/__init__.py +5 -4
@@ -33,13 +33,14 @@ class ChatCompletion:
33 33 ignore_working: bool = False,
34 34 ignore_stream: bool = False,
35 35 **kwargs) -> Union[CreateResult, str]:
36 if image is not None:
37 kwargs["images"] = [(image, image_name)]
36 38 model, provider = get_model_and_provider(
37 39 model, provider, stream,
38 40 ignore_working,
39 ignore_stream
41 ignore_stream,
42 has_images="images" in kwargs,
40 43 )
41 if image is not None:
42 kwargs["images"] = [(image, image_name)]
43 44 if "proxy" not in kwargs:
44 45 proxy = os.environ.get("G4F_PROXY")
45 46 if proxy:
@@ -61,9 +62,9 @@ class ChatCompletion:
61 62 ignore_stream: bool = False,
62 63 ignore_working: bool = False,
63 64 **kwargs) -> Union[AsyncResult, Coroutine[str]]:
64 model, provider = get_model_and_provider(model, provider, False, ignore_working)
65 65 if image is not None:
66 66 kwargs["images"] = [(image, image_name)]
67 model, provider = get_model_and_provider(model, provider, False, ignore_working, has_images="images" in kwargs)
67 68 if "proxy" not in kwargs:
68 69 proxy = os.environ.get("G4F_PROXY")
69 70 if proxy:
Modified g4f/client/__init__.py +7 -5
@@ -241,16 +241,17 @@ class Completions:
241 241 ignore_stream: Optional[bool] = False,
242 242 **kwargs
243 243 ) -> ChatCompletion:
244 if image is not None:
245 kwargs["images"] = [(image, image_name)]
244 246 model, provider = get_model_and_provider(
245 247 model,
246 248 self.provider if provider is None else provider,
247 249 stream,
248 250 ignore_working,
249 251 ignore_stream,
252 has_images="images" in kwargs
250 253 )
251 254 stop = [stop] if isinstance(stop, str) else stop
252 if image is not None:
253 kwargs["images"] = [(image, image_name)]
254 255 if ignore_stream:
255 256 kwargs["ignore_stream"] = True
256 257
@@ -526,16 +527,17 @@ class AsyncCompletions:
526 527 ignore_stream: Optional[bool] = False,
527 528 **kwargs
528 529 ) -> Awaitable[ChatCompletion]:
530 if image is not None:
531 kwargs["images"] = [(image, image_name)]
529 532 model, provider = get_model_and_provider(
530 533 model,
531 534 self.provider if provider is None else provider,
532 535 stream,
533 536 ignore_working,
534 ignore_stream,
537 ignore_stream,,
538 has_images="images" in kwargs
535 539 )
536 540 stop = [stop] if isinstance(stop, str) else stop
537 if image is not None:
538 kwargs["images"] = [(image, image_name)]
539 541 if ignore_stream:
540 542 kwargs["ignore_stream"] = True
541 543
Modified g4f/client/service.py +9 -4
@@ -4,7 +4,7 @@ from typing import Union
4 4
5 5 from .. import debug, version
6 6 from ..errors import ProviderNotFoundError, ModelNotFoundError, ProviderNotWorkingError, StreamNotSupportedError
7 from ..models import Model, ModelUtils, default
7 from ..models import Model, ModelUtils, default, default_vision
8 8 from ..Provider import ProviderUtils
9 9 from ..providers.types import BaseRetryProvider, ProviderType
10 10 from ..providers.retry_provider import IterListProvider
@@ -26,7 +26,8 @@ def get_model_and_provider(model : Union[Model, str],
26 26 stream : bool,
27 27 ignore_working: bool = False,
28 28 ignore_stream: bool = False,
29 logging: bool = True) -> tuple[str, ProviderType]:
29 logging: bool = True,
30 has_images: bool = False) -> tuple[str, ProviderType]:
30 31 """
31 32 Retrieves the model and provider based on input parameters.
32 33
@@ -60,8 +61,12 @@ def get_model_and_provider(model : Union[Model, str],
60 61
61 62 if not provider:
62 63 if not model:
63 model = default
64 provider = model.best_provider
64 if has_images:
65 model = default_vision
66 provider = default_vision.best_provider
67 else:
68 model = default
69 provider = model.best_provider
65 70 elif isinstance(model, str):
66 71 if model in ProviderUtils.convert:
67 72 provider = ProviderUtils.convert[model]
Modified g4f/gui/server/api.py +2 -1
@@ -147,7 +147,8 @@ class Api:
147 147 kwargs.get("model"), provider,
148 148 stream=True,
149 149 ignore_stream=True,
150 logging=False
150 logging=False,
151 has_images="images" in kwargs,
151 152 )
152 153 except Exception as e:
153 154 logger.exception(e)
Modified g4f/models.py +34 -22
@@ -37,8 +37,10 @@ from .Provider import (
37 37 Gemini,
38 38 GeminiPro,
39 39 GigaChat,
40 HailuoAI,
40 41 HuggingChat,
41 42 HuggingFace,
43 HuggingFaceAPI,
42 44 MetaAI,
43 45 MicrosoftDesigner,
44 46 OpenaiAccount,
@@ -70,7 +72,7 @@ class ImageModel(Model):
70 72
71 73 ### Default ###
72 74 default = Model(
73 name = "",
75 name = "",
74 76 base_provider = "",
75 77 best_provider = IterListProvider([
76 78 DDG,
@@ -90,6 +92,21 @@ default = Model(
90 92 ])
91 93 )
92 94
95 default_vision = Model(
96 name = "",
97 base_provider = "",
98 best_provider = IterListProvider([
99 Blackbox,
100 PollinationsAI,
101 HuggingSpace,
102 GeminiPro,
103 HuggingFaceAPI,
104 CopilotAccount,
105 OpenaiAccount,
106 Gemini,
107 ], shuffle=False)
108 )
109
93 110 ############
94 111 ### Text ###
95 112 ############
@@ -523,6 +540,13 @@ glm_4 = Model(
523 540 best_provider = ChatGLM
524 541 )
525 542
543 ### MiniMax
544 mini_max = Model(
545 name = "MiniMax",
546 base_provider = "MiniMax",
547 best_provider = HailuoAI
548 )
549
526 550 ### Uncensored AI ###
527 551 evil = Model(
528 552 name = 'evil',
@@ -570,7 +594,7 @@ sd_3_5 = ImageModel(
570 594 flux = ImageModel(
571 595 name = 'flux',
572 596 base_provider = 'Flux AI',
573 best_provider = IterListProvider([Blackbox, PollinationsAI])
597 best_provider = IterListProvider([Blackbox, PollinationsAI, HuggingSpace])
574 598 )
575 599
576 600 flux_dev = ImageModel(
@@ -742,26 +766,14 @@ class ModelUtils:
742 766 deepseek_chat.name: deepseek_chat,
743 767 deepseek_r1.name: deepseek_r1,
744 768
745 ### Nvidia ###
746 nemotron_70b.name: nemotron_70b,
747
748 ### Liquid ###
749 lfm_40b.name: lfm_40b,
750
751 ### Databricks ###
752 dbrx_instruct.name: dbrx_instruct,
753
754 ### PollinationsAI ###
755 p1.name: p1,
756
757 ### CablyAI ###
758 cably_80b.name: cably_80b,
759
760 ### THUDM ###
761 glm_4.name: glm_4,
762
763 ### Uncensored AI ###
764 evil.name: evil,
769 nemotron_70b.name: nemotron_70b, ### Nvidia ###
770 lfm_40b.name: lfm_40b, ### Liquid ###
771 dbrx_instruct.name: dbrx_instruct, ### Databricks ###
772 p1.name: p1, ### PollinationsAI ###
773 cably_80b.name: cably_80b, ### CablyAI ###
774 glm_4.name: glm_4, ### THUDM ###
775 mini_max.name: mini_max, ## MiniMax
776 evil.name: evil, ### Uncensored AI ###
765 777
766 778 ### Other ###
767 779 midijourney.name: midijourney,