2024-04-21 20:39:00 +00:00
from __future__ import annotations
2023-10-12 01:35:11 +00:00
import argparse
2023-10-23 08:01:08 +00:00
from g4f import Provider
2023-10-12 01:35:11 +00:00
from g4f . gui . run import gui_parser , run_gui_args
def main ( ) :
parser = argparse . ArgumentParser ( description = " Run gpt4free " )
subparsers = parser . add_subparsers ( dest = " mode " , help = " Mode to run the g4f in. " )
2024-04-20 18:06:35 +00:00
api_parser = subparsers . add_parser ( " api " )
2023-12-11 01:50:33 +00:00
api_parser . add_argument ( " --bind " , default = " 0.0.0.0:1337 " , help = " The bind string. " )
2024-04-20 16:04:16 +00:00
api_parser . add_argument ( " --debug " , action = " store_true " , help = " Enable verbose logging. " )
2024-05-05 21:38:31 +00:00
api_parser . add_argument ( " --model " , default = None , help = " Default model for chat completion. (incompatible with --debug and --workers) " )
api_parser . add_argument ( " --provider " , choices = [ provider . __name__ for provider in Provider . __providers__ if provider . working ] ,
default = None , help = " Default provider for chat completion. (incompatible with --debug and --workers) " )
api_parser . add_argument ( " --proxy " , default = None , help = " Default used proxy. " )
2024-04-20 13:41:49 +00:00
api_parser . add_argument ( " --workers " , type = int , default = None , help = " Number of workers. " )
2024-04-21 20:39:00 +00:00
api_parser . add_argument ( " --disable-colors " , action = " store_true " , help = " Don ' t use colors. " )
api_parser . add_argument ( " --ignore-cookie-files " , action = " store_true " , help = " Don ' t read .har and cookie files. " )
2024-04-29 14:56:56 +00:00
api_parser . add_argument ( " --g4f-api-key " , type = str , default = None , help = " Sets an authentication key for your API. (incompatible with --debug and --workers) " )
api_parser . add_argument ( " --ignored-providers " , nargs = " + " , choices = [ provider . __name__ for provider in Provider . __providers__ if provider . working ] ,
default = [ ] , help = " List of providers to ignore when processing request. (incompatible with --debug and --workers) " )
2023-10-12 01:35:11 +00:00
subparsers . add_parser ( " gui " , parents = [ gui_parser ( ) ] , add_help = False )
args = parser . parse_args ( )
if args . mode == " api " :
2024-04-21 20:39:00 +00:00
run_api_args ( args )
2023-10-12 01:35:11 +00:00
elif args . mode == " gui " :
run_gui_args ( args )
else :
parser . print_help ( )
exit ( 1 )
2024-04-21 20:39:00 +00:00
def run_api_args ( args ) :
2024-04-29 18:21:47 +00:00
from g4f . api import AppConfig , run_api
2024-05-05 21:38:31 +00:00
AppConfig . set_config (
ignore_cookie_files = args . ignore_cookie_files ,
ignored_providers = args . ignored_providers ,
g4f_api_key = args . g4f_api_key ,
defaults = {
" model " : args . model ,
" provider " : args . provider ,
" proxy " : args . proxy
}
2024-04-29 14:56:56 +00:00
)
2024-04-29 18:21:47 +00:00
run_api (
2024-04-21 20:39:00 +00:00
bind = args . bind ,
debug = args . debug ,
workers = args . workers ,
use_colors = not args . disable_colors
)
2023-10-12 01:35:11 +00:00
if __name__ == " __main__ " :
main ( )