diff options
-rw-r--r-- | g4f_api/ApiInterface.py | 12 | ||||
-rw-r--r-- | g4f_api/__init__.py | 0 | ||||
-rw-r--r-- | g4f_api/__main__.py | 23 |
3 files changed, 35 insertions, 0 deletions
diff --git a/g4f_api/ApiInterface.py b/g4f_api/ApiInterface.py new file mode 100644 index 00000000..f6572912 --- /dev/null +++ b/g4f_api/ApiInterface.py @@ -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) diff --git a/g4f_api/__init__.py b/g4f_api/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/g4f_api/__init__.py diff --git a/g4f_api/__main__.py b/g4f_api/__main__.py new file mode 100644 index 00000000..58267686 --- /dev/null +++ b/g4f_api/__main__.py @@ -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()
\ No newline at end of file |