返回提交历史
Modified
docker/Dockerfile
+1
-1
Modified
docker/Dockerfile-slim
+1
-1
Modified
g4f/providers/any_provider.py
+7
-5
Modified
g4f/providers/retry_provider.py
+11
-7
XFEstudio/gpt4free
feat: add ffmpeg and flac installation to Dockerfiles
- Updated `Dockerfile` to install `ffmpeg` and `flac` along with existing packages. - Updated `Dockerfile-slim` to install `ffmpeg` and `flac` along with existing packages. - Modified `any_provider.py` to change how providers are handled when a model is specified, allowing for a submodel to be extracted and checked against the provider's attributes. - Adjusted `retry_provider.py` to ensure the alias for the model is correctly set based on the provider's model aliases, improving clarity in debug logging.
e9179b87
代码差异
4 个文件
+20
-14
@@ -19,7 +19,7 @@ RUN if [ "$G4F_VERSION" = "" ] ; then \
19
19
RUN apt-get -qqy update \
20
20
&& apt-get -qqy upgrade \
21
21
&& apt-get -qyy autoremove \
22
&& apt-get -qqy install python3 python-is-python3 pip \
22
&& apt-get -qqy install python3 python-is-python3 pip ffmpeg flac \
23
23
&& apt-get -qyy remove openjdk-11-jre-headless \
24
24
&& apt-get -qyy autoremove \
25
25
&& apt-get -qyy clean \
@@ -12,7 +12,7 @@ ENV G4F_USER_ID $G4F_USER_ID
12
12
ENV G4F_DIR /app
13
13
14
14
RUN apt-get update && apt-get upgrade -y \
15
&& apt-get install -y git cron \
15
&& apt-get install -y git cron ffmpeg flac \
16
16
# Add user and user group
17
17
&& groupadd -g $G4F_USER_ID $G4F_USER \
18
18
&& useradd -rm -G sudo -u $G4F_USER_ID -g $G4F_USER_ID $G4F_USER \
@@ -280,12 +280,14 @@ class AnyProvider(AsyncGeneratorProvider, ProviderModelMixin):
280
280
) -> AsyncResult:
281
281
cls.get_models(ignored=ignored)
282
282
providers = []
283
284
283
if model and ":" in model:
285
providers = model.split(":")
286
model = providers.pop()
287
providers = [getattr(Provider, provider) for provider in providers]
288
elif not model or model == cls.default_model:
284
provider, submodel = model.split(":", maxsplit=1)
285
if hasattr(Provider, provider):
286
provider = getattr(Provider, provider)
287
if provider.working and provider.get_parent() not in ignored:
288
providers.append(provider)
289
model = submodel
290
if not model or model == cls.default_model:
289
291
model = ""
290
292
has_image = False
291
293
has_audio = False
@@ -53,10 +53,12 @@ class IterListProvider(BaseRetryProvider):
53
53
54
54
for provider in self.get_providers(stream and not ignore_stream, ignored):
55
55
self.last_provider = provider
56
alias = model
56
57
if not model:
57
model = getattr(provider, "default_model", None)
58
alias = provider.model_aliases.get(model, model) if hasattr(provider, "model_aliases") else model
59
debug.log(f"Using {provider.__name__} provider with model {alias}")
58
alias = getattr(provider, "default_model", None)
59
if hasattr(provider, "model_aliases"):
60
alias = provider.model_aliases.get(model, model)
61
debug.log(f"Using provider: {provider.__name__} with model: {alias}")
60
62
yield ProviderInfo(**provider.get_dict(), model=alias)
61
63
extra_body = kwargs.copy()
62
64
if isinstance(api_key, dict):
@@ -97,11 +99,13 @@ class IterListProvider(BaseRetryProvider):
97
99
98
100
for provider in self.get_providers(stream and not ignore_stream, ignored):
99
101
self.last_provider = provider
102
alias = model
100
103
if not model:
101
model = getattr(provider, "default_model", None)
102
model = provider.model_aliases.get(model, model) if hasattr(provider, "model_aliases") else model
103
debug.log(f"Using {provider.__name__} provider with model {model}")
104
yield ProviderInfo(**provider.get_dict(), model=model)
104
alias = getattr(provider, "default_model", None)
105
if hasattr(provider, "model_aliases"):
106
alias = provider.model_aliases.get(model, model)
107
debug.log(f"Using {provider.__name__} provider with model {alias}")
108
yield ProviderInfo(**provider.get_dict(), model=alias)
105
109
extra_body = kwargs.copy()
106
110
if isinstance(api_key, dict):
107
111
api_key = api_key.get(provider.get_parent())