Added code to ignore certain providers in the API

This commit is contained in:
razrab 2023-10-22 12:45:18 +03:00
parent f125f714fb
commit ecad7a4ac8
3 changed files with 35 additions and 0 deletions

12
g4f_api/ApiInterface.py Normal file
View File

@ -0,0 +1,12 @@
import g4f
from g4f.api import Api
create_chat_completion_original = g4f.ChatCompletion.create
list_ignored_providers=[]
def create_chat_completion(*args, **kwargs):
kwargs['ignored']=list_ignored_providers
return create_chat_completion_original(*args, **kwargs)
g4f.ChatCompletion.create=create_chat_completion
api=Api(g4f, debug=False)

0
g4f_api/__init__.py Normal file
View File

23
g4f_api/__main__.py Normal file
View File

@ -0,0 +1,23 @@
import typing
from enum import Enum
from g4f import Provider
from g4f_api import ApiInterface
import typer
IgnoredProviders = Enum("ignore_providers", {key:key for key in Provider.__all__})
app = typer.Typer(help="Run the G4F API")
@app.command()
def main(
bind_str: str = typer.Argument(..., envvar="G4F_API_BIND_STR", help="The bind string."),
i_num_threads: int = typer.Option(1, envvar="G4F_API_NUM_THREADS", help="The number of threads."),
list_ignored_providers: typing.List[IgnoredProviders] = typer.Option([], envvar="G4F_API_LIST_IGNORED_PROVIDERS", help="List of providers to ignore when processing request."),
):
list_ignored_providers=[provider.name for provider in list_ignored_providers]
ApiInterface.list_ignored_providers=list_ignored_providers
ApiInterface.api.run(bind_str, i_num_threads)
if __name__ == "__main__":
app()