mirror of
https://github.com/xtekky/gpt4free.git
synced 2024-11-22 15:05:57 +03:00
Improve cli argparser, Improve curl_cffi websocket support
This commit is contained in:
parent
a129c3db44
commit
fdc8b88d17
22
g4f/cli.py
22
g4f/cli.py
@ -1,32 +1,32 @@
|
||||
import argparse
|
||||
from enum import Enum
|
||||
|
||||
import g4f
|
||||
from g4f import Provider
|
||||
|
||||
from g4f.gui.run import gui_parser, run_gui_args
|
||||
|
||||
def run_gui(args):
|
||||
print("Running GUI...")
|
||||
|
||||
def main():
|
||||
IgnoredProviders = Enum("ignore_providers", {key: key for key in Provider.__all__})
|
||||
parser = argparse.ArgumentParser(description="Run gpt4free")
|
||||
subparsers = parser.add_subparsers(dest="mode", help="Mode to run the g4f in.")
|
||||
api_parser=subparsers.add_parser("api")
|
||||
api_parser = subparsers.add_parser("api")
|
||||
api_parser.add_argument("--bind", default="0.0.0.0:1337", help="The bind string.")
|
||||
api_parser.add_argument("--debug", action="store_true", help="Enable verbose logging.")
|
||||
api_parser.add_argument("--workers", type=int, default=None, help="Number of workers.")
|
||||
api_parser.add_argument("--disable_colors", action="store_true", help="Don't use colors.")
|
||||
api_parser.add_argument("--ignored-providers", nargs="+", choices=[provider.name for provider in IgnoredProviders],
|
||||
api_parser.add_argument("--ignored-providers", nargs="+", choices=[provider for provider in Provider.__map__],
|
||||
default=[], help="List of providers to ignore when processing request.")
|
||||
subparsers.add_parser("gui", parents=[gui_parser()], add_help=False)
|
||||
|
||||
args = parser.parse_args()
|
||||
if args.mode == "api":
|
||||
import g4f.api
|
||||
g4f.api.api.set_list_ignored_providers(args.ignored_providers)
|
||||
g4f.api.run_api(bind=args.bind, debug=args.debug, workers=args.workers, use_colors=not args.disable_colors)
|
||||
g4f.api.api.set_list_ignored_providers(
|
||||
args.ignored_providers
|
||||
)
|
||||
g4f.api.run_api(
|
||||
bind=args.bind,
|
||||
debug=args.debug,
|
||||
workers=args.workers,
|
||||
use_colors=not args.disable_colors
|
||||
)
|
||||
elif args.mode == "gui":
|
||||
run_gui_args(args)
|
||||
else:
|
||||
|
@ -79,10 +79,10 @@ class StreamSession(AsyncSession):
|
||||
return StreamResponse(super().request(method, url, stream=True, **kwargs))
|
||||
|
||||
def ws_connect(self, url, *args, **kwargs):
|
||||
return WebSocket(self, url)
|
||||
return WebSocket(self, url, **kwargs)
|
||||
|
||||
def _ws_connect(self, url):
|
||||
return super().ws_connect(url)
|
||||
def _ws_connect(self, url, **kwargs):
|
||||
return super().ws_connect(url, **kwargs)
|
||||
|
||||
# Defining HTTP methods as partial methods of the request method.
|
||||
head = partialmethod(request, "HEAD")
|
||||
@ -102,20 +102,22 @@ else:
|
||||
raise RuntimeError("CurlMimi in curl_cffi is missing | pip install -U g4f[curl_cffi]")
|
||||
|
||||
class WebSocket():
|
||||
def __init__(self, session, url) -> None:
|
||||
def __init__(self, session, url, **kwargs) -> None:
|
||||
if not has_curl_ws:
|
||||
raise RuntimeError("CurlWsFlag in curl_cffi is missing | pip install -U g4f[curl_cffi]")
|
||||
self.session: StreamSession = session
|
||||
self.url: str = url
|
||||
del kwargs["autoping"]
|
||||
self.options: dict = kwargs
|
||||
|
||||
async def __aenter__(self):
|
||||
self.inner = await self.session._ws_connect(self.url)
|
||||
self.inner = await self.session._ws_connect(self.url, **self.options)
|
||||
return self
|
||||
|
||||
async def __aexit__(self, *args):
|
||||
self.inner.aclose()
|
||||
await self.inner.aclose()
|
||||
|
||||
async def receive_str(self) -> str:
|
||||
async def receive_str(self, **kwargs) -> str:
|
||||
bytes, _ = await self.inner.arecv()
|
||||
return bytes.decode(errors="ignore")
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user