mirror of
https://github.com/xtekky/gpt4free.git
synced 2025-12-06 02:30:41 -08:00
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.
This commit is contained in:
parent
554b51a511
commit
e9179b87c2
4 changed files with 20 additions and 14 deletions
|
|
@ -19,7 +19,7 @@ RUN if [ "$G4F_VERSION" = "" ] ; then \
|
||||||
RUN apt-get -qqy update \
|
RUN apt-get -qqy update \
|
||||||
&& apt-get -qqy upgrade \
|
&& apt-get -qqy upgrade \
|
||||||
&& apt-get -qyy autoremove \
|
&& apt-get -qyy autoremove \
|
||||||
&& apt-get -qqy install python3 python-is-python3 pip \
|
&& apt-get -qqy install python3 python-is-python3 pip ffmpeg flac \
|
||||||
&& apt-get -qyy remove openjdk-11-jre-headless \
|
&& apt-get -qyy remove openjdk-11-jre-headless \
|
||||||
&& apt-get -qyy autoremove \
|
&& apt-get -qyy autoremove \
|
||||||
&& apt-get -qyy clean \
|
&& apt-get -qyy clean \
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ ENV G4F_USER_ID $G4F_USER_ID
|
||||||
ENV G4F_DIR /app
|
ENV G4F_DIR /app
|
||||||
|
|
||||||
RUN apt-get update && apt-get upgrade -y \
|
RUN apt-get update && apt-get upgrade -y \
|
||||||
&& apt-get install -y git cron \
|
&& apt-get install -y git cron ffmpeg flac \
|
||||||
# Add user and user group
|
# Add user and user group
|
||||||
&& groupadd -g $G4F_USER_ID $G4F_USER \
|
&& groupadd -g $G4F_USER_ID $G4F_USER \
|
||||||
&& useradd -rm -G sudo -u $G4F_USER_ID -g $G4F_USER_ID $G4F_USER \
|
&& useradd -rm -G sudo -u $G4F_USER_ID -g $G4F_USER_ID $G4F_USER \
|
||||||
|
|
|
||||||
|
|
@ -280,12 +280,14 @@ class AnyProvider(AsyncGeneratorProvider, ProviderModelMixin):
|
||||||
) -> AsyncResult:
|
) -> AsyncResult:
|
||||||
cls.get_models(ignored=ignored)
|
cls.get_models(ignored=ignored)
|
||||||
providers = []
|
providers = []
|
||||||
|
|
||||||
if model and ":" in model:
|
if model and ":" in model:
|
||||||
providers = model.split(":")
|
provider, submodel = model.split(":", maxsplit=1)
|
||||||
model = providers.pop()
|
if hasattr(Provider, provider):
|
||||||
providers = [getattr(Provider, provider) for provider in providers]
|
provider = getattr(Provider, provider)
|
||||||
elif not model or model == cls.default_model:
|
if provider.working and provider.get_parent() not in ignored:
|
||||||
|
providers.append(provider)
|
||||||
|
model = submodel
|
||||||
|
if not model or model == cls.default_model:
|
||||||
model = ""
|
model = ""
|
||||||
has_image = False
|
has_image = False
|
||||||
has_audio = False
|
has_audio = False
|
||||||
|
|
|
||||||
|
|
@ -53,10 +53,12 @@ class IterListProvider(BaseRetryProvider):
|
||||||
|
|
||||||
for provider in self.get_providers(stream and not ignore_stream, ignored):
|
for provider in self.get_providers(stream and not ignore_stream, ignored):
|
||||||
self.last_provider = provider
|
self.last_provider = provider
|
||||||
|
alias = model
|
||||||
if not model:
|
if not model:
|
||||||
model = getattr(provider, "default_model", None)
|
alias = getattr(provider, "default_model", None)
|
||||||
alias = provider.model_aliases.get(model, model) if hasattr(provider, "model_aliases") else model
|
if hasattr(provider, "model_aliases"):
|
||||||
debug.log(f"Using {provider.__name__} provider with model {alias}")
|
alias = provider.model_aliases.get(model, model)
|
||||||
|
debug.log(f"Using provider: {provider.__name__} with model: {alias}")
|
||||||
yield ProviderInfo(**provider.get_dict(), model=alias)
|
yield ProviderInfo(**provider.get_dict(), model=alias)
|
||||||
extra_body = kwargs.copy()
|
extra_body = kwargs.copy()
|
||||||
if isinstance(api_key, dict):
|
if isinstance(api_key, dict):
|
||||||
|
|
@ -97,11 +99,13 @@ class IterListProvider(BaseRetryProvider):
|
||||||
|
|
||||||
for provider in self.get_providers(stream and not ignore_stream, ignored):
|
for provider in self.get_providers(stream and not ignore_stream, ignored):
|
||||||
self.last_provider = provider
|
self.last_provider = provider
|
||||||
|
alias = model
|
||||||
if not model:
|
if not model:
|
||||||
model = getattr(provider, "default_model", None)
|
alias = getattr(provider, "default_model", None)
|
||||||
model = provider.model_aliases.get(model, model) if hasattr(provider, "model_aliases") else model
|
if hasattr(provider, "model_aliases"):
|
||||||
debug.log(f"Using {provider.__name__} provider with model {model}")
|
alias = provider.model_aliases.get(model, model)
|
||||||
yield ProviderInfo(**provider.get_dict(), model=model)
|
debug.log(f"Using {provider.__name__} provider with model {alias}")
|
||||||
|
yield ProviderInfo(**provider.get_dict(), model=alias)
|
||||||
extra_body = kwargs.copy()
|
extra_body = kwargs.copy()
|
||||||
if isinstance(api_key, dict):
|
if isinstance(api_key, dict):
|
||||||
api_key = api_key.get(provider.get_parent())
|
api_key = api_key.get(provider.get_parent())
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue