返回提交历史
Modified
g4f/api/__init__.py
+11
-3
Modified
g4f/cli.py
+13
-2
Deleted
g4f_api/ApiInterface.py
+0
-12
Deleted
g4f_api/__init__.py
+0
-0
Deleted
g4f_api/__main__.py
+0
-23
XFEstudio/gpt4free
Refactor API initialization to accept a list of ignored providers.
36fe869a
代码差异
5 个文件
+24
-40
@@ -1,4 +1,9 @@
1
import g4f; g4f.logging = True
1
import typing
2
3
import g4f;
4
from .. import BaseProvider
5
6
g4f.logging = True
2
7
import time
3
8
import json
4
9
import random
@@ -26,10 +31,12 @@ class Api:
26
31
__default_ip = '127.0.0.1'
27
32
__default_port = 1337
28
33
29
def __init__(self, engine: g4f, debug: bool = True, sentry: bool = False) -> None:
34
def __init__(self, engine: g4f, debug: bool = True, sentry: bool = False,
35
list_ignored_providers:typing.List[typing.Union[str, BaseProvider]]=None) -> None:
30
36
self.engine = engine
31
37
self.debug = debug
32
38
self.sentry = sentry
39
self.list_ignored_providers = list_ignored_providers
33
40
self.log_level = logging.DEBUG if debug else logging.WARN
34
41
35
42
hook_logging(level=self.log_level, format='[%(asctime)s] %(levelname)s in %(module)s: %(message)s')
@@ -102,7 +109,8 @@ class Api:
102
109
logger.info(f'model: {model}, stream: {stream}, request: {messages[-1]["content"]}')
103
110
104
111
response = self.engine.ChatCompletion.create(model=model,
105
stream=stream, messages=messages)
112
stream=stream, messages=messages,
113
ignored=self.list_ignored_providers)
106
114
107
115
completion_id = ''.join(random.choices(string.ascii_letters + string.digits, k=28))
108
116
completion_timestamp = int(time.time())
@@ -1,5 +1,8 @@
1
1
import argparse
2
from enum import Enum
3
2
4
import g4f
5
from g4f import Provider
3
6
4
7
from g4f.api import Api
5
8
from g4f.gui.run import gui_parser, run_gui_args
@@ -10,14 +13,22 @@ def run_gui(args):
10
13
11
14
12
15
def main():
16
IgnoredProviders = Enum("ignore_providers", {key: key for key in Provider.__all__})
13
17
parser = argparse.ArgumentParser(description="Run gpt4free")
14
18
subparsers = parser.add_subparsers(dest="mode", help="Mode to run the g4f in.")
15
subparsers.add_parser("api")
19
api_parser=subparsers.add_parser("api")
20
api_parser.add_argument("--bind", default="127.0.0.1:1337", help="The bind string.")
21
api_parser.add_argument("--debug", type=bool, default=False, help="Enable verbose logging")
22
api_parser.add_argument("--num-threads", type=int, default=8, help="The number of threads.")
23
api_parser.add_argument("--ignored-providers", nargs="+", choices=[provider.name for provider in IgnoredProviders],
24
default=[], help="List of providers to ignore when processing request.")
16
25
subparsers.add_parser("gui", parents=[gui_parser()], add_help=False)
17
26
18
27
args = parser.parse_args()
19
28
if args.mode == "api":
20
Api(g4f).run('127.0.0.1:1337', 8)
29
controller=Api(g4f, debug=args.debug)
30
controller.list_ignored_providers=args.ignored_providers
31
controller.run(args.bind, args.num_threads)
21
32
elif args.mode == "gui":
22
33
run_gui_args(args)
23
34
else:
@@ -1,12 +0,0 @@
1
import g4f
2
from g4f.api import Api
3
4
create_chat_completion_original = g4f.ChatCompletion.create
5
list_ignored_providers=[]
6
7
def create_chat_completion(*args, **kwargs):
8
kwargs['ignored']=list_ignored_providers
9
return create_chat_completion_original(*args, **kwargs)
10
11
g4f.ChatCompletion.create=create_chat_completion
12
api=Api(g4f, debug=False)
此文件没有可显示的逐行差异。
@@ -1,23 +0,0 @@
1
import typing
2
from enum import Enum
3
from g4f import Provider
4
from g4f_api import ApiInterface
5
import typer
6
7
IgnoredProviders = Enum("ignore_providers", {key:key for key in Provider.__all__})
8
9
app = typer.Typer(help="Run the G4F API")
10
11
@app.command()
12
def main(
13
bind_str: str = typer.Argument(..., envvar="G4F_API_BIND_STR", help="The bind string."),
14
i_num_threads: int = typer.Option(1, envvar="G4F_API_NUM_THREADS", help="The number of threads."),
15
list_ignored_providers: typing.List[IgnoredProviders] = typer.Option([], envvar="G4F_API_LIST_IGNORED_PROVIDERS", help="List of providers to ignore when processing request."),
16
):
17
list_ignored_providers=[provider.name for provider in list_ignored_providers]
18
ApiInterface.list_ignored_providers=list_ignored_providers
19
ApiInterface.api.run(bind_str, i_num_threads)
20
21
22
if __name__ == "__main__":
23
app()