26
26
import PIL .Image
27
27
import numpy as np
28
28
import psutil
29
- from g4f .gui .server .api import Api
29
+ from g4f import ProviderType
30
+ from g4f .providers .base_provider import ProviderModelMixin
30
31
31
32
from pyqt_openai .widgets .scrollableErrorDialog import ScrollableErrorDialog
32
33
@@ -796,13 +797,32 @@ def get_g4f_image_models() -> list:
796
797
models = [model ["image_model" ] for model in image_models ]
797
798
return models
798
799
799
-
800
800
def get_g4f_image_providers (including_auto = False ) -> list :
801
801
"""
802
802
Get all the providers that support image generation
803
803
(Even though this is not a perfect way to get the providers that support image generation)
804
+ (So i have to bring get_providers function directly from g4f library)
804
805
"""
805
- providers = Api .get_providers ()
806
+
807
+ def get_providers ():
808
+ """
809
+ The function get from g4f/gui/server/api.py
810
+ """
811
+ return {
812
+ provider .__name__ : (provider .label
813
+ if hasattr (provider , "label" )
814
+ else provider .__name__ ) +
815
+ (" (WebDriver)"
816
+ if "webdriver" in provider .get_parameters ()
817
+ else "" ) +
818
+ (" (Auth)"
819
+ if provider .needs_auth
820
+ else "" )
821
+ for provider in __providers__
822
+ if provider .working
823
+ }
824
+
825
+ providers = get_providers ()
806
826
if including_auto :
807
827
providers = [G4F_PROVIDER_DEFAULT ] + [provider for provider in providers ]
808
828
return providers
@@ -812,10 +832,28 @@ def get_g4f_image_models_from_provider(provider) -> list:
812
832
"""
813
833
Get all the models that support image generation for a specific provider
814
834
(Again, this is not a perfect way to get the models that support image generation)
835
+ (So i have to bring get_provider_models function directly from g4f library)
815
836
"""
816
837
if provider == G4F_PROVIDER_DEFAULT :
817
838
return get_g4f_image_models ()
818
- return [model ["model" ] for model in Api .get_provider_models (provider )]
839
+
840
+ def get_provider_models (provider : str ) -> list [dict ]:
841
+ """
842
+ From g4f/gui/server/api.py
843
+ """
844
+ if provider in __map__ :
845
+ provider : ProviderType = __map__ [provider ]
846
+ if issubclass (provider , ProviderModelMixin ):
847
+ return [{"model" : model , "default" : model == provider .default_model } for model in provider .get_models ()]
848
+ elif provider .supports_gpt_35_turbo or provider .supports_gpt_4 :
849
+ return [
850
+ * ([{"model" : "gpt-4" , "default" : not provider .supports_gpt_4 }] if provider .supports_gpt_4 else []),
851
+ * ([{"model" : "gpt-3.5-turbo" ,
852
+ "default" : not provider .supports_gpt_4 }] if provider .supports_gpt_35_turbo else [])
853
+ ]
854
+ else :
855
+ return []
856
+ return [model ["model" ] for model in get_provider_models (provider )]
819
857
820
858
821
859
def get_g4f_argument (model , messages , cur_text , stream ):
0 commit comments